3

少し調べてみましたが、アンチエイリアシングとその背後にある仕組みに関する結果しか見つかりませんでした。

アンチエイリアシング以外にマルチサンプル バッファを使用したい。具体的には、順序に依存しない透明度の形式で、各サンプル (理想的にはカメラに最も近い N 個のフラグメント) に異なる色と深さの値を格納することを念頭に置いています。

これはそもそも可能ですか?以前に行われたことがありますか。可能だったとしても、別の N フレームバッファを割り当てるよりもメモリ効率が良いでしょうか?

このようなことがコンピューティング シェーダーまたは OpenCL を必要とする場合は、それで問題ありません。そもそもそれが可能かどうかを知りたいだけです。

ハードウェアはどちらの場合も同じであるため、この質問は OpenGL または DirectX に固有のものではありません。

PS。順序に依存しない透過性の他の方法に向けて私を指摘しないでください。この質問は、特にマルチサンプルバッファを非定型の手段に使用できるかどうかに関するものです。

4

1 に答える 1

1

大きな問題は、システムが、任意のデータの保存ではなく、マルチサンプリングを使用するようにハードコードされていることです。

gl_SampleMaskoutputを使用して、フラグメント シェーダーの結果をマルチサンプル バッファーの特定のサンプルに送信できます。次に、シェーダーを使用してカスタムのマルチサンプル解決を実行し、透明度の並べ替えや、ここで行う予定のすべてを実行できます。

もちろん、理論上は。ただし、実際には、gl_SampleMaskそのフラグメントのラスタライザーによって計算されたサンプル マスクと論理的に論理積されます。したがってgl_SampleMask、フラグメントでカバーされていない特定のサンプルに書き込むように を設定すると、何も書き込まれません。

これについてあなたができることは何もありません。サンプルごとのフラグメント シェーダー評価を明示的に有効にしても役に立ちません。これは、レンダリングに使用したジオメトリに基づいてシステムがそのマスクを計算して使用するためです。

したがって、一般的に言えば、いいえ、アンチエイリアシング以外にマルチサンプリングを使用できるものはあまりありません。

于 2015-12-08T20:33:12.647 に答える