1
0
mirror of https://github.com/LearnOpenGL-CN/LearnOpenGL-CN.git synced 2025-08-22 20:25:28 +08:00

Move all the images to this repo. Close #53

This commit is contained in:
Meow J
2016-09-17 02:11:48 +08:00
parent b384a9f176
commit f0dd66f4b9
246 changed files with 221 additions and 221 deletions

View File

@@ -8,7 +8,7 @@
一般来说,当存储在帧缓冲(Framebuffer)中时亮度和颜色的值是默认被限制在0.0到1.0之间的。这个看起来无辜的语句使我们一直将亮度与颜色的值设置在这个范围内尝试着与场景契合。这样是能够运行的也能给出还不错的效果。但是如果我们遇上了一个特定的区域其中有多个亮光源使这些数值总和超过了1.0又会发生什么呢答案是这些片段中超过1.0的亮度或者颜色值会被约束在1.0,从而导致场景混成一片,难以分辨:
![](http://learnopengl.com/img/advanced-lighting/hdr_clamped.png)
![](../img/05/06/hdr_clamped.png)
这是由于大量片段的颜色值都非常接近1.0,在很大一个区域内每一个亮的片段都有相同的白色。这损失了很多的细节,使场景看起来非常假。
@@ -18,7 +18,7 @@
HDR原本只是被运用在摄影上摄影师对同一个场景采取不同曝光拍多张照片捕捉大范围的色彩值。这些图片被合成为HDR图片从而综合不同的曝光等级使得大范围的细节可见。看下面这个例子左边这张图片在被光照亮的区域充满细节但是在黑暗的区域就什么都看不见了但是右边这张图的高曝光却可以让之前看不出来的黑暗区域显现出来。
![](http://learnopengl.com/img/advanced-lighting/hdr_image.png)
![](../img/05/06/hdr_image.png)
这与我们眼睛工作的原理非常相似也是HDR渲染的基础。当光线很弱的啥时候人眼会自动调整从而使过暗和过亮的部分变得更清晰就像人眼有一个能自动根据场景亮度调整的自动曝光滑块。
@@ -86,7 +86,7 @@ void main()
这里我们直接采样了浮点颜色缓冲并将其作为片段着色器的输出。然而这个2D四边形的输出是被直接渲染到默认的帧缓冲中导致所有片段着色器的输出值被约束在0.0到1.0间尽管我们已经有了一些存在浮点颜色纹理的值超过了1.0。
![](http://learnopengl.com/img/advanced-lighting/hdr_direct.png)
![](../img/05/06/hdr_direct.png)
很明显在隧道尽头的强光的值被约束在1.0因为一大块区域都是白色的过程中超过1.0的地方损失了所有细节。因为我们直接转换HDR值到LDR值这就像我们根本就没有应用HDR一样。为了修复这个问题我们需要做的是无损转化所有浮点颜色值回0.0-1.0范围中。我们需要应用到色调映射。
@@ -113,7 +113,7 @@ void main()
有了Reinhard色调映射的应用我们不再会在场景明亮的地方损失细节。当然这个算法是倾向明亮的区域的暗的区域会不那么精细也不那么有区分度。
![](http://learnopengl.com/img/advanced-lighting/hdr_reinhard.png)
![](../img/05/06/hdr_reinhard.png)
现在你可以看到在隧道的尽头木头纹理变得可见了。用了这个非常简单地色调映射算法我们可以合适的看到存在浮点帧缓冲中整个范围的HDR值给我们对于无损场景光照精确的控制。
@@ -140,7 +140,7 @@ void main()
在这里我们将`exposure`定义为默认为1.0的`uniform`从而允许我们更加精确设定我们是要注重黑暗还是明亮的区域的HDR颜色值。举例来说高曝光值会使隧道的黑暗部分显示更多的细节然而低曝光值会显著减少黑暗区域的细节但允许我们看到更多明亮区域的细节。下面这组图片展示了在不同曝光值下的通道
![](http://learnopengl.com/img/advanced-lighting/hdr_exposure.png)
![](../img/05/06/hdr_exposure.png)
这个图片清晰地展示了HDR渲染的优点。通过改变曝光等级我们可以看见场景的很多细节而这些细节可能在LDR渲染中都被丢失了。比如说隧道尽头在正常曝光下木头结构隐约可见但用低曝光木头的花纹就可以清晰看见了。对于近处的木头花纹来说在高曝光下会能更好的看见。