Shader "Unlit URP Shader" { Properties { _HeadColor("HeadColor",color)=(1,1,1,1) _TailColor("TailColor",color)=(1,1,1,1) _Value("Value",Range(0,1))=0.5 _SpPow("SpPow",float)=1 _SpScale("SpScale",float)=1 _FPow("FPow",float)=1 _FScale("Fscale",float)=1 } SubShader { Tags { "Queue"="Transparent" "RenderType" = "Transparent" "RenderPipeline" = "UniversalPipeline" } LOD 100 Pass { Name "Unlit" Tags { "LightMode"="UniversalForward"} Blend SrcAlpha OneMinusSrcAlpha HLSLPROGRAM // Required to compile gles 2.0 with standard srp library #pragma prefer_hlslcc gles #pragma exclude_renderers d3d11_9x #pragma vertex vert #pragma fragment frag #pragma multi_compile_fog #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" #pragma multi_compile _ _MAIN_LIGHT_SHADOWS #pragma multi_compile _ _MAIN_LIGHT_SHADOWS_CASCADE #pragma multi_compile _ _SHADOWS_SOFT #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS struct Attributes { float4 positionOS : POSITION; float2 uv : TEXCOORD0; float3 normal:NORMAL; float3 wpos:TEXCOORD1; }; struct Varyings { float4 positionCS : SV_POSITION; float2 uv : TEXCOORD0; float3 normal:TEXCOORD1; float3 wpos:TEXCOORD2; }; CBUFFER_START(UnityPerMaterial) float _Value; float4 _HeadColor; float4 _TailColor; float _SpPow; float _SpScale; float _FPow; float _FScale; CBUFFER_END TEXTURE2D (_BaseMap);SAMPLER(sampler_BaseMap); Varyings vert(Attributes v) { Varyings o = (Varyings)0; o.positionCS = TransformObjectToHClip(v.positionOS.xyz); o.uv =v.uv; o.normal=TransformObjectToWorldNormal(v.normal); o.wpos=TransformObjectToWorld(v.positionOS); return o; } half4 frag(Varyings i) : SV_Target { half4 c; float3 LDir=normalize(_MainLightPosition); float3 VDir=normalize(_WorldSpaceCameraPos-i.wpos); float NdL=dot(i.normal,LDir)*0.5+0.5; float NdH=pow(saturate(dot(i.normal,normalize(LDir+VDir))),_SpPow)*_SpScale; float NdV=pow(saturate(dot(i.normal,VDir)),_FPow); float F=(1-NdV)*_FScale; c.rgba=lerp(_TailColor,_HeadColor,step(_Value,i.uv.y)); float3 specular=c.rgb*NdH; c.rgb=c.rgb*NdL+specular+F.xxx; //c.rgb=F.xxxx; //c.rgb = MixFog(c.rgb, i.fogCoord); return c; } ENDHLSL } } }