linearToneMapping
linearToneMapping
linearToneMapping 节点提供了最基础、性能最高的色调映射算法,通过线性缩放(曝光)并将结果强制限制在[0, 1]范围内,将高动态范围(HDR)颜色转换为显示器可用的低动态范围(LDR)颜色。
核心优势
极致的性能和简单可预测性。它的算法开销最低,非常适合性能敏感的应用。其线性的曝光控制效果直观,虽然会导致高光细节硬性裁切,但也使其成为调试光照或实现特定风格化渲染的有用工具。
常见用途
性能优先的应用
光照与材质调试
风格化与非真实感渲染
如何调整
效果完全由 `exposure` (曝光度) 这一个参数控制。增大此值会线性提高画面整体亮度,但可能导致高光区域因超过1.0而被裁切成纯白,丢失细节(过曝)。减小此值则会降低亮度,可能有助于看清原先过曝区域的细节。
代码示例
1// 定义一个 uniform 变量来控制曝光度
2const exposure = uniform(1.0);
3
4// 调用 linearToneMapping 节点处理HDR颜色
5// 它会将颜色乘以曝光度,然后将结果钳制在 [0, 1] 范围内
6const ldrColor = linearToneMapping(hdrColor, exposure);