Hidden Surface Removal in den 3dfx Betatreibern 1.04.01

Leise, Still und Heimlich implementierte 3dfx in die letzten Betatreiber ein sehr interessantes Feature, Hidden Surface Removal.

Der Gedanke dahinter ist recht simpel, verdeckte Flächen schon vor dem Rendern aussortieren und so Füllrate und Speicherbandbreite sparen.
PowerVR Chips macht das generell, bei ATI, Matrox, nVidia und 3dfx aber wird die Sichtbarkeitsberechnung erst am ende ausgeführt. Dies wurde mit immer komplexeren 3D-Spielen mit mehr und mehr verdeckten Polygonen zum eine immer größeren Problem.

Hidden Surfaces Hidden Surfaces     Hidden Surfaces Hidden Surfaces
Hier als Beispiel zwei Szenen aus Half-Life, einmal normal und mit mittels gl_wireframe 2 sichtbar gemachten verdeckten Flächen.

In den 3dfx Tools fehlt der Eintrag für das Hidden Surface Removal noch, in der Windows Registry sind die nötigen Einträge aber bereits vorhanden. Vorgesehen waren folgende fünf Einstellungen:
Disable, Conservative Tiling, Non-Aggressive Tiling, Semi-Aggressive Tiling und Aggressive Tiling (in der Windows Registry schlicht mit den Zahlen 0 bis 4 versehen).


Allem Anschein nach funktioniert das 3dfx Hidden Surface Removal in der vorliegenden Version nur mit Spielen die auf der id Tech 3 Engine basieren.
Neben Quake III Arena funktioniert es auch mit Star Trek: Voyager: Elite Force, American McGee’s Alice, Heavy Metal: F.A.K.K.² und sogar der T-Buffer Technologiedemo (Quake3T 1.08).
Nicht dagegen mit z.B. Unreal Tournament, Half-Life, Serious Sam und Quake2.

Ausgiebig getestet habe ich nur Quake III Arena.
Dabei zeigen sich in hohen Auflösungen bereits bei Non-Aggressive Tiling (HSR_2) Bildfehler während es bei einer Auflösung von 640x480 Bildpunkten Problemlos funktioniert.

Die Bildfehler sind dabei Standpunkt und Blickrichtung abhängig, was deutlich wird wenn man an einer Stelle Stehenbleibt.
So gibt es z.B. Stellen an denen komplette Wände flackern, bewegt man sich nun aber nur einen Schritt zur Seite oder Dreht sich nur ein klein wenig und schon wird alles Perfekt gerendert als wäre HSR Deaktiviert.

Hidden Surface Removal Hidden Surface Removal Hidden Surface Removal
Zur Veranschaulichung drei Screenshots aus Q3DM7.bsp mit HSR auf 4.

Benchmarks habe ich natürlich trotzdem angefertigt, dabei kommen neben einer 3dfx Voodoo5 5500 AGP folgende CPU, Mainboard und Speicherkonfigurationen zum Einsatz:
  • AMD Athlon 800 (Thunderbird), Asus K7M mit AMD-751+VIA VT82C686 und 128MB PC100 SD-RAM (2-2-2-5-7)
  • AMD Athlon 1400c (Thunderbird), Asus A7V133-C mit KT133A Chipsatz und 128MB PC133 SD-RAM (2-2-2-6)
  • AMD Athlon XP 2800+ (Barton), Epox 8K5A3+ mit VIA KT333 Chipsatz und 768MB PC2700 DDR-RAM (2,5-3-3-6)
Ein AMD Athlon mit 800MHz ist dabei eine Zeitgemäße CPU die ungefähr zur selben Zeit wie die Voodoo5 erschien, während der 1400er Athlon erst Mitte 2001 und der Athlon XP 2800+ gar erst im Februar 2003 erschien.

Hidden Surface Removal Hidden Surface Removal Hidden Surface Removal
Quake III Arena Benchamrks, demo001.

Die Frameraten steigen zwar in hohen Auflösungen teilweise auf das dreifache und von der FPS zahl her Spielbare werte, Spielbar ist es aber bei weitem nicht, es fühlt sich immer noch sehr ruckelig an, quasi wie bei microrucklern auf aktuellen dual GPU Lösungen.


Fazit:
HSR auf 1 hilft in Quake III Arena das letzte bisschen Leistung raus zu quetschen, es hilft aber keinesfalls unspielbar lahmen Systemen Spielbare FPS zu entlocken.



Stephan im November 2013