254 lines
7.1 KiB
Plaintext
254 lines
7.1 KiB
Plaintext
// Crest Water System
|
|
// Copyright © 2024 Wave Harmonic. All rights reserved.
|
|
|
|
Shader "Hidden/Crest/Underwater/Water Surface Mask"
|
|
{
|
|
SubShader
|
|
{
|
|
PackageRequirements
|
|
{
|
|
"com.unity.render-pipelines.high-definition"
|
|
}
|
|
|
|
Tags { "RenderPipeline"="HDRenderPipeline" }
|
|
|
|
Pass
|
|
{
|
|
Name "Water Surface Mask"
|
|
// We always disable culling when rendering water mask, as we only
|
|
// use it for underwater rendering features.
|
|
Cull Off
|
|
|
|
Stencil
|
|
{
|
|
Ref [_StencilRef]
|
|
Comp [_Crest_StencilComparison]
|
|
}
|
|
|
|
HLSLPROGRAM
|
|
#pragma vertex Vertex
|
|
#pragma fragment Fragment
|
|
// for VFACE
|
|
#pragma target 3.0
|
|
|
|
#pragma multi_compile_local __ d_Tunnel
|
|
|
|
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
|
|
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
|
|
|
|
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Volume/Mask.hlsl"
|
|
ENDHLSL
|
|
}
|
|
|
|
Pass
|
|
{
|
|
Name "Water Surface Mask (Depth Only)"
|
|
Cull Off
|
|
ColorMask 0
|
|
|
|
HLSLPROGRAM
|
|
#pragma vertex Vertex
|
|
#pragma fragment Fragment
|
|
// for VFACE
|
|
#pragma target 3.0
|
|
|
|
#define m_Discard discard
|
|
|
|
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
|
|
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
|
|
|
|
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Volume/Mask.hlsl"
|
|
ENDHLSL
|
|
}
|
|
|
|
Pass
|
|
{
|
|
Name "Water Horizon Mask"
|
|
Cull Off
|
|
ZWrite Off
|
|
// Horizon must be rendered first or it will overwrite the mask with incorrect values. ZTest not needed.
|
|
ZTest Always
|
|
|
|
Stencil
|
|
{
|
|
Ref [_StencilRef]
|
|
Comp [_Crest_StencilComparison]
|
|
}
|
|
|
|
HLSLPROGRAM
|
|
#pragma vertex Vertex
|
|
#pragma fragment Fragment
|
|
|
|
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
|
|
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
|
|
|
|
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Volume/MaskHorizon.hlsl"
|
|
ENDHLSL
|
|
}
|
|
}
|
|
|
|
SubShader
|
|
{
|
|
PackageRequirements
|
|
{
|
|
"com.unity.render-pipelines.universal"
|
|
}
|
|
|
|
Tags { "RenderPipeline"="UniversalPipeline" }
|
|
|
|
Pass
|
|
{
|
|
Name "Water Surface Mask"
|
|
// We always disable culling when rendering water mask, as we only
|
|
// use it for underwater rendering features.
|
|
Cull Off
|
|
|
|
Stencil
|
|
{
|
|
Ref [_StencilRef]
|
|
Comp [_Crest_StencilComparison]
|
|
}
|
|
|
|
HLSLPROGRAM
|
|
#pragma vertex Vertex
|
|
#pragma fragment Fragment
|
|
// for VFACE
|
|
#pragma target 3.0
|
|
|
|
#pragma multi_compile_local __ d_Tunnel
|
|
|
|
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
|
|
|
|
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Volume/Mask.hlsl"
|
|
ENDHLSL
|
|
}
|
|
|
|
Pass
|
|
{
|
|
Name "Water Surface Mask (Depth Only)"
|
|
Cull Off
|
|
ColorMask 0
|
|
|
|
HLSLPROGRAM
|
|
#pragma vertex Vertex
|
|
#pragma fragment Fragment
|
|
// for VFACE
|
|
#pragma target 3.0
|
|
|
|
#define m_Discard discard
|
|
|
|
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
|
|
|
|
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Volume/Mask.hlsl"
|
|
ENDHLSL
|
|
}
|
|
|
|
Pass
|
|
{
|
|
Name "Water Horizon Mask"
|
|
Cull Off
|
|
ZWrite Off
|
|
// Horizon must be rendered first or it will overwrite the mask with incorrect values. ZTest not needed.
|
|
ZTest Always
|
|
|
|
Stencil
|
|
{
|
|
Ref [_StencilRef]
|
|
Comp [_Crest_StencilComparison]
|
|
}
|
|
|
|
HLSLPROGRAM
|
|
#pragma vertex Vertex
|
|
#pragma fragment Fragment
|
|
|
|
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
|
|
|
|
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Volume/MaskHorizon.hlsl"
|
|
ENDHLSL
|
|
}
|
|
}
|
|
|
|
SubShader
|
|
{
|
|
Pass
|
|
{
|
|
Name "Water Surface Mask"
|
|
// We always disable culling when rendering water mask, as we only
|
|
// use it for underwater rendering features.
|
|
Cull Off
|
|
|
|
Stencil
|
|
{
|
|
Ref [_StencilRef]
|
|
Comp [_Crest_StencilComparison]
|
|
}
|
|
|
|
CGPROGRAM
|
|
#pragma vertex Vertex
|
|
#pragma fragment Fragment
|
|
// for VFACE
|
|
#pragma target 3.0
|
|
|
|
#pragma multi_compile_local __ d_Tunnel
|
|
|
|
#include "UnityCG.cginc"
|
|
|
|
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Library/Utility/Legacy/Core.hlsl"
|
|
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Library/Utility/Legacy/InputsDriven.hlsl"
|
|
|
|
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Volume/Mask.hlsl"
|
|
ENDCG
|
|
}
|
|
|
|
Pass
|
|
{
|
|
Name "Water Surface Mask (Depth Only)"
|
|
Cull Off
|
|
ColorMask 0
|
|
|
|
CGPROGRAM
|
|
#pragma vertex Vertex
|
|
#pragma fragment Fragment
|
|
// for VFACE
|
|
#pragma target 3.0
|
|
|
|
#define m_Discard discard
|
|
|
|
#include "UnityCG.cginc"
|
|
|
|
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Library/Utility/Legacy/Core.hlsl"
|
|
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Library/Utility/Legacy/InputsDriven.hlsl"
|
|
|
|
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Volume/Mask.hlsl"
|
|
ENDCG
|
|
}
|
|
|
|
Pass
|
|
{
|
|
Name "Water Horizon Mask"
|
|
Cull Off
|
|
ZWrite Off
|
|
// Horizon must be rendered first or it will overwrite the mask with incorrect values. ZTest not needed.
|
|
ZTest Always
|
|
|
|
Stencil
|
|
{
|
|
Ref [_StencilRef]
|
|
Comp [_Crest_StencilComparison]
|
|
}
|
|
|
|
CGPROGRAM
|
|
#pragma vertex Vertex
|
|
#pragma fragment Fragment
|
|
|
|
#include "UnityCG.cginc"
|
|
|
|
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Library/Utility/Legacy/Core.hlsl"
|
|
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Library/Utility/Legacy/InputsDriven.hlsl"
|
|
|
|
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Volume/MaskHorizon.hlsl"
|
|
ENDCG
|
|
}
|
|
}
|
|
}
|