粒子着色器¶
粒子着色器是一种特殊类型的顶点着色器, 在物体被绘制之前运行. 它们用于计算材质属性, 如颜色, 位置和旋转. 它们与CanvasItem或Spatial的任何常规材质一起绘制, 这取决于它们是2D还是3D.
粒子着色器是独特的, 因为它们不用于绘制对象本身;被用来计算粒子的性质, 然后由空间着色器的画布组件使用. 它们只包含一个顶点处理器函数, 输出多个属性的内置函数(见下文).
粒子着色器使用转换反馈着色器, 这是一种单独运行的特殊类型的顶点着色器. 它像普通顶点着色器那样在缓冲区中接受数据, 但是也输出到数据缓冲区, 而不是输出到片段着色器进行像素处理. 正因为如此, 转换反馈着色器可以在每次运行时自行构建, 与其他着色器不同, 其他着色器一旦绘制到帧缓冲区, 就会丢弃它们计算的数据.
注解
粒子着色器仅在 GLES3 后端中可用。如果您需要在 GLES2 中使用粒子系统,请使用 CPUParticles。
渲染模式¶
渲染模式 |
描述 |
---|---|
keep_data |
不要在重启时清除以前的数据. |
disable_force |
禁用吸引力。(目前在 3.1 版本中未实现) |
disable_velocity |
忽略 VELOCITY 值. |
内置¶
标记为 "in" 的值是只读的. 标记为 "out" 的值是可以选择写入的, 不一定包含合理的值. 标记为 "inout" 的值提供一个合理的默认值, 并且可以选择写入. 采样器不是写入的对象, 它们没有被标记.
顶点内置¶
为了在SpatialMaterial中使用 COLOR
变量, 将 use_vertex_as_albedo
设置为 true
. 在ShaderMaterial中, 用 COLOR
变量访问它.
内置 |
描述 |
---|---|
inout vec4 COLOR |
粒子的颜色, 可以写入Mesh的顶点函数中, 也可以访问. |
inout vec3 VELOCITY |
粒子速度, 可以修改. |
out float MASS |
粒子质量, 用于吸引器(在3.1中没有实现). |
inout bool ACTIVE |
当粒子被激活时为 |
in bool RESTART |
|
inout vec4 CUSTOM |
自定义粒子数据。网格的着色器可以使用 INSTANCE_CUSTOM 访问。 |
inout mat4 TRANSFORM |
粒子变换。 |
in float LIFETIME |
粒子寿命。 |
in float DELTA |
处理时间差。 |
in uint NUMBER |
发射开始后的唯一编号。 |
in int INDEX |
粒子索引(在所有粒子范围内)。 |
in mat4 EMISSION_TRANSFORM |
发射器变换(用于非本地坐标系)。 |
in uint RANDOM_SEED |
随机种子,是随机的基础。 |