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

Unity中优化绘制调用整理

DrawCall 指的是 CPU 向 GPU 发送渲染指令的过程,在 Unity 中,每次渲染一个网格时,CPU 都需要向 GPU 发送一系列的渲染指令,这个过程被称为一次绘制调用(Draw Call)。

1.GPU实例化

使用:

2.绘制调用批处理

绘制调用批处理是一种绘制调用优化方法,它组合网格,以便 Unity 可以在更少的绘制调用中渲染它们。Unity 提供两种内置的绘制调用批处理方法:
1.静态批处理:对于静态游戏对象,Unity 会将它们组合在一起并一起渲染。
使用:Unity中的静态合批使用整理-CSDN博客

2.动态批处理:对于足够小的网格,这会在 CPU 上变换它们的顶点,将相似的顶点分组在一起,并在一个绘制调用中渲染它们。
使用:Unity中的动态合批使用整理-CSDN博客

手动组合网格相比,Unity 的内置绘制调用批处理具有多个优势;最值得注意的是,Unity 仍然可以单独剔除网格。但是,它也有一些缺点;静态批处理会产生内存和存储开销,而动态批处理会产生一些 CPU 开销


性能权衡:虽然合批可以减少渲染调用次数,提高性能,但并不是所有情况下都适合合批。例如,频繁移动或改变状态的对象进行动态批处理可能会带来额外的开销,反而降低性能。
光照影响:静态批处理会影响光照计算,因为合批后的对象会被视为一个整体。在使用静态批处理时,需要注意光照烘焙的设置,以确保光照效果符合预期。
Shader 支持:使用的 Shader 必须支持合批。一些复杂的 Shader 可能不支持动态批处理或静态批处理,需要对其进行优化或选择合适的 Shader。

3.使用代码组合网格

手动将多个网格合并为单个网格,Unity 在单个绘制调用中渲染组合网格,而不是每个网格一个绘制调用。在网格靠得很近且彼此不相对移动的情况下,此技术可以很好地替代绘制调用批处理。
注:Unity 无法单独剔除组合的网格。

Unity性能优化---动态网格组合(一)_unity 场景查看网格-CSDN博客

Unity性能优化---动态网格组合(二)_urp 网格材质球-CSDN博客

4.SRP Batcher 

使用:

5.合并材质与纹理

6.优化UI渲染

7.遮挡剔除(Occlusion Culling)​

8.光照与阴影优化

9.LOD(Level of Detail)​

10.Shader优化

未完待续。。。

 参考链接:

Optimizing draw calls - Unity 手册

http://www.dtcms.com/a/109260.html

相关文章:

  • set和map封装
  • MySQL 基础入门
  • 时间梯度匹配损失 TGMLoss
  • 蓝桥杯 混乘数字
  • 【Cuda 编程思想】手写一个量化反量化算子Quant
  • 反爬的措施有哪些
  • Mock.js虚拟接口
  • 蓝桥杯15届B组题解第二场
  • 记一次防火墙策略设置不当导致连接异常
  • 2.4路径问题专题:LeeCode 931.下降路径最小和
  • Shiro学习(四):Shiro对Session的处理和缓存
  • MyBatis 动态SQL 详解!
  • C# 从代码创建选型卡+表格
  • 用nodejs连接mongodb数据库对标题和内容的全文本搜索,mogogdb对文档的全文本索引的设置以及用node-rs/jieba对标题和内容的分词
  • Git Restore 命令详解与实用示例
  • leecode第18天
  • 代码拟有感
  • 跟我学C++中级篇——In-Place Construction 和placement new
  • React-router v7 第二章(路由模式)
  • Vant 上传图片闪动问题的原因与解决方案
  • Shell脚本编程之大括号扩展
  • Spring 核心技术解析【纯干货版】- XX:Spring 测试模块 Spring-Test 模块精讲
  • 【文献研究】铝对热冲压加热过程中锌氧化的影响
  • 【C++ SIMD】第3篇:数据对齐与跨步访问(Windows/VS2022版)——以AVX为例
  • Hadoop集群---运维管理和技巧
  • 【Kafka基础】单机安装与配置指南,从零搭建环境
  • NodeJS--NPM介绍使用
  • 训练或微调以生成新组合结构
  • Leetcode 927 -- 思维
  • Win10定时任务计划无法显示要执行的EXE任务程序界面,问题解决办法