11

マルチサンプリングがどのように機能するかを理解することに非常に興味があります。私はそれを有効にする方法や使用する方法について多くの文献を見つけましたが、アンチエイリアスレンダリングを実現するためにそれが実際に何をするかについての情報はほとんどありません。私が見つけたのは、多くの場所で、私をさらに混乱させるだけの矛盾する情報です。

マルチサンプリングを有効にして使用する方法(実際にはすでに使用しています)、マルチサンプリングされたレンダーバッファ/テクスチャに実際にどのような種類のデータが入るのか、そしてこのデータがレンダリングパイプラインでどのように使用されるのかを知っていることに注意してください。

スーパーサンプリングがどのように機能するかはよく理解できますが、マルチサンプリングにはまだ理解したいいくつかのあいまいな領域があります。

仕様の内容は次のとおりです:(OpenGL 4.2)

色、深度、ステンシル値などのピクセルサンプル値は、このバッファー(マルチサンプルバッファー)に保存されます。サンプルには、フラグメントの色ごとに個別の色の値が含まれています。

..。

マルチサンプルレンダリング中に、ピクセルフラグメントの内容が2つの方法で変更されます。まず、各フラグメントには、SAMPLESビットのカバレッジ値が含まれています。

..。

次に、各フラグメントには、単一サンプルレンダリングモードで維持される単一の深度値と関連データのセットではなく、SAMPLES深度値と関連データのセットが含まれます。

したがって、各サンプルには、異なる色、カバレッジビット、および深さが含まれています。通常のスーパーサンプリングとの違いは何ですか?私には「加重」スーパーサンプリングのように見えます。各最終ピクセル値は、単純な平均ではなく、サンプルのカバレッジ値によって決定されますが、これについては非常によくわかりません。そして、サンプルレベルでのテクスチャ座標はどうですか?

たとえば、法線をRGBFマルチサンプルテクスチャに保存する場合、ポリゴンのエッジで「アンチエイリアス」(つまり、0に近づく)でそれらを読み戻しますか?

フラグメントシェーダーは、gl_SampleID、glSampleInを使用するか、「サンプル」ストレージ修飾子を持たない限り、フラグメントごとに1回呼び出されます。フラグメントシェーダーをフラグメントごとに1回呼び出して、アンチエイリアスレンダリングを取得するにはどうすればよいですか?

4

1 に答える 1

7

シリコングラフィックスシステム上のOpenGL:

http://www-f9.ijs.si/~matevz/docs/007-2392-003/sgi_html/ch09.html#LE68984-PARENT

言及:マルチサンプリングを使用して色を読み戻すと、解決された色の値(つまり、サンプルの平均)が得られます。ステンシルまたは深度を読み戻すと、通常、平均ではなく単一のサンプル値が返されます。このサンプル値は通常、ピクセルの中心に最も近い値です。

そして、OpenGLサイトからこの技術仕様(1994)があります。MULTISAMPLE_SGISが有効になっている場合に何が行われるかを詳細に説明しています:http://opengl.org/registry/specs/SGIS/multisample.txt

この関連する質問も参照してください:マルチサンプリング時にOpenGLテクスチャで深度値はどのように解決されますか?

そして、GL_MULTISAMPLE_ARBが推奨されるこの質問への回答:GL_MULTISAMPLEはどこで定義されていますか?。GL_MULTISAMPLE_ARB(2002)の仕様は次のとおりです:http ://www.opengl.org/registry/specs/ARB/multisample.txt

于 2012-01-14T11:25:40.300 に答える