Unity 中的自发光 Material

Emissive Material in Unity

我试图通过使用 material 来自自身的统一体来使球体发光,但是没有产生或发射光。怎么了?

您可以在 material 中修改发射,无需任何特殊着色器

然后您可以关闭场景中的所有灯光,您仍然可以看到这个游戏对象

你可以测试它添加一个使环境光成为深灰色的脚本

void Start () {
        Color myColor = new Color32( 0x0B, 0x0A, 0x0A, 0xFF );
        RenderSettings.ambientLight = myColor;
    }

结果会是这样的,一个发黄光的立方体和一个几乎在黑暗中的立方体

现在如果你想(我仍然不确定)照亮场景中的其他元素。您应该 select 右上角的静态对象。

结果将是:

如果此解决方案仍然不适合您。您可以尝试使用着色器:

  1. 创建一个新的着色器,将其命名为 Glow 并将其默认代码替换为:

脚本

Shader "Glow" {
    Properties {
        _MainTex ("Texture", 2D) = "white" {}
        _Color ("Color", Color) = (1,1,1,1)
        _Glow ("Intensity", Range(0, 3)) = 1
    }
    SubShader {
        Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" }
        LOD 100
        Cull Off
        ZWrite On
        Blend SrcAlpha OneMinusSrcAlpha

        Pass {
            CGPROGRAM
                #pragma vertex vert
                #pragma fragment frag

                sampler2D _MainTex;
                half4 _MainTex_ST;
                fixed4 _Color;
                half _Glow;

                struct vertIn {
                    float4 pos : POSITION;
                    half2 tex : TEXCOORD0;
                };

                struct v2f {
                    float4 pos : SV_POSITION;
                    half2 tex : TEXCOORD0;
                };

                v2f vert (vertIn v) {
                    v2f o;
                    o.pos = mul(UNITY_MATRIX_MVP, v.pos);
                    o.tex = v.tex * _MainTex_ST.xy + _MainTex_ST.zw;
                    return o;
                }

                fixed4 frag (v2f f) : SV_Target {
                    fixed4 col = tex2D(_MainTex, f.tex);
                    col *= _Color;
                    col *= _Glow;
                    return col;
                }
            ENDCG
        }
    }
}
  1. 创建一个Material

  2. 将其颜色和着色器类型更改为您想要的颜色 select 发光 (您在第一步中创建的那个)。同时选择你喜欢的强度。

结果将是:

使用此版本,您无法照亮附近的物体。

最后,为了制作更好的 glomming 效果,您可以为相机添加一些效果。

  1. 转到资产 -> 导入包 -> 效果
  2. Select 主相机并添加组件:图像效果 -> 光晕和 发光 -> 绽放优化

您的相机中将包含以下组件:

将此效果添加到相机的结果将是:

仅将场景中的所有对象检查为静态即可解决问题![​​=11=]