Shader "URPWater/VFX/FoamFX" { Properties { _MainTex ("Foam Mask", 2D) = "white" {} } SubShader { Tags {"Queue"="Transparent" "RenderType"="Transparent" "RenderPipeline"="UniversalPipeline"} ColorMask RGB Blend SrcAlpha OneMinusSrcAlpha Zwrite Off LOD 100 Pass { Name "URPWaterFoamFX" HLSLPROGRAM #pragma vertex vert #pragma fragment frag #pragma prefer_hlslcc gles #pragma exclude_renderers d3d11_9x #pragma multi_compile_instancing #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; float4 color : COLOR; UNITY_VERTEX_INPUT_INSTANCE_ID }; struct v2f { float4 vertex : SV_POSITION; float2 uv : TEXCOORD0; float4 color : COLOR; UNITY_VERTEX_INPUT_INSTANCE_ID UNITY_VERTEX_OUTPUT_STEREO }; CBUFFER_START(UnityPerMaterial) sampler2D _MainTex; float4 _MainTex_ST; CBUFFER_END v2f vert (appdata v) { v2f o; UNITY_SETUP_INSTANCE_ID(v); UNITY_TRANSFER_INSTANCE_ID(v, o); UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); o.vertex = TransformObjectToHClip(v.vertex.xyz); o.uv = TRANSFORM_TEX(v.uv, _MainTex); o.color = v.color; return o; } half4 frag (v2f i) : SV_Target { half4 col = tex2D(_MainTex, i.uv) * i.color; col *= half4(0, 0, 1, 1 * col.b); return col; } ENDHLSL } } }