renderOutput
renderOutput
作为片元着色器的最后一步,它负责将内部计算出的 HDR 线性颜色,通过色调映射和色彩空间校正,转换为显示器能正确显示的最终 LDR 颜色。它是连接渲染计算与最终视觉呈现的关键桥梁。
核心优势
其核心价值在于与 Three.js 渲染器的无缝集成。它能自动应用全局的 `toneMapping` 和 `outputColorSpace` 设置,确保自定义 TSL 材质与场景中的其他标准材质在视觉上保持一致,从而统一整个项目的色彩管线,极大简化了开发流程。
常见用途
在 PBR 流程中扮演“最终出品”角色,对光照结果进行最终处理。
在风格化渲染中充当“色彩管线合规官”,确保非写实颜色正确融入场景环境。
作为“诊断工具”,通过临时禁用色调映射来查看原始 HDR 值,以调试光照和辉光效果。
如何调整
主要通过在 JavaScript 中更改渲染器(`renderer`)的 `toneMapping` 属性来调整。例如,从默认的 `NoToneMapping` 切换到 `ACESFilmicToneMapping` 会极大地提升画面的电影感和真实感,有效防止高光过曝。同样,确保 `renderer.outputColorSpace` 设置正确(通常是 `SRGBColorSpace`)对于避免画面变暗和颜色失真至关重要。
代码示例
1 // 将最终计算的颜色传递给 renderOutput 进行最终处理
2 // 它会自动应用渲染器上设置的全局色调映射和色彩空间配置
3 const finalScreenColor = renderOutput( myFinalLinearColor );