版本:Unity 6 (6000.0)
语言:英语
内置渲染管线中的 GPU 实例化
内置渲染管线中 GPU 实例化着色器的示例

在内置渲染管线中为 GPU 实例化着色器添加每个实例属性

默认情况下,Unity GPU 实例游戏对象Unity 场景中的基本对象,可以代表角色、道具、场景、摄像机、路径点等等。游戏对象的功能由附加到它的组件定义。更多信息
参见 术语表
在每个实例化绘制调用中具有不同的变换。要为实例添加更多变化,请修改着色器在 GPU 上运行的程序。更多信息
参见 术语表
以添加每个实例属性,例如颜色。您可以在表面着色器用于内置渲染管线的着色器编写方式。更多信息
参见 术语表
和顶点/片段着色器中执行此操作。

自定义着色器不需要每个实例数据,但它们确实需要实例 ID,因为世界矩阵需要一个才能正常工作。表面着色器会自动设置实例 ID,但自定义顶点和片段着色器不会。要为自定义顶点和片段着色器设置 ID,请在着色器开头使用 UNITY_SETUP_INSTANCE_ID。有关如何执行此操作的示例,请参见顶点和片段着色器

当您声明一个实例属性时,Unity 会将从游戏对象上设置的 MaterialPropertyBlock 对象中收集所有属性值,并将其合并到一个单独的绘制调用中。有关如何在运行时使用 MaterialPropertyBlock 对象设置每个实例数据的示例,请参见在运行时更改每个实例数据

在将每个实例数据添加到多通道着色器时,请牢记以下事项

  • 如果多通道着色器具有两个以上的通道,Unity 只会实例化第一个通道。这是因为 Unity 会为每个对象一起渲染后面的通道,这会导致材质更改。
  • 如果您在内置渲染管线渲染管线用来渲染图形的技术。选择不同的渲染管线会影响灯光和阴影的计算方式。一些渲染管线比其他渲染管线更适合不同的平台和硬件。更多信息
    参见 术语表
    中使用正向渲染路径渲染管线用来渲染图形的技术。选择不同的渲染路径会影响灯光和阴影的计算方式。一些渲染管线比其他渲染管线更适合不同的平台和硬件。更多信息
    参见 术语表
    ,Unity 无法有效地实例化受多个灯光影响的对象。Unity 只能有效地将实例化用于基础通道,而不能用于附加通道。有关灯光通道的更多信息,请参阅有关正向渲染和通道标签的文档。

当您使用多个每个实例属性时,您不需要在MaterialPropertyBlock 对象中填充所有属性。此外,如果一个实例缺少属性,Unity 将使用参考材质的默认值。如果材质没有该属性的默认值,Unity 会将该值设置为 0。不要将非实例属性放入MaterialPropertyBlock 中,因为这会禁用实例化。相反,为它们创建不同的材质。

内置渲染管线中的 GPU 实例化
内置渲染管线中 GPU 实例化着色器的示例