有3D文本着色器是非

在Unity中,我怎样才能阻止我的3D文字在黑暗中“发光”?

比如,我使用了下面的着色器代码,但是文本比其他东西显得更加明亮/自发。 改为“点亮”可以消除发光,但也会摆脱材质的颜色,并变黑。

如何解决这个问题? 非常感谢!

Shader "GUI/3D Text Shader - Cull Back" {
Properties {
    _MainTex ("Font Texture", 2D) = "white" {}
    _Color ("Text Color", Color) = (1,1,1,1)
}

SubShader {
    Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" }
    Lighting Off Cull Back ZWrite Off Fog { Mode Off }
    Blend SrcAlpha OneMinusSrcAlpha
    Pass {
        Color [_Color]
        SetTexture [_MainTex] {
            combine primary, texture * primary
        }
    }
}

从评论复制,添加上下文:

我怀疑发光发光只是材料的不亮色与黑暗/可变光照的场景形成鲜明对比? 点亮的着色器可以解决这样的问题,但是Unity的TextMesh组件看起来不会生成网格法线,因此着色器的光照计算将会损坏(如果根本不编译)。 它解释了为什么Lighting On输出为黑色。 如果不访问TextMesh内部并限制固定功能着色器的限制,自定义着色器可能是您唯一的选择。

以下是使用Lambert闪电模型的基本Surface Shader。 在引擎盖下,它将编译为标准的顶点/片段着色器,并自动注入Unity的光照计算。 它已被写入为替代品,因此只需将其添加到项目中并将其拖放到您的材料上即可:

Shader "GUI/3D Text Shader - Lit"
{
    Properties
    {
        _Color ("Text Color", Color) = (1,1,1,1)
        _MainTex ("Font Texture", 2D) = "white" {}
    }

    SubShader
    {
        Tags {"RenderType"="Transparent" "Queue"="Transparent"}
        Cull Back

        CGPROGRAM   
        #pragma surface SS_Main Lambert vertex:VS_Main alpha:blend 
        #pragma target 3.0

        uniform fixed4 _Color;
        uniform sampler2D _MainTex;

        struct Output
        {
             float4 vertex    : POSITION;
             float3 normal    : NORMAL;     
             float4 texcoord  : TEXCOORD0;
             float4 texcoord1 : TEXCOORD1;
             float4 texcoord2 : TEXCOORD2;
        };

        struct Input
        {
            float2 uv_MainTex;
        };      

        void VS_Main (inout Output o) 
        {          
            // Generate normals for lighting.
            o.normal = float3(0, 0, -1);
        }

        void SS_Main (Input IN, inout SurfaceOutput o)
        {       
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
            o.Albedo = _Color.rgb;
            o.Alpha = c.a;
        }
        ENDCG
    }
}
链接地址: http://www.djcxy.com/p/93393.html

上一篇: Have 3d text shader be non

下一篇: How to add Focuschange Listner to listview in android