unity怎么添加高光阴影

 时间:2026-02-14 16:21:57

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怎么添加高光阴影

  • Unity如何添加风区组件
  • Unity3d —3D text穿透问题解决
  • Unity如何使用粒子系统力场
  • unity粒子爆发的间隔怎么设置
  • Unity对象透明度怎么设置
  • 热门搜索
    太平天国运动失败的原因 一言九鼎的鼎是什么意思 目前学什么专业比较好 感同身受什么意思 志愿者精神是什么 有教无类是什么意思 倚老卖老是什么意思 三顾茅庐什么意思 词性是什么 重阳节的主要风俗是什么