Gå til innhold

Skjermskalering - ATi/nVidia GPU vs LCD (bilder)


Boye

Anbefalte innlegg

Forord

For et par uker siden ble jeg klar over muligheten til å skifte mellom GPU og LCD skalering. Dette kan være praktisk hvis det viser seg at LCD skjermen f.eks. mangler sentrering eller viser "non-native" oppløsninger grovt og stygt. Ettersom LCD skalering er noe som jeg lenge har lurt litt på, har jeg her forsøkt å dokumentere resultatet av min lille undersøkelse med tekst og bilder hvordan ATi og nVidia GPU skalering ligger ann i forhold til LCD skalering. Alle bilder er forsøkt tatt så godt som mulig, i flere omganger. Under bildesammenlikningene vil "Native 1600x1200" alltid være skarpere, ettersom selve kamera ble flyttet nærmere samt at bildet tegnes 100% korrekt uten uklare piksler. Håper folket finner posten interessant, og som alltid - hvis feil oppdages, syng ut :)

 

 

 

Introduksjon

Pikselmatrisen i en LCD skjerm i dag er blant annet bygget opp av et bestemt rutenett (oppløsning), hvor hver rute (piksel) er delt opp i rødt, grønt og blått (subpiksler) i et bestemt mønster (RGB, BRG). En sier ofte at skjermen har en standard oppløsning på f.eks. 1280x720, 1280x1024 eller 1600x1200. Dette representerer rutenettet til skjermen, og fordi rutenettet ikke kan endres rent fysisk oppstår det problemer når skjermen blir matet andre oppløsninger som f.eks. 640x480 eller 1024x768.

 

pixelgrid_crtvslcd.jpg

 

Hvordan oppløsningen blir tegnet på skjermen avhenger av hvordan skjermkortet eller skjermen selv bestemmer å tilpasse den. Eksempler:

 

o i senter med sorte kanter (1:1)

o utstrekt bilde over hele skjermflaten (stretch)

o aspektutstrekking med sorte kanter enten over/under eller på sidene

o vanlig zoom-funksjonalitet (automatisk eller manuell)

 

I mange tilfeller må bildet behandles før visning, og vi kaller denne tilpasningen normalt for skalering. De fleste LCD skjermer i dag har skaleringsmuligheter, men for de skjermer som mangler dette må skjermkortet ta over jobben. Denne posten vil forsøke å forklare hvorfor bildet blir slik det blir, og hvilke alternativer som kan benyttes.

 

 

Skalering

Bildebehandlingen kan gjøres av skjermen internt. Det vil si at skjermen foretar en skalering og/eller tilpasning av bildet slik at den passer skjermens rutenett. Det er denne skaleringen som ofte skaper hodebry når man først må kjøre ned oppløsningen. Hovedgrunnen er at en oppløsning som 1024x768 aldri helt vil kunne fordeles jevnt på rutenettet til f.eks. 1280x1024 eller 1600x1200. Tekst og tynne linjer som polygoner får ofte ”trappetrinns effekt”, og er trolig noe av det første en oppdager. Grunnet skalering er det derfor anbefalt at man bruker skjermens standardoppløsning så ofte man kan slik at bildet holdes skarpt og fokusert.

 

scaling_nativevsnot.jpg

 

Strengt talt er det ingen standard for skalering, og dette har ført til at noen LCD skjermer gjør en bedre jobb enn andre. Hvordan er dette mulig?

 

 

Kvalitet på skalering

Skalering som grunnprinsipp i denne sammenheng kan forklares ved at man tar et eksisterende bilde i en lavere oppløsning, fordeler ut på en høyere oppløsning, og fyller tomrom med nabopiksler. Fordelingen trenger ikke å være jevn.

 

Dersom man tar 640 piksler i bredden og fordeler ut på et 1600 piksler bredt rutenett vil man nå få 2.5 piksler per originalpiksel, noe som normalt ikke fungerer fordi 1 piksel i seg selv er minste enhet. Dette fører til at noen piksler blir doblet, mens andre blir tredoblet. Resultatet er en ujevn skalering. Skulle derimot fordelingen passe rutenettet til minste enhet, som 800x600, vil bildet oppleves jevnt skalert (pikseldobling) og kan faktisk gi et bedre bilde enn 1024x768. I begge tilfeller vil likevel bildet oppleves grovt (legoeffekt).

 

