当前位置: 首页 > news >正文

Unity中GPU Instancing使用整理

GPU Instancing是一种绘制调用优化方法,可在单个绘制调用中渲染具有相同材质Mesh的多个副本(实例),可用于绘制在场景中多次出现的几何体(例如,树木或灌木丛),在同一绘制调用中渲染相同的网格,每个实例可以具有不同的属性(如 Color 或 Scale),渲染多个实例的绘制调用在 Frame Debugger 中显示为 Draw Mesh (instanced)。

兼容性:

功能内置渲染管线通用渲染管线 (URP)高清渲染管线 (HDRP)自定义可编程渲染管线 (SRP)
GPU Instancing是 (1)是 (1)是 (1)

 注:
(1)当着色器与SRP Batcher不兼容时,GPU Instancing支持URP,HDRP,SRP。
(2)GPU 实例化与 SRP Batcher 不兼容,SRP Batcher 优先于 GPU Instancing 执行
(3)如果项目使用已经使用了 SRP Batcher,并且对游戏对象要使用 GPU 实例化,可以使用 Graphics.DrawMeshInstanced(此 API 绕过了 GameObjects 的使用,使用指定的参数直接在屏幕上绘制网格),手动删除 SRP Batcher 兼容性(详细看SRP Batcher中的介绍)

使用条件:

材质要求​​:

1.使用的Shader必须支持GPU Instancing(Unity标准着色器所有的表面着色器都支持),自定义着色器需手动添加GPU Instancing支持。

网格要求

1.来源于MeshRenderer 组件或 Graphics.RenderMesh 调用绘制的,Unity 会将这些网格添加到列表中,然后检查哪些网格可以实例化。
2.使用Graphics.RenderMeshInstanced 或 Graphics.RenderMeshIndirect 调用绘制的。
不支持的情况
不支持对附加到与 SRP Batcher 兼容的游戏对象的 SkinnedMeshRenderer MeshRenderer 组件进行 GPU Instancing。
注:使用Graphics.RenderMeshInstanced 和 Graphics.RenderMeshIndirect,这些方法使用相同的着色器多次渲染相同的网格,每次调用单独生成 Draw Call不会合并

开启GPU Instancing:

1.内置的着色器开启:

直接在材质的属性面板找到Enable GPU Instancing,并勾选即可。

开启前开启后

2.自定义着色器开启:

兼容性:

特征内置渲染管线

相关文章:

  • 全方位详解微服务架构中的Service Mesh(服务网格)
  • 互联网大厂Java求职面试:Spring Cloud微服务架构与AI集成挑战
  • 如何在 Android 手机和平板电脑上下载应用程序
  • ATT Global赞助非小号全球行,引领RWA创新浪潮
  • springboot 1.x2.x依赖spring版本
  • MySQL 5.7 实战:JSON 字段提取、Base64 解码与引号问题全解析
  • 无人机电子防抖技术要点概述!
  • 20个关于Java编程语言的常见问题
  • Redis SETNX:分布式锁与原子性操作的核心
  • SPL做量化---PSY(心理线)
  • 【人工智能基础知识】
  • Mysql索引实战1
  • 2025年二级等保实施全攻略:传统架构与云等保方案深度解析
  • 系统设计应优先考虑数据流还是控制流?为什么优先考虑数据流?数据流为主、控制流为辅的架构原则是什么?控制流优先会导致哪些问题?
  • C++ 11(1):
  • spring的注入方式都有什么区别
  • 2024CCPC辽宁省赛 个人补题 ABCEGJL
  • 分类预测 | Matlab实现PNN概率神经网络多特征分类预测
  • AI大模型技术全景解析:核心原理与关键技术拆解
  • pyomo简介及使用指南
  • wordpress排版教程/抖音seo优化怎么做
  • 有哪些做短租的网站好/如何进行搜索引擎优化?