Version: 6000.3
语言: 中文
内置渲染管线中粒子系统中的自定义数据流
内置渲染管线中的粒子系统标准着色器自定义顶点流示例

内置渲染管线中的粒子系统自定义顶点流

如果您愿意编写自己的内容着色器GPU 上运行的程序。更多信息
请参阅术语表
,你可以使用渲染器模块自定义顶点流(Custom Vertex Streams) 功能来配置粒子系统通过在场景中生成大量小型 2D 图像并为其设置动画来模拟流体实体(例如液体、云和火焰)的组件。更多信息
请参阅术语表
将更广泛的数据传递到自定义着色器中。

有许多内置数据流可供选择,例如速度、大小和中心位置。除了能够创建强大的自定义着色器之外,这些流还具有许多更普遍的好处:

  • 使用切线流支持法线贴图粒子。
  • 你可以删除 颜色(Color),然后添加 切线UV2(Tangent UV2) 和 动画混合(AnimBlend) 流,以在粒子上使用标准着色器。
  • 要轻松执行活页簿的线性纹理混合,请添加 UV2 和 AnimBlend 流,并附加 粒子/动画 Alpha 混合着色器。

还有两个完全自定义的每粒子数据流(ParticleSystemVertexStreams.Custom1ParticleSystemVertexStreams.Custom2),可以从脚本中填充。使用数据数组调用 SetCustomParticleDataGetCustomParticleData 以使用它们。有两种方法可以使用它:

  • 要在脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性以及以您喜欢的任何方式响应用户输入。更多信息
    请参阅术语表
    通过将您自己的数据附加到粒子上;例如,为每个粒子附加一个“健康”值。
  • 要通过添加两个自定义流中的一个将此数据传递到着色器中,请以与将任何其他流发送到着色器的方式相同(请参阅 ParticleSystemRenderer.EnableVertexStreams)。详细说明第一个示例,也许你的自定义生命值属性现在也可以驱动某种视觉效果,以及驱动基于脚本的游戏逻辑。

添加顶点流时,Unity 将在每个项目旁边的括号中为您提供一些信息,以帮助您读取着色器中的正确数据:

  • 位置 (POSITION.xyz)
  • 正常 (NORMAL.xyz)
  • 颜色 (COLOR.xyzw)
  • 紫外线 (TEXCOORD0.xy)
  • 紫外线2(TEXCOORD0.zw)
  • 动画混合(TEXCOORD1.x)

括号中的每个项目对应一个顶点着色器 渲染模型时在 3D 模型的每个顶点上运行的程序。更多信息
请参阅术语表
输入,你应该在着色器中指定。这是此配置的正确输入结构。

            struct appdata_t {
                float4 vertex : POSITION;
                float3 normal : NORMAL;
                fixed4 color : COLOR;
                float4 texcoords : TEXCOORD0;
                float texcoordBlend : TEXCOORD1;
            };

请注意,UV 和 UV2 都在TEXCOORD0的不同部分传递,因此我们对两者都使用单个声明。要访问着色器中的每个,您可以使用 xy 和 zw 重排。这使您可以有效地打包顶点数据。

其他资源

内置渲染管线中粒子系统中的自定义数据流
内置渲染管线中的粒子系统标准着色器自定义顶点流示例