struct Attributes { float4 positionOS : POSITION; float2 uv : TEXCOORD0; UNITY_VERTEX_INPUT_INSTANCE_ID }; struct Varyings { float4 positionCS : SV_POSITION; float2 uv : TEXCOORD0; float objectId : TEXCOORD1; UNITY_VERTEX_INPUT_INSTANCE_ID UNITY_VERTEX_OUTPUT_STEREO }; Varyings UnlitPassVertex(Attributes input) { Varyings output = (Varyings)0; UNITY_SETUP_INSTANCE_ID(input); UNITY_TRANSFER_INSTANCE_ID(input, output); UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); VertexPositionInputs vertexInput = GetVertexPositionInputs(input.positionOS.xyz); output.positionCS = vertexInput.positionCS; output.uv = TRANSFORM_TEX(input.uv, _BaseMap); VertexPositionInputs vertexInput0 = GetVertexPositionInputs(float3(1,1,1)); float3 posWS0 = TransformObjectToWorld(float3(0,0,0)); float objectId = dot(vertexInput0.positionWS, 1); output.objectId = objectId; return output; } void UnlitPassFragment( Varyings input , out half4 outColor : SV_Target0 ) { UNITY_SETUP_INSTANCE_ID(input); UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); half4 color = SAMPLE_TEXTURE2D(_BaseMap, sampler_BaseMap, input.uv); clip(color.a - _OutlineCutOff); outColor = input.objectId; }