3

カバレッジに対するアルファの働きについて質問があります。カバレッジ値は、ピクセルのどのサンプルがプリミティブによってカバーされるかを指定します。カバレッジにアルファを使用すると、アルファ値とピクセルのカバレッジ値の AND を取り、最終的なカバレッジを決定します。Superbible は、「ピクセルの 66% がプリミティブによってカバーされ、アルファ値が 40% の場合、最終的なカバー率の値は 60 x 40%、つまり 25% になり、8 サンプル バッファーの場合、2 つのサンプルがカバーされる」と指定します。しかし、サンプルレベルではどのように機能しますか? また、8 つのサンプルのうちどのサンプルをカバーするかをどのように決定するのでしょうか?

カバレッジが各サンプルのビット フィールドである場合、AND 演算は各サンプルに対してどのように実行されますか?

4

1 に答える 1

3

しかし、サンプルレベルではどのように機能しますか? また、8 つのサンプルのうちどのサンプルをカバーするかをどのように決定するのでしょうか?

これは完全に実装次第です。aplha が 0.5 の場合、使用可能なビット セットの半分でGL_SAMPLE_ALPHA_TO_COVERAGEカバレッジマスクが作成されます (ディザリングを考えてください)。

GL仕様が実際に必要とするのは( GL 4.5コアプロファイル仕様のセクション17.3.3を引用):

サンプル アルファ値を一時的なカバレッジ値に変換するための特定のアルゴリズムは必要ありません。一時的なカバレッジ内の 1 の数は、フラグメントのアルファ値のセットに比例し、すべての 1 はすべてのアルファ値の最大値に対応し、すべての 0 はすべてのアルファ値が 0 に対応することを意図しています。アルファ値カバレッジ値を生成するために使用される範囲 [0; 1]。また、通常のカバレッジ サンプル位置による画像アーティファクトを回避するために、アルゴリズムが本質的に疑似ランダムであることも意図されています。アルゴリズムは、異なるピクセル位置で異なる可能性があり、おそらく異なるはずです。異なる場合は、ウィンドウの位置に対してレンダリング結果が不変になるように、画面の座標ではなく、ウィンドウの座標に対して相対的に定義する必要があります。

次の質問への回答は非常に簡単です。

カバレッジが各サンプルのビット フィールドである場合、AND 演算は各サンプルに対してどのように実行されますか?

AND 演算は、によって作成された一時的なカバレッジ マスクGL_SAMPLE_ALPHA_TO_COVERAGEと、カバレッジ サンプルによって作成されたフラグメント カバレッジ マスクに適用されます。

于 2015-05-03T02:05:59.400 に答える