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

news/2025/3/19 5:39:47/

文章目录

  • 前言
  • 一、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实例化后,对象位置不对的问题。在下篇文章中,我们实现怎么使每个对象的材质颜色不同。


http://www.ppmy.cn/news/1261666.html

相关文章

CSS3 属性: transition过渡 与 transform动画

CSS3 提供了很多强大的功能,使开发人员可以创建更加吸引人的视觉效果,而不需要依赖于 JavaScript 或 Flash。其中,transition 和 transform 是两个常用的属性,它们分别用于创建平滑的过渡效果和元素的变形效果。下面我们将详细介绍…

2023年第十二届数学建模国际赛小美赛A题太阳黑子预测求解分析

2023年第十二届数学建模国际赛小美赛 A题 太阳黑子预测 原题再现: 太阳黑子是太阳光球上的一种现象,表现为比周围区域暗的暂时斑点。它们是由抑制对流的磁通量浓度引起的表面温度降低区域。太阳黑子出现在活跃区域内,通常成对出现&#xff…

视频封面提取:精准截图,如何从指定时长中提取某一帧图片

在视频制作和分享过程中,一个有吸引力的封面或截图往往能吸引更多的观众点击观看。有时候要在特定的时间段内从视频中提取一帧作为封面或截图。如果每个视频都手动提取的话就会耗费很长时间,那么如何智化能批量提取呢?现在一起来看下云炫AI智…

Educational Codeforces Round 158 (Rated for Div. 2) A-D

文章目录 A. Line TripB. Chip and RibbonC. Add, Divide and FloorD. Yet Another Monster Fight A. Line Trip 签到 #include <bits/stdc.h>using namespace std; const int N 2e5 5; typedef long long ll; typedef pair<ll, ll> pll; typedef array<ll,…

如何优雅使用 vue-html2pdf 插件生成pdf报表

使用 vue-html2pdf 插件 业务背景&#xff0c;老板想要一份能征服客户的pdf报表&#xff0c;传统的pdf要手撕&#xff0c;企业中确实有点耗费时间&#xff0c;于是github上面看到开源的这个插件就…废话不多说&#xff0c;直接上教程 1.使用下面命令安装 vue-html2pdf npm i…

数组指针与函数指针

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和技术。关…

有效解决wordpress的502 Bad Gateway错误提示

摘要&#xff1a;最近有客户反映使用阿里云虚拟云主机&#xff0c;wordpress常提示502 Bad Gateway错误&#xff0c;网关错误是网站上遇到的常... wordpress的502 Bad Gateway错误如何修复&#xff1f; 第1步&#xff1a;偶发错误可尝试重新加载网站 偶尔出现流量突发爆增或是服…

Linux--文件权限与shell外壳的理解

目录 一.Linux的用户与用户切换&#xff0c;提权 二.对文件权限的理解 1.文件权限角色的权限文件属性 2.Linux中的三种角色 3.为什么会存在所属组这个角色 4.文件属性的意义 4.1.第一个字母的意义 4.2 第2——第10个字母的意义 4.3修改文件权限的方法 三.目录权限 四…