PCGH Retro anno 2000: Die Schlagworte kennen Sie. S3TC, trilineares Filtering und Cube-Environment-Mapping sind Begriffe, die bestimmt auch auf dem Datenblatt Ihres Beschleuniger-Boards um die Wette strahlen. Den Technik-Background dazu liefert nun PC Games Hardware.
S3TC im Detail
Eine Textur wird zur Kompression in viele 4x4 Texel große Blöcke aufgeteilt. Jeder dieser 16 Texturwerte eines Blocks wird mit 2 Bits repräsentiert, so dass ein ganzer Block 32 Bit belegt. Zusätzlich werden jedem Block noch zwei 16-Bit-Farben zugewiesen, die durch das S3TC-Verfahren bestimmt werden. Zwei weitere Werte werden durch eine Vermischung dieser Farbwerte erzeugt und ebenfalls festgehalten. Das S3TC-Verfahren bildet nun aus diesen beiden Wertegruppen eine so genannte "Color Look-Up-Table" (CLUT). Diese CLUT wird dazu verwendet, die richtigen Farbwerte des jeweiligen Texel im passenden Block zu bestimmen. Insgesamt benötigen die 16 Texel des Blocks nun nur noch 64 Bit (32 Bit für die CLUT und 32 Bit für den 4x4-Block), d. h. durchschnittlich nur 4 Bit pro Pixel (statt 32 Bit). Auch wenn komprimierte S3TC-Texturen in den meisten Fällen kaum vom Original zu unterschieden sind, arbeitet das Verfahren verlustbehaftet. Mängel in der Qualität können sich unter ungünstigen Bedingungen bemerkbar machen.
Quelle: PC Games Hardware
Hier sieht man die verschiedenen Texturauflösungen nebeneinander.
Klötzchenkiller
Trotz Texturkompression bleibt das Lesen von Texturdaten weiterhin für das größte Datenaufkommen innerhalb der 3D-Pipeline verantwortlich. Einer der Gründe ist die durchgeführte Texturfilterung, welche mehr als die eigentlich nötigen Teile der Textur ausliest. Ohne Filtering ("Point Sampling") würden aber kleine Texturen Blöcke bilden, sobald man sich dem Objekt zu stark nähert. Filtering bildet weiche Übergänge und reduziert den Klötzcheneffekt. Aber auch weit entfernte Texturen können unschönes Verhalten an den Tag legen und beginnen zu "wabern", indem durch Rechenungenauigkeiten abwechselnd verschiedene Texturwerte ausgelesen werden. Dieser auch Texturflimmern genannte Effekt wird durch Filtering reduziert, indem mehrere Texturwerte miteinander vermischt werden. Die Wirkung von Texturfilterung ist vergleichbar mit Anti-Aliasing (=Kantenglättung), beschränkt seine Wirkungsweise jedoch auf die Flächen innerhalb der Dreiecke und lässt daher die berüchtigten Kanten unangetastet. Den Mehraufwand durch Texturfilterung wird heute größtenteils durch chipinterne Caches abfangen. Nur beim Einsatz hochwertiger Filteringtechniken macht sich ein Geschwindigkeitsknick bemerkbar.
