sRGBTransferEOTF
sRGBTransferEOTF
将一个 sRGB 编码的颜色,通过标准的电光转换函数(EOTF),精确地转换为物理上正确的线性颜色值。
核心优势
通过封装复杂的标准转换算法,确保光照和颜色混合计算在物理上正确,从而实现逼真的渲染效果,并极大简化了色彩管理工作流。
常见用途
解码颜色贴图(Albedo/Diffuse Map),将其从 sRGB 转换为线性空间以用于光照计算。
转换来自用户界面(如颜色选择器)的 sRGB 颜色值,以获得正确的物理亮度。
作为基础模块,用于构建自定义的、需要在不同色彩空间中切换的颜色校正管线。
如何调整
这是一个固定的数学函数,没有可调参数。其效果体现在“使用”与“不使用”的差异上。例如,混合两种颜色时,应先分别用此节点将它们转为线性,然后再混合,这样才能得到物理上正确的、明亮的混合色,否则颜色会显得暗淡浑浊。
代码示例
1// 假设 sRGBColorInput 是一个来自 UI 的 sRGB 颜色
2const sRGBColorInput = uniform( new THREE.Color( '#FF8C00' ) );
3
4// 使用 sRGBTransferEOTF 将其从 sRGB 空间转换到线性空间
5const linearColorOutput = sRGBTransferEOTF( sRGBColorInput );
6
7// 将转换后的线性颜色用于材质属性
8material.colorNode = linearColorOutput;