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)
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)