85 lines
2.1 KiB
Plaintext
85 lines
2.1 KiB
Plaintext
![]() |
Shader "MY/Monster"
|
||
|
{
|
||
|
Properties
|
||
|
{
|
||
|
_Color("Main Color", Color) = (0,0,0,1)
|
||
|
_MainTex("Base (RGB)", 2D) = "white" {}
|
||
|
|
||
|
_UVColor("UVColor", Color) = (0.5,0.5,0.5,0)
|
||
|
_UVMainTex("UVMainTex", 2D) = "white" {}
|
||
|
_UVMask("UVMask", 2D) = "white" {}
|
||
|
|
||
|
_UVXSpeed("UVXSpeed", Range(0, 8)) = 2
|
||
|
_UVYSpeed("UVYSpeed", Range(0, 8)) = 0
|
||
|
_UVDir("UVDir", Range(-1, 1)) = -1
|
||
|
}
|
||
|
|
||
|
SubShader
|
||
|
{
|
||
|
Tags{ "Queue" = "Geometry+20" "IgnoreProjector" = "True" }
|
||
|
Pass
|
||
|
{
|
||
|
CGPROGRAM
|
||
|
#pragma vertex vert_surf
|
||
|
#pragma fragment frag_surf
|
||
|
#pragma multi_compile_fwdbase
|
||
|
|
||
|
#include "HLSLSupport.cginc"
|
||
|
#include "UnityCG.cginc"
|
||
|
|
||
|
uniform sampler2D _MainTex;
|
||
|
uniform sampler2D _MatCap;
|
||
|
uniform half _MatCapPower;
|
||
|
|
||
|
uniform half4 _Color;
|
||
|
uniform half4 _MainTex_ST;
|
||
|
|
||
|
|
||
|
uniform sampler2D _UVMainTex;
|
||
|
uniform half4 _UVMainTex_ST;
|
||
|
uniform sampler2D _UVMask;
|
||
|
uniform half4 _UVMask_ST;
|
||
|
uniform half4 _UVColor;
|
||
|
|
||
|
uniform half _UVXSpeed;
|
||
|
uniform half _UVYSpeed;
|
||
|
uniform half _UVDir;
|
||
|
uniform half3 _RimColor;
|
||
|
|
||
|
struct v2f_surf
|
||
|
{
|
||
|
half4 pos : SV_POSITION;
|
||
|
half4 uv : TEXCOORD0;
|
||
|
half3 normal : TEXCOORD1;
|
||
|
half3 viewDir : TEXCOORD2;
|
||
|
half4 uv1 : TEXCOORD3;
|
||
|
};
|
||
|
|
||
|
v2f_surf vert_surf(appdata_full v)
|
||
|
{
|
||
|
v2f_surf o = (v2f_surf)0;
|
||
|
|
||
|
o.pos = UnityObjectToClipPos(v.vertex);
|
||
|
o.uv.xy = TRANSFORM_TEX(v.texcoord, _MainTex);
|
||
|
half3 worldN = UnityObjectToWorldNormal(v.normal);
|
||
|
o.normal = worldN;
|
||
|
o.viewDir = normalize(UnityWorldSpaceViewDir(mul(unity_ObjectToWorld, v.vertex).xyz));
|
||
|
o.uv1.xy = TRANSFORM_TEX(v.texcoord, _UVMainTex);
|
||
|
o.uv1.zw = half2(_UVXSpeed, _UVYSpeed)* _Time.y * _UVDir + o.pos.xy * _UVMask_ST.xy;
|
||
|
return o;
|
||
|
}
|
||
|
|
||
|
fixed4 frag_surf(v2f_surf IN) : SV_Target
|
||
|
{
|
||
|
fixed4 c = tex2D(_MainTex, IN.uv.xy)*1.15f;
|
||
|
|
||
|
c.rgb *= _Color.rgb;
|
||
|
c.rgb += 2.0f * tex2D(_UVMainTex, IN.uv1.xy).rgb * tex2D(_UVMask, IN.uv1.zw).rgb * _UVColor * _UVColor.a;
|
||
|
c.rgb += _RimColor * saturate(1 - saturate(dot(IN.normal, IN.viewDir)) * 1.8) * _MatCapPower * 2;
|
||
|
return c;
|
||
|
}
|
||
|
ENDCG
|
||
|
}
|
||
|
}
|
||
|
}
|