2

ブレンディングを実行するthree.js、つまりTHREE.AdditiveBlendingを使用してデモ[ http://jsfiddle.net/georgeneil/cfrsj/16/ ]を作成しました。しかし、これは私に白色光の効果を与え、それ故に情報の喪失感を与えています。

最大強度を投影できるブレンド結果が必要です。three.jsを使用してこれを行うにはどうすればよいですか?

OpenGLでは、glBlendEquationEXT(GL_MAX_EXT)を使用してこれを行うことができました。

概念をより明確にするために、デモ[ http://jsfiddle.net/georgeneil/cfrsj/21 ]を更新しました。現在、8つのパーティクルがあり、4つは赤色で、残りの4つは黒色です。MIPが適切に機能する場合、BLACKがREDと重なっている場合でも、RED粒子のみを見ることができます。ここに画像の説明を入力してください

私が探しているものは、このデモ[ http://jsfiddle.net/georgeneil/cfrsj/28/ ]から説明できます。赤のピクセルと重なっていないところに黒のピクセルを表示する必要があります。添付の画像に示すような効果を得る必要があります。ここに画像の説明を入力してください

4

3 に答える 3

1

あなたの質問を理解できれば、これは正しい解決策になるはずです。

http://jsfiddle.net/cfrsj/26/

編集:

これが私が機能をシミュレートした方法です。ノーマルブレンディングを使用しています。

まず、色が飽和していることを確認します

    float r= vColor.r > 0.0? 1.0 : 0.0;
    float g= vColor.g > 0.0? 1.0 : 0.0; 
    float b= vColor.b > 0.0? 1.0 : 0.0;

次に、アルファが必要かどうかを確認します

    gl_FragColor.a = gl_FragColor.a * 
                     texture2D( texture, gl_PointCoord ).r * 
                     (test.r > 0.0 ? 1.0 : 
                         (test.g > 0.0?1.0:
                         (test.b > 0.0?1.0:0.0)));
于 2012-08-08T12:13:18.317 に答える
0

次の 2 つのリンクに興味があるかもしれません。

于 2013-04-14T13:07:48.200 に答える
0

これは webgl のバグです。回避策は、gl を次のように初期化することです。

gl = canvas.getContext("experimental-webgl", { alpha: false } );
于 2012-08-07T07:29:56.117 に答える