跳到主要内容
腾讯题库 · Q08
先读 30 秒回答

第 08 题 / 50

学习状态 未开始

光照衰减

面试官问

PDF 第 17 页

请解释“基于物理的光照衰减”与“美术调整衰减”的区别,腾讯项目中更倾向哪种方式?为什么?(常问题,价值匹配)

概念理解 lighting · attenuation 对应课程:pbr

先把问题答上

你可以直接这样回答

约 30 秒

物理衰减按距离和光源模型解释能量,常见点光源近似是平方反比;艺术化衰减为了读图或设备预算显式调整曲线。选择取决于一致性、关卡可读性、平台和灯光类型。题目没有提供腾讯内部证据,我会把具体偏好说成待确认的项目约束,不冒充内部事实。

这道题真正想听什么?

先确认比较对象和回答边界,再决定要不要展开公式、工程实现或性能取舍。

物理衰减回答“光源离开表面后,能量如何随距离摊开”;艺术化衰减回答“为了可读性,画面希望它在哪个范围消失”。前者便于跨场景、跨材质比较,后者能保护关卡重点但需要明确曲线、范围和预算。题目点名腾讯项目,但公开仓库没有内部项目决策证据;不能把“腾讯都偏向某一种”说成事实,应给出验证方法和条件化答案。

把答案讲到 2 分钟面试必答 · 约 2 分钟 · 补足因果、输入和取舍

我会固定角度和材质,先在代码中验证 lightDistanceattenuation 的关系;若要看到距离变化,先给 renderer 增加受控的距离输入或做离线参数改动,再把艺术化曲线作为独立策略比较。衰减不能用曝光或 roughness 补偿;否则无法判断是光源能量还是材质响应。验收记录远近亮度、半径、GPU 影响和跨场景一致性。

面试官可能继续追问什么?补充自测 · 约 3 分钟 · 检查自己是不是真的懂了
  • 问:哪一种一定更好? 答:没有脱离目标和设备的答案。物理基线适合一致性与调试;舞台灯、角色脸部或低端设备可能需要受控的艺术化范围。
  • 问:为什么不能只看最终亮度? 答:亮度同时受 N·L、材质、曝光和颜色管理影响;应读 lightDistanceattenuation 和固定灯光能量。
  • 因果链: 灯到表面的距离 → 衰减 → radiance → BRDF/角度 → 输出。把 art curve 插在哪一段会改变能量解释。
如果概念还是悬空,就去做实验关键证据 · 约 5–15 分钟 · 预测 → 单变量 → 观察

实验不是第二份答案,它只负责证明答案

如果上面的解释已经听懂,可以直接跳过。卡住时,再沿着这三步把抽象词变成画面证据。

  1. 先猜 如果把这个模型或规则关掉,画面里哪一处应该先变?为什么?
  2. 去取证 固定其他条件,只改一个参数。先写下变化,不用“更真实”“更高级”这种空词代替证据。
  3. 再追问为什么 是哪一步造成这个结果?如果结果相反,先检查输入、空间、算法,还是显示输出?
我完全没头绪,给我一个起点

先截下默认状态,只动页面当前开放的那个参数。你只需要说清楚“原来怎样 → 改了什么 → 现在怎样”。

1. 先预测

打开 PBR Lab 只做基线观察:固定 metallic=0roughness=0.38lightIntensity=5,先观察 lightAzimuth 的角度影响,再在 compose 代码lightDistance。当前 PBR UI 没有 lightDistance 拖动控件,因此不要声称在画面里完成了“改变距离”的实验;把它想成同一个水龙头照不同远近的地面,距离对照留给代码阅读和后续实现。

公式的口语翻译:

attenuation = 1 / max(distance², 0.25)

意思是“距离翻倍,单位面积拿到的能量约变成四分之一”,0.25 是为了避免距离接近零时无限爆大。艺术化曲线可以把这个物理曲线压平、截断或按灯光类型重映射,但必须把改动写出来。

老师追问

先别急着查答案: 先把术语还原成一个可观察的现象:哪个中间量会变化,哪个结果只是表面现象?

为什么: 你刚才的预测依赖哪个前提?如果把“光照衰减”里最关键的变量或约束关掉,画面/输出会先坏在哪里?

如果结果相反: 先排除哪一层,再谈结论?这个规则的边界是什么?

2. 再动手

先在 PBR 代码页 做代码阅读:标出 lightDistanceattenuationradiance 三行。然后使用真实可见的 lightIntensitylightAzimuth 控制保持基线,记录 attenuation 证据;若要比较艺术化曲线,在笔记里写出候选曲线与待验证设备,不把它伪装成当前 Lab 已实现的控件。

3. 最后对证据

当前 Lab 的 attenuation 只按平方距离模型计算,lightAzimuth 改变的是方向,N·L 会先变化。若把灯转一圈却声称“验证了距离衰减”,证据链就是错的。真正的距离对照应在固定角度下改变灯与物体的距离;艺术化曲线则可能让远处亮度比平方律更慢或更快下降。

答案在代码哪里发生?实现定位 · 约 3 分钟 · 变量、函数和关键行
完整 5 分钟版本面试扩展 · 约 5 分钟 · 项目边界、验证与降级

落地时可采用物理基线 + 受控范围的组合:标准灯按物理衰减,舞台/引导灯用命名清晰的 art-directed curve,并提供质量档位和回滚。移动端先减少无效灯影响范围,再选择低成本近似。当前 PBR shader 只展示平方距离输入,没有实现所有艺术化曲线,结论必须标注边界。

哪些说法最容易答歪?必看陷阱 · 约 1 分钟 · 面试前最后检查
  • lightAzimuth 的角度变化当作距离衰减。
  • 看到远处变暗就用 roughness 或曝光补亮,破坏能量解释。
  • 断言某个腾讯项目“全部使用物理/全部使用艺术化”,却没有公开证据。
  • 忽略距离接近零的保护项,造成 HDR 溢出或 NaN。