- OpenGLスレ Part20
529 :デフォルトの名無しさん[sage]:2014/03/24(月) 10:54:27.13 ID:16BiIMXL - A付きのFBOをターゲットにしてレンダリングする場合
アルファブレンドオフにしてるときはそのまま出力アルファが書き込まれるみたいだけど アレファブレンド有効にしてるときターゲットに書き込まれるアルファ値がどうなってるかの 詳細な仕様てどこかにある? 具体的には今アルファに拡張情報仕込んでるFBOがあって このFBOへレンダリングする物体で半透明を使う必要が出てきた RGB成分に関してはFragColor.aに指定した値でターゲットとブレンドが行われているようだが Aには一定の値が書き込まれているみたい フラグメントシェーダからブレンドに使う係数と ターゲットに書き込みたいA値を別に指定して出力できるとベストなのですが
|
- OpenGLスレ Part20
530 :デフォルトの名無しさん[sage]:2014/03/24(月) 11:04:10.69 ID:16BiIMXL - それかopenGLにDirectXのWRITEENABLEに相当するような機能ってあります?
それがあれば最悪2passでなんとか出来るのですが
|
- OpenGLスレ Part20
533 :デフォルトの名無しさん[sage]:2014/03/24(月) 12:40:15.40 ID:16BiIMXL - >>532
オフスクリーンレンダリング用に用意したRGBA32のFBOに RGBにはそのままカラー要素をレンダリングして Aには特殊な拡張情報を仕込んでレンダリングしているのです (ポストエフェクトのため) それでアルファブレンドを使わなくて良い物体に関しては シェーダが出力した拡張情報であるAがそのままターゲットのFBOに書き込まれているのですが アルファブレンドしたい物体の場合、ブレンド係数のアルファと ターゲットに出力したい拡張情報としてのAの2つを出力する必要があるじゃないですか? シェーダが出力したFragColor.aはブレンド係数のほうに使用されていて レンダリングターゲットのFBOには出力と関係ない一定の値が書き込まれているのです これら2つの値をどうにかして正しく処理したいなと ちなみにes2.0なのでMRTは使えません 2passにすればどうとでもなるけど1passで何とか出来ないかなぁ?ということです
|