For å skape et mykere bilde kan man benytte avanserte skaleringsmetoder som tar hensyn til at en LCD skjerm fra ”naturens side” er skarp. For å fylle ut tomrom under skalering kan man benytte mellomverdier og interpolere nye piksler basert på fargeforskjeller. Legoeffekten forsvinner, men bildet blir ufokusert. Grunnet denne interpoleringen vil også passende oppløsninger som 800x600 på et 1600x1200 rutenett likevel oppleves uklart, nettopp fordi skaleringen forsøker å jevne ut piksler framfor kun å doble de.

 

scaling_examples.png

 

For å kompensere for dette har noen skjermer en mer intelligent skaleringsteknikk som minner om ”unsharp mask” filteret i Photoshop. LaCie photon20visionII benytter dette, noe som fører til at tekst og kontraster igjen blir klare og tydelige. Dette gjør selv 640x480 veldig behagelig å jobbe med, men betyr samtidig at 1024x768 er skarpere enn 800x600 fordi filteret har mer data å jobbe med uavhengig av om 800x600 gir en jevnere pikselfordeling.

 

scaling_subpixel.jpg

 

En av de mer artige metodene for skalering går ut på at man benytter subpiksel skalering, dvs. man benytter seg av de individuelle røde, grønne og blå fargekomponentene/subpikslene som hver grunnpiksel er bygget opp av. Man ”øker” den horisontale oppløsningen slik at skaleringen blir jevnere. Teknikken er benyttet i Microsoft sin ClearType, og liknende teknikk kan benyttes for å rekonstruere et høyoppløselig bilde ifra flere andre lavoppløselige bilder (video).

 

 

GPU vs LCD skalering

Dersom en ikke er fornøyd med skaleringen som LCD skjermen utfører, kan en la skjermkortet gjøre jobben. Dette krever på nVidia og ATi sine kort en digital tilkobling. Skjermkortet vil da forsøke å utføre en hardware basert skalering uavhengig av operativsystem slik at skjermsignalet alltid er ”native”/standard for LCD skjermen. Grunnet dette var det ikke mulig å bruke ”printscreen” for å ta bilder av selve GPU skaleringen ettersom kun oppløsningen som skaleres og ikke selve sluttresultatet ble lagret i minnet.

 

gpuscaling_preos.jpg

 

Et tydelig tegn på at skjermkortet utfører skalering er når skjermens meny/OSD viser at oppløsningen er lik standardoppløsningen selv om man i praksis kjører en lavere oppløsning. Dette kan observeres allerede i BIOS, hvor undertegnede får et 1600x1200 bilde selv om BIOS tradisjonelt sett kjører en langt lavere oppløsning. Grunnet skaleringen kan man også risikere å oppleve støy/bildeproblemer allerede i BIOS dersom kabel er for lang eller av dårlig kvalitet, fordi det teknisk sett sendes et høyoppløselig bilde.

 

lcdscaling_1-1vsfull.jpg

 

Skjermer som ikke har intern skalering er avhengig av GPU/skjermkort skalering. Et eksempel er Dell 3007WFP, som har en oppløsning på 2560x1600. Her må skjermkortet gjøre skaleringen dersom man ikke kjører 2560x1600, for eksempel til DVD eller spilling. I Dell sitt eksempel vil det også være interessant å ha forskjellige plasseringsmuligheter, slik at man selv kan bestemme om bildet skal strekkes ut eller helt enkelt sentreres på skjermen.

 

 

nVidia skalering

Advarsel:

På nVidia skjermkort finnes det en praktisk og relativ stabil metode for å skifte mellom GPU og LCD skalering via konsoll kommandoer. Følgende gjøres på eget ansvar. Les all tekst før prøving.

 

Dersom man i Windows trykker WIN+R (Windows-RUN/kjør) og skriver CMD, kan man i konsollen manuelt velge skalering via kommandoer.

 

Eks:

Rundll32 nvcpl.dll, dtcfg setscaling 1 DA 2

 

Setter primærskjerm (1) LCD digitalpanel #1 (DA, DB=#2) til skaleringsmodus 2 (nVidia skalering).

 

Skaleringsmoduser (4 er utelatt):

0 – default: driveren bruker hva som er standard for skjermkortet/driveren

1 – native: driveren bruker LCD skjermens interne skalering, dersom en eksisterer

