0

私は完全に私をほのめかす問題があります。2 つのキューブ テクスチャを混ぜ合わせようとしています。しかし、何らかの理由で、アルファに基づいてあるテクスチャを別のテクスチャと混合できないようです。関数は次のようになります。

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 があります。1 つは 6 つの画像を持つテクスチャで、もう 1 つは WebGLRenderTarget です。WebGLRenderTarget はアルファ チャネルで作成されます。

format: THREE.RGBAFormat

個々に、両方とも期待どおりに機能します。たとえば、 を使用するgl_FragColor = atmosphereColor;と、アルファが表示されます。しかし、一方を他方と混合しようとするとすぐに、アルファは適用されません。たとえば、私がこれを行うとき:

gl_FragColor = vec4( baseColor.r, baseColor.g, baseColor.b, atmosphereColor.a );

提供されたアルファ変数はまだ使用されません (1.0 に設定されているだけです) - gl_FragColor を AtmunityColor に設定しただけで、値が存在し、変化していることはわかっていますが、D:>

何か案は?:(

4

1 に答える 1

0

問題の原因を見つけることができました。レンダラーの clearAlpha パラメータに関連していました。私の場合、これは 1 ではなく 0 に設定する必要がありました。

于 2013-03-30T17:50:50.617 に答える