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

4.2 OverDraw

1.OverDraw简介

2.Unity 中如何查看 OverDraw

3.优化OverDraw


1.OverDraw简介

1).OverDraw定义 OverDraw表示GPU在同一帧内,对屏幕上的同一个像素位置,绘制了超过1次 可以用画画做比喻:你在一张纸上画一幅画,正常情况是一个位置只涂一次颜料(1次绘制,无OverDraw)如果先涂红色、再在 红色上面涂蓝色,最后再涂黄色(同一个位置涂3),那这个位置的OverDraw次数就是3次 关键前提:a.不透明物体默认不会产生OverDraw,GPU有深度测试/深度剔除机制,先画的不透明物体会占据像素的深度信息,后画的不透 明物体如果在该像素背后,会被直接剔除,不绘制 b.OverDraw的核心来源是"透明/半透物体",比如:UI、粒子、透明特效、半透材质等,因为透明物体GPU会关闭深度剔除,要 看到背后的物体,必须先画背后的,再画前面的透明物体,叠着画
2).OverDraw的核心危害 GPU的渲染能力有一个关键指标:"填充率即GPU 每秒能绘制的像素总数",这是固定资源,就像水管的最大出水量 OverDraw本质是"浪费GPU的填充率":同一个像素画多次,相当于水管往同一个杯子里反复加水,其他杯子(屏幕其他像素)就 没水了,最终导致 a.帧率下降:填充率被占满,GPU处理完一帧的时间变长,游戏掉帧 b.设备发热/功耗增加:GPU持续满负载工作,尤其移动端电池容量有限,发热会直接影响体验 c.高端机无感,低端机卡顿:高端机GPU填充率高,少量OverDraw看不出影响;但移动端中低端机/老设备填充率低,轻微的高 OverDraw就会明显卡帧

2.Unity 中如何查看 OverDraw

Unity提供了可视化的OverDraw查看工具,能直接在Scene视图看到屏幕每个像素的绘制次数,a.实操步骤-打开Unity的Scene视图-点击Scene视图右上角的渲染模式下拉框-选择OverDraw模式,即可切换到过度绘制可视化界面 b.颜色对应绘制次数 Scene视图中不同颜色代表该像素的绘制次数,颜色越深/越红,OverDraw越严重,蓝色是理想状态

如果需要数值化统计(如整屏平均OverDraw次数、某一区域的具体次数),用Unity的Profiler性能分析器 a.顶部菜单栏"Window -> Analysis -> Profiler"b.选择Rendering模块,在统计面板中找到OverDraw相关指标("Average OverDraw"整屏平均过度绘制次数)c.可结合"Frame Debugger"帧调试器,逐步查看每一次绘制的对象,定位高OverDraw的源头

3.优化OverDraw

1).精简透明/半透明元素(最大元凶)透明/半透明物体(UI、粒子特效、玻璃、特效贴图)是Overdraw的"重灾区",因为透明物体不会遮挡后面的像素,GPU会把透明 物体和后面的内容都画一遍 a.UI优化:别让UI元素多层重叠,比如3-4层按钮叠在一起,尽量合并UI,比如把多个小UI做成一个图集,删掉看不见的UI,比 如被遮挡的弹窗 b.粒子特效优化:减少粒子数量比如从100个减到50,缩小粒子大小,降低粒子重叠度 c.材质替换:能不用透明材质就不用,比如UI背景用纯色不透明,别用带透明度的图片
2).让GPU不画看不见的东西(剔除优化)游戏里很多物体玩家根本看不到,比如角色背后的墙、相机视野外的树,没必要让GPU画它们 a.视锥剔除(默认开启):Camera会自动不渲染视野外的物体,别手动关掉这个功能 b.遮挡剔除(OcclusionCulling):烘焙场景后,Unity会自动识别"被挡住的物体"并停止渲染,比如关上门后,门后的柜子 就不画了 操作:Window->Rendering->OcclusionCulling,点击"Bake"烘焙场景数据即可 c.合并小物体:把场景里一堆小物体(比如石子、小草)合并成一个 Mesh,减少重叠绘制的同时还能减少Draw Call
3).调整渲染顺序:先画不透明,后画透明 不透明物体(墙、地面、角色)先画:GPU画完不透明物体后,会知道"被挡住的像素不用再画了",后续透明物体只画没被挡住 的部分 透明物体(玻璃、特效)后画:避免透明物体先画,导致后面的不透明物体还要再画一遍
http://www.jsqmd.com/news/343053/

相关文章:

  • 蚂蚁最新8B小模型拿下SOTA
  • go sync.oncevalue一个单例的更简实现
  • 1.10 CDN缓存
  • 86_Spring AI 干货笔记之 Chroma 向量存储
  • 检测性能直登顶!Mamba+YOLO优势互补,碾压所有传统YOLO!
  • 26. Mipmap
  • 大数据毕设项目:基于python+Hadoop的国家气象降雨量大数据分析系统(源码+文档,讲解、调试运行,定制等)
  • 顾比均线、顾比倒数线与趋势线相结合,加上仓位管理,可构成一套完整的趋势型交易系统 - Leone
  • 【无人机协同】基于matlab动态环境下多无人机系统的协同路径规划与防撞附Matlab代码
  • 【计算机毕业设计案例】基于Hadoop的某篮球队各个球员数据分析系统的设计与实现(程序+文档+讲解+定制)
  • 为什么新手总觉得 Modbus 很难?
  • 咖啡豆烘焙机厂家哪家实用性强?2026年榜单这几家靠谱企业值得关注! - 海棠依旧大
  • 排查某个软件是否安装,某个端口是否占用
  • 花 Opus 的钱买到 Sonnet?一行 Python 代码揭穿 API 服务商的“降本增效”骗局
  • 大数据BI工具的增强分析能力测评
  • 85_Spring AI 干货笔记之 Apache Cassandra 向量存储
  • 2026年2月中国境外券商投行机构推荐:看这5家公司就对了 - Top品牌推荐
  • 深入解析:【MySQL】数据库备份与恢复
  • 苹果 iPhone 14 Pro Max 高质量深度解析|配色外观|核心参数|屏幕与影像|续航充电|官方维修手册|二手验机清单
  • 【毕业设计】基于python+Hadoop的国家气象降雨量大数据分析系统(源码+文档+远程调试,全bao定制等)
  • 苹果 iPhone 15 高质量介绍:参数解析|体验要点|验机清单|维修手册重点
  • ubuntu卸载包
  • 程序员如何从 0 到 1 自己开发一个 AI Agent?
  • 03. PyTorch的使用
  • day76(2.4)——leetcode面试经典150
  • 一个 SpringBoot 项目能处理多少请求?我终于悟了
  • 企业级 Agent 在 K8s 上的运行模型
  • 【计算机毕业设计案例】基于python+Hadoop的国家气象降雨量大数据分析系统基于hadoop的气象数据分析与可视化系统(程序+文档+讲解+定制)
  • SpringCloud从入门到上天:Nacos做微服务注册中心
  • 来自 Nimbus-7 SMMR 和 DMSP SSM/I-SSMIS 被动微波数据的海冰浓度 V002