2012-01-12 3 views
2

イムフラグメントシェーダは、マルチサンプリングのレンダリング中に呼び出されるかを理解しようと、アイブ氏は慎重に仕様を読んしかしイム少し混乱..マルチサンプリングとフラグメントシェーダ330

Iセットアップの色とマルチサンプルFBOと深さ/ステンシルレンダ...細かい

I変換だけのために、セットアップの簡単な1行の頂点シェーダとちょうど黒い色を返す別の1ラインのフラグメントシェーダ..とその細かい

私はラインを描きます - 線がスムーズに表示されます.. fine

今、フラグメントシェーダでは、ダークに黒色を返すのではなく、マルチサンプルテクスチャからテクセルを取り出し、常にサンプル番号0(黒色)を読み取ると、ギザギザの線ができます。

whats the myoutcolor=vec4(0.0)myoutcolor=texelFetch(mysampler2DMS,...,0)の違いは?

フラグメントシェーダは、それが静的gl_SampleIDgl_Samplemask[]を使用し、または(これらの全ての場合において、これは上記のGLSL #version 400又はを意味する)..「サンプル」ストレージ修飾子を持つ場合にのみ、サンプルレベルで実行されることスペック状態、さもなければフラグメントレベルで実行されます。

しかし、それはどうですか?上記の例では、私はいつも同じ色を返しても平滑化されたラインを得ました。 MSテクスチャから常に同じサンプルを返す場合でもスムーズな結果が得られるはずです。

誰かが私にこれを理解させる助けになることができますか?

PS:Imは現在#version 330を使用していますが、MS(gl_SampleIDgl_Samplemask[]、サンプル..)を正しく処理する必要があるすべてのマルチサンプリング対応ステートメントはGLSL 400以上でサポートされています。まさにマルチサンプリングを正しく処理するためのGLSL 330のサポートですか? GLSL 330でMSテクスチャをどのように処理できますか?上記の例では

+0

実行中のグラフィックカードとドライバのバージョンは? –

+0

GT330M on OpenSUSE x64 12.1、ドライバ290.x – user815129

+0

ドライバ(ちょうどチェックされている)290.10、ドライバの問題が疑われますか?とにかくスムーズな結果が得られるはずだと思いますか? – user815129

答えて

1

、私はそれがマルチサンプリングあるものだから、私はいつも同じ色

を返された場合でも、平滑化ラインを得ました。

マルチサンプリングはすべて、ピクセルあたり1回FSを呼び出し、その値をプリミティブがカバーするピクセル領域内のサンプルに分散することに関するものです。 FSがプリミティブの端にあるピクセルに対して実行された場合、結果はそのピクセルのいくつかのサンプルにのみ分配されます。

関連する問題