光照与渲染(六)- 高动态范围(HDR)

如同颜色空间,相机的”Dynamic range”动态范围是需要配置的,从本质上来说,这是用来定义相机截取的最亮与最暗的颜色范围,要启用HDR可以从相机组件里把HDR项目打勾即可,要注意的是,某些手机硬件是不支持HDR的,在渲染路径为ForwardRendering并启用MSAA抗锯齿时也不支援HDR,HDR和Linear颜色空间一起搭配是最好的,在处理非常明亮的颜色的时候还能保有准确性。

在默认的情况下,Unity是使用低动态范围(LDR),颜色会以每个通道8位储存三原色(红 绿 蓝),8位确切的意思是用8个0或1的数字组合成的值,一共会有256种组合,三个通道256 x256 x 256可以组合出1600万种色彩来表达从黑色到白色不同层度的灰阶。

在现实环境中,颜色远远超出1600万个色阶,颜色和亮度的排列甚至远远超越了我们人眼所能辨识的,同样的,Unity能够处理超出这些范围的颜色并输出高于LDR设备支持的颜色,用来提供给像是计算机画面的高质量结果,尽管现今输出装置仍有很多限制,这些多出来的数值仍然可有很多的应用。启用HDR之后,会储存更大精度的颜色资料(使用浮点运算表示),能处理更多更亮的颜色范围。

HDR能让我们在同一画面下维持两个巨大差异的亮度,例如场景的阴影区域和户外的亮光,我们也可以在环境场景建立一个”光晕”或发光特效,透过这些特效或可视的光影效果能增加画面的真实感,但也要小心处理这些效果以防止他们曝光过度。

色调映射(Tonemapping)

以摄影来比喻的话,如果我们使用不同的曝光度来拍摄我们的场景,我们可以先观察到哪些颜色会因为曝光过度而遗失,浅色调在很亮的区域可能被白色给覆盖过去,暗色调可能会被黑色给覆盖,这像是计算机图学的”色调映像”,当颜色在显示设备(比如计算机屏幕)表现范围之外时,算法会将颜色修正为装置合理的颜色并重现在屏幕上,当相机启用HDR时,建议相机加入Tonemapping这只程序(Assets->ImportPackage->Effects),这只程序可以帮你转换控制超出范围的颜色成为合理的颜色。

下一篇:光照与渲染(七)-反射

你可能感兴趣的:(光照与渲染(六)- 高动态范围(HDR))