私は完全に私をほのめかす問題があります。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:>
何か案は?:(