Es gibt wirklich keine gute Möglichkeit, dies für alle Eckfälle effizient analytisch durchzuführen. Die meisten oder alle kommerziellen 2D-Renderer, die versuchen, eine analytische Abdeckungsberechnung durchzuführen, machen vorhersehbare Fehler, die Multisampling-Methoden nicht machen.
Ein typisches Problem sind zwei überlappende Formen, die dieselbe Kante haben. Die übliche Situation ist, dass Alpha-Kanäle zu einer zu dicken Alpha-Kante summieren, die leicht aliasiert. Oder wenn Formen unterschiedlich gefärbt sind, verwirrt das System, welche Farbe der Hintergrund hat. Das ist extrem nervig.
Bild 1 : Die Rendering-Engine verwirrt die Abdeckung und erstellt einen dünnen weißen Umriss, wo kein Umriss sein sollte.
Die zweite perfekte Abdeckung entspricht der Boxfilterung. Wir können es sicherlich besser machen. In Anbetracht der Tatsache, dass es so viele spezielle Eckfälle gibt, die boolesche Operationen an den Formen erfordern würden, um richtig zu arbeiten, ist die Super-Abtastung immer noch überlegen. Tatsächlich können die Abdeckungsschätzungen verwendet werden, um die Probenahme dort zu konzentrieren, wo sie am wahrscheinlichsten benötigt wird.
Die Situation könnte zu Polygonen auf Subpixel-Ebene vereinfacht werden, dann könnte die diskrete analytische Lösung gelöst werden. Dies jedoch auf Kosten der Flexibilität. Zum Beispiel ist es nicht ausgeschlossen, dass zukünftige Vektorsysteme unscharfe Linien mit variabler Breite zulassen möchten, die ein Problem für analytische Lösungen darstellen, ebenso wie andere variabel gefärbte Objekte.
Wie man es analytisch macht
Bild 2 : Angenommen, Sie haben diese Szene, Explosionsansicht rechts
Jetzt können Sie dies nicht nur analytisch tun, sondern jedes Stück einzeln und dann die Daten zusammenführen. Weil es zu falschen Daten führt. Wenn Sie dies tun, lässt das Alpha-Blending das Blau durch die Lücken leuchten.
Was Sie dazu tun müssen, ist die Szene so aufzuteilen, dass jede Form das beseitigt, was sich unter der anderen befindet:
Bild 3 : Sie müssen die darunter liegenden Oberflächen schneiden.
Wenn nun alles undurchsichtig ist, ist alles einfach. Berechnen Sie einfach die Fläche jedes Stücks und multiplizieren Sie diese mit der Farbe und addieren Sie sie. Jetzt können Sie so etwas wie verwenden diese .
Dies alles bricht zusammen, wenn Ihre individuellen Formen natürlich nicht undurchsichtig sind, aber selbst das kann auf einer bestimmten Ebene getan werden.
Merken:
- Die AA-Berechnung muss im linearen Farbraum durchgeführt und wieder in den verwendeten Raum konvertiert werden.