Operationer på buffert och pixlar I rastergrafikens barndom......gjorde man grafik genom att skriva i ett videominne. Lapped textures Emil Praun et al., SIGGRAPH 2000. Gustav Taxén CID gustavt@nada.kth.se Videominne Huvudminne en styr bildskärmens elektronkanon och läser samtidigt värden direkt från videominnet (ett speciellt avsatt område i datorns huvudminne) och översätter dem till volt-värden. Idag......finns videominne och grafikkrets på ett speciellt grafikkort. Grafikkort punkt linje triangel... Logikkrets Kan man specificera 3D-primitiver brukar man säga att kortet har 3D-acceleration. Grafikkortet har en logikkrets till vilken man kan skicka grafikprimitiver. Kretsen fyller sedan i videominnet. Varför grafikkort? Enklare - man kan jobba med grafikprimitiver istället för att behöva ordna egna implementationer av t.ex. linjealgoritmer. Snabbare - grafikkortets logikkrets jobbar oberoende av datorns CPU, man får tid över till annat. Mindre minnesåtgång - videominnet (som ofta är på åtskilliga Mb) finns på grafikkortet istället för i datorns huvudminne. Ger möjlighet till portering av program om många korttillverkare använder samma programmeringsbibliotek för att styra korten. Grafikbibliotek Andra egenskaper OpenGL Applikation DirectX...... Drivrutiner för grafikkortet Grafikkort Följer med grafikkortet Primitiver Vertex shader Pixel shader Logikkrets Grafikkort Extra hjälpbuffertar: djup-, stencil-, ackumulations-, överläggs-,... I bästa fall kan man använda samma applikationskod till många olika grafikkort! Logikkrets Aktuellt koordinatsystem Matrismultiplikationskrets 1
5 3 0 4 5 0 0 0 0 3 2 0 7 1 0 4 5 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 1 0 1 0 1 1 0 0 0 0 1 1 0 2
Texturer Klistra en bild (texturen) ovanpå geometrin. Texturer, grundidé Environment maps, grundidé v t Textur v s Färg för alla riktningar u t u s Kamera N R Hämta färg från rikningstexturen Environment maps, demo Dimma, demo Blanda pixelns färg med dimmans färg. Ta med mer av dimmans färg ju längre från kameran pixeln är (m.h.a. djupbufferten) 3
Bump maps, grundidé Bump maps, demo N N u s Modifiera normalen enligt en texturkarta och använd den modifierade normalen då ljussättningen görs. v s v t Förskjutningen beräknas från en bild genom att man tar differenser mellan närliggande bildelement. u t Hur representeras text? Antialiasing Ibland som en samling bitkartor (kartor med 1 eller 0), en för varje teckensnitt och storlek. Vanligt på äldre system, t.ex. X-Windows. I modernare system beskrivs teckensnitt ofta med hjälp av vektorer så att man kan använda en definition för alla storlekar. Färlägg enligt hur stor yta av pixeln som föremålet täcker. Lite samplingsteori Punktsampling Inom datorgrafiken använder vi alltid sampling: Vi har en bildbuffert med ett begränsat antal värden. När vi t.ex. översätter en triangel till pixlar m.h.a. svepkonvertering samplar vi triangeln. När pixlarna ritas ut av elektronstrålen på bildskärmen översätts de till analoga, kontinuerliga, signaler. Frågan är hur många samplade värden som behövs för att rekonstruera den ursprungliga triangeln? Denna fråga studeras inom samplingsteorin. y a y f 0 f 1 f 2 y = f(x), a x b f 3 f 4 f 5 b x x 4
Areasampling y a Vi kan i allmänhet inte rekonstruera en signal helt med punktsamplingar. Man kan ofta få ett bättre resultat om man samplar med area istället: f 0 f 1 f 2 f 3 f 4 f 5 b x Nyquists sats Vi behöver sampla med åtminstone 2 ggr så hög frekvens som den högsta frekvensen som förekommer i f(x). Men vad menas med högsta frekvensen hos f(x)? Frekvens hos periodiska funktioner Fourieranalys Man kan visa att alla periodiska kontinuerliga funktioner med period T kan representeras som Frekvensen hos sin(x) är 1/2π. Frekvensen hos sin(2x) är 1/π. 2π π Fourieranalys Aliasing En icke-periodisk funktion f(x) som är begränsad till ett intervall T kan betraktas som en periodisk funktion med intervall T, så att den kan skrivas som en Fourierserie. För få samplingar ger upphov till aliasing eftersom de höga frekvenserna inte kommer med och ser ut som om de vore låga frekvenser. Man kan tänka sig den högsta frekvensen hos f(x) som den frekvensen i sin- och cosfunktionerna i Fourierserien som är högst. 5
Trappstegseffekten Bilder Sekvens med tal: 1 eller 0, heltal eller flyttal. Vill vi ha färg behövs 3 tal per bildpunkt (R, G, B). En diskontinuerlig funktion f(x) kräver oändligt många sin- och cos-komponenter - den kan inte rekonstrueras korrekt. Hur lagras bilder normalt på disk? Tyvärr är nästan alltid de geometriska primitiver vi använder diskontinuerliga (de har skarpa hörn). Det är detta som ger upphov till trappstegseffekten i datorgrafikbilder. Bilder Om vi bara har 256 olika färger kan vi lagra dessas definitioner i en tabell och sedan använda 1 byte per pixel. Kompression Om samma färg förekommer i ett antal konsekutiva pixlar kan vi spara utrymme: RGB Bild Speciellt värde, -N, som talar om att det kommer N pixel med samma färg. Lossy compression Lossy compression Om vi vill komprimera mer kan vi undersöka bilden och se om vi kan hitta ett område med färger som ligger nära varandra. Alla pixlar området sätts sedan till samma färg. Sedan kan vi komprimera enligt föregående bild. Detta innebär att vi tappar information vid komprimeringen, men ofta kan man anpassa algoritmerna så att det inte märks, speciellt om bildens upplösning är hög. 6