Files
BlockSpace-v1.5.0b/Assets/Shader/Hidden_Universal Render Pipeline_StencilDitherMaskSeed.shader
2026-06-01 17:19:55 +02:00

361 lines
11 KiB
GLSL

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