Files
FueraDeEscala/Assets/Mixamo Animations/Changed Folder/Ellen/Shaders/SculptedHair.shader
Robii Aragon 779f2c8b20 add ckg
plantilla base para movimiento básico
2026-02-05 05:07:55 -08:00

95 lines
3.2 KiB
Plaintext

Shader "Custom/SculptedHair" {
Properties {
_Color ("Main Color", Color) = (1,1,1,1)
_HighlightColor ("Highlight Color", Color) = (1,1,1,1)
_HighlightColor2 ("Highlight Color", Color) = (1,1,1,1)
_MainTex ("Diffuse (RGB) Alpha (A)", 2D) = "white" {}
_MetallicSmooth ("Metallic (RGB) _Smooth (A)", 2D) = "white" {}
_BumpMap ("Normal (Normal)", 2D) = "bump" {}
_AnisoTex ("Anisotropic Direction (Normal)", 2D) = "bump" {}
_AnisoOffset ("Anisotropic Highlight Offset", Range(-1,1)) = -0.2
_AnisoOffset2 ("Anisotropic Highlight Offset", Range(-1,1)) = -0.2
_Gloss ("Gloss", Range(0,1)) = 0.2
_Gloss2 ("Gloss2", Range(0,1)) = 0.2
_Specularity ("Specularity", Range(0,1)) = 0.2
_Specularity2 ("Specularity2", Range(0,1)) = 0.2
_Reflection ("Reflection", Range(0,1)) = 0.2
_value ("value", Float) = 0.0
}
SubShader{
Tags { "RenderType" = "Opaque" }
CGPROGRAM
#pragma surface surf Aniso fullforwardshadows addshadow
#pragma target 3.0
struct Input
{
float2 uv_MainTex;
float2 uv_AnisoTex;
};
struct SurfaceOutputAniso {
fixed3 Albedo;
fixed3 Ramp;
fixed3 Emission;
fixed3 Normal;
fixed4 AnisoDir;
fixed Alpha;
fixed Smoothness;
};
fixed4 _Color;
fixed4 _HighlightColor;
fixed4 _HighlightColor2;
fixed _AnisoOffset;
fixed _AnisoOffset2;
float _value;
fixed _Gloss, _Gloss2, _Specularity, _Specularity2, _Reflection;
sampler2D _MainTex, _SpecularTex, _BumpMap, _AnisoTex, _MetallicSmooth;
inline fixed4 LightingAniso (SurfaceOutputAniso s, fixed3 lightDir, fixed3 viewDir, fixed atten)
{
fixed3 h = normalize(normalize(lightDir) + normalize(viewDir));
float NdotL = saturate(dot(s.Normal, lightDir));
fixed HdotA = dot(normalize(s.Normal + s.AnisoDir.rgb), h);
float aniso = max(0, sin(radians((HdotA + _AnisoOffset + (s.Smoothness*0.1)) * 180 )));
float aniso2 = max(0, sin(radians((HdotA + _AnisoOffset2 + (s.Smoothness*0.1)) * 180 )));
float spec = saturate(dot(s.Normal, h));
float spec2 = spec;
spec = saturate(pow(lerp(spec, aniso, s.AnisoDir.a), _Gloss * 128) * _Specularity);
spec2 = saturate(pow(lerp(spec2, aniso2, s.AnisoDir.a), _Gloss2 * 128) * _Specularity2);
float4 refColor = 1.0;
float3 refDir = reflect(-viewDir, s.Normal);
float4 reflection = UNITY_SAMPLE_TEXCUBE(unity_SpecCube0, refDir);
refColor.rgb = DecodeHDR(reflection, unity_SpecCube0_HDR);
refColor.a = 1.0;
fixed4 c;
c.rgb = ((s.Albedo * _LightColor0.rgb * NdotL) + (lerp(_HighlightColor.rgb, refColor.rgb, _Reflection) * spec * NdotL)) * (atten * 2);
c.rgb += lerp(_HighlightColor2.rgb, refColor.rgb, _Reflection) * spec2 * NdotL;
c.a = 1;
return c;
}
void surf (Input IN, inout SurfaceOutputAniso o)
{
fixed4 albedo = tex2D(_MainTex, IN.uv_MainTex) * _Color;
o.Smoothness = tex2D(_MetallicSmooth, IN.uv_MainTex).a;
o.Albedo = albedo.rgb;
o.Alpha = albedo.a;
o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_MainTex));
o.AnisoDir = fixed4(tex2D(_AnisoTex, IN.uv_AnisoTex).rgb, 1);
}
ENDCG
}
FallBack "Diffuse"
}