1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
| Shader "Unlit/MatCat1_Code" { Properties { _MainTex ("diffuse", 2D) = "white" {} _MatCatAddTex ("MatCatAdd", 2D) = "white" {} _MatCatAddIntensity ("MatCatAddIntensity", Float) = 0.35
_MatCatTex ("MatCat", 2D) = "white" {} _MatCatIntensity ("MatCatIntensity", Float) = 5.0 _RampTex("Ramp", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 100
Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag
#include "UnityCG.cginc"
struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; float3 normal : NORMAL; };
struct v2f { float2 uv : TEXCOORD0; float3 normal_world : TEXCOORD1; float3 view_world : TEXCOORD2; float4 vertex : SV_POSITION; };
sampler2D _MainTex; float4 _MainTex_ST;
sampler2D _MatCatAddTex; float4 _MatCatAddTex_ST; float _MatCatAddIntensity;
sampler2D _MatCatTex; float4 _MatCatTex_ST; float _MatCatIntensity; sampler2D _RampTex; float4 _RampTex_ST;
v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex); o.normal_world = mul(float4(v.normal,0.0) ,unity_WorldToObject); float3 pos_world = mul(unity_ObjectToWorld, v.vertex); o.view_world = normalize( _WorldSpaceCameraPos - pos_world ); return o; }
fixed4 frag(v2f i) : SV_Target { half3 normal_world = normalize(i.normal_world); fixed4 col; fixed4 col_diffuse = tex2D(_MainTex, i.uv); half2 MatCat_uv = (mul(UNITY_MATRIX_V, half4(normal_world, 0.0)).xy + 1.0f) * 0.5f; fixed4 col_MatCatAdd = tex2D(_MatCatAddTex, MatCat_uv) * _MatCatAddIntensity; fixed4 col_MatCat = tex2D(_MatCatTex, MatCat_uv) * _MatCatIntensity;
half3 view_dir = normalize(i.view_world); half fresnel = 1.0f - saturate(dot(normal_world, view_dir)); fixed4 col_Ramp = tex2D(_RampTex, half2(fresnel, 0.5f));
col = col_diffuse * col_MatCat * col_Ramp; col += col_MatCatAdd ;
return col; } ENDCG } } }
|