我有一个完全暗指我的问题。我想把两个立方体纹理混合在一起。但由于某些原因,我似乎无法根据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设置为atmosphereColor并且可以看到它变化D:>
有什么想法吗? :(
答案 0 :(得分:0)
我能够找到问题的根源。它与渲染器的clearAlpha参数有关。对于我的情况,这需要设置为0而不是1。