Radeon 8500 FSAA - DirectX 8.1 vs. OpenGL | ||||||||||||||||||||||
Das Testsystem
Hier möchte ich einmal die 2x und 4x FSAA
Qualität der Radeon 8500 gegenüberstellen,
unter Verwendung von OpenGL und DirectX.
Verwendet wurde jeweils der Qualitätsmodus.
Dazu verwende ich die neuesten Entwickler
Beta-Treiber vom 28.02.2002 (WinXP 6043 Release
2), da ATi nun einige Zeit hatte, ihr Smoothvision
vollständig zu aktivieren.
2xFSAA (Qualitätsmodus)
![]() Bei diesem Ausschnitt ist deutlich der Vorteil auf der Seite von OpenGL zu sehen, obwohl beide 2xFSAA im Qualitätsmodus verwenden. Einfach ein wenig vom Monitor zurücktreten und die saubere Rundung wird erkennbar. ![]() Hier gewinnt DirectX deutlich vor OpenGL. Besonders gut erkennbar am Bogen und an der verzierten Mauer rechts im Bild. ![]() Der Lauf der Waffe wird unter OpenGL besser geglättet. Jedoch ist der vordere Teil der Waffe, sowie die Trommel besser unter DirectX geglättet. Die hier gezeigten Screenshots zeigen, dass unter OpenGL, beim 2xFSAA, die vertikalen Kanten kaum oder deutlich schwächer geglättet werden, als unter DirectX. ![]() Bei Deus Ex habe ich die Texturedetails runtergesetzt und die Farben invertiert, damit man sich besser auf die Polygonkanten konzentrieren kann. Deutlich ist der Unterschied an der linken vertikalen Kante zu erkennen, keinerlei Glättung bei OpenGL, genau wie das Schild am rechten Bildrand. 4xFSAA(Qualitätsmodus) ![]() Im Gegensatz zum 2xFSAA sieht hier der DirectX-Modus deutlich besser aus. Der Bogen hat keine Zacken mehr, wie unter OpenGL. ![]() Biede Versionen haben hier eine fast gleiche Qualität, jedoch sind die Abstufungen unter DirectX etwas gleichmässiger. ![]() Die Qualität des Laufes ist bei beiden Versionen gleich, jedoch sind die vertikalen Kannten, am vorderen Ende des Laufes, unter DirectX etwas besser geglättet. ![]() Auch hier wird die linke vertikale Kante, im Vordergrund, unter OpenGL kaum geglättet, jedoch das Schild am rechten Rand, welches sich weiter hinten befindet. Eben jenes Schild sieht unter DirectX und OpenGL gleich aus, jedoch die linke Kante nicht. Entweder haben die Treiber hier eine Macke, oder ATi verwendet unter OpenGL einen entfernungsabhängigen FSAA-Modus für vertikale Kanten. Vielleicht eignet sich DirectX besser für FSAA, da wir auch bei NVIDIA einen FSAA-Modus haben, welcher nur unter DirectX verwendbar ist. UPDATE (10.03.2002):
Auch unter DirectX macht FSAA Probleme. So ist die vertikale Kantenglättung (2xFSAA) bei Max Payne deutlich geringer als bei Serious Sam 2. Jedoch hat Serious Sam 2 Probleme bei der Waffendarstellung, sowie bei den Lichtumrahmungen, welche auch durch Wände sichtbar sind. UPDATE (11.03.2002): So, der BUG ist identifiziert. Nach einigen Test (Max Payne, DX8.1 SDK) konnte ich feststellen, dass es sich um die Renderstateoption D3DRS_FOGENABLE handelt. Wenn diese auf TRUE gesetzt wird, dann werden vertikale Kanten bei 2xFSAA nicht und bei 4xFSAA deutlich schächer geglättet. Die horizontale Kantenglättung wird ohne D3DRS_FOGENABLE ein wenig schwächer, was daruf zurückzuführen ist, dass Samples für die vertikalen Kanten benötigt werden, welche nun beim horizontalen Glätten fehlen. Ich habe den BUG an ATi gemailt. ![]() UPDATE (15.03.2002): Nach einigem Mailkontakt mit ATi ist der Grund für das FSAA-Problem bekannt. Es ist nicht wie vermutet ein Treiberbug, sondern eine Hardwarelimitierung, welche in zukünftigen GPU's behoben werden soll. Sobald ein Programm Fog verwendet (egal ob Vertex oder Table Fog) schaltet FSAA auf ein festes Muster um - OGSS - somit ist es bei 2xFSAA nicht möglich, vertikale Kanten zu glätten. Dies kann mit Max Payne wunderbar getestet werden, aber auch mit jedem der DX8.1 SDK Programme.. Unter OpenGL funktioniert es, jedoch immer (egal ob 2x oder 4x) mit geringer vertikaler Glättung bei nahen Kanten. Jedoch ist hier der vertikale Glättungsgrad von der Entfernung des Polygons zum Betrachter abhängig. Ist die vertikale Polygonkante weit weg, wird sie geglättet. Dies kann man mit MOHAA, Deus Ex oder Serious Sam 2 (OpenGL-Mode) ausprobieren. |
||||||||||||||||||||||
|