unity怎么添加高光阴影

2025-09-23 08:25:29

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" {}        }

unity怎么添加高光阴影

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

unity怎么添加高光阴影

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);

unity怎么添加高光阴影

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        }      }

unity怎么添加高光阴影

5、  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 exclude_renderers shaderonly            ENDCG            SetTexture [_MainTex] { combine primary }                    }    }

unity怎么添加高光阴影

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"

unity怎么添加高光阴影

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