Version: 6000.3
语言: 中文
内置渲染管线中的GPU实例化
内置渲染管线中的GPU实例化着色器示例

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

默认情况下,Unity GPU 实例游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
请参阅术语表
在每个实例化绘制调用中使用不同的 Transform。要向实例添加更多变体,请修改着色器在 GPU 上运行的程序。更多信息
请参阅术语表
添加每个实例的属性,例如 color。您可以在表面着色器内置渲染管线编写着色器的简化方法。更多信息
请参阅术语表
以及顶点/片段着色器。

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

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

将每个实例的数据添加到多通道着色器时,请记住以下几点:

  • 如果多通道着色器具有两个以上的通道,则 Unity 仅实例化第一个通道。这是因为 Unity 稍后会为每个对象一起渲染通道,这会强制更改材质。
  • 如果您使用 Forward渲染路径渲染管道用于渲染图形的技术。选择不同的渲染路径会影响照明和着色的计算方式。某些渲染路径比其他渲染路径更适合不同的平台和硬件。更多信息
    请参阅术语表
    在内置渲染管线(Render Pipeline) 获取场景内容并将其显示在屏幕上的一系列作。Unity 允许您从预构建的渲染管道中进行选择,或编写自己的渲染管道。更多信息
    请参阅术语表
    ,Unity 无法有效地实例化受多个光源影响的对象。Unity 只能对基础通道有效地使用实例化,而不能对其他通道使用实例化。有关光照通道的更多信息,请参阅有关前向渲染和通道标签的文档。

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

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