reinhardToneMapping
reinhardToneMapping
将高动态范围(HDR)颜色平滑地压缩到显示器可呈现的低动态范围(LDR),以防止高光区域细节丢失,同时提升整体画面观感。
核心优势
在保留高光和阴影细节的同时,其算法极为简单,计算开销非常小,是性能敏感型实时渲染应用的理想选择。
常见用途
平衡室内外等高对比度场景的曝光。
在产品或汽车渲染中处理强烈的表面高光,保留质感。
作为游戏或Web应用中性能优先的默认色调映射选项。
如何调整
主要通过调整 `exposure`(曝光度)输入来控制画面整体亮度。提高曝光会使画面变亮,但可能降低高光饱和度;降低曝光则会使画面变暗,丰富高光色彩但可能丢失暗部细节。在输入前对颜色进行乘法操作可以实现白平衡调整。
代码示例
1// hdrColor 是原始的高动态范围颜色
2// exposure 是用于控制曝光度的 uniform 浮点数
3const ldrColor = reinhardToneMapping( hdrColor, exposure );