ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Unity中Batching优化的GPU实例化(3)

2026/9/11 12:55:41 拓冰建站 浏览量
Unity中Batching优化的GPU实例化(3)

文章目录

  • 前言
  • 一、UNITY_SETUP_INSTANCE_ID(v);
  • 二、在UnityInstancing.cginc文件中,看一下Unity这句话做了什么
    • 1、使用了该 .cginc 后,会自动预定义该函数
    • 2、需要满足GPU实例化条件,才会执行对应语句
    • 3、满足GPU实例化后,主要执行的是如下几个函数


前言

在上篇文章中,我们主要解析了 Unity 中 GPU实例化的定义 实例化ID 步骤干了什么。

  • Unity中Batching优化的GPU实例化(2)

我们在这篇文章中,把定义的 实例化ID 给使用起来,使合成一个批次的模型 包含的渲染的对象坐标显示正确。


一、UNITY_SETUP_INSTANCE_ID(v);

UNITY_SETUP_INSTANCE_ID(v); 放在顶点着色器/片断着色器(可选)中最开始的地方,这样才能访问到全局变量unity_InstanceID.

  • 修改前(虽然GPU实例化合批成功了,但是对象的位置不对):

请添加图片描述

  • 修改后:(GPU实例化合批成功,且位置正确)
    请添加图片描述

二、在UnityInstancing.cginc文件中,看一下Unity这句话做了什么

  • UNITY_SETUP_INSTANCE_ID(v);

1、使用了该 .cginc 后,会自动预定义该函数

在这里插入图片描述

2、需要满足GPU实例化条件,才会执行对应语句

  • 这句话必须在顶点着色器 和 片元着色器一开始使用,才可以使之后的步骤正确的访问全局变量unity_InstanceID

在这里插入图片描述

  • UNITY_INSTANCING_ENABLED : GPU实例化能开启的情况

在这里插入图片描述

  • UNITY_SUPPORT_INSTANCING : GPU实例化硬件支持

在这里插入图片描述

3、满足GPU实例化后,主要执行的是如下几个函数

在这里插入图片描述

  • UNITY_GET_INSTANCE_ID(input) :获取合批前,点的合批ID 函数

在这里插入图片描述

  • UnitySetupInstanceID(UNITY_GET_INSTANCE_ID(input)) :转化得到合批后点的合批ID

在这里插入图片描述

  • UnitySetupCompoundMatrices(); : Unity根据全局变量 unity_InstanceID 进行对应的矩阵变换使顶点位置正确

在这篇文章中,我们解决了GPU实例化后,对象位置不对的问题。在下篇文章中,我们实现怎么使每个对象的材质颜色不同。