Files
2026-01-08 22:30:55 +08:00

106 lines
2.7 KiB
Plaintext

// Crest Water System
// Copyright © 2024 Wave Harmonic. All rights reserved.
// Provides utility passes for rendering like clearing the stencil buffer.
Shader "Hidden/Crest/Legacy/Blit"
{
HLSLINCLUDE
#pragma vertex Vertex
#pragma fragment Fragment
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Library/Utility/Legacy/Core.hlsl"
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Library/Utility/Depth.hlsl"
struct Attributes
{
uint id : SV_VertexID;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
struct Varyings
{
float4 positionCS : SV_POSITION;
float2 uv : TEXCOORD0;
UNITY_VERTEX_OUTPUT_STEREO
};
Varyings Vertex(Attributes input)
{
// This will work for all pipelines.
Varyings output = (Varyings)0;
UNITY_SETUP_INSTANCE_ID(input);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
output.positionCS = GetFullScreenTriangleVertexPosition(input.id);
output.uv = GetFullScreenTriangleTexCoord(input.id);
return output;
}
ENDHLSL
SubShader
{
Blend Off
Cull Off
ZTest Always
ZWrite Off
Pass
{
// Copies the depth from the camera depth texture. Clears the stencil for convenience.
Name "Copy Depth / Clear Stencil"
ZWrite On
Stencil
{
Ref 0
Comp Always
Pass Replace
}
HLSLPROGRAM
TEXTURE2D_X(_CameraDepthTexture);
float Fragment(Varyings input) : SV_Depth
{
// We need this when sampling a screenspace texture.
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input);
return LOAD_DEPTH_TEXTURE_X(_CameraDepthTexture, input.positionCS.xy);
}
ENDHLSL
}
Pass
{
Name "Copy"
HLSLPROGRAM
TEXTURE2D(_Utility_MainTexture);
SAMPLER(sampler_Utility_MainTexture);
float4 Fragment(Varyings input) : SV_Target
{
return SAMPLE_TEXTURE2D(_Utility_MainTexture, sampler_Utility_MainTexture, input.uv);
}
ENDHLSL
}
Pass
{
Name "Merge Depth"
// All is required to merge depth.
ZTest Less
ZWrite On
HLSLPROGRAM
TEXTURE2D_X(_Utility_MainTexture);
float Fragment(Varyings input) : SV_Depth
{
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input);
return LOAD_DEPTH_TEXTURE_X(_Utility_MainTexture, input.positionCS.xy);
}
ENDHLSL
}
}
}