Files
Fishing2/Packages/com.waveharmonic.crest/Runtime/Shaders/Meniscus/Meniscus.shader
2026-01-08 22:30:55 +08:00

595 lines
17 KiB
Plaintext

// Crest Water System
// Copyright © 2024 Wave Harmonic. All rights reserved.
Shader "Crest/Meniscus"
{
Properties
{
_Crest_Radius("Radius", Range(0.001, 0.1)) = 0.01
[Space(10)]
[Toggle(d_Crest_Refraction)]
_Crest_RefractionEnabled("Refraction", Integer) = 1
_Crest_RefractionStrength("Refraction Strength", Range(0, 1)) = 0.2
[Space(10)]
[Toggle(d_Crest_Lighting)]
_Crest_LightingEnabled("Lighting", Integer) = 1
}
HLSLINCLUDE
#pragma vertex Vertex
#pragma fragment Fragment
// #pragma enable_d3d11_debug_symbols
ENDHLSL
SubShader
{
PackageRequirements
{
"com.unity.render-pipelines.high-definition"
}
Tags { "RenderPipeline"="HDRenderPipeline" }
Blend SrcAlpha OneMinusSrcAlpha
ColorMask RGB
Cull Off
ZTest Always
ZWrite Off
Pass
{
Name "Meniscus"
HLSLPROGRAM
#pragma shader_feature_local_fragment _ d_Crest_Refraction
#pragma shader_feature_local_fragment _ d_Crest_Lighting
#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/Library/Utility/RP/HDRP/Common.hlsl"
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Meniscus/Meniscus.hlsl"
ENDHLSL
}
Pass
{
PackageRequirements
{
"com.waveharmonic.crest.portals"
}
Name "Meniscus (Masked)"
HLSLPROGRAM
#pragma shader_feature_local_fragment _ d_Crest_Refraction
#pragma shader_feature_local_fragment _ d_Crest_Lighting
#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/Library/Utility/RP/HDRP/Common.hlsl"
#define d_Masked 1
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Meniscus/Meniscus.hlsl"
ENDHLSL
}
Pass
{
PackageRequirements
{
"com.waveharmonic.crest.portals"
}
Name "Meniscus (Front Face)"
Cull Back
ZTest LEqual
HLSLPROGRAM
#pragma shader_feature_local_fragment _ d_Crest_Refraction
#pragma shader_feature_local_fragment _ d_Crest_Lighting
#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/Library/Utility/RP/HDRP/Common.hlsl"
#define d_Crest_Geometry 1
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Meniscus/Meniscus.hlsl"
ENDHLSL
}
Pass
{
PackageRequirements
{
"com.waveharmonic.crest.portals"
}
Name "Meniscus (Back Face)"
Cull Front
ZTest LEqual
HLSLPROGRAM
#pragma shader_feature_local_fragment _ d_Crest_Refraction
#pragma shader_feature_local_fragment _ d_Crest_Lighting
#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/Library/Utility/RP/HDRP/Common.hlsl"
#define d_Crest_Geometry 1
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Meniscus/Meniscus.hlsl"
ENDHLSL
}
//
// Obsolete. Depends on the raster mask.
//
Pass
{
Name "Meniscus"
Blend DstColor Zero
HLSLPROGRAM
#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/Meniscus/Meniscus.Obsolete.hlsl"
ENDHLSL
}
Pass
{
PackageRequirements
{
"com.waveharmonic.crest.portals"
}
Name "Meniscus (Portal)"
Blend DstColor Zero
HLSLPROGRAM
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
// Full-screen only applicable portals with back-faces.
#define d_Crest_HasBackFace 1
#include "Packages/com.waveharmonic.crest.portals/Runtime/Shaders/Meniscus.hlsl"
ENDHLSL
}
Pass
{
PackageRequirements
{
"com.waveharmonic.crest.portals"
}
Name "Meniscus (Front Face)"
Blend DstColor Zero
Cull Back
ZTest LEqual
HLSLPROGRAM
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
#define d_Crest_Geometry 1
#define d_Crest_FrontFace 1
#include "Packages/com.waveharmonic.crest.portals/Runtime/Shaders/Meniscus.hlsl"
ENDHLSL
}
Pass
{
PackageRequirements
{
"com.waveharmonic.crest.portals"
}
Name "Meniscus (Back Face)"
Blend DstColor Zero
Cull Front
ZTest LEqual
HLSLPROGRAM
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
#include "Packages/com.unity.render-pipelines.high-definition/Runtime/ShaderLibrary/ShaderVariables.hlsl"
#define d_Crest_Geometry 1
#define d_Crest_BackFace 1
#include "Packages/com.waveharmonic.crest.portals/Runtime/Shaders/Meniscus.hlsl"
ENDHLSL
}
}
SubShader
{
PackageRequirements
{
"com.unity.render-pipelines.universal"
}
Tags { "RenderPipeline"="UniversalPipeline" }
Blend SrcAlpha OneMinusSrcAlpha
ColorMask RGB
Cull Off
ZTest Always
ZWrite Off
Pass
{
Name "Meniscus"
HLSLPROGRAM
#pragma shader_feature_local_fragment _ d_Crest_Refraction
#pragma shader_feature_local_fragment _ d_Crest_Lighting
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareOpaqueTexture.hlsl"
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Meniscus/Meniscus.hlsl"
ENDHLSL
}
Pass
{
PackageRequirements
{
"com.waveharmonic.crest.portals"
}
Name "Meniscus (Masked)"
HLSLPROGRAM
#pragma shader_feature_local_fragment _ d_Crest_Refraction
#pragma shader_feature_local_fragment _ d_Crest_Lighting
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareOpaqueTexture.hlsl"
#define d_Masked 1
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Meniscus/Meniscus.hlsl"
ENDHLSL
}
Pass
{
PackageRequirements
{
"com.waveharmonic.crest.portals"
}
Name "Meniscus (Front Face)"
Cull Back
ZTest LEqual
HLSLPROGRAM
#pragma shader_feature_local_fragment _ d_Crest_Refraction
#pragma shader_feature_local_fragment _ d_Crest_Lighting
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareOpaqueTexture.hlsl"
#define d_Crest_Geometry 1
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Meniscus/Meniscus.hlsl"
ENDHLSL
}
Pass
{
PackageRequirements
{
"com.waveharmonic.crest.portals"
}
Name "Meniscus (Back Face)"
Cull Front
ZTest LEqual
HLSLPROGRAM
#pragma shader_feature_local_fragment _ d_Crest_Refraction
#pragma shader_feature_local_fragment _ d_Crest_Lighting
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/DeclareOpaqueTexture.hlsl"
#define d_Crest_Geometry 1
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Meniscus/Meniscus.hlsl"
ENDHLSL
}
//
// Obsolete. Depends on the raster mask.
//
Pass
{
Name "Meniscus"
Blend DstColor Zero
HLSLPROGRAM
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Meniscus/Meniscus.Obsolete.hlsl"
ENDHLSL
}
Pass
{
PackageRequirements
{
"com.waveharmonic.crest.portals"
}
Name "Meniscus (Portal)"
Blend DstColor Zero
HLSLPROGRAM
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
// Full-screen only applicable portals with back-faces.
#define d_Crest_HasBackFace 1
#include "Packages/com.waveharmonic.crest.portals/Runtime/Shaders/Meniscus.hlsl"
ENDHLSL
}
Pass
{
PackageRequirements
{
"com.waveharmonic.crest.portals"
}
Name "Meniscus (Front Face)"
Blend DstColor Zero
Cull Back
ZTest LEqual
HLSLPROGRAM
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#define d_Crest_Geometry 1
#define d_Crest_FrontFace 1
#include "Packages/com.waveharmonic.crest.portals/Runtime/Shaders/Meniscus.hlsl"
ENDHLSL
}
Pass
{
PackageRequirements
{
"com.waveharmonic.crest.portals"
}
Name "Meniscus (Back Face)"
Blend DstColor Zero
Cull Front
ZTest LEqual
HLSLPROGRAM
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#define d_Crest_Geometry 1
#define d_Crest_BackFace 1
#include "Packages/com.waveharmonic.crest.portals/Runtime/Shaders/Meniscus.hlsl"
ENDHLSL
}
}
SubShader
{
Blend SrcAlpha OneMinusSrcAlpha
ColorMask RGB
Cull Off
ZTest Always
ZWrite Off
Pass
{
Name "Meniscus"
HLSLPROGRAM
#pragma shader_feature_local_fragment _ d_Crest_Refraction
#pragma shader_feature_local_fragment _ d_Crest_Lighting
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Library/Utility/Legacy/Core.hlsl"
#include "Packages/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/ShaderLibrary/DeclareOpaqueTexture.hlsl"
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Meniscus/Meniscus.hlsl"
ENDHLSL
}
Pass
{
PackageRequirements
{
"com.waveharmonic.crest.portals"
}
Name "Meniscus (Masked)"
HLSLPROGRAM
#pragma shader_feature_local_fragment _ d_Crest_Refraction
#pragma shader_feature_local_fragment _ d_Crest_Lighting
#define d_Masked 1
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Library/Utility/Legacy/Core.hlsl"
#include "Packages/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/ShaderLibrary/DeclareOpaqueTexture.hlsl"
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Meniscus/Meniscus.hlsl"
ENDHLSL
}
Pass
{
PackageRequirements
{
"com.waveharmonic.crest.portals"
}
Name "Meniscus (Front)"
Cull Back
ZTest LEqual
HLSLPROGRAM
#pragma shader_feature_local_fragment _ d_Crest_Refraction
#pragma shader_feature_local_fragment _ d_Crest_Lighting
#define d_Crest_Geometry 1
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Library/Utility/Legacy/Core.hlsl"
#include "Packages/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/ShaderLibrary/DeclareOpaqueTexture.hlsl"
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Meniscus/Meniscus.hlsl"
ENDHLSL
}
Pass
{
PackageRequirements
{
"com.waveharmonic.crest.portals"
}
Name "Meniscus (Back)"
Cull Front
ZTest LEqual
HLSLPROGRAM
#pragma shader_feature_local_fragment _ d_Crest_Refraction
#pragma shader_feature_local_fragment _ d_Crest_Lighting
#define d_Crest_Geometry 1
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Library/Utility/Legacy/Core.hlsl"
#include "Packages/com.unity.shadergraph/Editor/Generation/Targets/BuiltIn/ShaderLibrary/DeclareOpaqueTexture.hlsl"
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Meniscus/Meniscus.hlsl"
ENDHLSL
}
//
// Obsolete. Depends on the raster mask.
//
Pass
{
Name "Meniscus"
Blend DstColor Zero
HLSLPROGRAM
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Library/Utility/Legacy/Core.hlsl"
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Meniscus/Meniscus.Obsolete.hlsl"
ENDHLSL
}
Pass
{
PackageRequirements
{
"com.waveharmonic.crest.portals"
}
Name "Meniscus (Portal)"
Blend DstColor Zero
HLSLPROGRAM
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Library/Utility/Legacy/Core.hlsl"
// Full-screen only applicable portals with back-faces.
#define d_Crest_HasBackFace 1
#include "Packages/com.waveharmonic.crest.portals/Runtime/Shaders/Meniscus.hlsl"
ENDHLSL
}
Pass
{
PackageRequirements
{
"com.waveharmonic.crest.portals"
}
Name "Meniscus (Front Face)"
Blend DstColor Zero
Cull Back
ZTest LEqual
HLSLPROGRAM
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Library/Utility/Legacy/Core.hlsl"
#define d_Crest_Geometry 1
#define d_Crest_FrontFace 1
#include "Packages/com.waveharmonic.crest.portals/Runtime/Shaders/Meniscus.hlsl"
ENDHLSL
}
Pass
{
PackageRequirements
{
"com.waveharmonic.crest.portals"
}
Name "Meniscus (Back Face)"
Blend DstColor Zero
Cull Front
ZTest LEqual
HLSLPROGRAM
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Library/Utility/Legacy/Core.hlsl"
#define d_Crest_Geometry 1
#define d_Crest_BackFace 1
#include "Packages/com.waveharmonic.crest.portals/Runtime/Shaders/Meniscus.hlsl"
ENDHLSL
}
}
CustomEditor "WaveHarmonic.Crest.Editor.CustomShaderGUI"
}