多语言展示
当前在线:1392今日阅读:113今日分享:31

unity怎么添加高光阴影

unity怎么添加高光阴影?可能很多小伙伴都不太熟悉,那么,下面小编就与大家分享下这个物体边缘会产生高光效果的shader,可以互相交流哟~
工具/原料

unity

方法/步骤
1

Shader 'Toon/Basic Outline' {    Properties {        _Color ('Main Color', Color) = (.5,.5,.5,1)        _OutlineColor ('Outline Color', Color) = (0,1,0,1)        _Outline ('Outline width', Range (0.005, 0.01)) = .001        _MainTex ('Texture', 2D) = 'white' {}                _BumpMap ('Bumpmap', 2D) = 'bump' {}        }

2

CGINCLUDE    #include 'UnityCG.cginc'     struct appdata {        float4 vertex : POSITION;        float3 normal : NORMAL;    };     struct v2f {        float4 pos : POSITION;        float4 color : COLOR;    };

3

uniform float _Outline;    uniform float4 _OutlineColor;     v2f vert(appdata v) {        v2f o;        o.pos = mul(UNITY_MATRIX_MVP, v.vertex);         float3 norm   = mul ((float3x3)UNITY_MATRIX_IT_MV, v.normal);        float2 offset = TransformViewToProjection(norm.xy);

4

o.pos.xy += offset * o.pos.z * _Outline;        o.color = _OutlineColor;        return o;    }    ENDCG     SubShader {        Tags { 'RenderType'='Opaque' }        UsePass 'Toon/Basic/BASE'        Pass {            Name 'OUTLINE'            Tags { 'LightMode' = 'Always' }            Cull Front            ZWrite On            ColorMask RGB            Blend SrcAlpha OneMinusSrcAlpha             CGPROGRAM            #pragma vertex vert            #pragma fragment frag            half4 frag(v2f i) :COLOR { return i.color; }            ENDCG        }      }

6

SubShader {      Tags { 'RenderType' = 'Opaque' }      CGPROGRAM      #pragma surface surf Lambert      struct Input {        float2 uv_MainTex;        float2 uv_BumpMap;      };      sampler2D _MainTex;      sampler2D _BumpMap;      void surf (Input IN, inout SurfaceOutput o) {        o.Albedo = tex2D (_MainTex, IN.uv_MainTex).rgb;        o.Normal = UnpackNormal (tex2D (_BumpMap, IN.uv_BumpMap));      }      ENDCG    }      Fallback 'Diffuse'

推荐信息