news 2026/4/18 4:26:45

4.2 OverDraw

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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画完不透明物体后,会知道"被挡住的像素不用再画了",后续透明物体只画没被挡住 的部分 透明物体(玻璃、特效)后画:避免透明物体先画,导致后面的不透明物体还要再画一遍
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/7 15:44:40

Efficient Leverage Score Sampling for Tensor Train Decomposition

文章目录摘要5 实验5.1 Decomposition of Synthetic and Real Dense Datasets5.1.1 Synthetic Data Experiments5.1.2 Real Data Experiments.5.2 Approximate Sparse Tensor Train Decomposition摘要 张量列(Tensor Train, TT)分解作为一种高效压缩高维…

作者头像 李华
网站建设 2026/4/18 4:16:32

从原理到落地:一文读懂检索增强生成RAG核心逻辑详解

RAG (Retrieval-Augmented Generation,检索增强生成)是目前大模型(LLM)落地应用中最核心、最热门的技术方案之一。简单来说,RAG 就是给大模型配上了一个“外部知识库”或“搜索引擎”。 接下来我会从我们“为什么需要它”、“它是…

作者头像 李华
网站建设 2026/4/18 6:26:21

axios和jsdom的碰撞

node:22.21.1;axios:1.13.4;jsdom:28.0.01、报错代码const axios require(axios) const {JSDOM} require(jsdom);let url https://www.baidu.com JSDOM.fromURL(url).then(dom > console.log(dom))2、不报错代码…

作者头像 李华
网站建设 2026/4/18 6:30:29

基于Springboot+Vue的校园设备维护报修系统源码文档部署文档代码讲解等

课题介绍 本课题旨在设计并实现一套基于SpringBootVue的前后端分离校园设备维护报修系统,解决校园内设备故障报修流程繁琐、维修进度不透明、设备信息管理混乱、维修资源调配不合理等问题。系统采用SpringBoot作为后端核心框架,结合MyBatis-Plus简化数据…

作者头像 李华