为什么要用GPUInstance
       在没有GPUInstance此技术之前,对于像草地、树木,割草游戏,它们往往是数据量很大,但同时又只存在微小的差别如位置、旋转、颜色等。如果像常规物体那样进行渲染,所使用的绘制指令必然很多,资源占用必然很大,一是cpu对gpu提交数据的次数(包括设置数据buffer,渲染状态以及调用对渲染原语的绘制即drawcall),二是gpu上的绘制(包括顶点处理和像素绘制),随着场景物体的提升,cpu和gpu的压力都会上升。一个合理的策略就是,我们指定一个需要绘制物体对象,以及多个不同的参数,然后根据参数在一个绘制调用中绘制出来——这就是所谓的GPU实例化。

GPUInstance原理
Gpu Instance就是用来解决这一问题的,对于使用 同一网格 和 同一材质的物体们,它使用少量的渲染调用(DrawCall),渲染同一网格的多个副本,也就是说在渲染时, CPU 可以把 它们的不同的属性(位置,大小,旋转,颜色等) 和 其它Instancing 材质信息组装成一个 Buffer(实际上就是一个数组) 传给 GPU 的一个缓存区。GPU 在渲染这些物体时,会有一个 全局的 SV_InstanceID 即 数组的 下标,每渲染完一个物体就 ++SV_InstanceID,这样我们每个物体就可以根据这个 id 拿到自己的 位置颜色等信息啦。这样我们渲染这些物体时就只需要一个 DrawCall 即将 数组 传给 GPU 缓存区,就可以渲染大量的物体。

官方链接介绍Unity - Manual: GPU instancinghttps://docs.unity3d.com/Manual/GPUInstancing.htmlGPUInstance使用方式

1.unity自动进行

系统会自动对场景中符合规范的,被开启GpuInstance的对象进行Instance合批处理,依靠GameObject,自然沿袭unity的剔除、矩阵运算等,方便调试,但是性能不如后者。最大批处理数量, 实测2019.4,Editor PC,最大数量511。512则会增加批次。

其他测试参考:Unity Instancing batch的最大数量计算与测试_无加冰嘅可乐的博客-CSDN博客

2.手动调用。使用Graphics.DrawMeshInstancedIndirect等API,需要自行计算剔除等运算。

  • DrawInstanceMesh:Unity - Scripting API: Graphics.DrawMeshInstanced
  1. 一次调用Mesh的数量有限,最大为1023个模型
  2. 材质球必须开启GpuInstance,如果不开启就会出发异常
  3. 属性赋值使用MaterialBlockProperties的Array方法群..
  • DrawInstanceMeshIndirect:

  1. 一次调用没有限制副本数量,
  2. 材质球不需要开启Instance
  3. 执行效率更高
  • DrawMesh:

  1. 使用这个API, 只要材质球使用同一个,并且材质球开启了GPUInstance也会被自动Instancing合批的.

GPU Instance合批技术是不支持 SkinnedMeshRender的,不过可以转换为Mesh Render以支持,一下链接可以详细阅读

Unity官方开源的Animation Instacing:Animation Instancing: SkinnedMeshRenderer | Unity Blog

博主:Unity中使用GPU Instancing优化SkinnedMesh渲染_unity调用gpu生成mesh_xoyojank的博客-CSDN博客

Unity中的静态合批,动态合批,SRPBatcher,GpuInstance - 知乎

U3D优化批处理-GPU Instancing了解一下 - 知乎

GitHub - vanCopper/Unity-GPU-Instancing: Unity GPU Instancing

GPU Instancing 深入浅出-基础篇(3) - 知乎

【GPU Instance】从入门到过载 - 知乎

