首页 > 其他分享 >Unity性能优化-GPU Instancing

Unity性能优化-GPU Instancing

时间:2023-10-02 11:12:18浏览次数:47  
标签:启用 网格 Unity 实例 GPU 着色器 Instancing

GPU Instancing是Unity的一种优化技术。

使用GPU Instancing可以在一个Draw Call中同时渲染多个相同或类似的物体,从而减少CPU和GPU的开销。

官方文档:https://docs.unity3d.com/Manual/GPUInstancing.html

要启用GPU Instancing,我们可以选中一个材质,然后在Inspector窗口勾选Enable GPU Instancing,这样就可以了。

但是即使勾选了Enable GPU Instancing,也不一定会成功。

要成功使用GPU Instancing进行优化,游戏对象必须同时满足以下条件:
1、使用相同的材质和网格。
2、材质的着色器必须支持GPU Instancing。例如标准着色器和表面着色器就支持GPU Instancing。
3、网格的顶点布局和着色器必须相同。如果网格的顶点布局或着色器不同,那么它们就无法被合并成一个实例。
4、每个实例需要有不同的变换信息(例如位置、旋转、缩放)。虽然多个实例可以使用相同的材质和网格,但是它们必须拥有不同的变换信息才能被正确地实例化并渲染出来。
另外需要注意的是,GPU Instancing与SRP Batcher不兼容。如果项目使用了SRP Batcher,并且配置为优先使用SRP Batcher而不是GPU实例化,启用GPU实例化可能不会生效。SRP Batcher是Unity提供的一种渲染优化技术,它可以将多个网格合并成单个批次进行渲染,从而提高性能。在这种情况下,GPU实例化将被忽略。

使用GPU Instancing往往能减少CPU和GPU的开销,提升游戏性能,但同时也会占用一定的内存。

是否要启用GPU Instancing,要根据自己的项目来定。可以尝试启用,在性能分析器中看看效果如果,如果效果好,再确定启用它。

一般来说,当场景中有大量重复的网格实例时,可以尝试启用GPU Instancing。例如场景中有大量树木、草地、石块等,这些实例具有相同的网格和材质,只是位置、颜色等属性稍有差异,那么启用GPU Instancing或许能够显著提高性能。

标签:启用,网格,Unity,实例,GPU,着色器,Instancing
From: https://www.cnblogs.com/zerobeyond/p/17739783.html

相关文章

  • Unity性能优化-动态合批
    动态合批也叫动态批处理,是Unity的一种优化技术。对移动的物体使用动态合批后,则Unity不会一个个绘制它们,而是把它们合并为一个批次(Batch),再由CPU把它们一次性提交给GPU进行处理,这样可以减少DrawCall带来的性能消耗,从而提高性能。官方文档:https://docs.unity3d.com/cn/current/Man......
  • unity3d-控件 Controls
    ControlTypes控件类型ThereareanumberofdifferentGUIControlsthatyoucancreate.ThissectionlistsalloftheavailabledisplayandinteractiveControls.ThereareotherGUIfunctionsthataffectlayoutofControls,whicharedescribedintheLayout......
  • Unity保存一组sprite为spritesheet
    背景之前尝试在Unity编辑器用代码读取打包好的数据,发现在布置场景的时候不能做到所见即所得,这里将运行时读取到的图片素材,保存为spritesheet,并设置对应的sprite。效果展示代码usingSystem;usingSystem.Collections.Generic;usingSystem.IO;usingSystem.Linq;usingSy......
  • Xcode传输包报错Missing signing identifier at UnityFramework.framework/Framewor
    Missingsigningidentifierat"/var/folders/7v/qtz4nc7n4zv025173khwftsm0000gn/T/XcodeDistPipeline.~~~7SDZNJ/Root/Payload/SJSD.app/Frameworks/UnityFramework.framework/Frameworks/libswiftCore.dylib".ios集成unity项目传包报错:删除Frameworks/UnityFramework.......
  • UnityGLTF插件加载模型时,emissiveFactor解析报错
    项目中遇到使用 UnityGLTF插件加载GLTF模型时报错,如下图: 根据报错信息,我们找到GLTF文件中,第[五]个材质的描述:{"name":"11_-_Default木质长廊1.bmp_alpha","occlusionTexture":{"index":0,"texCoord":1},......
  • unity 框选物体实现
    1.效果图 2.里面包含两个完整项目,都能实现效果(unity版本2021.3.4)下载地址 没有积分的可以私聊我,发我邮箱,看到会发送的(一般工作日很快) ......
  • UnityGLTF插件加载模型时,OcclusionTexture贴图显示错误的问题处理
    工作中遇到使用UnityGLTF插件加载GLTF模型时,贴图显示错误的问题,如下图 检查材质时发现,把OcclusionTexture去掉就看起来正常了  看来是插件对OcclusionTexture的解析出了问题, 那么我们来看一下,GLTF中对OcclusionTexture的描述片段,是这样:"name":"5木质长廊1.bmp","o......
  • (十五)Unity性能优化-Stats(统计数据窗口)
    通过Stats窗口可以初步查看游戏运行时,当前一帧的各项性能。Stats是英文单词Statistics的缩写,意思是“统计数据”。打开方法:Game窗口右上角,找到Stats,点击它。Audio表示音频的数据Level表示声音强度,单位是分贝,也就是dB。声音太大或太小都会影响玩家体验。应将这项数据......
  • (十四)Unity性能优化-常见问题
    Unity下常见的等待函数WaitForTargetFPS:等待达到目标帧率,一般这种情况CPU与GPU都没什么负载问题Gfx.WaitForGfxCommandsFromMainThread/WaitForCommand:渲染线程已经准备接受新的渲染命令,一般瓶颈在CPUGfx.WaitForPresentOnGfxThread/WaitForPresent:主线程等待渲染线程绘制完成......
  • Measuring Node Contribution to Community Structure With Modularity Vitality
    MeasuringNodeContributiontoCommunityStructureWithModularityVitality用模块性生命力度量节点对社区结构的贡献摘要社区感知中心性是网络科学中一个新兴的研究领域,关注节点在社区结构中的重要性。先前的方法扩展了经典的中心性度量来解释社区结构,而与社区检测理论几......