私が有効になってマルチサンプリングとピーリングの深さをしようとし、誤ったデータが私の透明な層で終わるといくつかの問題を抱えているとGLSL 4.1フラグメントシェーダに「破棄」を使用します。 、マルチサンプリング
depthMinima
が、私は私が正しく理解していれば、
GL_SAMPLE_SHADING
を有効にしている
uniform sampler2DMS depthMinima;
として定義されて
float depth = texelFetch(depthMinima, ivec2(gl_FragCoord.xy), gl_SampleID).r;
if (gl_FragCoord.z <= depth)
{
discard;
}
:私はサンプル(もともとフラグメント)は、このパスに有効であるかどうかを確認するには、次を使用しますフラグメントシェーダがサンプルごとに呼び出される必要があります。これが当てはまらない場合は、これを実現させる方法がありますか?主に平野青、時には前の層から値 -
結果は、第一の層または2つのルックの権利は、それ(と私は8層をやっている)私は取得を開始ジャンク値の下にあることです。
これは、単一のサンプリングバッファのではなく、マルチサンプリングバッファのために正常に動作します。 discardキーワードはフラグメント全体を破棄しますか?
おかげで、残念ながらこれは(ところで、私はGL_MULTISAMPLEを有効にしていない)助けにはなりませんでした。サンプル単位で作業を破棄しなければならないのですか、それともフラグメント単位でしか動作しませんか? –
私の編集を見てください。 – Vallentin
@Vallentin:仕様によると: "フラグメントシェーダで[gl_SampleID]を静的に使用すると、シェーダ全体がサンプルごとに評価されます。"したがって、これらの機能は必要ではありません。 –