来自 three.js RenderTarget 的 alpha 贴图出现意外的透明度

Unexpected transparency in alpha map from three.js RenderTarget

我在三个中使用 RenderTarget。js/react-three-fiber 使用 Cylinder 生成一个简单的 alpha 贴图。圆柱体使用白色的基本材质,根据 docs,它在 alpha 贴图中应该是完全不透明的。但是,当应用于几何体时,蒙版中对应于白色的区域并不是完全不透明的,如本例所示:

https://codesandbox.io/s/r3f-programmatic-alpha-map-f8lhi?file=%2Fsrc%2Findex.js

场景设置为:

通过 alpha 蒙版将红色平面蒙版为圆柱体 - 预计完全不透明 在它的后面,一个白框 - 从默认相机位置根本不应该看到它,但它是。

有谁知道为什么白色 alpha 蒙版离开红色平面时具有非零透明度(即不完全不透明)?谢谢。

@drcmda here 提供了解释:react-three-fiber 应用了默认色调映射,导致 alpha 贴图未呈现纯白色。为防止这种情况发生,请禁用 alpha 贴图几何体中的色调映射 material:

      <Cylinder args={[1, 1, 1, 64]} position={[0, 0, 0]} rotation={[Math.PI / 2, 0, 0]}>
        <meshBasicMaterial attach="material" color="white" toneMapped={false} />
      </Cylinder>

即在问题中链接的 codesandbox 的第 49 行。