UnityShader 优化 GUP INSTANCE

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" 
}

 

你可能感兴趣的:(UnityShader)