Näytönohjain

Näytönohjain on tietokoneen komponentti, joka piirtää grafiikan tietokoneen näytölle. 
Erilliset näytönohjaimet nykyään koostuvat tyypillisesti grafiikkasuorittimesta, näyttömuistista, väylälogiikasta sekä ulostuloliitännästä näyttölaitetta varten. Emolevylle yhdistetyt integroidut näytönohjaimet voivat käyttää tietokoneen keskusmuistia oman erillisen muistinsa sijaan.
Joissakin näytönohjaimissa on lisäominaisuuksia, mm. kiihdytetty 2D- ja 3D-grafiikan renderöinti, videokaappaus, TV-viritinadapteri, MPEG-2
/MPEG-4-purku, FireWire, valokynäliitäntä, TV-ulostulo ja mahdollisuus yhdistää useita näyttöjä. Näytönohjaimia käytetään graafisesti vaativiin tarkoituksiin kuten videopelien pelaamiseen ja yleisesti visualisointitarkoituksiin. Näytönohjaimen grafiikkasuoritinta voidaan käyttää GPGPU-laskentaan.
Näytönohjain voi olla emolevyyn rakennettu eli yhdysrakenteinen tai erillinen laajennuskortti. Matalan ja keskitason hintaluokkaan sijoittuvissa emolevyissä on usein pohjoissillan kehittäjän grafiikkapiiri emolevyyn rakennettuna (esim. nForce-emolevypiirisarja NVIDIA-näytönohjaimella tai Intel-emolevypiirisarja Intelin näytönohjaimella). Noin vuoden 2010 jälkeen grafiikkapiiri on eräissä suoritinmalleissa integroitu emolevyn sijaan itse suorittimeen (esim. Intel HD Graphics, AMD APU-mallisto).
Tällaisessa grafiikkapiirisarjassa on yleensä pieni määrä sisäistä muistia minkä lisäksi se ottaa osan tietokoneen keskusmuistista käyttöönsä. Integroitu näytönohjain on ei-toivottu vaihtoehto vaativia 3D-sovelluksia ajaville käyttäjille, sillä integroitujen grafiikkapiirien suorituskyky on alhainen. Lähes kaikissa emolevyissä integroitu grafiikkapiiri voidaan kytkeä pois päältä BIOS-asetuksista ja käyttää AGP- tai PCI Express-väylään liitettävää laajennuskorttimuotoista näytönohjainta paremman suorituskyvyn saavuttamiseksi.

Komponentit

Nykynäytönohjaimet koostuvat piirilevystä johon komponentit kiinnitetään.

Video BIOS

Video BIOS tai firmware sisältää perusohjelman, joka hallitsee näytönohjaimen toimintoja ja antaa ohjeet joiden avulla tietokone ja ohjelmisto kommunikoivat näytönohjaimen kanssa. Se voi sisältää tietoja muistin ajastuksesta, käyttönopeuksista, grafiikkasuorittimen ja välimuistin jännitteestä ynnä muusta. BIOS-asetuksia on joskus mahdollista muuttaa, mutta näin tekevät yleensä vain ylikellottajat. BIOSin muuttaminen on riskialtista, sillä se voi aiheuttaa näytönohjaimelle peruuttamatonta vahinkoa.

RAMDAC

RAMDAC (Random Access Memory Digital-to-Analog Converter) muuntaa digitaaliset signaalit analogiliitäntäisten näyttöjen (kuten kuvaputkinäyttöjen) ymmärtämään muotoon analogisiksi signaaleiksi.
RAMDAC sisältää kolme D/A-muunninta, yhden kullekin RGB-järjestelmän päävärille ja niiden lisäksi kellopiirejä, joilla kuvan piirto ajoitetaan kuvaputkinäytön virkistystaajuuksiin. D/A-muunninten bittimäärä määrää kuinka monta väriä näytönohjain voi näyttää, kun taas niiden nopeus määrää millä resoluutiolla eli kuvatarkkuudella ja virkistystaajuudella kuvaa voi näyttää. D/A-muunninten nopeus on nykyisin 400–500 MHz.
Digitaalisten näyttöjen suosio ja RAMDACin integrointi grafiikkasuorittimen ytimeen on johtanut erillisen RAMDAC-sirun katoamiseen sen tarpeettomuuden vuoksi.

Virrankulutus

