Shader "Custom/CountryURP" { Properties { _BaseColor("Колір країни", Color) = (0.8, 0.8, 0.8, 1) _HoverColor("Колір при наведенні", Color) = (1, 1, 0.6, 1) _SelectedColor("Колір при виборі", Color) = (1, 0.85, 0.1, 1) _HoverStrength("Сила hover ефекту", Range(0, 1)) = 0 _SelectStrength("Сила вибору", Range(0, 1)) = 0 _EdgeColor("Колір межі", Color) = (0.1, 0.1, 0.1, 1) _EdgeWidth("Товщина межі", Range(0, 1)) = 0.4 } SubShader { Tags { "RenderType" = "Opaque" "RenderPipeline" = "UniversalPipeline" "Queue" = "Geometry" } Pass { Name "ForwardLit" Tags { "LightMode" = "UniversalForward" } Cull Back 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" CBUFFER_START(UnityPerMaterial) float4 _BaseColor; float4 _HoverColor; float4 _SelectedColor; float _HoverStrength; float _SelectStrength; float4 _EdgeColor; float _EdgeWidth; CBUFFER_END struct Attributes { float4 positionOS : POSITION; float3 normalOS : NORMAL; }; struct Varyings { float4 positionHCS : SV_POSITION; float3 normalWS : TEXCOORD0; float3 positionWS : TEXCOORD1; float edge : TEXCOORD2; }; Varyings vert(Attributes IN) { Varyings OUT; OUT.positionHCS = TransformObjectToHClip(IN.positionOS.xyz); OUT.normalWS = TransformObjectToWorldNormal(IN.normalOS); OUT.positionWS = TransformObjectToWorld(IN.positionOS.xyz); float3 viewDir = normalize(_WorldSpaceCameraPos - OUT.positionWS); OUT.edge = abs(dot(normalize(OUT.normalWS), viewDir)); return OUT; } half4 frag(Varyings IN) : SV_Target { float3 normal = normalize(IN.normalWS); Light mainLight = GetMainLight(); float NdotL = saturate(dot(normal, mainLight.direction)); float lighting = 0.4 + 0.6 * NdotL; float4 col = lerp(_BaseColor, _HoverColor, _HoverStrength); col = lerp(col, _SelectedColor, _SelectStrength); col.rgb *= lighting; float edgeFactor = 1.0 - smoothstep(0.0, _EdgeWidth, IN.edge); col.rgb = lerp(col.rgb, _EdgeColor.rgb, edgeFactor * 0.85); return col; } ENDHLSL } } }