粒子着色器

粒子着色器是一种特殊类型的顶点着色器,在物体被绘制之前运行.它们用于计算材质属性,如颜色、位置和旋转.它们与CanvasItem或Spatial的任何常规材质一起绘制,这取决于它们是2D还是3D.

粒子着色器是独特的,因为它们不用于绘制对象本身;被用来计算粒子的性质,然后由空间着色器的画布组件使用.它们只包含一个顶点处理器函数,输出多个属性的内置函数(见下文).

粒子着色器使用转换反馈着色器,这是一种单独运行的特殊类型的顶点着色器.它像普通顶点着色器那样在缓冲区中接受数据,但是也输出到数据缓冲区,而不是输出到片段着色器进行像素处理.正因为如此,转换反馈着色器可以在每次运行时自行构建,与其他着色器不同,其他着色器一旦绘制到帧缓冲区,就会丢弃它们计算的数据.

注解

粒子着色器仅在GLES3后端中可用. 如果您需要在GLES2中使用粒子系统,请使用 CPUParticles.

渲染模式

渲染模式

描述

keep_data

不要在重启时清除以前的数据.

disable_force

禁用吸引力.(目前在3.1版本中未实现)

disable_velocity

忽略**VELOCITY**值.

内置

标记为 "in" 的值是只读的.标记为 "out" 的值是可以选择写入的,不一定包含合理的值.标记为 "inout" 的值提供一个合理的默认值,并且可以选择写入.采样器不是写入的对象,它们没有被标记.

全局内置

全局内置的功能随处可见,包括自定义功能.

内置

描述

in float TIME

全球时间,以秒为单位.

顶点内置

为了在SpatialMaterial中使用 COLOR 变量,将 use_vertex_as_albedo 设置为 true .在ShaderMaterial中,用 COLOR 变量访问它.

内置

描述

输入输出vec4 COLOR

粒子的颜色,可以写入Mesh的顶点函数中,也可以访问.

输入输出vec3 VELOCITY

粒子速度,可以修改.

out float MASS

粒子质量,用于吸引器(在3.1中没有实现).

输入输出bool ACTIVE

当粒子被激活时为 true ,可以设置为 false .

in bool RESTART

true 当粒子必须重新启动时(生命周期循环).

输入输出vec4 CUSTOM

自定义粒子数据.可从网格着色器作为**实例化_自定义**访问.

输入输出mat4 TRANSFORM

粒子变换.

in float LIFETIME

粒子寿命.

in float DELTA

达美处理时间.

in uint NUMBER

排放开始后的唯一编号.

in int INDEX

颗粒指数(来自总颗粒).

in mat4 EMISSION_TRANSFORM

发射器变换(用于非本地系统).

in uint RANDOM_SEED

随机种子被用作随机的基础.