Orlok: CSS Problem

Beitrag lesen

Hallo Gunnar

Schatten erfordern einigen Rechenaufwand. Wenn da noch Transparenz hinzukommt …

Transparenz ist bei Schatten (wenn’s keine harten sind) aber wohl schon längst da, so dass eine Farbangabe in RGBA das womöglich auch nicht mehr schlimmer macht.

Ich glaube, wenn hier hinsichtlich der Performance etwas problematisch werden könnte, dann eher die Verbindung von box-shadow mit border-radius.

Schatten in Verbindung mit Transparenz werden meines Wissens nach eigentlich erst dann wirklich zum Problem, wenn die Schatten in Abhängigkeit von einer Lichtquelle dynamisch auf mehreren Objekten abgebildet werden sollen.

Allgemein gesprochen ist der Grund dafür, dass korrektes Blending zunächst einmal erfordert, dass die Objekte in einer bestimmten Reihenfolge gerendert, sprich, in den Drawing Buffer geschrieben werden, nämlich von hinten nach vorne.

Die Berechnung der Schatten wiederum erfolgt (zumindest in der Regel) durch Multi Pass Rendering, das heißt es wird in einem ersten Schritt analog zur klassischen Verdeckungsberechnung mit der Lichtquelle als point of view die Entfernung zu einem Objekt auf der Z-Achse ermittelt.

Diese wird dann in einer sogenannten Shadow Map zwischengespeichert, bevor schließlich beim eigentlichen Zeichnen anhand der so hinterlegten Werte geprüft wird, ob und wenn ja welche Teile der Oberfläche eines Objektes im Schatten liegen.

Dabei ist dann natürlich ebenfalls die Reihenfolge von Bedeutung, in welcher die Objekte gerendert werden, weshalb letztlich die Verbindung dieser beiden Techniken aufwändige Rechenoperationen erforderlich machen kann.

Im Gegensatz dazu werden mit box-shadow erzeugte Schatten aber wohl als eigenständige Objekte gerendert, deren Eigenschaften nicht durch die relative Position zu einer Lichtquelle sondern durch die angegebenen und berechneten Werte bestimmt werden, so dass die beschriebene Problematik hier eigentlich keine Rolle spielen dürfte.

Die Darstellung eines border-radius andererseits erfordert eine Menge Vertices, sowohl bei der eigentlichen Box als auch beim Schatten, weshalb ich mir vorstellen könnte, dass großvolumige und vor allem weiche Schatten in Verbindung mit dieser Eigenschaft und bei entsprechendem Reflow, sich im Hinblick auf die Performance durchaus negativ bemerkbar machen könnten…

Ist aber natürlich alles pure Spekulation, denn ich bin ja kein Fachmann. ;-)

Gruß,

Orlok