Unity 3d环境光不影响广告牌着色器

问题描述

我有一个广告牌着色器,但是问题是无论环境光线是黑色还是白色,我的广告牌平面总是很亮。统一的环境光是否有可能影响广告牌着色器。请帮忙

Shader "Unlit/Billboard"

{ 物产 { _MainTex(“纹理”,2D)=“白色” {} } 子着色器 { 标签{“队列” =“透明”“ IgnoreProjector” =“真实”“ RenderType” =“透明”“ disableBatching” =“真实”}

    ZWrite Off
    Blend SrcAlpha OneMinusSrcAlpha

    Pass
    {
        CGPROGRAM
        #pragma vertex vert
        #pragma fragment frag
        // make fog work
        #pragma multi_compile_fog

        #include "UnityCG.cginc"

        struct appdata
        {
            float4 vertex : POSITION;
            float2 uv : TEXCOORD0;
        };

        struct v2f
        {
            float2 uv : TEXCOORD0;
            UNITY_FOG_COORDS(1)
            float4 pos : SV_POSITION;
        };

        sampler2D _MainTex;
        float4 _MainTex_ST;
        
        v2f vert (appdata v)
        {
            v2f o;
            o.pos = UnityObjectToClipPos(v.vertex);
            o.uv = v.uv.xy;

            // billboard mesh towards camera
            float3 vpos = mul((float3x3)unity_ObjectToWorld,v.vertex.xyz);
            float4 worldCoord = float4(unity_ObjectToWorld._m03,unity_ObjectToWorld._m13,unity_ObjectToWorld._m23,1);
            float4 viewPos = mul(UNITY_MATRIX_V,worldCoord) + float4(vpos,0);
            float4 outPos = mul(UNITY_MATRIX_P,viewPos);

            o.pos = outPos;

            UNITY_TRANSFER_FOG(o,o.vertex);
            return o;
        }
        
        fixed4 frag (v2f i) : SV_Target
        {
            // sample the texture
            fixed4 col = tex2D(_MainTex,i.uv);
            // apply fog
            UNITY_APPLY_FOG(i.fogCoord,col);
            return col;
        }
        ENDCG
    }
}

}

解决方法

顾名思义,“不发光/广告牌”着色器是不发光的。意味着渲染时不会考虑灯光。如果要让广告牌与环境光交互,则需要找到另一个具有此效果的着色器,或者自己对其进行修改。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...