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.自定义着色器开启:

兼容性:

特征 内置渲染管线
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值