Shader "zzwind/WindClothUnlit" { Properties { [MainTexture] _BaseMap("Texture", 2D) = "white" {} [MainColor] _BaseColor("Color", Color) = (1, 1, 1, 1) _Cutoff("AlphaCutout", Range(0.0, 1.0)) = 0.5 _Wind("Wind params",Vector) = (1,1,1,1) _WindAmplitude("Wind Amplitude", float) = 0.5 _WindSpeed("Wind Speed",float) = 0.5 } SubShader { Tags { "RenderType" = "Opaque" "IgnoreProjector" = "True" "UniversalMaterialType" = "Unlit" "RenderPipeline" = "UniversalPipeline" } Pass { Name "Unlit" Blend SrcAlpha OneMinusSrcAlpha, One OneMinusSrcAlpha ZWrite On Cull Back ZTest LEqual ZClip On HLSLPROGRAM #pragma vertex vert #pragma fragment frag #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" #include "Packages/zzwater/shaders/libs/WindAnim.hlsl" TEXTURE2D(_BaseMap); SAMPLER(sampler_BaseMap); CBUFFER_START(UnityPerMaterial) float _Cutoff; half4 _BaseColor; half4 _BaseMap_ST; half4 _Wind; float _WindAmplitude; float _WindSpeed; CBUFFER_END struct Attributes { float4 positionOS : POSITION; float4 tangentOS : TANGENT; float2 uv : TEXCOORD0; float3 normalOS : NORMAL; float4 color : COLOR; }; struct Varyings { float4 positionCS : SV_POSITION; float2 uv : TEXCOORD0; float4 color : TEXCOORD2; }; Varyings vert(Attributes input) { Varyings output; float bendingFact = input.color.a; float4 wind; wind.xyz = _Wind.xyz; wind.w = _Wind.w * bendingFact.x; float4 windParams = float4(0,_WindAmplitude,bendingFact,0); float windTime = _Time.y * _WindSpeed; float4 VertexInWndPos = ClothWindAnim(input.positionOS,input.normalOS,windParams,wind,windTime); output.positionCS = TransformObjectToHClip(VertexInWndPos); output.uv = TRANSFORM_TEX(input.uv, _BaseMap); output.color = input.color; return output; } float4 frag(Varyings input) : SV_Target { half2 uv = input.uv; half4 texColor = SAMPLE_TEXTURE2D(_BaseMap, sampler_BaseMap, uv); half3 color = texColor.rgb * _BaseColor.rgb; half alpha = texColor.a * _BaseColor.a; clip(alpha - _Cutoff); return float4(color, alpha); } ENDHLSL } } }