summaryrefslogtreecommitdiff
path: root/Assets/Art/Shaders/UnityChan/CharaSkin.cginc
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2020-10-13 10:33:05 +0800
committerchai <chaifix@163.com>2020-10-13 10:33:05 +0800
commitfc6de82e75310b4c007d80753a5f58e6692f4855 (patch)
treee6d8d9226595a6727d43f18a218f53533101a4e0 /Assets/Art/Shaders/UnityChan/CharaSkin.cginc
parent8cd16fb71177bb61a9475284d944bc6aba30740e (diff)
+misc
Diffstat (limited to 'Assets/Art/Shaders/UnityChan/CharaSkin.cginc')
-rw-r--r--Assets/Art/Shaders/UnityChan/CharaSkin.cginc202
1 files changed, 101 insertions, 101 deletions
diff --git a/Assets/Art/Shaders/UnityChan/CharaSkin.cginc b/Assets/Art/Shaders/UnityChan/CharaSkin.cginc
index 15fb97ab..1f6d45be 100644
--- a/Assets/Art/Shaders/UnityChan/CharaSkin.cginc
+++ b/Assets/Art/Shaders/UnityChan/CharaSkin.cginc
@@ -2,104 +2,104 @@
// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
-// Character skin shader
-// Includes falloff shadow
-
-#define ENABLE_CAST_SHADOWS
-
-// Material parameters
-float4 _Color;
-float4 _ShadowColor;
-float4 _LightColor0;
-float4 _MainTex_ST;
-
-// Textures
-sampler2D _MainTex;
-sampler2D _FalloffSampler;
-sampler2D _RimLightSampler;
-
-// Constants
-#define FALLOFF_POWER 1.0
-
-#ifdef ENABLE_CAST_SHADOWS
-
-// Structure from vertex shader to fragment shader
-struct v2f
-{
- float4 pos : SV_POSITION;
- LIGHTING_COORDS( 0, 1 )
- float3 normal : TEXCOORD2;
- float2 uv : TEXCOORD3;
- float3 eyeDir : TEXCOORD4;
- float3 lightDir : TEXCOORD5;
-};
-
-#else
-
-// Structure from vertex shader to fragment shader
-struct v2f
-{
- float4 pos : SV_POSITION;
- float3 normal : TEXCOORD0;
- float2 uv : TEXCOORD1;
- float3 eyeDir : TEXCOORD2;
- float3 lightDir : TEXCOORD3;
-};
-
-#endif
-
-// Float types
-#define float_t half
-#define float2_t half2
-#define float3_t half3
-#define float4_t half4
-
-// Vertex shader
-v2f vert( appdata_base v )
-{
- v2f o;
- o.pos = UnityObjectToClipPos( v.vertex );
- o.uv = TRANSFORM_TEX( v.texcoord.xy, _MainTex );
- o.normal = normalize( mul( unity_ObjectToWorld, float4_t( v.normal, 0 ) ).xyz );
-
- // Eye direction vector
- float4_t worldPos = mul( unity_ObjectToWorld, v.vertex );
- o.eyeDir = normalize( _WorldSpaceCameraPos - worldPos );
-
- o.lightDir = WorldSpaceLightDir( v.vertex );
-
-#ifdef ENABLE_CAST_SHADOWS
- TRANSFER_VERTEX_TO_FRAGMENT( o );
-#endif
-
- return o;
-}
-
-// Fragment shader
-float4 frag( v2f i ) : COLOR
-{
- float4_t diffSamplerColor = tex2D( _MainTex, i.uv );
-
- // Falloff. Convert the angle between the normal and the camera direction into a lookup for the gradient
- float_t normalDotEye = dot( i.normal, i.eyeDir );
- float_t falloffU = clamp( 1 - abs( normalDotEye ), 0.02, 0.98 );
- float4_t falloffSamplerColor = FALLOFF_POWER * tex2D( _FalloffSampler, float2( falloffU, 0.25f ) );
- float3_t combinedColor = lerp( diffSamplerColor.rgb, falloffSamplerColor.rgb * diffSamplerColor.rgb, falloffSamplerColor.a );
-
- // Rimlight
- float_t rimlightDot = saturate( 0.5 * ( dot( i.normal, i.lightDir ) + 1.0 ) );
- falloffU = saturate( rimlightDot * falloffU );
- //falloffU = saturate( ( rimlightDot * falloffU - 0.5 ) * 32.0 );
- falloffU = tex2D( _RimLightSampler, float2( falloffU, 0.25f ) ).r;
- float3_t lightColor = diffSamplerColor.rgb * 0.5; // * 2.0;
- combinedColor += falloffU * lightColor;
-
-#ifdef ENABLE_CAST_SHADOWS
- // Cast shadows
- float3_t shadowColor = _ShadowColor.rgb * combinedColor;
- float_t attenuation = saturate( 2.0 * LIGHT_ATTENUATION( i ) - 1.0 );
- combinedColor = lerp( shadowColor, combinedColor, attenuation );
-#endif
-
- return float4_t( combinedColor, diffSamplerColor.a ) * _Color * _LightColor0;
-}
+// Character skin shader
+// Includes falloff shadow
+
+#define ENABLE_CAST_SHADOWS
+
+// Material parameters
+float4 _Color;
+float4 _ShadowColor;
+float4 _LightColor0;
+float4 _MainTex_ST;
+
+// Textures
+sampler2D _MainTex;
+sampler2D _FalloffSampler;
+sampler2D _RimLightSampler;
+
+// Constants
+#define FALLOFF_POWER 1.0
+
+#ifdef ENABLE_CAST_SHADOWS
+
+// Structure from vertex shader to fragment shader
+struct v2f
+{
+ float4 pos : SV_POSITION;
+ LIGHTING_COORDS( 0, 1 )
+ float3 normal : TEXCOORD2;
+ float2 uv : TEXCOORD3;
+ float3 eyeDir : TEXCOORD4;
+ float3 lightDir : TEXCOORD5;
+};
+
+#else
+
+// Structure from vertex shader to fragment shader
+struct v2f
+{
+ float4 pos : SV_POSITION;
+ float3 normal : TEXCOORD0;
+ float2 uv : TEXCOORD1;
+ float3 eyeDir : TEXCOORD2;
+ float3 lightDir : TEXCOORD3;
+};
+
+#endif
+
+// Float types
+#define float_t half
+#define float2_t half2
+#define float3_t half3
+#define float4_t half4
+
+// Vertex shader
+v2f vert( appdata_base v )
+{
+ v2f o;
+ o.pos = UnityObjectToClipPos( v.vertex );
+ o.uv = TRANSFORM_TEX( v.texcoord.xy, _MainTex );
+ o.normal = normalize( mul( unity_ObjectToWorld, float4_t( v.normal, 0 ) ).xyz );
+
+ // Eye direction vector
+ float4_t worldPos = mul( unity_ObjectToWorld, v.vertex );
+ o.eyeDir = normalize( _WorldSpaceCameraPos - worldPos );
+
+ o.lightDir = WorldSpaceLightDir( v.vertex );
+
+#ifdef ENABLE_CAST_SHADOWS
+ TRANSFER_VERTEX_TO_FRAGMENT( o );
+#endif
+
+ return o;
+}
+
+// Fragment shader
+float4 frag( v2f i ) : COLOR
+{
+ float4_t diffSamplerColor = tex2D( _MainTex, i.uv );
+
+ // Falloff. Convert the angle between the normal and the camera direction into a lookup for the gradient
+ float_t normalDotEye = dot( i.normal, i.eyeDir );
+ float_t falloffU = clamp( 1 - abs( normalDotEye ), 0.02, 0.98 );
+ float4_t falloffSamplerColor = FALLOFF_POWER * tex2D( _FalloffSampler, float2( falloffU, 0.25f ) );
+ float3_t combinedColor = lerp( diffSamplerColor.rgb, falloffSamplerColor.rgb * diffSamplerColor.rgb, falloffSamplerColor.a );
+
+ // Rimlight
+ float_t rimlightDot = saturate( 0.5 * ( dot( i.normal, i.lightDir ) + 1.0 ) );
+ falloffU = saturate( rimlightDot * falloffU );
+ //falloffU = saturate( ( rimlightDot * falloffU - 0.5 ) * 32.0 );
+ falloffU = tex2D( _RimLightSampler, float2( falloffU, 0.25f ) ).r;
+ float3_t lightColor = diffSamplerColor.rgb * 0.5; // * 2.0;
+ combinedColor += falloffU * lightColor;
+
+#ifdef ENABLE_CAST_SHADOWS
+ // Cast shadows
+ float3_t shadowColor = _ShadowColor.rgb * combinedColor;
+ float_t attenuation = saturate( 2.0 * LIGHT_ATTENUATION( i ) - 1.0 );
+ combinedColor = lerp( shadowColor, combinedColor, attenuation );
+#endif
+
+ return float4_t( combinedColor, diffSamplerColor.a ) * _Color * _LightColor0;
+}