2 – scaled: driveren bruker nVidia skjermkort skalering

3 – centered: driveren forsøker gjennom nVidia skalering å plassere bildet midt på skjermen

5 – aspect-scaled: driveren bruker nVidia skalering, brukt på widescreen LCD skjermer for å beholde bildeforholdet

 

setscaling_1vs2.jpg

 

setscaling_3vs5.jpg

 

Hvis man nå har fått et sort bilde når dette ble utført, er det muligheter for at skjermkortet har økt Hz fra for eksempel 60Hz til 75Hz. For å løse dette på stedet kan man endre oppløsning manuelt via setmode.

 

Eks:

Rundll32 nvcpl.dll, dtcfg setmode 1 1024 768 32 60

 

Sett oppløsning 1024 x 768 32-bit 60Hz på primærskjerm.

 

For å løse Hz-problematikken kan man bruke ”Refresh Rate Overrides” i nVidia kontrollpanelet hvor man setter maksimum Hz til 60Hz på de stedene man kan. Mangler denne fra kontrollpanelet kan man bruke ”Coolbits”.

 

For å simulere ”unsharp mask” effekten skaleringen LaCie photon20visionII bruker for å gjøre bildet skarpere, kan man benytte nVidia sin Digital Vibrance Control som er integrert i nyere nVidia skjermkort. DVC3 inkluderer fargekontroll og et ”unsharp mask” liknende kantfilter som kan benyttes samtidig med skaleringen. Filteret er relativt intelligent, og forsøker bevisst å øke lesbarhet framfor å forsterke ”alt”:

 

Eks:

Rundll32 nvcpl.dll, dtcfg setsharpness 1 10

 

Sett skarphet 10 (0-21, 21=maks, 0=av) på primærskjerm (1).

 

 

Kvalitetsforskjell ATi vs nVidia skalering

nVidia og ATi benytter begge integrerte skaleringsteknikker om nødvendig. nVidia skalering var tilgjengelig via kontrollpanelet, men viste seg å være ustabilt. Konsollkommandoer ble istedenfor brukt.

 

Skaleringsvalgene i Catalyst Control Center eller ATi Tray Tools kunne ikke brukes. Valgene var synlige, men kunne ikke aktiveres. Etter nyere Catalyst drivere ble valgene igjen tilgjengelige, men hadde ingen effekt. Ifølge tooltip-hjelpen var skaleringen trolig ikke tilgjengelig på skjermutgang #2. Skjermkortet har VGA på utgang #1 og DVI på utgang #2, slik at dette ikke fungerte. For å forsøke å framprovosere GPU/hardware skalering på ATi 9600PRO kortet ble det derfor benyttet en Linux Ubuntu v6.06 boot CD. GPU skalering var her i full effekt, hvor 1024x768 ble vist som 1600x1200 i LCD skjermmeny.

 

For å sammenlikne skaleringskvaliteten ble det brukt identiske BMP og PNG bilder i 1600x1200 oppløsning hvor motivet var sentrert i midten. Bildene ble i Windows og Ubuntu satt som et sentrert (ikke skalert) skrivebordsbilde for å unngå kantutjevning. Alle testbilder ble tatt med et Canon Ixus 40 med makro påskrudd, blits av, og med 10 sekunders nedtelling for å sikre stabile bilder i 2272x1704. Bildene for hver serie ble samlet sammen og justert med flytting slik at de lå likt. ”Unsharp mask” filter ble forsiktig brukt for å forsterke forskjellene på noen av bildene, og lysstyrke ble justert opp for å se pikselmatrisen. Noen av bildene ble også skalert ned til 1024x768. Til slutt ble en bit av bildet valgt ut (crop).

 

Samme LCD skjerm og DVI kabel ble brukt i alle tilfeller. Skjermen var en LaCie photon20visionII 20” SIPS med standard lysinnstilling/Light view på DAY TEXT.

 

scalingphoto_checkerboard.jpg

scalingphoto_toolbar.jpg

scalingphoto_conquer.jpg

scalingphoto_crosshair.jpg

scalingphoto_dott.jpg

scalingphoto_nokastoska.jpg

scalingphoto_circle.jpg

 

 

Konklusjon

ATi på sin side hadde en noe finere skalering enn nVidia, og unngikk blant annet å jevne ut linjer på begge sider i like stor grad som nVidia. Det var tydelig at skjermkortet gjorde en annerledes skalering for å unngå at tekst ble unødvendig slørete.

 

