你可以直接这样回答
Overdraw 是同一像素的重复片元工作。Depth Pre-Pass 先写深度,可能让 Early-Z 拒绝遮挡片元,但新增 Pass 也要付成本;我会在固定镜头下对比 overdraw、GPU、带宽和透明正确性,再决定是否启用。
这道题真正想听什么?
先确认比较对象和回答边界,再决定要不要展开公式、工程实现或性能取舍。
Overdraw 是同一屏幕像素被多次光栅化/着色;透明、discard、粒子和排序会让片元重复工作。Depth Pre-Pass 先写可信深度,让后续昂贵 Shader 被 Early-Z 拒绝,但它本身也增加一次 Pass、顶点和带宽。关键是先测重复片元,再比较 pre-pass 的净收益。
把答案讲到 2 分钟面试必答 · 约 2 分钟 · 补足因果、输入和取舍
不透明高 overdraw 场景适合评估 pre-pass;透明/粒子要先确认深度写入和排序语义。若片元复杂,减少覆盖、裁剪、降采样常比盲目加 Pass 更直接。每个设备档位设阈值并保留关闭开关。
面试官可能继续追问什么?补充自测 · 约 3 分钟 · 检查自己是不是真的懂了
- 问:Pre-Pass 一定能优化透明粒子吗? 答:不一定。透明排序、discard 和深度写入语义不同,强行 pre-pass 可能错误遮挡。
- 问:Overdraw 少了但 GPU 没降怎么办? 答:瓶颈可能在顶点、纹理带宽、状态切换或 pre-pass 本身;需要同时看 GPU 阶段和带宽。
- 因果链: 覆盖层 → 深度测试/片元执行 → overdraw 与带宽 → GPU 预算 → 透明/画质边界。
如果概念还是悬空,就去做实验关键证据 · 约 5–15 分钟 · 预测 → 单变量 → 观察
实验不是第二份答案,它只负责证明答案
如果上面的解释已经听懂,可以直接跳过。卡住时,再沿着这三步把抽象词变成画面证据。
- 先猜 这份数据从哪里进入 Shader,经过哪一步,最后改变哪个像素?
- 去取证 固定其他条件,只改一个参数。先写下变化,不用“更真实”“更高级”这种空词代替证据。
- 再追问为什么 是哪一步造成这个结果?如果结果相反,先检查输入、空间、算法,还是显示输出?
我完全没头绪,给我一个起点
先截下默认状态,只动页面当前开放的那个参数。你只需要说清楚“原来怎样 → 改了什么 → 现在怎样”。
1. 先预测
打开 Shader Performance Lab,设 scene=overdraw、overdrawLayers=12、useEarlyZ=false、debugMode=overdraw;再切 useEarlyZ=true。在 Rendering Effects Lab 读深度遮挡,在 Quality Tier Lab 观察 targetMs。输入 → 变化 → 输出: 层数/Early-Z → 重复片元与额外深度阶段 → GPU ms、Overdraw、Bandwidth、画质。
老师追问
先别急着查答案: 先追一条数据从输入到像素:它经过哪一步计算,哪一个中间通道会先暴露问题?
为什么: 你刚才的预测依赖哪个前提?如果把“Overdraw 与 Depth Pre-Pass”里最关键的变量或约束关掉,画面/输出会先坏在哪里?
如果结果相反: 先排除哪一层,再谈结论?这个规则的边界是什么?
2. 再动手
固定场景和 shader work,只切 useEarlyZ,再只改 overdrawLayers、textureReads、resolution。记录 Shader Performance 的估算 ms/fragment work、Rendering Effects 的 occlusion/prepass 解释、Quality Tier 的 GPU/BANDWIDTH/fallback。最后写一张“适合 pre-pass / 不适合 pre-pass”的表。
3. 最后对证据
重复层数高时,Early-Z 可能减少后续片元工作;但深度阶段的额外成本可能抵消收益。Shader Performance 的 overdraw 是教学视图,Rendering Effects 的 occlusion/prepass 是规则示意,不是 Unity 硬件计数器。真实透明排序、discard 和移动端 tile GPU 必须用目标设备验证。
答案在代码哪里发生?实现定位 · 约 3 分钟 · 变量、函数和关键行
- Overdraw Shader:看片元层数如何累积。
- Occlusion/Depth:看可信深度与遮挡契约。
- 质量预算:把 GPU、带宽和 fallback 放在同一张账上。
完整 5 分钟版本面试扩展 · 约 5 分钟 · 项目边界、验证与降级
我会把 pre-pass 当作场景条件策略:离线 profile 记录多个镜头的 p95 GPU、overdraw、draw calls、bandwidth、温度;在高重复片元档位开启,低重复或透明场景关闭。移动端还要考虑 tile memory/load-store 和功耗,不能把桌面 GPU 的收益直接搬过去。
哪些说法最容易答歪?必看陷阱 · 约 1 分钟 · 面试前最后检查
- 把“多画一遍深度”说成免费优化。
- 对透明材质强行写深度造成遮挡错误。
- 只看 overdraw 热力,不看 GPU/带宽和画质。
- 忘了移动端 tile/功耗与不同驱动。