Shader"XXX"{
Properties{
...
}
SubShader{
...
Pass{
...
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
//第一步 设置处理指令
#pragma multi_compile_instancing
struct a2v{
...
//第二步 输入结构体中添加宏(以便获取对应顶点uv的id值)
UNITY_VERTEX_INPUT_INSTANCE_ID
};
struct v2f{
...
//第二步 输出结构体中添加宏(以便获取对应顶点uv的id值转化的屏幕坐标id)
UNITY_VERTEX_INPUT_INSTANCE_ID
};
v2f vert(a2v v){
v2f o;
//第三步 获取对应顶点uv的id值
UNITY_SETUP_INSTANCE_ID(v);
//第三步 给输出结构体赋值转化
UNITY_TRANSFER_INSTANCE_ID(v,o);
...
return o;
}
//把数据输出到指定SV_Target(render target)上
fixed4 frag(v2f uv):SV_Target{
//第四步 获取对应转化后的instance
UNITY_SETUP_INSTANCE_ID(uv);
...
}
ENDCG
}
}
//设置默认shader
FallBack"Diffuse"
}