首页 > 解决方案 > THREE.js:使用 renderer.OutputEncoding = sRGBEncoding 使纹理变灰

问题描述

我正在使用Three.js 布料示例,但我没有使用 alphaMap,而是让布料平面完全不透明并更改了它的颜色贴图。结果非常令人失望,因为由于渲染器的输出编码(sRGB 编码),纹理现在呈现非常灰暗。如果我将输出编码改回线性编码,草的纹理看起来太暗了。

结果如下: 在此处输入图像描述

原始纹理如下所示:

在此处输入图像描述

有什么方法可以保留 sRGBEncoding,但让我的布料纹理渲染对比度更高?

标签: javascriptthree.jsgammasrgb

解决方案


有什么方法可以保留 sRGBEncoding,但让我的布料纹理渲染对比度更高?

是的。只需将纹理的编码THREE.sRGBEncoding属性设置为.

纹理的默认编码值为THREE.LinearEncoding. 因此,如果您不修改它而是在渲染器级别配置 sRGB 工作流程,颜色纹理确实看起来不正确。


推荐阅读