# 着色器: rendinst_simple_emissive_anim / dynamic_illum_anim
## 概述
此着色器支持切换、调整自发光强度和控制自发光颜色。
## 参数
**rendinst_simple_emissive_anim**:
- `class:t="rendinst_simple_emissive_anim"`
- `script:t="illum_scroll_speed=0.1"` – 控制整个自发光纹理程序中“扫描”效果的滚动速度。反转此变量的符号会更改扫描方向。
- `script:t="use_additive_blend=1"` – 设置混合模式:'0' 表示albedo上的乘法自发光,'1' 表示加法混合。
- `tex0:t="diffuse_map_tex_d.tif"` – Alpha 通道定义自发光强度。
- `tex2:t="normal_map_tex_n.tif"` – Normal map.
- `tex3:t="program_map_program.tif"` – 自发光纹理程序。最小纹理大小为 4x4。
- `tex4:t="shift_map_shift.tif"` – Emission shift 纹理。
**dynamic_illum_anim**:
- `script:t="illum_scroll_speed=0.1"` – 控制整个自发光纹理程序中“扫描”效果的滚动速度。反转此变量的符号会更改扫描方向。
- `script:t="use_additive_blend=1"` – 设置混合模式:'0' 表示albedo上的乘法自发光,'1' 表示加法混合。
- `tex0:t="diffuse_map_tex_d.tif"` – Alpha 通道定义自发光强度。
- `tex2:t="program_map_program.tif"` – Emission texture 程序。最小纹理大小为 4x4。
- `tex3:t="shift_map_shift.tif"` – Emission shift 纹理。
着色器以两种模式运行: *乘法* 和 *加法*。自发光程序纹理修改 G 缓冲区中的两个通道:albedo和自发光。在此上下文中,自发光通道为 8 位(灰度)。
这意味着有三种选项可用于实现彩色自发光。选择最适合您情况的那个:
- 在乘法模式下,使用彩色albedo和灰度程序纹理,以避免使albedo黯然失色。
- 在乘法模式下,使用彩色程序纹理。这将修改基本albedo贴图,并从中减去它。
- 乘法模式是默认模式。
## Textures
要为灯光的打开和关闭制作动画,您需要一个用于灯光和两个纹理的“.dag”文件:
- `tex0:t="emis_anim_shader_tex_d.tif"` – 漫反射纹理定义灯的颜色。
- `tex3:t="emis_anim_shader_program.tif"` – 程序纹理定义灯何时发光(独立于 UV 映射)。
### tex0:t="emis_anim_shader_tex_d.tif"
定义灯的颜色和自发光级别:
- RGB 通道:albedo(如果在程序纹理中没有定义其他颜色,则为自发光的颜色 (`tex3:t="emis_anim_shader_program.tif"`)).
- A channel:自发光强度,其中白色是最大自发光,黑色表示无自发光。
### tex3:t="emis_anim_shader_program.tif"
自发光程序纹理定义:
1. 自发光时间(白色区域发光,黑色区域不发光)。
2. Emission color (自发光的颜色可以在此处定义)。
3. 自发光强度(非白色会降低自发光强度)。
- RGB channels:如果不是黑色,则将发出定义的颜色。
- A 频道:未使用。
使用这两个纹理,可以创建简单的自发光动画。不需要为每个灯单独映射。
**示例:** 灯的颜色在程序纹理 (`tex0:t="emis_anim_shader_program.tif`) 中定义,为了防止漫反射和程序纹理之间的颜色冲突,漫反射纹理中的灯被涂成白色。
### tex4:t="emis_anim_shader_shift.tif"
- R 通道:控制程序纹理上的水平位移:
- 白色:无位移。
- 黑色:最大位移。
- G 通道:控制程序纹理上的垂直位移:
- 白色:无位移。
- 黑色:最大位移。
- B 通道:控制速度:
- 白色:速度增加(视觉上增加约 2 倍)。
- 黑色:速度由 `script:t="illum_scroll_speed=0.1"` 参数控制。
## 用法
对于复杂的动画,请使用 `tex4:t="emis_anim_shader_shift.tif"`.
**示例:** 在下面的示例中,仅使用 R 通道来控制程序的偏移。绿色和白色灯(在偏移纹理 (`tex4:t="emis_anim_shader_shift.tif`) 中用箭头标记)根据灯的 UV 壳进行绘制。这会导致接缝处出现明显的伪影。最好像使用红色/蓝色灯一样粉刷该区域。
```{eval-rst}
.. video:: _images/rendinst_simple_emissive_anim_04.webm
:width: 60%
```
**示例:** 对于滚动文本,您需要一个用于横幅的“.dag”文件和三个纹理。
```{eval-rst}
.. video:: _images/rendinst_simple_emissive_anim_05.webm
:width: 60%
```
tex0:t="text_anim_tex_d" |
tex3:t="text_anim_program" |
tex4:t="text_anim_shift" |
|---|
对于滚动文本效果,纹理的渐变(应该是线性的)和 Gamma 值 (`gamma:r=1`)都至关重要。