nVidia sin skalering virket mykere, og skapte et glatt bilde uten trappetrinn men med noe ufokusert tekst. Dersom en benytter DVC ”setsharpen” i nVidia sitt tilfelle blir bildet med prøving og feiling veldig nært LCD skjermen sitt resultat. Her bør man prøve seg fram for å forsøke å finne det man selv foretrekker.

 

Dersom man har problemer med å sentrere bildet midt på skjermen eller ønsker å unngå skalering, bør man undersøke 1:1 / sentrert GPU skalering. Skjermkortet sender et fullt signal hvor selve bildet er ubehandlet og ferdigsentrert midt på skjermen slik at man likevel får et krystallklart bilde. Man får et bilde med sorte kanter/topper, men det faktiske bildet er ubehandlet.

 

Widescreen eiere kan benytte aspektskalering, som vil forsøke å fylle skjermen så mye som mulig uten å strekke bildet unødvendig. Sorte kanter eller topp/bunn er normalt.

 

I undertegnede sitt tilfelle og øyesyn produserte alltid LCD skjermens skalering det beste bildet. Dette vil garantert variere. Det er verdt å nevne at man bør eksperimentere med antialiasing og anisotropic filtering i spill ettersom effektene av skalering under bevegelse oppleves noe tydeligere.

 

Til slutt en liten kommentar angående hvilken oppløsning man bør bruke dersom en ikke kjører skjermens standardoppløsning. I alle tilfeller var skaleringen ujevn dersom oppløsninger utenfor skjermens oppløsningsforhold ble brukt, f.eks. 1280x1024 på en 1600x1200 skjerm. I dette tilfellet ga 1280x960 et langt finere bilde, spesielt på tekst. Ettersom skalering på LCD og GPU benyttet filtrering uavhengig av oppløsning, ga høyere oppløsning alltid et skarpere bilde enn f.eks. en perfekt tilpasset oppløsning som 800x600 hvor man strengt talt kunne brukt pikseldobling. 1024x768 ga et skarpere bilde enn 800x600.

 

 

Linker

Dell skalerer

http://www.nvnews.net/vbulletin/showthread...?t=67791&page=6

http://episteme.arstechnica.com/groupee/fo.../r/860009348731

http://www.nvnews.net/vbulletin/showthread.php?t=63138

http://support.euro.dell.com/support/edocs...#Specifications

 

nVidia DVC3

http://www.nvidia.com/object/feature_dvc.html

 

nVidia nvcpl.dll API

http://download.nvidia.com/developer/SDK/I...olPanel_API.pdf

 

Coolbits for nVidia Forceware

http://downloads.guru3d.com/download.php?det=815

 

Software skalering

http://www.americaswonderlands.com/digital...terpolation.htm

 

Subpiksel skalering og tekst

http://www.ics.ele.tue.nl/~dehaan/pdf/90_jsid2003.pdf

http://www.grc.com/cttech.htm

  • Liker 1
Lenke til kommentar
Videoannonse
Annonse

Kjempebra! Dette var interessant!

 

Jeg kan forresten nevne at det kan være forskjell i GPU-skalering mellom forskjellige driverversjoner. Catalyst 6.7 skalerer 1280x800 til 1920x1200 på min Dell 2407WFP, mens Catalyst 6.8 og 6.9 skalerer til 1680x1050... dermed skalerer både GPU og LCD-skjerm, og det blir ikke like skarpt som når kun GPU skalerer!

Lenke til kommentar
  • 2 uker senere...
  • 4 uker senere...
  • 1 år senere...
  • 3 måneder senere...
  • 6 måneder senere...

Kan også noteres at kjører man LCD skalering på nVidia kort med en Asus MK241 vil man få en rar USB latency effekt når man kjører quake 3 og quake live (kan også gjelde andre fps spill). Er kanskje ikke så lett å oppdage, men er du en middels spiller vil du nok merke at det føles litt rart, vet ikke hvor mange ms det er snakk om men påvirkning har det definitivt.

Det kan lett fikses ved å sette til nVidia skalering med 'fixed-aspect ratio' (5 – aspect-scaled), eller til å ikke skalere.

 

Vet ikke om dette er kun for denne skjermen eller om det gjelder alle lcd skjermer som har innebygget skalering.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...