游戏开发

Godot Shader笔记:粒子着色器

2019-06-19  本文已影响0人  吃烧烤的老王

原文地址:Docs » Shading » Shading reference » Particle shaders

粒子着色器(Particle shaders)

粒子着色器是一种在物体被绘制之前就执行的特殊顶点着色器。它们被用于计算材质的属性,例如颜色,位置,旋转等。它们可以使用各种(2D,3D)标准着色器进行绘制,这依赖于它们自身是2D还是3D。

粒子着色器是独一无二的,因为它们并非用于绘制对象本身;它们用于计算粒子属性,这些粒子属性稍后会被用于2D着色器的画布项目(which are then used by the CanvasItem of Spatial shader)。粒子着色器只包含顶点函数,这些顶点函数可以输出多个属性(详见下方的顶点内置属性)

粒子着色器使用一个变换反馈着色器(transform feedback shader),变换反馈着色器是一种独立运行的特殊类型的顶点着色器。它们可以像普通顶点着色器一样从缓冲区获取数据,不同的是,它并不向片元着色器输出以供像素处理,取而代之地,它可以向数据缓冲区输出。因此变换反馈着色器每次运行都可以自身为基础,而不像其它着色器,一旦将数据写入缓冲区便抛弃计算结果。

注意:粒子着色器仅在GLES3中有效。如果你使用GLES2,请使用CPUParticles

渲染模式
渲染模式 描述
keep_data 在重启时不要清楚之前的数据
disable_force 关闭引力. (3.1版中还没有实现)
disable_velocity 忽略VELOCITY 的值
内置顶点属性(Vertex built-ins)

当值注明为in时,意味着只读,当值注明为out时,意味着可以选择性地写入,但是并不一定提供一个有效值。当值注明为inout时,它会提供一个有效的默认值,并且可以选择性地写入。采样器(sampler)不是可写对象,它们也没有被标记。

如果想要在3D(空间)着色器中使用COLOR属性,请将use_vertex_as_albedo设置为true

Built-in Description
inout vec4 COLOR Particle color, can be written to and accessed in mesh’s vertex function.
inout vec3 VELOCITY Particle velocity, can be modified.
out float MASS Particle mass, use for attractors (not implemented in 3.1).
inout bool ACTIVE True when Particle is active, can be set to false.
in bool RESTART True when particle must restart (lifetime cycled).
inout vec4 CUSTOM Custom particle data. Accessible from shader of mesh as INSTANCE_CUSTOM.
inout mat4 TRANSFORM Particle transform.
in float TIME Global time in seconds.
in float LIFETIME Particle lifetime.
in float DELTA Delta process time.
in uint NUMBER Unique number since emission start.
in int INDEX Particle index (from total particles).
in mat4 EMISSION_TRANSFORM Emitter transform (used for non-local systems).
in uint RANDOM_SEED Random seed used as base for random.
上一篇下一篇

猜你喜欢

热点阅读