Shader "Hidden/CoreSRP/CoreCopy" { Properties { } SubShader { Pass { Name "Copy" ZClip Off ZWrite Off Cull Off GpuProgramID 10466 HLSLPROGRAM // https://docs.unity3d.com/Manual/SL-PragmaDirectives.html #pragma vertex vert #pragma fragment frag #pragma target 4.0 #pragma multi_compile _ DISABLE_TEXTURE2D_X_ARRAY #pragma multi_compile _ STEREO_INSTANCING_ON #ifndef DISABLE_TEXTURE2D_X_ARRAY #ifndef STEREO_INSTANCING_ON #define ANY_SHADER_VARIANT_ACTIVE static float4 gl_Position; static int gl_VertexIndex; static int gl_BaseVertexARB; struct Vertex_Stage_Input { uint gl_VertexIndex : SV_VertexID; uint gl_BaseVertexARB : SV_StartVertexLocation; }; struct Vertex_Stage_Output { float4 gl_Position : SV_Position; }; void vert_main() { gl_Position.x = mad(float(((uint(gl_VertexIndex) - uint(gl_BaseVertexARB)) << 1u) & 2u), 2.0f, -1.0f); gl_Position.y = mad(float((uint(gl_VertexIndex) - uint(gl_BaseVertexARB)) & 2u), 2.0f, -1.0f); gl_Position.z = 1.0f; gl_Position.w = 1.0f; } Vertex_Stage_Output vert(Vertex_Stage_Input stage_input) { 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; return stage_output; } #endif // !DISABLE_TEXTURE2D_X_ARRAY #endif // !STEREO_INSTANCING_ON #ifdef STEREO_INSTANCING_ON #ifndef DISABLE_TEXTURE2D_X_ARRAY #define ANY_SHADER_VARIANT_ACTIVE static float4 gl_Position; static uint gl_Layer; static int gl_VertexIndex; static int gl_InstanceIndex; static int gl_BaseVertexARB; static int gl_BaseInstanceARB; 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 { float4 gl_Position : SV_Position; uint gl_Layer : SV_RenderTargetArrayIndex; }; void vert_main() { gl_Position.x = mad(float(((uint(gl_VertexIndex) - uint(gl_BaseVertexARB)) << 1u) & 2u), 2.0f, -1.0f); gl_Position.y = mad(float((uint(gl_VertexIndex) - uint(gl_BaseVertexARB)) & 2u), 2.0f, -1.0f); 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) { 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; return stage_output; } #endif // STEREO_INSTANCING_ON #endif // !DISABLE_TEXTURE2D_X_ARRAY #ifndef DISABLE_TEXTURE2D_X_ARRAY #ifndef STEREO_INSTANCING_ON #define ANY_SHADER_VARIANT_ACTIVE Texture2DArray _UnityFBInput0; static float4 gl_FragCoord; static float4 fragment_output_0; struct Fragment_Stage_Input { float4 gl_FragCoord : SV_Position; }; struct Fragment_Stage_Output { float4 fragment_output_0 : SV_Target0; }; void frag_main() { float4 fragment_unnamed_25 = _UnityFBInput0.Load(int4(uint3(uint(int(gl_FragCoord.x)), uint(int(gl_FragCoord.y)), 0u), 0u)); fragment_output_0.x = fragment_unnamed_25.x; fragment_output_0.y = fragment_unnamed_25.y; fragment_output_0.z = fragment_unnamed_25.z; fragment_output_0.w = fragment_unnamed_25.w; } Fragment_Stage_Output frag(Fragment_Stage_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; frag_main(); Fragment_Stage_Output stage_output; stage_output.fragment_output_0 = fragment_output_0; return stage_output; } #endif // !DISABLE_TEXTURE2D_X_ARRAY #endif // !STEREO_INSTANCING_ON #ifdef STEREO_INSTANCING_ON #ifndef DISABLE_TEXTURE2D_X_ARRAY #define ANY_SHADER_VARIANT_ACTIVE Texture2DArray _UnityFBInput0; static uint gl_Layer; static float4 gl_FragCoord; static float4 fragment_output_0; struct Fragment_Stage_Input { uint gl_Layer : SV_RenderTargetArrayIndex; float4 gl_FragCoord : SV_Position; }; struct Fragment_Stage_Output { float4 fragment_output_0 : SV_Target0; }; void frag_main() { float4 fragment_unnamed_28 = _UnityFBInput0.Load(int4(uint3(uint(int(gl_FragCoord.x)), uint(int(gl_FragCoord.y)), uint(gl_Layer)), 0u)); fragment_output_0.x = fragment_unnamed_28.x; fragment_output_0.y = fragment_unnamed_28.y; fragment_output_0.z = fragment_unnamed_28.z; fragment_output_0.w = fragment_unnamed_28.w; } Fragment_Stage_Output frag(Fragment_Stage_Input stage_input) { gl_Layer = stage_input.gl_Layer; gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; frag_main(); Fragment_Stage_Output stage_output; stage_output.fragment_output_0 = fragment_output_0; return stage_output; } #endif // STEREO_INSTANCING_ON #endif // !DISABLE_TEXTURE2D_X_ARRAY #ifdef DISABLE_TEXTURE2D_X_ARRAY #ifndef STEREO_INSTANCING_ON #define ANY_SHADER_VARIANT_ACTIVE Texture2D _UnityFBInput0; static float4 gl_FragCoord; static float4 fragment_output_0; struct Fragment_Stage_Input { float4 gl_FragCoord : SV_Position; }; struct Fragment_Stage_Output { float4 fragment_output_0 : SV_Target0; }; void frag_main() { float4 fragment_unnamed_25 = _UnityFBInput0.Load(int3(uint2(uint(int(gl_FragCoord.x)), uint(int(gl_FragCoord.y))), 0u)); fragment_output_0.x = fragment_unnamed_25.x; fragment_output_0.y = fragment_unnamed_25.y; fragment_output_0.z = fragment_unnamed_25.z; fragment_output_0.w = fragment_unnamed_25.w; } Fragment_Stage_Output frag(Fragment_Stage_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; frag_main(); Fragment_Stage_Output stage_output; stage_output.fragment_output_0 = fragment_output_0; return stage_output; } #endif // DISABLE_TEXTURE2D_X_ARRAY #endif // !STEREO_INSTANCING_ON #ifdef DISABLE_TEXTURE2D_X_ARRAY #ifdef STEREO_INSTANCING_ON #define ANY_SHADER_VARIANT_ACTIVE Texture2D _UnityFBInput0; static float4 gl_FragCoord; static float4 fragment_output_0; struct Fragment_Stage_Input { float4 gl_FragCoord : SV_Position; }; struct Fragment_Stage_Output { float4 fragment_output_0 : SV_Target0; }; void frag_main() { float4 fragment_unnamed_27 = _UnityFBInput0.Load(int3(uint2(uint(int(gl_FragCoord.x)), uint(int(gl_FragCoord.y))), 0u)); fragment_output_0.x = fragment_unnamed_27.x; fragment_output_0.y = fragment_unnamed_27.y; fragment_output_0.z = fragment_unnamed_27.z; fragment_output_0.w = fragment_unnamed_27.w; } Fragment_Stage_Output frag(Fragment_Stage_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; frag_main(); Fragment_Stage_Output stage_output; stage_output.fragment_output_0 = fragment_output_0; return stage_output; } #endif // DISABLE_TEXTURE2D_X_ARRAY #endif // STEREO_INSTANCING_ON ENDHLSL } Pass { Name "CopyMS" ZClip Off ZWrite Off Cull Off GpuProgramID 128618 HLSLPROGRAM // https://docs.unity3d.com/Manual/SL-PragmaDirectives.html #pragma vertex vert #pragma fragment frag #pragma target 5.0 #pragma multi_compile _ DISABLE_TEXTURE2D_X_ARRAY #pragma multi_compile _ STEREO_INSTANCING_ON #ifndef DISABLE_TEXTURE2D_X_ARRAY #ifndef STEREO_INSTANCING_ON #define ANY_SHADER_VARIANT_ACTIVE static float4 gl_Position; static int gl_VertexIndex; static int gl_BaseVertexARB; struct Vertex_Stage_Input { uint gl_VertexIndex : SV_VertexID; uint gl_BaseVertexARB : SV_StartVertexLocation; }; struct Vertex_Stage_Output { 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_19 = 1u & 31u; gl_Position.x = mad(float(spvBitfieldInsert(0u, uint(gl_VertexIndex) - uint(gl_BaseVertexARB), vertex_unnamed_19, min((1u & 31u), (32u - vertex_unnamed_19)))), 2.0f, -1.0f); gl_Position.y = mad(float((uint(gl_VertexIndex) - uint(gl_BaseVertexARB)) & 2u), 2.0f, -1.0f); gl_Position.z = 1.0f; gl_Position.w = 1.0f; } Vertex_Stage_Output vert(Vertex_Stage_Input stage_input) { 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; return stage_output; } #endif // !DISABLE_TEXTURE2D_X_ARRAY #endif // !STEREO_INSTANCING_ON #ifdef STEREO_INSTANCING_ON #ifndef DISABLE_TEXTURE2D_X_ARRAY #define ANY_SHADER_VARIANT_ACTIVE static float4 gl_Position; static uint gl_Layer; static int gl_VertexIndex; static int gl_InstanceIndex; static int gl_BaseVertexARB; static int gl_BaseInstanceARB; 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 { 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_22 = 1u & 31u; gl_Position.x = mad(float(spvBitfieldInsert(0u, uint(gl_VertexIndex) - uint(gl_BaseVertexARB), vertex_unnamed_22, min((1u & 31u), (32u - vertex_unnamed_22)))), 2.0f, -1.0f); gl_Position.y = mad(float((uint(gl_VertexIndex) - uint(gl_BaseVertexARB)) & 2u), 2.0f, -1.0f); 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) { 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; return stage_output; } #endif // STEREO_INSTANCING_ON #endif // !DISABLE_TEXTURE2D_X_ARRAY #ifndef DISABLE_TEXTURE2D_X_ARRAY #ifndef STEREO_INSTANCING_ON #define ANY_SHADER_VARIANT_ACTIVE Texture2DMSArray _UnityFBInput0; static float4 gl_FragCoord; static int gl_SampleID; static float4 fragment_output_0; struct Fragment_Stage_Input { float4 gl_FragCoord : SV_Position; uint gl_SampleID : SV_SampleIndex; }; struct Fragment_Stage_Output { float4 fragment_output_0 : SV_Target0; }; void frag_main() { float4 fragment_unnamed_28 = _UnityFBInput0.Load(uint3(uint(int(gl_FragCoord.x)), uint(int(gl_FragCoord.y)), 0u), uint(gl_SampleID)); fragment_output_0.x = fragment_unnamed_28.x; fragment_output_0.y = fragment_unnamed_28.y; fragment_output_0.z = fragment_unnamed_28.z; fragment_output_0.w = fragment_unnamed_28.w; } Fragment_Stage_Output frag(Fragment_Stage_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; gl_SampleID = stage_input.gl_SampleID; frag_main(); Fragment_Stage_Output stage_output; stage_output.fragment_output_0 = fragment_output_0; return stage_output; } #endif // !DISABLE_TEXTURE2D_X_ARRAY #endif // !STEREO_INSTANCING_ON #ifdef STEREO_INSTANCING_ON #ifndef DISABLE_TEXTURE2D_X_ARRAY #define ANY_SHADER_VARIANT_ACTIVE Texture2DMSArray _UnityFBInput0; static uint gl_Layer; static float4 gl_FragCoord; static int gl_SampleID; static float4 fragment_output_0; struct Fragment_Stage_Input { uint gl_Layer : SV_RenderTargetArrayIndex; float4 gl_FragCoord : SV_Position; uint gl_SampleID : SV_SampleIndex; }; struct Fragment_Stage_Output { float4 fragment_output_0 : SV_Target0; }; void frag_main() { float4 fragment_unnamed_30 = _UnityFBInput0.Load(uint3(uint(int(gl_FragCoord.x)), uint(int(gl_FragCoord.y)), uint(gl_Layer)), uint(gl_SampleID)); fragment_output_0.x = fragment_unnamed_30.x; fragment_output_0.y = fragment_unnamed_30.y; fragment_output_0.z = fragment_unnamed_30.z; fragment_output_0.w = fragment_unnamed_30.w; } Fragment_Stage_Output frag(Fragment_Stage_Input stage_input) { gl_Layer = stage_input.gl_Layer; gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; gl_SampleID = stage_input.gl_SampleID; frag_main(); Fragment_Stage_Output stage_output; stage_output.fragment_output_0 = fragment_output_0; return stage_output; } #endif // STEREO_INSTANCING_ON #endif // !DISABLE_TEXTURE2D_X_ARRAY #ifdef DISABLE_TEXTURE2D_X_ARRAY #ifndef STEREO_INSTANCING_ON #define ANY_SHADER_VARIANT_ACTIVE Texture2DMS _UnityFBInput0; static float4 gl_FragCoord; static int gl_SampleID; static float4 fragment_output_0; struct Fragment_Stage_Input { float4 gl_FragCoord : SV_Position; uint gl_SampleID : SV_SampleIndex; }; struct Fragment_Stage_Output { float4 fragment_output_0 : SV_Target0; }; void frag_main() { float4 fragment_unnamed_28 = _UnityFBInput0.Load(uint2(uint(int(gl_FragCoord.x)), uint(int(gl_FragCoord.y))), uint(gl_SampleID)); fragment_output_0.x = fragment_unnamed_28.x; fragment_output_0.y = fragment_unnamed_28.y; fragment_output_0.z = fragment_unnamed_28.z; fragment_output_0.w = fragment_unnamed_28.w; } Fragment_Stage_Output frag(Fragment_Stage_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; gl_SampleID = stage_input.gl_SampleID; frag_main(); Fragment_Stage_Output stage_output; stage_output.fragment_output_0 = fragment_output_0; return stage_output; } #endif // DISABLE_TEXTURE2D_X_ARRAY #endif // !STEREO_INSTANCING_ON #ifdef DISABLE_TEXTURE2D_X_ARRAY #ifdef STEREO_INSTANCING_ON #define ANY_SHADER_VARIANT_ACTIVE Texture2DMS _UnityFBInput0; static float4 gl_FragCoord; static int gl_SampleID; static float4 fragment_output_0; struct Fragment_Stage_Input { float4 gl_FragCoord : SV_Position; uint gl_SampleID : SV_SampleIndex; }; struct Fragment_Stage_Output { float4 fragment_output_0 : SV_Target0; }; void frag_main() { float4 fragment_unnamed_29 = _UnityFBInput0.Load(uint2(uint(int(gl_FragCoord.x)), uint(int(gl_FragCoord.y))), uint(gl_SampleID)); fragment_output_0.x = fragment_unnamed_29.x; fragment_output_0.y = fragment_unnamed_29.y; fragment_output_0.z = fragment_unnamed_29.z; fragment_output_0.w = fragment_unnamed_29.w; } Fragment_Stage_Output frag(Fragment_Stage_Input stage_input) { gl_FragCoord = stage_input.gl_FragCoord; gl_FragCoord.w = 1.0 / gl_FragCoord.w; gl_SampleID = stage_input.gl_SampleID; frag_main(); Fragment_Stage_Output stage_output; stage_output.fragment_output_0 = fragment_output_0; return stage_output; } #endif // DISABLE_TEXTURE2D_X_ARRAY #endif // STEREO_INSTANCING_ON ENDHLSL } } }