Unity Shader - Emission 自发光

本文深入探讨Unity Shader中自发光(Emission)材质的使用技巧,包括如何调整颜色、强度及贴图,以及如何影响全局光照。适用于游戏开发中需要自发光效果的场景,如夜间的仪表盘和怪物眼睛。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录:Unity Shader - 知识点目录(先占位,后续持续更新)
原文:Emission
版本:2019.1

Emission

在这里插入图片描述

Emission控制从表面发出的光的颜色和强度。当你在场景中使用Emission材质时,它以可见光源的形式出现。自发光。

Emission材质通常是用在GameObjects需要从内部亮了起来,如监视器上的屏幕,如汽车在夜间行驶时闪亮的仪表盘,或是再漆黑地方闪亮着怪物的眼睛。

您可以使用颜色和自发光程度来调整Emission材质。若启用Emission自发光功能,请勾上"Emission"复选框。这是会在Emission复选框下面显示:ColorGloball Illumination两个属性。点击Color属性可打开HDR Color面板。在该面板中下方有个Intensity属性可以控制自发光的强度,如下图:
A material with an orange emission color, and an emission brightness of 0.5
使用这些材料的GameObject,即使在你场景的黑暗区域也会保持明亮。
Red, Green and Blue spheres using emissive materials. Even though they are in a dark Scene, they appear to be lit from an internal light source.
红、绿、蓝三球都使用了自发光材质。即使在黑暗的场景,它们依然可以看到。

除了可以设置Emission颜色和强度,你还可以设置Emission贴图。与其他纹理映射参数一样,这使你能够更好地控制材质中哪些区域需要自发光。

如果指定了纹理映射,则使用纹理RGB值来控制颜色和亮度。然后你可以使用Color参数点击打开的HDR Color面板中的Intensity来控制(增加/减少)自发光强度。
Shown in the inspector, Left: An emission map for a computer terminal. It has two glowing screens and glowing keys on a keyboard. Right: The emissive material using the emission map. The material has both emissive and non-emissive areas.
在Inspector视图中,左图:是一张电脑上的屏幕内容。有两个发着荧光的屏幕与按键荧光的键盘。右图:使用了Emission贴图的材质。该材质有些区域有自发光,有些没有。

除了颜色和亮度外,自发光参数还有一个Global Illumination Setting(全局照明设置),允许你控制材质的自发光会不会影响离得近的其他游戏对象的光效。

有两个选项:

  • RealTime - Unity将这种材料的自发光添加到场景的实时全局光照计算中。这意味着自发光会影响附近游戏物体的光效,包括正在移动的物体。(这个移动的物体也有效果,我自己亲测,死活试不出来,球大神指点,有空再回来试试)
  • Baked - 来自这种材料的自发光被烘焙成场景的静态光映射,所以其他附近的静态游戏对象可以由这种自发光点亮的,但动态游戏没有效果。

另外注意,如果你要Baked到lightmap,那么你先得把需要自发光对象设置为Lightmap Static(GameObject的Inspector属性中Static选:Lightmap Static,或是MeshRenderer组件中的Lightmap Static复选框勾上即可,两种设置方式效果一致),还有,如果需要其他静态对象接收到你的自发光材质的光效,你也得将这些对象确保一定是Lightmap Static。
Baked emissive values from the computer terminal’s emission map light up the surrounding areas in this dark Scene
从电脑屏幕上的自发光贴图烘焙的数据,在黑暗场景中也可以照亮附近静态对象

### Unity3D 中使用 Shader 实现 Emission 效果 为了在 Unity3D 中实现 Emission 效果,开发者可以通过设置材质的自发光属性来让对象即使处于黑暗环境中也能保持亮度。当启用了 Emission 功能之后,在 Inspector 面板中的 Material 属性下会出现 Color 和 Global Illumination 选项[^2]。 #### 启用 Emission 并配置基本属性 要开启此特性,需先选择目标 GameObject 的 Mesh Renderer 组件下的材质球,并找到其 Standard 或者其他支持 Emission 的着色器。接着勾选 "Emission" 复选框,这会激活两个新的字段用于定义发射光的颜色 (Color) 及强度 (Intensity)。 ```csharp // C# 脚本示例:动态修改材质的 Emission 参数 using UnityEngine; public class ChangeEmission : MonoBehaviour { public float intensity = 1f; void Update() { var material = GetComponent<Renderer>().material; Color color = new Color(0, 1, 0); // 设置为绿色 // 修改 Emission 强度 material.SetColor("_EmissionColor", color * intensity); if(Input.GetKeyDown(KeyCode.Space)){ intensity += Time.deltaTime; // 响应按键改变强度 } } } ``` #### 控制 Emission 强度与颜色变化 通过脚本编程方式能够实时调整 Emission 的色彩以及亮度等级。例如上面给出的小程序段展示了怎样利用 `SetColor` 方法更新 `_EmissionColor` 来达到渐变过渡的效果;同时也可以监听用户输入事件从而响应式的增强或减弱光源散发出来的光芒。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值