// See "Toony Colors Pro 2/User/SliderRamp" for the ramp model. This variant adds a normal // map and a toon specular lobe; _Smoothness is TCP2's "Size" slider, which controls how // wide the highlight is rather than a PBR roughness. Shader "Voodoo_LaunchOps/SliderRampSpecularNormal" { Properties { [TCP2HeaderHelp(BASE, Base Properties)] _Color ("Color", Vector) = (1,1,1,1) _HColor ("Highlight Color", Vector) = (0.785,0.785,0.785,1) _SColor ("Shadow Color", Vector) = (0.195,0.195,0.195,1) _MainTex ("Main Texture", 2D) = "white" {} [TCP2Separator] [TCP2Header(RAMP SETTINGS)] _RampThreshold ("Ramp Threshold", Range(0, 1)) = 0.5 _RampSmooth ("Ramp Smoothing", Range(0.001, 1)) = 0.1 [TCP2Separator] [TCP2HeaderHelp(NORMAL MAPPING, Normal Bump Map)] _BumpMap ("Normal map (RGB)", 2D) = "bump" {} [TCP2Separator] [TCP2HeaderHelp(SPECULAR, Specular)] _SpecColor ("Specular Color", Vector) = (0.5,0.5,0.5,1) _Smoothness ("Size", Float) = 0.2 [TCP2Separator] [HideInInspector] __dummy__ ("unused", Float) = 0 } SubShader { Tags { "RenderType"="Opaque" } LOD 250 CGPROGRAM #pragma surface surf ToonRamp fullforwardshadows #pragma target 3.0 fixed4 _Color; fixed4 _HColor; fixed4 _SColor; sampler2D _MainTex; sampler2D _BumpMap; half _RampThreshold; half _RampSmooth; half _Smoothness; inline half4 LightingToonRamp (SurfaceOutput s, half3 lightDir, half3 viewDir, half atten) { half ndl = dot(s.Normal, lightDir) * 0.5 + 0.5; half ramp = smoothstep(_RampThreshold - _RampSmooth * 0.5, _RampThreshold + _RampSmooth * 0.5, ndl); ramp *= atten; half3 tint = lerp(_SColor.rgb, _HColor.rgb, ramp); half3 h = normalize(lightDir + viewDir); half ndh = max(0, dot(s.Normal, h)); // _Smoothness reads 0..1 as "highlight size", so map it to an exponent inversely half spec = pow(ndh, max(1.0, (1.0 - saturate(_Smoothness)) * 128.0)) * atten; half4 c; c.rgb = s.Albedo * _LightColor0.rgb * tint + _LightColor0.rgb * _SpecColor.rgb * spec; c.a = s.Alpha; return c; } struct Input { float2 uv_MainTex; float2 uv_BumpMap; }; void surf (Input IN, inout SurfaceOutput o) { fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color; o.Albedo = c.rgb; o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap)); o.Alpha = c.a; } ENDCG } Fallback "Diffuse" }