Shader "IndianOcean/AbyssEdgeGlow" { // 悬崖边缘发光线 Shader // 加法混合 + Queue 3200(在黑暗遮罩之后渲染) // UV.y = 1 在顶部(亮),UV.y = 0 在底部(暗) // 用于 CliffWallBuilder 生成的边缘条带,勾勒地面断开处的轮廓 Properties { _Color ("发光颜色", Color) = (0.2, 0.6, 0.9, 1.0) _Intensity ("亮度", Range(0.1, 5.0)) = 1.5 _Gradient ("渐变(越大边缘越硬)", Range(0.1, 3.0)) = 1.0 } SubShader { Tags { "RenderType" = "Transparent" "Queue" = "Transparent+200" "RenderPipeline" = "UniversalPipeline" } Blend SrcAlpha One ZWrite Off ZTest LEqual Cull Off Pass { Name "EdgeGlow" HLSLPROGRAM #pragma vertex vert #pragma fragment frag #pragma multi_compile_instancing #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" struct Attributes { float4 positionOS : POSITION; float2 uv : TEXCOORD0; UNITY_VERTEX_INPUT_INSTANCE_ID }; struct Varyings { float4 positionCS : SV_POSITION; float2 uv : TEXCOORD0; UNITY_VERTEX_INPUT_INSTANCE_ID }; CBUFFER_START(UnityPerMaterial) float4 _Color; float _Intensity; float _Gradient; CBUFFER_END Varyings vert(Attributes input) { Varyings output; UNITY_SETUP_INSTANCE_ID(input); UNITY_TRANSFER_INSTANCE_ID(input, output); output.positionCS = TransformObjectToHClip(input.positionOS.xyz); output.uv = input.uv; return output; } half4 frag(Varyings input) : SV_Target { // UV.y: 1=顶部(亮), 0=底部(暗) float glow = pow(input.uv.y, _Gradient); float3 col = _Color.rgb * _Intensity; return half4(col, glow); } ENDHLSL } } FallBack Off }