Unity中GPUInstance详解相关推荐

  1. Unity中Scale详解

    1.缩放变换 Scale代表的是缩放. 通常意义下的缩放变换,指的是利用缩放矩阵和物体的齐次坐标相乘而进行变换,缩放矩阵形如: Scalex代表x轴方向的缩放 Scaley代表y轴方向的缩放 Scal ...

  2. Unity动画系统详解10:子状态机是什么?

    摘要:除了使用Layer还有没有更好的组织状态的方式呢?感觉一个Layer里面状态多的时候,还是很显得很乱. 洪流学堂,让你快人几步.你好,我是跟着大智学Unity的萌新,我叫小新,这是复(yu)习( ...

  3. Unity动画系统详解9:Target Matching是什么?

    摘要:在游戏中,经常有这种情况:角色的手或者脚需要在特定时间放在特定的位置.比如角色需要用手撑着跳过一个石头或一堵墙,或者跳起抓住房梁.Target Match就是让动画的特定片段去匹配特定的位置. ...

  4. Unity动画系统详解5:BlendTree混合树是什么?

    摘要:"Animator中有一个功能,用来解决多个动画之间的混合,经常用于移动动画之间的混合,这个功能叫做BlendTree,混合树." 洪流学堂,让你快人几步.你好,我是跟着大智 ...

  5. 零基础入门 Unity 之 UGUI 详解专栏 | 寻找C站宝藏

    零基础入门 Unity 之 UGUI 详解专栏 | 寻找C站宝藏 六大推荐理由 理由一:系统 理由二:详细 理由三:专业 理由四:图解 理由五:深度 理由六:实例 一键直达:<UGUI 控件详解 ...

  6. Unity动画系统详解4:如何用代码控制动画?

    摘要:通过上一篇咱们知道了播放动画需要使用Animator,那么如何用代码控制动画呢? 洪流学堂,让你快人几步.你好,我是跟着大智学Unity的萌新,我叫小新,这几周一起来复(yu)习(xi)动画系统 ...

  7. Unity动画系统详解8:IK是什么?

    摘要:IK是Inverse Kinematic的缩写,也就是反向动力学.是根据骨骼的终节点来推算其他父节点的位置的一种方法.比如通过手的位置推算手腕.胳膊肘的骨骼的位置. 洪流学堂,让你快人几步.你好 ...

  8. Unity动画系统详解6:如何做好角色的移动动画?(Root Motion详解)

    摘要:Root Transform是body transform在Y平面上的投影,并且是运行时计算的.每一帧Root Transform的变化实时计算.然后Transform的变化会被应用到GameO ...

  9. Unity动画系统详解3:如何播放、切换动画?

    摘要:[长文预警,建议先收藏]有了模型和多个动画以后,在Unity中如何控制它们的播放和切换呢?本文带你一站式解析Unity的Animator模块. 洪流学堂,让你快人几步.你好,我是跟着大智学Uni ...

最新文章

  1. [日常] Go语言圣经-Deferred函数
  2. VTK:Math之HomogeneousLeastSquares
  3. Hyper-V 和Ubuntu Server 16.04 配置静态IP
  4. 『设计模式』设计模式--原型模式
  5. VS2008 开发设计MOSS工作流 URN 注意了
  6. 理论基础 —— 排序 —— 直接插入排序
  7. docker go get问题_创建优化的Go镜像文件以及踩过的坑
  8. 农夫山泉终于“玩砸了”
  9. GitHub上传文件的过滤规则 -- windows下
  10. 非参数统计的Python实现——符号检验
  11. 菜鸟入门:电脑常用的9个小知识点
  12. isSelected() 的使用
  13. 又一恶意软件:1000多名受害者均在韩国,不排除其他地区被攻击的可能
  14. Hadoop-之性能测试(基准测试)
  15. 【工控协议专题01】Modbus协议原理与安全性分析
  16. drbd+keepalived nfs高可用方案实践
  17. python时间复杂度和空间复杂度是指,时间复杂度与空间复杂度
  18. 【学习笔记】李宏毅2021春机器学习课程第6.2节:生成式对抗网络 GAN(二)
  19. ASP.NET - 查询邮件及邮件内容
  20. 机器学习之依概率收敛与一致估计(相合估计)

热门文章

  1. debian 11 apt 安装软件报错:Media change: please insert the disc labeled
  2. 查看Debian版本号的方法
  3. windows/linux 系统U盘制作系统盘(实战,简单)
  4. 前端学习: 用css设置文字样式
  5. Spring Boot+Vue项目学习总结
  6. clover安装黑苹果10.15.3常见问题集合
  7. flash 嵌入html代码,flash嵌入html在html网页代码中嵌入Flash文件的解决方案(下).doc...
  8. python学生成绩管理系统【完整版】
  9. 【STM32Cube】学习笔记(二):超声波传感器
  10. 新时代城市规划建设需新基建与传统基建携手共同打造