すべてのコーナーケースでこれを効率的に分析するための良い方法は本当にありません。分析カバレッジ計算を行おうとするほとんどまたはすべての商用2Dレンダラーは、マルチサンプリングメソッドが行わない予測可能なエラーを発生させます。
典型的な問題は、同じエッジを共有する2つの重なり合う形状です。一般的な状況は、アルファチャネルが合計されて、わずかにエイリアシングする厚すぎるアルファエッジになることです。または、シェイプの色が異なる場合、システムは背景の色を混乱させます。これは非常に迷惑です。
画像1:レンダリングエンジンがカバレッジを混乱させ、アウトラインのないところに薄い白いアウトラインを作成します。
2番目の完全なカバレッジは、ボックスフィルタリングに相当します。私達は確かにより良くすることができます。形状を正しく処理するためにブール演算を必要とする特別なコーナーケースが非常に多いことを考えると、スーパーサンプリングの方が優れています。実際、カバレッジの見積もりは、サンプリングが最も必要とされる可能性が高い場所に集中するために使用できます。
状況は、サブピクセルレベルのポリゴンに簡略化でき、それから離散分析ソリューションを解決できます。しかし、これは柔軟性を犠牲にしています。たとえば、将来のベクトルシステムでは、他の可変色のオブジェクトと同様に、分析ソリューションに問題を引き起こす可変幅のぼやけたラインを許可する可能性があることは問題外ではありません。
分析する方法
画像2:このシーンがあるとします。右側の分解図
これを分析的に行うだけではなく、各部分を個別に分離してから、データをマージすることができます。それは間違ったデータをもたらすからです。アルファブレンディングを使用すると、隙間から青い輝きが得られます。
あなたがそうしなければならないのは、各形状が他の下にあるものを排除するようにシーンを分割することです:
画像3:下にあるサーフェスをカットする必要があります。
すべてが不透明な場合、これは簡単です。各ピースの面積を計算し、それを色で乗算して、それらを合計します。今、あなたはこのようなものを使うことができます。
個々の形状がコース外で不透明でない場合、これはすべて壊れますが、それでもある程度は可能です。
覚えておいてください:
- AA計算は線形色空間で行われ、使用空間に変換して戻す必要があります。