包含此页的版本:
不含此页的版本:
默认情况下,Unity GPU 实例游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
请参阅术语表在每个实例化绘制调用中使用不同的 Transform。要向实例添加更多变体,请修改着色器在 GPU 上运行的程序。更多信息
请参阅术语表添加每个实例的属性,例如 color。您可以在表面着色器为内置渲染管线编写着色器的简化方法。更多信息
请参阅术语表以及顶点/片段着色器。
自定义着色器不需要每个实例的数据,但它们确实需要实例 ID,因为世界矩阵需要一个实例 ID 才能正常运行。表面着色器会自动设置实例 ID,但自定义顶点和片段着色器不会。若要设置自定义顶点和片段着色器的 ID,请在着色器的开头使用 UNITY_SETUP_INSTANCE_ID。有关如何执行此作的示例,请参阅顶点和片段着色器。
声明实例化属性时,Unity 会将游戏对象上设置的 MaterialPropertyBlock 对象中的所有属性值收集到单个绘制调用中。有关如何使用 MaterialPropertyBlock 对象在运行时设置每个实例数据的示例,请参阅在运行时更改每个实例的数据。
将每个实例的数据添加到多通道着色器时,请记住以下几点:
使用多个每个实例属性时,无需在MaterialPropertyBlock对象。 此外,如果一个实例缺少属性,Unity 会从引用的材质中获取默认值。如果材质没有属性的默认值,Unity 会将该值设置为 0。不要将非实例化属性放在MaterialPropertyBlock,因为这会禁用实例化。相反,请为它们创建不同的材质。