粒子着色器
粒子着色器是一种特殊类型的顶点着色器,在物体被绘制之前运行.它们用于计算材质属性,如颜色、位置和旋转.它们与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 | 当粒子被激活时为 |
in bool RESTART |
|
输入输出vec4 CUSTOM | 自定义粒子数据.可从网格着色器作为实例化_自定义访问. |
输入输出mat4 TRANSFORM | 粒子变换. |
in float LIFETIME | 粒子寿命. |
in float DELTA | 达美处理时间. |
in uint NUMBER | 排放开始后的唯一编号. |
in int INDEX | 颗粒指数(来自总颗粒). |
in mat4 EMISSION_TRANSFORM | 发射器变换(用于非本地系统). |
in uint RANDOM_SEED | 随机种子被用作随机的基础. |