EVERYTHING
This commit is contained in:
@@ -0,0 +1,360 @@
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user