Shader 渐变纹理贴图参考代码

来源:互联网 发布:软件测试教学视频 编辑:程序博客网 时间:2024/06/06 18:18

贴图是一个渐变色

Shader "wacky/s11 shader Ramp Texture"{    Properties{    _Color("Color Tint",Color) = (1,1,1,1)    _RampTex("Ramp Texture",2D) = "white"{}    _Specular("Specular",Color) = (1,1,1,1)    _Gloss("Gloss",Range(10,200)) = 20    }    SubShader{        Pass{            Tags {"LightMode" = "ForwardBase"}            CGPROGRAM            #include "Lighting.cginc"            #pragma vertex vert            #pragma fragment frag            fixed4 _Color;            sampler2D _RampTex;            float4 _RampTex_ST;            fixed4 _Specular;            float _Gloss;            struct a2v{                float4 vertex:POSITION;                float3 normal:NORMAL;                float4 texcoord:TEXCOORD0;            };            struct v2f{                float4 pos:SV_POSITION;                float3 worldNormal:TEXCOORD0;                float3 worldPos:TEXCOORD1;                float2 uv:TEXCOORD2;            };            v2f vert(a2v v){                v2f f;                f.pos = UnityObjectToClipPos(v.vertex);                f.worldNormal = UnityObjectToWorldNormal(v.normal);                f.worldPos = mul(unity_ObjectToWorld,v.vertex);                f.uv = TRANSFORM_TEX(v.texcoord,_RampTex);                return f;            }            fixed4 frag(v2f f):SV_Target{                fixed3 worldNormal = normalize(f.worldNormal);   //世界法线                fixed3 worldLightDir = normalize(UnityWorldSpaceLightDir(f.worldPos));  //世界灯光                fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz; //环境光                fixed halfLambert = 0.5 * dot(worldNormal,worldLightDir) + 0.5;  //半兰波特漫反射                fixed3 diffuseColor = tex2D(_RampTex,fixed2(halfLambert,halfLambert)).rgb * _Color.rgb; //漫反射贴图                fixed3 diffuse = _LightColor0.rgb * diffuseColor; //漫反射                fixed3 viewDir = normalize(UnityWorldSpaceViewDir(f.worldPos)); //相机方向                fixed3 halfDir = normalize(worldLightDir + viewDir); //平分线                fixed3 specular = _LightColor0.rgb * _Specular.rgb * pow(max(0,dot(worldNormal,halfDir)),_Gloss); //高光反射                return fixed4(diffuse + specular + ambient,1);            }            ENDCG        }    }    Fallback "Specular"}
原创粉丝点击