粒子(Particle)着色器
粒子着色器是一种在物体被绘制之前就执行的特殊顶点着色器。它们被用于计算材质的属性,例如颜色,位置,旋转等。它们可以使用各种(2D,3D)标准着色器进行绘制,这依赖于它们自身是2D还是3D。
粒子着色器是独一无二的,因为它们并非用于绘制对象本身;它们用于计算粒子属性,粒子着色器只包含顶点函数,这些顶点函数可以输出多个属性(详见下方的顶点内置属性)
粒子着色器使用一个变换反馈着色器,变换反馈着色器是一种独立运行的特殊类型的顶点着色器。它们可以像普通顶点着色器一样从缓冲区获取数据,不同的是,它并不向片元着色器输出以供像素处理,取而代之地,它可以向数据缓冲区输出。因此变换反馈着色器每次运行都可以自身为基础,而不像其它着色器,一旦将数据写入缓冲区便抛弃计算结果。
注意
粒子着色器仅在效果模式
中有效。如果你使用性能模式
,请使用 CPUParticles。
渲染模式
渲染模式 | 描述 |
---|---|
keep_data | 在重启时不要清除之前的数据 |
disable_force | 关闭引力 |
disable_velocity | 忽略 VELOCITY 的值 |
全局内置
全局内置可在任何地方使用,包括自定义的函数
内置 | 描述 |
---|---|
in float TIME | 引擎启动后的全局时间, 以秒为单位(始终为正数) |
vertex 内置
如果想要在3D(空间)着色器中使用COLOR
属性,请将use_vertex_as_albedo
设置为true
。
内置 | 描述 |
---|---|
inout vec4 COLOR | 粒子颜色,可以在Mesh的顶点函数中写入和访问 |
inout vec3 VELOCITY | 粒子速度,可以被修改 |
inout bool ACTIVE | 当粒子被激活时为true ,可设置为 false 。 |
in bool RESTART | 当粒子必须重新启动时为true (生命周期循环)。 |
inout vec4 CUSTOM | 自定义粒子数据。 |
inout mat4 TRANSFORM | 粒子的变换 |
in float LIFETIME | 粒子生命周期 |
in float DELTA | 处理时间差 |
in uint NUMBER | 粒子发射后的唯一编号 |
in int INDEX | 粒子索引(在所有粒子范围内) |
in mat4 EMISSION_TRANSFORM | 发射器变换(用于非本地坐标系) |
in uint RANDOM_SEED | 随机种子 |