Gå til innhold

Hva er v-sync?


Anbefalte innlegg

Videoannonse
Annonse
Som regel noe du bør styre unna MAO.

8871027[/snapback]

Noe du bør ha på, mener du vel? :hmm: "V-sync" on.

8871044[/snapback]

 

Enig med Martin her. V-sync er vel noe de fleste fps-spillere styrer unna, for å oppnå høyest mulig framerate. Den er vel på som default i de fleste spill.

Lenke til kommentar
Min Maskin:

8800GTS 640MB

Intel Core 2 Duo E6600

GeIL DDR2 PC6400 Ultra 2 GB

EVGA nForce 680i SLI

LaCie Photon Vision II 20" LCD skjerm

 

Så om jeg har den av vil jeg oppnå en høyere framerate i spill?

 

Hva med stalker? Av eller på? Hva tjener jeg på?

8871367[/snapback]

 

Man kan si det såpass enkelt: Opplever du noen gang at bildet "kuttes" noen ganger, lar du det være på. HVis ikke, og hvis du på død og liv må ha maks fps, slå den av. Men det er kanskje best å se selv.

Lenke til kommentar

Den tekniske forklaringen er ganske grei, men vi går litt tilbake i tid for å forklare hvor det hele kommer fra.

 

I en maskin har man typisk noe som heter et videominne. I dette minnet ligger alle pikslene (punktene) som vises på skjermen lagret, deriblant hvilken farge de har og så videre. Dersom et program ønsker å vise noe på skjermen, endrer det en av pikslene i dette minnet, og vips, så er endringen representert på skjermen.

 

Det andre elementet er måten en CRT-skjerm (en vanlig bilderørskjerm) fungerer på. Bak i skjermen er det en elektronkanon som skyter elektroner på en fosforiserende flate. I det disse elektronene treffer denne flaten, lyser små punkter opp, og vi får vist et bilde på skjermen. Dette gjøres ved at elektronkanonen starter oppe i det venstre hjørnet og så beveger seg mot høyre. Underveis tilpasser den elektronstrålen i forhold til bildet som skal vises akkurat der. Etter at den kommer til høyre side av bildet (etter så mange piksler som man viser i bredden), så går den ned til linjen under, og så gjør den det samme der. Dette gjøres x antall ganger i sekundet, der x er det som menes med Hz til skjermen. Dersom en skjerm er 70hz, så går skjermen gjennom hele denne sekvensen 70 ganger i sekundet.

 

En skjerm med 640x480 oppløsning vil tegne 640 punkter i bredden, gå ned til neste linje, tegne 640 punkter til, og så vi dere, til alle de 480 linjene er vist. Hva den tegner, leser den fra videominnet som nevnt over.

 

Det er her problemene dukker opp:

 

Hva skjer om vi endrer videominnet mitt i bildet? Dette er et triks man kan bruke på en del plattformer (Amiga, f.eks.). Hvis vi skriver til videominnet veldig ofte under visningen, vil vi oppleve hakking, flimring og andre ulumskheter.

 

Dette fører oss til en av de første teknikkene som ble utviklet for å ha mer kontroll over visningen: Double Buffering. I stedet for at man skriver rett til videominnet, skriver man til et sted i det vanlige minnet med samme størrelse som videominnet. Etter at man har skrevet alt man skal, kopierer man hele bolken over det eksisterende videominnet, og på den måten får man byttet "hele bildet" på en gang. Vi vil imidlertid fortsatt kunne oppleve flimring, dersom dette skjer oftere enn så mange bilder som skjermen klarer å vise i sekundet.

 

Og nå nærmer vi oss vsync-biten.. Som sagt, så er det en elektronkanon som durer og går bak i CRT-skjermen, og som beveger seg fra toppen av skjermen og nedover. I det elektronstrålen har kommet hele veien ned, dukker det opp et problem. Det eneste stedet den skal tegne, er på toppen av skjermen igjen, og er fysisk langt fra den posisjonen som kanonen peker mot nå. Det tar derfor nå en viss tid for kanonen å fysisk bevege seg opp til den andre kanten, og vi får en såkalt vertical blank (vblank). Dette tar et visst antall millisekunder, alt etter hz og skjermkort. På tiden tiden som kanonen beveger seg opp til toppen igjen blir ikke bildet som er på skjermen fysisk oppdatert, og det fører oss til ninjatrikset.

 

Et program kan imidlertid oppdage når vblank inntreffer, og man har derfor "wait for vblank", eller som det nå kalles, vertical sync. I det vblank blir trigget, kopierer man kopien man har av videominnet fra det vanlige minnet og over til skjermkortet. Når elektronkanonen så endelig er tilbake på toppen og fortsetter med sin noe kjedelige tegneoppgave, er det et nytt bilde som ligger og venter. Videominnet blir med andre ord kun oppdatert når det ikke blir tegnet noe fysisk på skjermen. Dermed unngår man såkalt tearing og flimring, ettersom minnet bare røres når det ikke blir brukt til å vise noe på skjermen.

 

GPU-er og dedikerte 3D-kort har forandret mye av dette her, slik at man ikke lenger prater direkte med et skjermminne, men med et eget grensesnitt mot skjermkortet (OpenGL eller Direct3D, f.eks), men konseptet er fortsatt det samme. Du vil fint finne "double buffering" og "triple buffering" (som er en videreutvikling av konseptet igjen) i en del oppsettsmenyer for spill den dag i dag, og dette er en del av bakgrunnen for det.

Lenke til kommentar

E LCD må også oppdatere bildet og hvis det skjer i en framebuffer bytte kan det oppstå tearing. Tearing er gjerne mer tydlig på LCD.

 

Som nevnt kan vsync gå hardt utover frameraten. La oss si at du kjører 60hz på skjermen og skjermkortet bommer på en skjerm refresh må den vente til neste vsync for framebuffer bytte og frameraten vil falle til 30FPS (med det ene bufferet som vises og det andre som fullt har ikke kortet et ledig buffer å skrive til og må stå uvirksom). Hvis den bommer på 2 vsync er du nede i 15FPS.

Tripple buffering (som kan gis som en opsjon i grafikk instillingene til spillet eller tvinges i OpenGL via driverene) løser dette problemet med å gi et ekstra buffer å skrive til, men dette innfører en forskinkelse.

 

Dette er også mye en individuell preferanse der noen ikke er så bryd med tearing og går heller for raskere oppdatering, mens andre finner tearing veldig irriterende og tar heller en kompromiss med framerate og/eller grafikk detaljer/oppløsning. For MP spill som Battlefield bør dog vsync være av for å gi deg en bedre "fighing chance".

Lenke til kommentar

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

Laster...
×
×
  • Opprett ny...