You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何PBR材质中的光源颜色值可大于1?

PBR与Phong光照模型的光源强度差异解析

你的理解完全正确,PBR光照模型确实需要远高于Phong模型的光源颜色/强度值才能达到正常的亮度表现,核心原因在于两者的物理基础和能量计算逻辑完全不同:

1. 能量守恒的严格性差异

  • Phong是经验驱动的光照模型,没有严格遵循能量守恒:它的高光、漫反射计算是人为设计的经验公式,甚至可能出现反射光总能量超过入射光的情况,所以用0~1的归一化强度值就能得到视觉上足够亮的效果,但这不符合真实物理规律。
  • PBR基于物理渲染原则,严格遵守能量守恒:材质的总反射率(由albedo、金属度、粗糙度共同决定)不会超过1,所有反射光的总能量永远小于等于入射光能量。这意味着如果光源强度沿用Phong的0~1范围,大部分能量会被材质吸收,场景自然会偏暗。

2. 光源值的物理意义不同

  • Phong的光源值是无物理意义的相对强度,只是为了调整视觉效果的经验参数,完全脱离真实世界的光能量量级。
  • PBR的光源值更贴近真实世界的光辐照度/光通量单位:比如LearnOpenGL教程中用到的20300,对应的是真实场景中光源的实际能量量级(比如室内台灯、室外太阳光的辐照度远高于01的归一化值)。你测试中把平行光强度调到10才恢复正常亮度,正是因为这个值更接近真实光源的能量范围。

3. 色调映射的配套需求

PBR渲染流程通常会配合HDR色调映射步骤:高亮度的光源值可以保留更多高光细节,之后再通过色调映射将HDR范围的亮度压缩到显示器的0~1 LDR范围。如果用Phong的低强度值,HDR阶段就没有足够的动态范围,最终输出的画面会显得平淡发暗。

附你测试的效果对比:

  • 平行光强度1时的暗场景:平行光强度1的Sponza场景
  • 平行光强度10时的正常场景:平行光强度10的Sponza场景

内容的提问来源于stack exchange,提问作者tigertang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 05:35:08