convertColorSpace
convertColorSpace
在不同的色彩空间(如 sRGB 和线性空间)之间精确地转换颜色,以确保光照和混合计算的物理正确性。
核心优势
将复杂的伽马校正数学(如 `pow(x, 2.2)`)抽象为一个节点,是实现基于物理渲染(PBR)的基石,能防止因色彩空间错误导致的高光过曝、颜色混合不自然等常见视觉问题。
常见用途
在光照计算前,将输入的 sRGB 颜色纹理(如反照率贴图)解码到线性空间。
在自定义后期处理中,将最终的线性渲染结果编码回 sRGB 空间以正确显示。
在混合颜色前,确保所有参与混合的颜色都处于同一个(通常是线性)色彩空间。
如何调整
此节点的效果在于视觉正确性而非参数微调。若不进行转换,光照会显得刺眼且不自然(高光过曝、暗部过暗);正确转换后,光照的衰减和颜色过渡会非常平滑、柔和,能保留亮部和暗部的细节,使渲染结果更真实。
代码示例
1// 将 sRGB 纹理颜色解码到线性空间,以用于后续的光照计算
2const linearColor = convertColorSpace( srgbTextureColor, 'srgb', 'linear' );