Näytönohjainten kehittyessä tehokkaammiksi myös niiden energiantarve on kasvanut. Vaikka prosessori- ja virtalähdevalmistajat ovat kehittäneet hyötysuhteiltaan parempia tuotteita, näytönohjaimet kuluttavat yhä enemmän sähköä. Tämän vuoksi näytönohjain voi käyttää enemmän virtaa kuin mikään muu tietokoneen yksittäinen komponentti. Virrankulutuksen pullonkaula on PCI Express-väylä, josta saa enimmillään 75 wattia tehoa. Yli 75 wattia kuluttavan näytönohjaimen tehonsaanti varmistetaan käyttämällä 6 (75W)- tai 8 (150W) -pinnisiä lisävirtaliittimiä näytönohjainmallikohtaisen tarpeen mukaan.

Näytönohjaimen suorituskyky

Näytönohjaimen suorituskykyyn vaikuttavat useat eri seikat. Suurimmassa määrin näytönohjaimen suorituskykyyn vaikuttavat verteksi- ja pikselivarjostinyksiköiden lukumäärä grafiikkasuorittimen kellotaajuus sekä näytönohjaimen muistin suorituskyky. 
Grafiikkasuorittimen ominaisuudet ratkaisevat kuinka näyttävää grafiikkaa näytönohjain kykenee prosessoimaan jotta se näyttää liikkuvan sujuvasti. Suuresta rinnakkain tapahtuvasta laskennan määrästä johtuen grafiikkasuorittimien transistorimäärä on suurempi kuin keskusprosessoreissa. Keskussuoritin kykenee suorittamaan tyypillisesti 1–8-säikeisiä ohjelmia yhtäaikaisesti siinä missä grafiikkasuorittimen sisällä voi olla kymmenittäin rinnakkain toimivia säkeitä. Näytönohjain huolehtii itse piirrettävän grafiikan jakamisesta eri varjostinyksiköihin Kiihdytinpiirin nopeus koostuu pitkälti varjostinyksiköitten lukumäärästä, piirin kellotaajuudesta sekä muistiväylän leveydestä ja nopeudesta. Keskussuoritin antaa yleensä runsaasti isoja piirrettäviä alueita näytönohjaimelle. Grafiikkasuoritin kykenee jakamaan piirrettävän alueen pienempiin osa-alueisiin ja kykenee piirtämään sitä samanaikaisesti monesta eri suunnasta. Työstöön grafiikkasuoritin käyttää eri yksiköitä, jotka hoitavat piirtämisen omalla tavallaan. Perinteisessä tavassa yksiköitä on useita samalla näytönohjaimella, mutta uudemmissa näytönohjaimissa pohjataan Unified Shader yksikköön, jossa näytönohjaimen pikselinvarjostin ja verteksivarjostinyksiköt on yhdistetty yhdeksi isommaksi piiriksi. Verteksi- ja pikselinvarjostinyksiköiden tehtävänä on pääasiallisesti värittää oikeilla väreillä niille annetut monikulmiot. Varjostinyksiköt myös valaisevat kolmiot varjostinohjelmien määrittelemällä tavalla. Näytönohjaimessa on myös teksturointiyksikkö, joka värittää pikselit.
Varjostinyksiköitten toiminnan kannalta oleellinen osa on näytönohjaimen muistin suorituskyky. Nopeammalla muistilla varjostinyksiköitten ei tarvitse odotella niin kauaa grafiikkadatan siirtymistä muistista varjostinyksiköihin tai toisinpäin. 
Varjostinsuorittimet on suunniteltu erityisesti 3D-grafiikassa käytettävien matriisilaskujen ja laskutoimituksissa käytettävän ohjelmakoodien suorittamiseen. Ohjelmoitavien varjostinyksiköiden tulemisen myötä näytönohjain sai muitakin tehtäviä kuin monikulmioiden värittäminen annetuilla väreillä. Varjostinohjelma kykenee mallintamaan esimerkiksi veden pinnan käyttäytymistä suorittimen ohjeistaessa että paikassa X on vettä. Tämän jälkeen varjostinohjelma kykenee laskemaan itsenäisesti veden pinnan käyttäytymisen ilman että välitulosten kanssa tarvitsee neuvotella suorittimen kanssa. DirectX10 tulemisen myötä varjostinsuorittimet korvasivat aiemmin käytössä olleet pikselivarjostin- ja verteksivarjostinyksiköt. Tämän myötä ohjelmoijan työ helpottui. Ohjelmoitavuus nousi myös uuteen ulottuvuuteen, sillä DirecX10:n myötä mukaan tulivat myös geometriavarjostimet, jotka kykenevät luomaan uusia väritystä vaativia monikulmioita.
Kun varjostinyksiköt ovat värittäneet monikulmiot, kuva päätyy rasterointiyksikölle pikseleiksi muuntamista varten.
Lisäksi näytönohjaimen suorituskykyyn vaikuttaa muistiväylän leveys ja siinä käytettävien muistipiirien kellotaajuus ja sukupolvi. Muistin määrä ratkaisee näytönohjaimen näytettävissä olevien yksityiskohtien määrän. Muistin määrä ja muistin nopeus vaikuttavat näytönohjaimen suorituskykyyn. Muistin suorituskyky riippuu muistiväylän leveydestä ja muistin kellotaajuudesta. Muistiväylän kapeutta voidaan kompensoida käyttämällä korkealla kellotaajuudella toimivia muistipiirejä.
Nykyaikaiset PC-näytönohjaimet toimivat tyypillisesti AGP- tai PCI Express -laiteväylässä, mutta vanhemmissa tietokoneissa on vielä PCI- tai jopa VLB- tai ISA-laiteväylässä toimivia kortteja. Kannettavissa tietokoneissa ja joissakin pöytäkoneissa (myös PC:issä) näytönohjain on integroitu emolevylle. Kotitietokoneissa, pelikonsoleissa ja joissakin vanhemmissa grafiikkatyöasemissa näytönohjauslogiikka on yleensä varsin kiinteästi sidoksissa laitteen muuhun toimintaan, eikä sitä yleensä edes pysty vaihtamaan lisäkortin avulla.
Uusimmat PC-näytönohjaimet toimivat nykyään nopeammassa PCI-Express 16x -väylässä, joka on paranneltu versio vanhasta PCI-väylästä. Pci-e-väylien nopeus voidaan säätää dynaamisesti. PCI-Express 16x on parhaimmillaan monta kertaa nopeampi kuin AGP-väylä ja mahdollistaa NVIDIA:n ja ATI:n usean näytönohjaimen rinnakkain kytkemisen suorituskyvyn lisäämiseksi (NVIDIA:n SLI-ominaisuus ja ATI:lla CrossFire). Vastaava tekniikka oli myös joissakin Sunin ja SGI:n grafiikkatyöasemissa jo 1990-luvun alkupuolella sekä joissakin 3dfx Interactiven pelikäyttöön tarkoitetuissa Voodoo-näytönohjainperheen malleissa 1990-luvun lopulla.
Tietokonenäyttöjen ongelmana on se että kuva muodostuu kulmikkaista pisteistä. Kaarevien ja vinojen pintojen esittäminen näyttää sen vuoksi aina sahalaitaiselta. Ongelmaa kiertämään on kehitetty useita tapoja joiden perusideana on pyrkiä häivyttämään sahalaitaisuutta sopivan värisillä pisteillä sahalaitakuviossa. Tätä toteutusta kutsutaan reunanpehmennykseksi. Reunanpehmennyksessä piirrettävästä kuvasta tehdään suurempiresoluutioinen versio jonka avustuksella kuvapisteelle lasketaan lähimmän oikean värityksen keskiarvo. Reunanpehmennyksessä käytettävä kerroin kertoo  kuinka monta kertaa suurempi pehmennykseen käytettävä kuva on kooltaan. Tämä tekniikka tarvitsee sujuvasti toimiakseen suuren määrän näyttömuistia. Suurempitarkkuuksisen kuvan laskeminen myös vie näytönohjaimelta paljon laskentatehoa.
Toinen yleisesti kuvanlaadun parantamisessa käytetty tekniikka on anisotrooppinen suodatus. Anisotrooppinen suodatus estää kaukaisia objekteja liialliselta sumentumiselta. Reunanpehmennystä voidaan käyttää myös näissä kohteissa mutta laskennallisesti se on liian raskas näytönohjaimille.
Näytönohjaimen suorituskykyyn vaikuttavat piiriarkkitehtuurin lisäksi myös käytetty ajuriversio. 
Näytönohjainajurin tehtävänä on peristeisesti välittää ohjelmiston käskyt näytönohjainpiirille ja suorittaa käännöstehtävä näytönohjaimen ymmärtämään muotoon. Ajureilla kyetään tekemään moninaisia muutoksia suorituskyvyn lisäämiseksi. NVIDIAn ForceWareissa (sittemmin GeForce nimelle vaihtuneet ajurit) ja ATIn Catalysteissa on rutiineja jotka optimoivat ohjelmakoodia paremmin grafiikkapiirille sopivaan muotoon. Aiemmin näytönohjainvalmistajien kesken vallitsi yhteisymmärrys siitä että varjostinohjelmien piirtojärjestystä saa muokata mutta ohjelmien sisältöön ei saa vaikuttaa. Sittemmin tämä raja on hämärtynyt ja ajurit saattavat muuttaa alkuperäistä ohjelmakoodia hyvinkin paljon. Muutoksia luodaan esimerkiksi varjostinohjelmien sisältöön ja z puskurien luontijärjestykseen. Esimerkiksi ATIn Catalyst ajurit sisältävät AI-toiminnon jonka ollessa pois päältä ohjelmistokoodi kulkee kortille kutakuinkin siten kuin ohjelman ohjelmoijat ovat tarkoittaneet. AI-ominaisuuden päälläollessa ajurit vaikuttavat kuvan piirtämiseen jotka asetuksista riippuen tekevät koodiin esiasteisia optimointeja. Ohjelmistokoodi ajetaan eri piirivalmistajien näytönohjelmissa eri tavoin jolloin lopputulokset eivät ole identtisiä keskenään. Koska eri ajurit optimoivat ohjelmakoodia eri tavoin, lopputulokset eivät ole identtisiä keskenään.

