Vedlajsie efekty VSync
Re: Vedlajsie efekty VSync
Discard je len jedna z moznosti swap chain, ktora na TB nic nemeni, stale tam su tri buffre a samozrejme s lagom ako som pisal, co je vidiet aj na obrazku.
Re: Vedlajsie efekty VSync
len jedna. ale jedina podporujuca multisampling (antialiasing).
Spoiler: ukázať
Re: Vedlajsie efekty VSync
Tak nedalo mi to a pozrel som si wikipédiu:
"Vertical synchronization eliminates this by timing frame buffer fills to coincide with the vertical blanking interval, thus ensuring that only whole frames are seen on-screen. Software such as video games and computer aided design (CAD) packages often allow vertical synchronization as an option, because it delays the image update until the vertical blanking interval. This produces a small penalty in latency, because the program has to wait until the video controller has finished transmitting the image to the display before continuing. Triple buffering reduces this latency significantly."
Tu píšu niečo iné.
"Vertical synchronization eliminates this by timing frame buffer fills to coincide with the vertical blanking interval, thus ensuring that only whole frames are seen on-screen. Software such as video games and computer aided design (CAD) packages often allow vertical synchronization as an option, because it delays the image update until the vertical blanking interval. This produces a small penalty in latency, because the program has to wait until the video controller has finished transmitting the image to the display before continuing. Triple buffering reduces this latency significantly."
Tu píšu niečo iné.
Spoiler: ukázať
Re: Vedlajsie efekty VSync
zarucene pravdive info lebo wikipedia...to plati jedine tak pre OpenGL
Re: Vedlajsie efekty VSync
Neviem, mne to dáva väčšiu logiku. Uvidíme, keď to budeme preberať na prednáške. Proste ty máš viac bufferov, takže sa stihnú pripraviť tie snímky včas... Aspoň to som ja pochopil...
Spoiler: ukázať
Re: Vedlajsie efekty VSync
Akakolvek forma Vysnc vyrazne zväcsuje input lag, pri niektorych fps hrach to je velmi citit.
Spoiler: ukázať
Re: Vedlajsie efekty VSync
To áno, ale vravieť, že triple buffer tomu ešte viac uškodzuje podľa mňa nie je pravda. Budem rád, ak to vysvetlíte.
Spoiler: ukázať
Re: Vedlajsie efekty VSync
Trochu matematiky predsa...
Mam engine schopny bezat 100fps a monitor s 60Hz.
Vsync+Double buffering
Frame 1 sa zobrazuje na monitore
Frame 2 je vypocitany na 100%
40% vykonu sa nepouzilo
Vsync+Triple buffering
Frame 1 sa zobrazuje na monitore
Frame 2 je vypocitany na 100%
Frame 3 je vypocitany na 40%
a teraz - mam engine schopny bezat na 45FPS a monitor s 60Hz. Zapnem Vsync a k tomu FRAPS. Vidim ze to ukazuje 30FPS stabilne. Vtedy to vyzera takto.
Double buffering
Frame 1 sa zobrazuje na monitore
Frame 2 sa vypocita na 75%
FLIP
Frame 1 sa zobrazuje
Frame 2 sa dopocita na 100%
75% strata vykonu
FLIP
Frame 2 sa zobrazuje
Frame 1 sa dopocita na 75%
Triple Buffering
Frame 1 sa zobrazuje na monitore
Frame 2 sa vypocita na 75%
Frame 3 je vypocitany na 0%
FLIP
Frame 1 sa stale zobrazuje
Frame 2 je vypocitany na 100%
Frame 3 je vypocitany na 50%
FLIP
Frame 2 sa zobrazuje
Frame 3 je vypocitany na 100%
Frame 1 je vypocitany na 25%
Problem Vsyncu je v tom ze jedna frame sa pri nedostatku HW vykonu zobrazuje dlho - stuttering... A vyhoda triple bufferingu je v tom ze znizuje straty vypoctoveho potencialu.
Mam engine schopny bezat 100fps a monitor s 60Hz.
Vsync+Double buffering
Frame 1 sa zobrazuje na monitore
Frame 2 je vypocitany na 100%
40% vykonu sa nepouzilo
Vsync+Triple buffering
Frame 1 sa zobrazuje na monitore
Frame 2 je vypocitany na 100%
Frame 3 je vypocitany na 40%
a teraz - mam engine schopny bezat na 45FPS a monitor s 60Hz. Zapnem Vsync a k tomu FRAPS. Vidim ze to ukazuje 30FPS stabilne. Vtedy to vyzera takto.
Double buffering
Frame 1 sa zobrazuje na monitore
Frame 2 sa vypocita na 75%
FLIP
Frame 1 sa zobrazuje
Frame 2 sa dopocita na 100%
75% strata vykonu
FLIP
Frame 2 sa zobrazuje
Frame 1 sa dopocita na 75%
Triple Buffering
Frame 1 sa zobrazuje na monitore
Frame 2 sa vypocita na 75%
Frame 3 je vypocitany na 0%
FLIP
Frame 1 sa stale zobrazuje
Frame 2 je vypocitany na 100%
Frame 3 je vypocitany na 50%
FLIP
Frame 2 sa zobrazuje
Frame 3 je vypocitany na 100%
Frame 1 je vypocitany na 25%
Problem Vsyncu je v tom ze jedna frame sa pri nedostatku HW vykonu zobrazuje dlho - stuttering... A vyhoda triple bufferingu je v tom ze znizuje straty vypoctoveho potencialu.
Spoiler: ukázať
Re: Vedlajsie efekty VSync
ak si to nepochopil z obrazku dole, tak snad prednaskaXenon napísal:Neviem, mne to dáva väčšiu logiku. Uvidíme, keď to budeme preberať na prednáške. Proste ty máš viac bufferov, takže sa stihnú pripraviť tie snímky včas... Aspoň to som ja pochopil...
pri db su tam len dva buffre, ku kazdemu si daj napr 20ms a teraz pocitaj latencie s dvoma bufframi a s troma
Re: Vedlajsie efekty VSync
To ako si to predstavujes ty by bola pravda za predpokladu ze hardware nestiha dokoncit pracu v grafickom bufferi do doby 16,6ms, pricom po dokonceni vykreslovania Buffera B by si hardware dal pauzu a vobec nic nerobil do doby nez sa bufferB zacne zobrazovat. A presne tam mas chybu.
Pretoze cas potrebny na vyplnenie bufferu nieje konstanta (20ms ako pises ty) ale premenna tak:
Buffer A sa zobrazoval cca 16,7ms (kvoli Vsync)
Vykreslenie bufferu B trvalo 10ms
Po dokonceni bufferu B ma engine este 6ms cas pracovat na bufferi C.
Flip medzi bufframi mimochodom takmer vobec nic netrva. Vykreslovanie dnes uz nerobi to ze sa obsah backbufferu skopiruje do front bufferu, ale pointer sa flipne a ukaze na dalsi v poradi.
Na druhej strane ak:
Nemas Vsync a triple buffering zapnes tak je to nanic. Treti buffer sa nikdy nepouzije pretoze hned potom ako je backbuffer dokonceny tak sa flipne s frontbufferom.
Pretoze cas potrebny na vyplnenie bufferu nieje konstanta (20ms ako pises ty) ale premenna tak:
Buffer A sa zobrazoval cca 16,7ms (kvoli Vsync)
Vykreslenie bufferu B trvalo 10ms
Po dokonceni bufferu B ma engine este 6ms cas pracovat na bufferi C.
Flip medzi bufframi mimochodom takmer vobec nic netrva. Vykreslovanie dnes uz nerobi to ze sa obsah backbufferu skopiruje do front bufferu, ale pointer sa flipne a ukaze na dalsi v poradi.
Na druhej strane ak:
Nemas Vsync a triple buffering zapnes tak je to nanic. Treti buffer sa nikdy nepouzije pretoze hned potom ako je backbuffer dokonceny tak sa flipne s frontbufferom.
Spoiler: ukázať
Re: Vedlajsie efekty VSync
o com tu trepes preboha, kde som povedal ze vykreslenie snimok trva konstatny cas? ja len vravim, ze vsync ma vacsi lag s triple buffrom ako s double
Re: Vedlajsie efekty VSync
No. OK, tak môže tam byť ten lag preto, lebo vlastne ja dačo robím, idem s postavou napríklad. A teraz zahnem rýchlo doľava. Tak ten prvý obrázok, kedy zahnem doľava sa začne vykresľovať až v treťom buffri a tie ostatné dva buffre (kedy som išiel ešte de facto rovno) sa musia vykresliť a až tak príde ten môj doľava.
Takže ono mám viac FPS, lebo ich stíha grafika vykresľovať ale dlhšie trvá, kým obraz zareaguje na môj pohyb myšou, teda kým sa obraz dostane na monitor. Ale úprimne - čí 2 stotiny sekundy alebo 6 stotín sekundy.
Teda rozumiem tomu správne ?
Takže ono mám viac FPS, lebo ich stíha grafika vykresľovať ale dlhšie trvá, kým obraz zareaguje na môj pohyb myšou, teda kým sa obraz dostane na monitor. Ale úprimne - čí 2 stotiny sekundy alebo 6 stotín sekundy.
Teda rozumiem tomu správne ?
Spoiler: ukázať
Re: Vedlajsie efekty VSync
Presne tu:yesper napísal:o com tu trepes preboha, kde som povedal ze vykreslenie snimok trva konstatny cas? ja len vravim, ze vsync ma vacsi lag s triple buffrom ako s double
Kód: Vybrať všetko
pri db su tam len dva buffre, ku kazdemu si daj napr 20ms a teraz pocitaj latencie s dvoma bufframi a s troma
Spoiler: ukázať
Re: Vedlajsie efekty VSync
ide len o najjednoduchsi priklad, preto tam pisem napr