0

PS のサイクルで、この種のカラー ブレンドを使用してレイキャスティングを行っています。

 actual = <some color loaded from texture>;
 actual.a *= 0.05; //reduce the alpha to have a more transparent result 

 //Front to back blending  
 actual.rgb *= actual.a;
 last = (1.0 - last.a) * actual + last;   

OpenGL 3 ブレンディング関数を使用するようにこの方程式を書き直すことはできますか? 目標は、より多くのqaudsを自分自身にレンダリングすることにより、PSからサイクルを削除することです

これまでのところ、これを使用しています: glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)、しかし結果は異なって見えます

編集:

last = cumulated color (aka. final color)    
actual = current color from texture
4

2 に答える 2

0

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) - これを使用すると、次のような式が得られます。

last.rgb = actual.a * actual.rgb + (1.0 - actual.a) * last.rgb;

それはあなたのシェーダー式とは完全に異なります:

実際の.rgb *=実際の.a;

last = (1.0 - last.a) * 実際の + 最後;

したがって、異なる結果が得られます。

于 2015-02-16T09:55:08.017 に答える