Näytönohjainten luokittelu

Näytönohjaimet voidaan jakaa 2D-näytönohjaimiin ja 3D-näytönohjaimiin.

2D-näytönohjaimet

Tämäntyyppiset kalliimmat näytönohjaimet on suunniteltu tyypillisesti ammattikäyttöön, missä kuvan sekä värien terävyydelle asetetut kriteerit ovat hyvin korkeat. Useimmissa vanhoissa näytönohjaimissa ei ollut ollenkaan 3D-ominaisuuksia, joten ne luokitellaan myös tähän kategoriaan.
Tunnettu 2D-näytönohjaimien valmistaja on mm. Matrox.

3D-näytönohjaimet

3D-grafiikan tehokkaaseen piirtoon tarkoitettuja näytönohjaimia on käytetty ammattikäytössä jo 1980-luvulla, mutta nykyisin niiden selvästi laajin käyttökohde on tietokonepelit, joissa on perinteisesti kilpailtu aina vain näyttävämmästä graafisesta annista. Jo pitkään pelien grafiikasta on pyritty tekemään mahdollisimman realistista, ja mitä realistisemmaksi grafiikka halutaan, sitä enemmän laskentaa yksittäisen kuvan piirto vaatii.
3D-näytönohjainten valmistajista tällä hetkellä vain kaksi kilpailee markkinaherruudesta, AMD ja NVIDIA. Myös 3dfx oli tunnettu valmistaja, jonka Voodoo-piirisarjaan perustuva 3D-näytönohjain toi aikoinaan Sony Playstation -tyylisen laitteistotason 3D-peligrafiikan PC-pelaajien ulottuville. Kilpailu kuitenkin osoittautui 3dfx:lle liian kovaksi ja NVIDIA osti sen pian Voodoo 5 -piirin valmistuksen jälkeen. 
3D-näytönohjaimen ero 2D-ohjaimeen on se, että 3D-näytönohjain sisältää erityisesti 3D-mallien tehokkaaseen piirtoon tarkoitettuja ominaisuuksia, alun perin mahdollisuuden piirtää teksturoituja kolmioita, nykyään myös mahdollisuuden laskea näiden kolmioiden paikka ruudulla sekä laskea kolmion pikseleille pikselikohtaisia efektejä näytönohjaimella olevilla pikselivarjostinsuorittimilla.
Näin laskentaa ei tarvitse suorittaa tietokoneen omalla suorittimella. Nykyisin vakio-ominaisuuksiin ovat myös PC-puolella tulleet sellaiset oheistoiminnot kuin ulostulo TV:lle, DVD:n rautapohjainen purku, S/PDIF-liitäntä sekä nk. multi-head-tuki kahdelle tai useammalle monitorille.