toneMapping
toneMapping
将高动态范围(HDR)颜色映射到低动态范围(LDR)的屏幕显示范围,以防止高光过曝并保留场景细节,是实现照片级真实感的关键步骤。
核心优势
与渲染器级别的全局设置不同,它可以在着色器内部局部应用,为特定物体或后处理特效链的中间步骤提供独立的色调映射控制,灵活性极高。
常见用途
作为最终画面输出前的标准 HDR 后处理步骤
在 Bloom 等特效前预处理图像,以控制辉光的范围和强度
在材质中独立处理 HDR 纹理,以在模型表面正确显示
如何调整
通过切换 `mapping` 算法(如 ACESFilmic)来改变画面风格和色彩,并通过调整 `exposure` 输入值来控制整体画面的明暗。
代码示例
1const toneMappedColor = toneMapping(
2 THREE.ACESFilmicToneMapping, // 电影级色调映射算法
3 renderer.toneMappingExposure, // 曝光度
4 viewportTexture // 输入的 HDR 颜色
5);