原文地址: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-inDescriptioninout vec4COLORParticle color, can be written to and accessed in mesh’s vertex function.inout vec3VELOCITYParticle velocity, can be modified.out floatMASSParticle mass, use for attractors (not implemented in 3.1).inout boolACTIVETrue when Particle is active, can be set to false.in boolRESTARTTrue when particle must restart (lifetime cycled).inout vec4CUSTOMCustom particle data. Accessible from shader of mesh asINSTANCE_CUSTOM.inout mat4TRANSFORMParticle transform.in floatTIMEGlobal time in seconds.in floatLIFETIMEParticle lifetime.in floatDELTADelta process time.in uintNUMBERUnique number since emission start.in intINDEXParticle index (from total particles).in mat4EMISSION_TRANSFORMEmitter transform (used for non-local systems).in uintRANDOM_SEEDRandom seed used as base for random.