我有一个问题完全在暗示我。我正在尝试将两个立方体纹理混合在一起。但由于某种原因,我似乎无法根据 alpha 将一种纹理与另一种混合。该函数如下所示:
vec4 baseColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );
vec4 atmosphereColor = textureCube( tAtmosphere, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );
vec4 texelColor = mix( atmosphereColor, baseColor, atmosphereColor.a );
gl_FragColor = texelColor;
所有涉及的材质都有depthWrite: true, depthTest: true和transparent: true。一个是包含 6 个图像的纹理,另一个是 WebGLRenderTarget。WebGLRenderTarget 是使用 Alpha 通道创建的。
format: THREE.RGBAFormat
单独他们都按预期工作。例如,如果我使用gl_FragColor = atmosphereColor;
,则 alpha 是可见的。但是,一旦我尝试将一种与另一种混合,就不会应用任何 alpha。例如,当我这样做时:
gl_FragColor = vec4( baseColor.r, baseColor.g, baseColor.b, atmosphereColor.a );
它仍然不会使用提供的 alpha 变量(它只是将其设置为 1.0) - 即使我知道该值存在并且在变化,因为我只是将 gl_FragColor 设置为大气颜色并且可以看到它变化 D:>
有任何想法吗?:(