Shader "Hidden/Universal Render Pipeline/StencilDitherMaskSeed" { Properties { _StencilRefDitherMask ("StencilRefDitherMask", Float) = 0 _StencilWriteDitherMask ("StencilWriteDitherMask", Float) = 0 } SubShader { Tags { "RenderPipeline" = "UniversalPipeline" "RenderType" = "Opaque" } Pass { Name "StencilDitherMaskSeed" Tags { "RenderPipeline" = "UniversalPipeline" "RenderType" = "Opaque" } ZTest Always ZWrite Off Cull Off Stencil { WriteMask 0 CompFront Always PassFront Replace FailFront Keep ZFailFront Keep CompBack Always PassBack Replace FailBack Keep ZFailBack Keep } GpuProgramID 60745 HLSLPROGRAM // https://docs.unity3d.com/Manual/SL-PragmaDirectives.html #pragma vertex vert #pragma fragment frag #pragma target 5.0 #pragma multi_compile _ STEREO_INSTANCING_ON #ifndef STEREO_INSTANCING_ON #define ANY_SHADER_VARIANT_ACTIVE float4 _BlitScaleBias; static float4 vertex_uniform_buffer_0[131]; static float4 gl_Position; static int gl_VertexIndex; static int gl_BaseVertexARB; static float2 vertex_output_1; struct Vertex_Stage_Input { uint gl_VertexIndex : SV_VertexID; uint gl_BaseVertexARB : SV_StartVertexLocation; }; struct Vertex_Stage_Output { float2 vertex_output_1 : TEXCOORD; // TEXCOORD float4 gl_Position : SV_Position; }; uint spvBitfieldInsert(uint Base, uint Insert, uint Offset, uint Count) { uint Mask = Count == 32 ? 0xffffffff : (((1u << Count) - 1) << (Offset & 31)); return (Base & ~Mask) | ((Insert << Offset) & Mask); } uint2 spvBitfieldInsert(uint2 Base, uint2 Insert, uint Offset, uint Count) { uint Mask = Count == 32 ? 0xffffffff : (((1u << Count) - 1) << (Offset & 31)); return (Base & ~Mask) | ((Insert << Offset) & Mask); } uint3 spvBitfieldInsert(uint3 Base, uint3 Insert, uint Offset, uint Count) { uint Mask = Count == 32 ? 0xffffffff : (((1u << Count) - 1) << (Offset & 31)); return (Base & ~Mask) | ((Insert << Offset) & Mask); } uint4 spvBitfieldInsert(uint4 Base, uint4 Insert, uint Offset, uint Count) { uint Mask = Count == 32 ? 0xffffffff : (((1u << Count) - 1) << (Offset & 31)); return (Base & ~Mask) | ((Insert << Offset) & Mask); } void vert_main() { uint vertex_unnamed_27 = 1u & 31u; float vertex_unnamed_39 = float(spvBitfieldInsert(0u, uint(gl_VertexIndex) - uint(gl_BaseVertexARB), vertex_unnamed_27, min((1u & 31u), (32u - vertex_unnamed_27)))); float vertex_unnamed_40 = float((uint(gl_VertexIndex) - uint(gl_BaseVertexARB)) & 2u); gl_Position.x = mad(vertex_unnamed_39, 2.0f, -1.0f); gl_Position.y = mad(vertex_unnamed_40, 2.0f, -1.0f); vertex_output_1.x = mad(vertex_unnamed_39, vertex_uniform_buffer_0[130u].x, vertex_uniform_buffer_0[130u].z); vertex_output_1.y = mad(((-0.0f) - vertex_unnamed_40) + 1.0f, vertex_uniform_buffer_0[130u].y, vertex_uniform_buffer_0[130u].w); gl_Position.z = 1.0f; gl_Position.w = 1.0f; } Vertex_Stage_Output vert(Vertex_Stage_Input stage_input) { vertex_uniform_buffer_0[130] = float4(_BlitScaleBias[0], _BlitScaleBias[1], _BlitScaleBias[2], _BlitScaleBias[3]); gl_VertexIndex = int(stage_input.gl_VertexIndex + stage_input.gl_BaseVertexARB); gl_BaseVertexARB = stage_input.gl_BaseVertexARB; vert_main(); Vertex_Stage_Output stage_output; stage_output.gl_Position = gl_Position; stage_output.vertex_output_1 = vertex_output_1; return stage_output; } #endif // !STEREO_INSTANCING_ON #ifdef STEREO_INSTANCING_ON #define ANY_SHADER_VARIANT_ACTIVE float4 _BlitScaleBias; static float4 vertex_uniform_buffer_0[100]; static float4 gl_Position; static uint gl_Layer; static int gl_VertexIndex; static int gl_InstanceIndex; static int gl_BaseVertexARB; static int gl_BaseInstanceARB; static float2 vertex_output_1; struct Vertex_Stage_Input { uint gl_VertexIndex : SV_VertexID; uint gl_InstanceIndex : SV_InstanceID; uint gl_BaseVertexARB : SV_StartVertexLocation; uint gl_BaseInstanceARB : SV_StartInstanceLocation; }; struct Vertex_Stage_Output { float2 vertex_output_1 : TEXCOORD; // TEXCOORD float4 gl_Position : SV_Position; uint gl_Layer : SV_RenderTargetArrayIndex; }; uint spvBitfieldInsert(uint Base, uint Insert, uint Offset, uint Count) { uint Mask = Count == 32 ? 0xffffffff : (((1u << Count) - 1) << (Offset & 31)); return (Base & ~Mask) | ((Insert << Offset) & Mask); } uint2 spvBitfieldInsert(uint2 Base, uint2 Insert, uint Offset, uint Count) { uint Mask = Count == 32 ? 0xffffffff : (((1u << Count) - 1) << (Offset & 31)); return (Base & ~Mask) | ((Insert << Offset) & Mask); } uint3 spvBitfieldInsert(uint3 Base, uint3 Insert, uint Offset, uint Count) { uint Mask = Count == 32 ? 0xffffffff : (((1u << Count) - 1) << (Offset & 31)); return (Base & ~Mask) | ((Insert << Offset) & Mask); } uint4 spvBitfieldInsert(uint4 Base, uint4 Insert, uint Offset, uint Count) { uint Mask = Count == 32 ? 0xffffffff : (((1u << Count) - 1) << (Offset & 31)); return (Base & ~Mask) | ((Insert << Offset) & Mask); } void vert_main() { uint vertex_unnamed_30 = 1u & 31u; float vertex_unnamed_42 = float(spvBitfieldInsert(0u, uint(gl_VertexIndex) - uint(gl_BaseVertexARB), vertex_unnamed_30, min((1u & 31u), (32u - vertex_unnamed_30)))); float vertex_unnamed_43 = float((uint(gl_VertexIndex) - uint(gl_BaseVertexARB)) & 2u); gl_Position.x = mad(vertex_unnamed_42, 2.0f, -1.0f); gl_Position.y = mad(vertex_unnamed_43, 2.0f, -1.0f); vertex_output_1.x = mad(vertex_unnamed_42, vertex_uniform_buffer_0[99u].x, vertex_uniform_buffer_0[99u].z); vertex_output_1.y = mad(((-0.0f) - vertex_unnamed_43) + 1.0f, vertex_uniform_buffer_0[99u].y, vertex_uniform_buffer_0[99u].w); gl_Position.z = 1.0f; gl_Position.w = 1.0f; gl_Layer = int((uint(gl_InstanceIndex) - uint(gl_BaseInstanceARB)) & 1u); } Vertex_Stage_Output vert(Vertex_Stage_Input stage_input) { vertex_uniform_buffer_0[99] = float4(_BlitScaleBias[0], _BlitScaleBias[1], _BlitScaleBias[2], _BlitScaleBias[3]); gl_VertexIndex = int(stage_input.gl_VertexIndex + stage_input.gl_BaseVertexARB); gl_InstanceIndex = int(stage_input.gl_InstanceIndex + stage_input.gl_BaseInstanceARB); gl_BaseVertexARB = stage_input.gl_BaseVertexARB; gl_BaseInstanceARB = stage_input.gl_BaseInstanceARB; vert_main(); Vertex_Stage_Output stage_output; stage_output.gl_Position = gl_Position; stage_output.gl_Layer = gl_Layer; stage_output.vertex_output_1 = vertex_output_1; return stage_output; } #endif // STEREO_INSTANCING_ON #ifndef STEREO_INSTANCING_ON #define ANY_SHADER_VARIANT_ACTIVE int _StencilDitherPattern; static float4 fragment_uniform_buffer_0[137]; static float4 gl_FragCoord; static float2 fragment_input_1; struct Fragment_Stage_Input { float2 fragment_input_1 : TEXCOORD; // TEXCOORD float4 gl_FragCoord : SV_Position; }; static bool discard_state; uint spvBitfieldInsert(uint Base, uint Insert, uint Offset, uint Count) { uint Mask = Count == 32 ? 0xffffffff : (((1u << Count) - 1) << (Offset & 31)); return (Base & ~Mask) | ((Insert << Offset) & Mask); } uint2 spvBitfieldInsert(uint2 Base, uint2 Insert, uint Offset, uint Count) { uint Mask = Count == 32 ? 0xffffffff : (((1u << Count) - 1) << (Offset & 31)); return (Base & ~Mask) | ((Insert << Offset) & Mask); } uint3 spvBitfieldInsert(uint3 Base, uint3 Insert, uint Offset, uint Count) { uint Mask = Count == 32 ? 0xffffffff : (((1u << Count) - 1) << (Offset & 31)); return (Base & ~Mask) | ((Insert << Offset) & Mask); } uint4 spvBitfieldInsert(uint4 Base, uint4 Insert, uint Offset, uint Count) { uint Mask = Count == 32 ? 0xffffffff : (((1u << Count) - 1) << (Offset & 31)); return (Base & ~Mask) | ((Insert << Offset) & Mask); } void discard_cond(bool fragment_unnamed_52) { if (fragment_unnamed_52) { discard_state = true; } } void discard_exit() { if (discard_state) { discard; } } void frag_main() { discard_state = false; uint fragment_unnamed_25 = uint(gl_FragCoord.x); uint fragment_unnamed_32 = 1u & 31u; discard_cond(spvBitfieldInsert(fragment_unnamed_25, (fragment_unnamed_25 & 1u) ^ (uint(gl_FragCoord.y) & 1u), fragment_unnamed_32, min((31u & 31u), (32u - fragment_unnamed_32))) != asuint(fragment_uniform_buffer_0[136u]).x); discard_exit(); } void main(Fragment_Stage_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; fragment_input_1 = stage_input.fragment_input_1; frag_main(); } #endif // !STEREO_INSTANCING_ON #ifdef STEREO_INSTANCING_ON #define ANY_SHADER_VARIANT_ACTIVE int _StencilDitherPattern; static float4 fragment_uniform_buffer_0[106]; static float4 gl_FragCoord; static float2 fragment_input_1; struct Fragment_Stage_Input { float2 fragment_input_1 : TEXCOORD; // TEXCOORD float4 gl_FragCoord : SV_Position; }; static bool discard_state; uint spvBitfieldInsert(uint Base, uint Insert, uint Offset, uint Count) { uint Mask = Count == 32 ? 0xffffffff : (((1u << Count) - 1) << (Offset & 31)); return (Base & ~Mask) | ((Insert << Offset) & Mask); } uint2 spvBitfieldInsert(uint2 Base, uint2 Insert, uint Offset, uint Count) { uint Mask = Count == 32 ? 0xffffffff : (((1u << Count) - 1) << (Offset & 31)); return (Base & ~Mask) | ((Insert << Offset) & Mask); } uint3 spvBitfieldInsert(uint3 Base, uint3 Insert, uint Offset, uint Count) { uint Mask = Count == 32 ? 0xffffffff : (((1u << Count) - 1) << (Offset & 31)); return (Base & ~Mask) | ((Insert << Offset) & Mask); } uint4 spvBitfieldInsert(uint4 Base, uint4 Insert, uint Offset, uint Count) { uint Mask = Count == 32 ? 0xffffffff : (((1u << Count) - 1) << (Offset & 31)); return (Base & ~Mask) | ((Insert << Offset) & Mask); } void discard_cond(bool fragment_unnamed_54) { if (fragment_unnamed_54) { discard_state = true; } } void discard_exit() { if (discard_state) { discard; } } void frag_main() { discard_state = false; uint fragment_unnamed_27 = uint(gl_FragCoord.x); uint fragment_unnamed_34 = 1u & 31u; discard_cond(spvBitfieldInsert(fragment_unnamed_27, (fragment_unnamed_27 & 1u) ^ (uint(gl_FragCoord.y) & 1u), fragment_unnamed_34, min((31u & 31u), (32u - fragment_unnamed_34))) != asuint(fragment_uniform_buffer_0[105u]).x); discard_exit(); } void main(Fragment_Stage_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; fragment_input_1 = stage_input.fragment_input_1; frag_main(); } #endif // STEREO_INSTANCING_ON ENDHLSL } } }