Verwijderd schreef op woensdag 20 juni 2007 @ 02:36:
[...]
Valve zocht naar een manier om de best looking/performancing HDR + AA mogelijk te maken
op kaarten die het hardwarematig niet konden, zoals de X800 reeks.

Dat heeft weinig met
de huidige discussie te maken.
Nee, dat zie je juist verkeerd. Het heeft heel veel met de discussie te maken.
De versie van HDR met AA die nu in de Source Engine gebruikt wordt is de vierde itteratie van HDR in de Source engine. Deze versie werkt op alle DX9 hardware en kan in combinatie gebruikt worden met MSAA. Het punt is echter dat dit eigenlijk meer MDR is ipv HDR.
De allereerste versie van echte HDR die Valve wilde gebruiken, was het mooiste. Er zaten echter twee enorme 'maren' aan vast. 1) performance was niet denderend. 2) het 'brak' MSAA, MSAA werkte niet op de juiste manier en vertoonde artefacts. Die tweede reden is de reden waarom shaderbased AA uitkomst biedt en dit is wat nu gebeurt in CoJ en straks in nog een hele grote andere game engine...
Verder denk ik dat de discussie - shaderAA wel of niet - ook uit die tijd afstamt; omdat kaarten diverse postprocessing effects niet aankonden icm MSAA, werd de vraag geboren om het shaderbased te doen. Sinds X1K en GF8 is die noodzaak er echter niet meer.
De kaarten omzeilen het probleem, maar fixen het niet. Waarom denk je dat deze kaarten niet standaard MSAA aan kunnen zetten in games zoals Oblivion, Far Cry of andere games met HDR, die normaal gesproken geen MSAA ondersteunen? Dit moet in de drivers geschreven worden. En dan nog werkt het niet perfect, tenzij de gamedevelopers specifiek voor een bepaalde oplossing hebben geprogrammeerd.
De noodzaak voor shaderbased AA komt voort uit het feit dat veel developers met Microsoft om de tafel zijn gaan zitten. Hieruit bleek dat men meer controle wilde over AA. Dit kan door de pixelshader toegang te geven tot elke individuele sample van elke pixel. Hierdoor krijg je een hogere kwaliteit resolve AA.
Deze extra controle en kwaliteit zal je niet krijgen op de X1K serie. Ja, je kan bepaalde vormen van HDR doen met MSAA, maar er zijn ook genoeg betere vormen van HDR (ja, die zijn er, net zoals er betere vormen van texture filtering zijn dan anisotropic filtering, die op dit moment nog te zwaar zijn om te gebruiken) die hier niet gelukkig mee zijn. Als een developer dus voor een bepaalde kwaliteit wil gaan, dan hoeft hij niet meer toe te geven en in te boeten aan kwaliteit, doordat hij dankzij DX10 nu meer controle heeft over de hele boel. Een scene met HDR zal namelijk nooit altijd over intens zijn, en vereist dan misschien net even wat minder AA of wat meer AA op bepaalde plekken om het er mooi uit te laten zien.
Een voorbeeldje. Met shaderbased AA kan precies worden aangegeven welk gedeelte van een scene welke mate van AA krijgt en welk gedeelte van de scene minder of niet van AA wordt voorzien. Met de X1K serie zou alles in de hele scene voorzien worden van AA wat niet altijd wenselijk is of wat op sommige plaatsen nog niet voor het gewenste resultaat zorgt. Door de pixelshader toegang te geven tot multisampling, kan je veel nauwkeuriger te werk gaan... op pixelniveau om precies te zijn.
Wat we de komende tijd zullen gaan zien is dat DX10 GITG titels shaderbased zullen zijn (waardoor X2K GF8 kan evenaren), en TWIMTBP titels gewoon hardwarebased zullen blijven.
Als het echt DX10 games zijn, dan zullen deze games gebruik maken van shader based AA resolve. Kijk niet verbaasd op als G92 een kei is in shader based MSAA resolve.
Om even aan te geven waar we heen gaan.... Neem de UnrealEngine3. Van Epic. Altijd een grote vriend geweest van nVidia. Deze engine biedt alleen MSAA aan in DX10... en wel via shader based AA!
PCGH: Is there a possibility to make deferred shading and edge-smoothing work at the same time on DX9 graphics cards?
Epic: Unreal Engine 3 uses deferred shading to accelerate dynamic lighting and shadowing. Integrating this feature with multisampling requires lower-level control over FSAA than the DirectX9 API provides. In Gears of War on Xbox 360, we implemented multisampling using the platform's extended MSAA features. On PC, the solution is to support multisampling only on DirectX 10.
Bron:
http://forums.epicgames.com/showthread.php?t=571019 /
http://www.pcgameshardware.de/?article_id=602522
In het kort... De Unreal Engine 3 gebruikt o.a. deferred shading. MSAA kan hier niet gebruikt worden via DX9 omdat dit te weinig controle biedt. Dus daarom wordt MSAA alleen ondersteunt in DX10. En denk je dat dit hardware resolve AA is? Nee.... het is shader assisted AA resolve! Als een X1K dit zou proberen om MSAA op deferred shading toe te passen, dan zou er niets gebeuren... de framebuffers bevatten namelijk niet de info waar AA op toegepast moet worden. Dit kan alleen via shader assisted resolve AA gebeuren....
De HD2900XT is dus volledig gebouwd op shader assisted resolve AA, met name ook omdat dit een belangrijk punt was voor DX10. De G80 zou dit dus ook moeten kunnen, en kan het ook (anders zou de CoJ benchmarks helemaal niet goed draaien op de G80). Maar ja, ik denk niet dat de G80 zo voorbereid was op het feit dat er zo snel al een game zou komen die al volledig op shaders zou leunen.
In UT3 heeft nV echter geluk dat veel effecten sterk leunen op texturing en fillrate. En daar heeft de G80 meer dan genoeg van. Performance zal dus wel weer in het voordeel van nV uit vallen.

Maar je kan verder zeggen wat je wilt over het al dan niet nuttig zijn van shaderbased AA... De Unreal Engine 3 gaat gebruikt worden in veel games....
Technical PR Officer @ MSI Europe. My thoughts and opinions may not reflect the ones of my employer.