# 着色器: rendinst_emissive
## 高i书
此着色器专为自发光表面而设计。
此着色器支持 [闪烁效果](../../lighting/flickering_lights.md)。
**参数:**
- `use_alpha_for_emission_mask=1` – 使用albedo的 Alpha 通道作为自发光遮罩。值: '0'/'1'。
- `emissive_color=1,1,1,1` – 指定自发光颜色和强度。
- 前 3 个分量表示颜色 (RGB)
- 第四个组成部分是强度。如果强度为负,则自发光遮罩将反转。
- `emission_albedo_mult=1` – 将自发光颜色乘以albedo颜色。 值范围从 '0' 到 '1'。
- `nightly=0` – 自发光只发生在夜间。值: '0'/'1'。
## Textures
- **tex0:** Diffuse
- **tex2:** Normals
漫反射颜色纹理的 Alpha 通道可用于存储自发光蒙版(自发光光的区域为白色)。
## 应用
- **整个模型**:如果您想要广泛的自发光元素,例如模拟吊灯部件上灯泡的光反射,请将着色器应用于整个模型。在这种情况下,建议使用自发光掩码。
- **特定部分**:或者,仅将着色器应用于模型的特定发光部分。在这种情况下,自发光掩码可能不是必需的。
默认情况下,自发光颜色派生自albedo颜色。
## 参数
```{important}
此着色器通常需要为每个资源进行自定义参数设置,而不是重复使用其他资源中的值。因此,专门针对您的使用案例配置参数非常重要。不要盲目复制其他资产的参数。
```
- `use_alpha_for_emission_mask=1`
此参数控制albedo的 Alpha 通道作为自发光遮罩的使用。
- '`1`':albedo的 Alpha 通道用作自发光掩码。
- '`0`':带有着色器的整个几何体发光。
use_alpha_for_emission_mask=1 |
use_alpha_for_emission_mask=0 |
|---|---|
Only the areas defined by the albedo's alpha channel will emit light. |
The entire geometry emits light. The difference in color is due to the non-red parts of the albedo where the emission fades out according to the mask, while the entire geometry emits light (including the grey areas). |
- `emissive_color=1,1,1,1`
此参数定义自发光的颜色和强度。
- 前三个分量是自发光的 RGB 颜色。
- 第四个组成部分是自发光强度。
- 如果为正,则albedo的 alpha 通道用作直接掩码。
- 如果为负数,则蒙版反转。
默认情况下,所有参数都设置为 '`1`',这意味着albedo颜色和自发光掩码无需修改即可使用。
```{note}
如果单个材质(例如,彩色玻璃窗)需要多色自发光,建议在漫反射纹理中设置颜色,并将其与白色自发光颜色相乘。
```
```{important}
请务必观察[*Asset Viewer*](../../../dagor-tools/asset-viewer/asset-viewer/asset_viewer.md)和游戏内结果。这种差异凸显了通过在游戏环境中直接审查您的工作来验证和微调工作的重要性。
```
白色albedo的示例(因为与前面示例中的亮红色相比,它更容易覆盖):
emissive_color=0,1,0,1 |
emissive_color=0,1,0,10 |
|---|---|
Green emissive color is applied. In the Asset Viewer, it is barely noticeable, but it is very strong in-game. |
A strong green emission is applied. The glow effect in-game is very prominent. |
```{important}
避免过强的自发光。它直接影响发光效果,如上面的屏幕截图所示。仔细微调每个资产的自发光。
过度自发光不仅看起来不自然,而且还会干扰摄像机适应,从而对游戏产生负面影响。以最小但明显的光泽为目标。
发光效果还取决于自发光几何体的大小。例如,较厚的灯笼比较细的灯笼具有更强的光芒,这不仅是因为自发光强度不同,还因为它们的尺寸较大。
emission_albedo_mult=0 |
emission_albedo_mult=0.5 |
emission_albedo_mult=1 |
|---|---|---|
不与albedo颜色相乘。着色器的自发光颜色为绿色。在红色albedo上产生绿色自发光层,从而导致 Asset Viewer 中出现黄色。游戏中的结果是正确的。 |
将albedo颜色乘以 50%。着色器的自发光颜色为绿色。由于两种对比色的相互作用,游戏中的发光强度降低了一半。 |
与albedo颜色的完全乘法。着色器的自发光颜色为绿色。由于 (0,1,0) * (1,0,0) = (0,0,0) 因此几乎看不到发射。增加发射强度(例如,增加到 10 或 100)可能会提高能见度,但这不是一个合适的解决方案,而且可能看起来不正确。 |
- **Game - Result:**
- **Game - Albedo:**
- **Game - Emissive:**
- `nightly=1`
此参数控制自发光效果是否仅在夜间处于活动状态。
值:
- `0`: 默认情况下,自发光效果始终处于活动状态。
- `1`: 自发光效果仅在夜间激活。“night” 的定义由其他位置的脚本控制,不受此参数的影响。