Toon posts:

AntiAliasing manier zonder grote framerate-drop?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Lange post, niet te moeilijk, maar misschien interessant… lees en maar met reacties!

Ik zit hier in de leegloop en ben wat aan het lezen in “Graphics Gems 3” Een boek over 2D/3D graphics en rendering. Nu kom ik een stuk tegen over methodes van rendering, motion blur, supersampling, spatial en temporal anti-aliasing. Ja dit is hoort allemaal bij elkaar en klinkt misschien bekend “Do I hear T-buffer?” Daar las ik iets m.b.t. anti-aliasing waar ik zelf ook aan heb zitten denken.

NVIDIA-AA:
Render op 4x de doelresolutie en “scale” het plaatje terug naar doelresolutie
Render op 4x (duurt lang)
downscalen (duurt kort)
zet in framebuffer (laat plaatje zien)
begin weer opnieuw
Dus: 4x zo hard renderen per plaatje.

3dfx-AA:
Render elk plaatje 4x en voeg deze samen tot doelplaatje
render1(duurt kort) in T-buffer
render2(duurt kort) in T-buffer
render3(duurt kort) in T-buffer
render4(duurt kort) in T-buffer (1+2+3+4=lang)
voeg samen en zet in framebuffer (laat plaatje zien)
begin weer opnieuw
Dus: 4x zo veel renderen.

AA via Full-scene-motion-blur, eigen ID, ook ongeveer terug te vinden in het boek:
ok, we hebben de hulp van de T-buffer, waar we bijvoorbeeld 4 plaatjes in gaan zetten zoals bij 4sampleAA. Neem aan dat de elke van de 4 sets van T-buffer gevuld is.

Nu gaan we hetvolgende doen:
render naar 1e deel van T-buffer
voeg de 4 T-buffer sets samen en zet in framebuffer (laat plaatje zien)
render naar 2e deel van T-buffer
voeg de 4 T-buffer sets samen en zet in framebuffer (laat plaatje zien)
render naar 3e deel van T-buffer
voeg de 4 T-buffer sets samen en zet in framebuffer (laat plaatje zien)
render naar 4e deel van T-buffer
voeg de 4 T-buffer sets samen en zet in framebuffer (laat plaatje zien)
start weer met 1e deel van de framebuffer en ga zo door.

Nu zal de framerate volgens mij bijna niet afnemen, omdat alleen, het samenvoegen van de 4 sets in de T-buffer tijd kost. Volgens mij kost dat gedeelte bijna geen tijd, en is er dus bijna geen framerate verlies.

Dit is wel (nadeel?) meteen een soort full-scene-motion-blur, zodat alles wat snel beweegt blurred/anti-aliasing krijgt. Stilstaande onderdelen zullen op deze manier geen AA krijgen maar dat is op te lossen door de gerendere frames in de buffers allemaal iets te verschuiven. Bijvoorbeeld frame 1 normaal, 2 halve pixel naar rechts e.d. De maximale “blurlengte” is bij het gebruik van 4 framesets maximaal dus 3 frames, en dat lijkt mij mee te vallen omdat een menselijk oog snel bewegende objecten toch niet scherp kan waarnemen…

Iemand ID’s? Klopt dit? Gaat het samenvoegen van de frames in de T-buffer snel? Als dit waar is, waarom is dit geen optie in de drivers van 3dfx (of zit ‘ie er wel in? Ik heb geen Voodoo4/5)

Verwijderd

Topicstarter
Niemand???

Normaal heeft iedereen inzicht hoe de AA van 3dfx/NVIDIA werkt;), dan moet iemand nu toch ook een idee'tje hebben?

  • Rookstar
  • Registratie: Juni 1999
  • Laatst online: 02-06-2016

Rookstar

Rookt niet....

Ik zou niet weten hoe dit precies zit, maar dat boek lijkt me wel errug interessant. Heppie daar meer info over?

Gadgeteer


Verwijderd

Topicstarter
Ik zal morgen als ik weer op 't werk zit wel ff het ISBN nummer posten.

  • Rookstar
  • Registratie: Juni 1999
  • Laatst online: 02-06-2016

Rookstar

Rookt niet....

Dat zou erg tof van je zijn ;)

Gadgeteer


Verwijderd

Topicstarter
Graphics Gems III
Edited by David Kirk
Academic Press 1992
ISBN 0-12-409670-0

image processing, prog. techniques, Modeling/transformations, 2d, 3d, raytracing, radiosity, rendering

  • Arzie
  • Registratie: Juni 1999
  • Laatst online: 30-08 20:31
Het lijkt mij niet helemaal handig. Vooral vanwege het blurry effect, dus alles wordt wazig. Mij lijkt het beter om dat hele Full Scene weg te halen. Zoek gewoon alle lijnen (evt. alleen die met een scherp kleurcontrast, maar dat kan vrij moeilijk worden) en antialias alleen die stukjes. Dan ben je meteen van het probleem af van die barsten in je autoruit die gesmooth worden terwijl dat niet moet.

Verwijderd

edge antialiasing ? ;)
Volgens mij gebruikt de V5 al de T buffer voor RGSS. Je zou het best die paper op 3dfx eens nalezen (gemaakt door Beyond3D.com). Verder is de benodigde tijd niet eens het belangrijkste maar de benodigde fillrate en bandbreedte ?

Verwijderd

Topicstarter
Je, de voodoo gebruikt RGAA/RGSS, maar dan moet elk beeld 4x gerendered worden voor het naar de framebuffer kan, dat kost veel tijd.

Je zou toch misschien ook, zoals ik bescheven heb, telkens de huidige frame en, bijvoorbeeld de 3 eerdere frames, gebruiken om een AA mogelijk te maken. Nadeeltje is idd wel dat je ook een motion-blur krijgt. Voordeel is dat je niet telkens hoeft te wachten tot er 4 frames gerendered zijn, je pakt gewoon het nieuwe frame, en de 3 eerdere frames die je in de framebuffer opgeslagen hebt.

Verwijderd

Tijd is volgens mij niet de bottleneck. Jouw methode lost wel het pixel popping/crawling op. Verder doet het idee mij denken aan die stereovisie methode: 2 plaatjes over mekaar en een aantal pixels verschoven. Nu al zijn er mensen die klagen over blurry plaatjes, dat wordt dan echt niet beter ;)
Als je FSAA zou willen verbeteren (qua performance) dan zou ik het zoeken in bandbreedte sparende methodes (zoals Gigapixel ?
Pagina: 1