英文:
Why light color in PBR material can be larger than 1?
问题
I implemented the PBR lighting following the LearnOpenGL tutorial. But I found that the light color the tutorial use is very large (e.g. 20~300, https://learnopengl.com/PBR/Lighting), which makes me feel confused as, in normal Phong lighting model, light color is usually less than 1 (correct me if I am wrong).
In my implementation, I also noticed a similar phenomenon, the sponza model looks pretty dark with two light sources (ambient: 0.1, directional light: 1).
But when I change the directional light color to 10, the scene looks much brighter.
It seems that the light color used in Phong is a little different from the light color used in PBR material. The latter should be much greater than the former to light a scene up. Am I right?
英文:
Recently, I implemented the PBR lighting following the LearnOpenGL tutorial. But I found that the light color the tutorial use is very large (e.g. 20~300, https://learnopengl.com/PBR/Lighting), which makes me feel confused as, in normal Phong lighting model, light color is usually less than 1 (correct me if I am wrong).
In my implementation, I also noticed a similar phenomenon, the sponza model looks pretty dark with two light sources (ambient: 0.1, directional light: 1):
But when I change the directional light color to 10, the scene looks much brighter.
It seems that the light color used in Phong is a little different from the light color used in PBR material. The latter should be much greater than the former to light a scene up. Am I right?
答案1
得分: 1
PBR(物理基础照明)是基于物理能量值的模型。因此,你的光源能够发射的能量没有最大值。
这也是为什么你需要一个每个分量超过8位的帧缓冲。
太阳的亮度是100,000勒克斯(用于衡量亮度的单位),但办公室照明是320-500勒克斯。
可能的光照范围非常广泛!因此,你不能设定一个最大值并说一切都在0和1之间。没有上限。
这就是为什么从HDR帧缓冲到8位帧缓冲的步骤非常重要。通常,你需要获取场景中光线的“平均”值,以进行眼睛适应亮度(或称自动曝光)和色调映射。
PBR的优点之一是你不再需要调整每个光源以获得好看的结果。你只需为它们提供它们的真实数值,它就会“自动适应”。
英文:
PBR (Physically Based Lightning) is a model based on physical energy values. So there aren't maximum values to the energy your light source can emit.
This is also why you need a framebuffer with more than 8bits per component.
The sun is 100.000 Lux (a unit to measure how bright something is), but an Office lighting is 320-500.
The range of possible light is huge! So you can't set a maximum and say everything is between 0 and 1. There is no upper limit.
That is why the step where you go from your HDR frame buffer to you 8 bit frame buffer is very important. You usually need to get an "average" value of light in you scene to do eye adaptation to the brightness (or called auto exposure) and tone mapping.
One of the strengths of PBR is that you no longer need to tweak each of your light to get a good looking result. YOu can simply give them their real life values, and it will "just work".
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论