Unity 中的自发光 Material
Emissive Material in Unity
我试图通过使用 material 来自自身的统一体来使球体发光,但是没有产生或发射光。怎么了?
您可以在 material 中修改发射,无需任何特殊着色器
然后您可以关闭场景中的所有灯光,您仍然可以看到这个游戏对象
你可以测试它添加一个使环境光成为深灰色的脚本
void Start () {
Color myColor = new Color32( 0x0B, 0x0A, 0x0A, 0xFF );
RenderSettings.ambientLight = myColor;
}
结果会是这样的,一个发黄光的立方体和一个几乎在黑暗中的立方体
现在如果你想(我仍然不确定)照亮场景中的其他元素。您应该 select 右上角的静态对象。
结果将是:
如果此解决方案仍然不适合您。您可以尝试使用着色器:
- 创建一个新的着色器,将其命名为 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
}
}
}
创建一个Material
将其颜色和着色器类型更改为您想要的颜色 select 发光
(您在第一步中创建的那个)。同时选择你喜欢的强度。
结果将是:
使用此版本,您无法照亮附近的物体。
最后,为了制作更好的 glomming 效果,您可以为相机添加一些效果。
- 转到资产 -> 导入包 -> 效果
- Select 主相机并添加组件:图像效果 -> 光晕和
发光 -> 绽放优化
您的相机中将包含以下组件:
将此效果添加到相机的结果将是:
仅将场景中的所有对象检查为静态即可解决问题![=11=]
我试图通过使用 material 来自自身的统一体来使球体发光,但是没有产生或发射光。怎么了?
您可以在 material 中修改发射,无需任何特殊着色器
然后您可以关闭场景中的所有灯光,您仍然可以看到这个游戏对象
你可以测试它添加一个使环境光成为深灰色的脚本
void Start () {
Color myColor = new Color32( 0x0B, 0x0A, 0x0A, 0xFF );
RenderSettings.ambientLight = myColor;
}
结果会是这样的,一个发黄光的立方体和一个几乎在黑暗中的立方体
现在如果你想(我仍然不确定)照亮场景中的其他元素。您应该 select 右上角的静态对象。
结果将是:
如果此解决方案仍然不适合您。您可以尝试使用着色器:
- 创建一个新的着色器,将其命名为 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
}
}
}
创建一个Material
将其颜色和着色器类型更改为您想要的颜色 select 发光 (您在第一步中创建的那个)。同时选择你喜欢的强度。
结果将是:
使用此版本,您无法照亮附近的物体。
最后,为了制作更好的 glomming 效果,您可以为相机添加一些效果。
- 转到资产 -> 导入包 -> 效果
- Select 主相机并添加组件:图像效果 -> 光晕和 发光 -> 绽放优化
您的相机中将包含以下组件:
将此效果添加到相机的结果将是:
仅将场景中的所有对象检查为静态即可解决问题![=11=]