基本的に、アプリをr52からr55にアップグレードしています。このアプリは、アニメーション(Tweens)を使用してラインを更新しますが、ParticleSystemも使用します。r52では、不透明度のスケーリング、移動、変更など、すべてが正常に機能しました。
私はこれらのWebGLRendererコンストラクター設定を使用しました:
clearColor: 0x1f1f1f
clearAlpha: 1
antialias: true
sortObjects: false
そして、例から取った単純なシェーダー:
<script type="x-shader/x-vertex" id="vertexshader">
attribute float size;
attribute vec3 customColor;
attribute float customOpacity;
varying vec3 vColor;
varying float vOpacity;
void main() {
vColor = customColor;
vOpacity = customOpacity;
vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
gl_PointSize = size * ( 300.0 / length( mvPosition.xyz ) );
gl_Position = projectionMatrix * mvPosition;
}
</script>
<script type="x-shader/x-fragment" id="fragmentshader">
uniform vec3 color;
uniform sampler2D texture;
varying vec3 vColor;
varying float vOpacity;
void main() {
gl_FragColor = vec4( color * vColor, vOpacity );
gl_FragColor = gl_FragColor * texture2D( texture, gl_PointCoord );
}
</script>
以下を使用してパーティクルShaderMaterialを初期化しました。
blending : THREE.AdditiveBlending
depthTest : false
transparent : false
およびParticleSystemを手動で設定します。
system.sortParticles = true
system.matrixAutoUpdate = true
system.visible = true
system.dynamic = true
それで、ここでそれがThree.jsr52でどのようにレンダリングされるか:
これで、Migration wikiページを読み、いくつかの名前を変更するだけで済み、WebGLRendererコンストラクター、マテリアル、またはシェーダー属性には何も変更する必要がないと結論付けました。
r55にアップグレードしましたが、ビジュアルが壊れています。
線とパーティクルがすべて明るくなりました(不透明度は考慮されていません)。
さらに、パーティクルの場合、アルファマスクが壊れています(注意深く見ると、色が異なり、他のパーティクルとオーバーラップするときに「正方形のカット」があります。これは、r52で行ったもので、WebGLRender設定を調整するだけで修正されます)
何が変わったのでしょうか?WebGLコンストラクターの設定、アルファ、背景色を変更しようとしましたが、役に立ちませんでした。