Operationer på buffert och pixlar I rastergrafikens barndom......gjorde man grafik genom att skriva i ett videominne. Videominne Lapped textures Emil Praun et al., SIGGRAPH 2000. Gustav Taxén CID gustavt@nada.kth.se 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
Overlay-buffert ON OFF Overlay Texturer Texturer, grundidé v t Textur v s Klistra en bild (texturen) ovanpå geometrin. u t u s Environment maps, grundidé Färg för alla riktningar Dimma 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) Kamera N R Hämta färg från rikningstexturen DEMO DEMO 3
Bump maps, grundidé Hur representeras text? v s N N u s v t Modifiera normalen enligt en texturkarta och använd den modifierade normalen då ljussättningen görs. Förskjutningen beräknas från en bild genom att man tar differenser mellan närliggande bildelement. 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. u t DEMO Antialiasing Lite samplingsteori 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. Färlägg enligt hur stor yta av pixeln som föremålet täcker. 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. Punktsampling Areasampling y a y f 0 f 1 f 2 y = f(x), a x b f 3 f 4 f 5 b x 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 5 b x x f 3 f 4 4
Nyquists sats Frekvens hos periodiska funktioner Vi behöver sampla med åtminstoneminst 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)? Frekvensen hos sin(x) är 1/2π. Frekvensen hos sin(2x) är 1/π. 2π π Fourieranalys Man kan visa att alla periodiska kontinuerliga funktioner med period T kan representeras som Fourieranalys 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. 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. Nyquists sats säger att om en funktion varierar snabbt, krävs det fler samplingar för att vi ska kunna rekonstruera den från samplingarna. Aliasing Trappstegseffekten 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. En diskontinuerlig funktion f(x) kräver oändligt många sin- och cos-komponenter - den kan inte rekonstrueras korrekt. 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. 5
Bilder Sekvens med tal: 1 eller 0, heltal eller flyttal. Vill vi ha färg behövs 3 tal per bildpunkt (R, G, B). 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. Hur lagras bilder normalt på disk? RGB Bild Kompression Om samma färg förekommer i ett antal konsekutiva pixlar kan vi spara utrymme: Speciellt värde, -N, som talar om att det kommer N pixel med samma färg. 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. Lossy compression 6