Aleš Borek ALTAR interactive

Slides:



Advertisements
Podobné prezentace
Počítačová grafika.
Advertisements

Počítačová grafika Nám umožňuje:
Základy rovnoběžného promítání
Úvod do Teorie her. Vztah mezi reálným světem a teorií her není úplně ideální. Není úplně jasné, jak přesně postavit herněteoretický model a jak potom.
Počítačová grafika.
Stručný přehled OpenGL Jiří Danihelka. Co je OpenGL?  Open Graphics Library  Knihovna pro počítačovou grafiku  Zhruba 120 funkcí  Představuje standard.
Výukový modul projektu: Nové formy výuky ve školách kraje Vysočina Projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky.
Základy focení – Zlatý řez a formáty souborů ve fotografii
RASTROVÁ A VEKTOROVÁ GRAFIKA
Grafický editor GIMP (11) Ještě jednou si pohrajeme s filtrem mapování na objekt. Dostupné z Metodického portálu ISSN: , financovaného.
Základní škola a mateřská škola Bzenec Číslo projektu: CZ.1.07/1.4.00/ Číslo a název šablony klíčové aktivity: III/2: využívání ICT – inovace Vypracoval/a:
směr kinematických veličin - rychlosti a zrychlení,
Křivočarý pohyb bodu. křivočarý pohyb bodu,
Počítačová 3D grafika Daniel Beznoskov, 1IT A.
Miloslav Mazanec © 2013 Počítačová grafika.
Algoritmy a programovací techniky
Počítačová grafika III Světlo, Radiometrie – Cvičení Jaroslav Křivánek, MFF UK
Počítačová grafika III – Cvičení 3 Jaroslav Křivánek, MFF UK
Digitální projektory. LCD (Liquid Crystal Display) DLP (Digital Light Processing)
Počítačová grafika 18. Marcel Svrčina.
Bitmapová a Vektorová grafika
Základní pojmy Grafiky
Počítačová grafika.
Neuronové sítě na grafických akcelerátorech Ondřej Zicha, Jiří Formánek.
POZNÁMKY PRO VÝUKU Předmět:GRAFIKA A DIGITÁLNÍ FOTOGRAFIE Téma:ÚVOD DO BITMAPOVÉ A VEKTOROVÉ GRAFIKY Školení v rámci SIPVZ:UČITELÉ Mezipředmětové vztahy:
Úprava digitálních fotografií Terezie Svobodová. => cesta mezi fotoaparátem a tiskem…
3D CG. Základy geometrie Vertex A (x,z,y,(w)) Faceta(triangle) F(A,B,C) (polygon) F(A,B,C,D), konvexní, nekonvexní Objekt Většinou (0,1) rozměr.
Gymnázium, Broumov, Hradební 218 Tematická oblast: Informační a komunikační technologie Číslo materiálu: E Název: Počítačová grafika - teorie Autor:
Vzdálenost bodu od přímky
Úvod do 3D geometrie První přednáška mi vyšla na 90 minut po slajd 31 (3D representace modelů). Ten zbytek jsem pak prolítnul tak za pět minut, ale myslím.
Geoinformační technologie Geografické informační systémy (GIS) Výukový materiál pro gymnázia a ostatní střední školy © Gymnázium, Praha 6, Nad Alejí 1952.
Jedno-indexový model a určení podílů cenných papírů v portfoliu
Soustavy souřadnic – přehled
GRAFIKA úvod.
Interactive Relighting of Dynamic Refractive Objects Tomáš Šváb & Adam Dominec.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Barevná hloubka: Ukázky obrázků ještě jednou:
Základní škola národního umělce Petra Bezruče, Frýdek-Místek, tř. T. G. Masaryka 454 Projekt SIPVZ 2005.
Vyhledávání v multimediálních databázích Tomáš Skopal KSI MFF UK 4. Mapování a redukce dimenze 1. část – úvod + mapování vektorových sad.
Pokročilé – prostředí 2 VY_32_INOVACE_Mul4a0219Mgr. Jiří Mlnařík.
W i ref (t+1) = W i ref (t) + h ci (t) [X(t) - W i ref (t)], i Nc h ci (t) 0, t  proces konverguje Algoritmy a struktury neuropočítačů ASN – P3 SOM algoritmus.
POČÍTAČOVÉ HRY CVIČENÍ 9. Shadery Z „Shading“ = „stínování“ Logika vykreslování Vertex data >> obraz Implementováno na GPU PHA cvičení 9 2.
Počítačová grafika (základy práce v (vektorovém) kreslicím programu)
Skutečná velikost úsečky
Anti – Aliasing Ondřej Burkert atrey.karlin.mff.cuni.cz/~ondra/stranka.
Sylabus V rámci PNV budeme řešit konkrétní úlohy a to z následujících oblastí: Nelineární úlohy Řešení nelineárních rovnic Numerická integrace Lineární.
Stereometrie Odchylky přímek VY_32_INOVACE_M3r0114 Mgr. Jakub Němec.
MASKS © 2004 Invitation to 3D vision. MASKS © 2004 Část 1 Přehled a úvod.
Rastrová grafika E4.
Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Registrační číslo projektu: CZ.1.07/1.1.32/ Rastrová.
Vytvoření dokumentu bylo financováno ze zdrojů Evropského sociálního fondu a státního rozpočtu ČR. Registrační číslo projektu: CZ.1.07/1.1.32/ Počítačová.
Rastrová grafika (bitmapová) Obrázek poskládaný z pixelů Televize, monitory, fotoaparáty Kvalitu ovlivňuje barevná hloubka a rozlišení Barevná hloubka.
Počítačová 3D grafika Daniel Beznoskov. Úvod Počítačová 3D grafika je označení práci s trojrozměrnými objekty. Převod 3D objektů do 2D zobrazení se nazývá.
Počítačová grafika.
Způsoby uložení grafické informace
Geografické informační systémy pojetí, definice, součásti
REPREZENTACE 3D SCÉNY JANA ŠTANCLOVÁ Obrázky (popř. slajdy) převzaty od RNDr. Josef Pelikán, CSc., KSVI MFF UK.
ČVUT FEL Katedra počítačů Matematické a fyzikální výpočty na grafických kartách (DirectX 9 + DirectX 10) Bc. Jindřich Gottwald vedoucí: Ing. Ivan Šimeček,
Vektorová grafika (11). Projekt: CZ.1.07/1.5.00/ OAJL - inovace výuky Příjemce: Obchodní akademie, odborná škola a praktická škola pro tělesně.
Grafické systémy II. Ing. Tomáš Neumann Interní doktorand kat. 340 Vizualizace, tvorba animací.
Střední škola a Vyšší odborná škola cestovního ruchu, Senovážné náměstí 12, České Budějovice Č ÍSLO PROJEKTU CZ.1.07/1.5.00/ Č ÍSLO MATERIÁLU.
Rastrová grafika Základní termíny – Formáty rastrové grafiky.
Financováno z ESF a státního rozpočtu ČR.
Grafika – opakování Číslo projektu CZ.1.07/1.5.00/
Rastrová grafika Základní termíny – prezentace barev, barevné modely.
C-síť (circle – net) Petr Kolman.
Návrhový vzor Flyweight
Mgr. Petra Toboříková, Ph.D. VOŠZ a SZŠ Hradec Králové, Komenského 234
LCD monitor Nikola Kodetová\1.L.
Počítačová grafika.
Transkript prezentace:

Aleš Borek ALTAR interactive Lightmapy Aleš Borek ALTAR interactive

Obsah Úvod Mapování texturových souřadnic Rozložení do textury Softwarové osvětlení Hardwarové po jednotlivých polygonech Hardwarové přes shadowmapy Techniky na zlepšení kvality

Co to je? Stará technika na zlepšení vizuálního dojmu Druhá textura – barva světla, jak svítí na daný bod Rychlé, dobrý poměr cena/výkon Nemá smysl kreslit přímo do hlavní textury Není nutno použít fixní pipeline Bodové osvětlení / radiosita

S lightmapou a bez ní

Vytváření Dvě nezávislé fáze Namapování texturových koordinát a umístění v textuře Vlastní olightmapování (přiřazení barvy jednotlivým texelům)

Namapování souřadnic – od grafiků Teoreticky možno použít namapování od grafiků pro první texturu Možné problémy se spojováním a scalingem Může se ale lépe využít textura a může to vypadat lépe Propagace chyb od grafiků

Namapování souřadnic Rozdělení geometrie do šesti skupin podle rovin x, -x, y, -y, z, -z Mapování pak není úplně přesné (koule) Problém u terénu Lightmapa se na tyto trojúhelníky bude nanášet, jako bychom se na ně dívali z příslušné roviny

Přiřazení souřadnic Spojení sousedních trojúhelníků z jedné skupiny do grupy Vyhledávání po hranách Grupa zabere vždy obdélníkový prostor Snadno spočítáme výšku a šířku v textuře, ale je problém tam tu grupu zařadit

Zařazení grupy do textury NP-úplný problém: jak ideálně zaplnit texturu? My používáme stromovou strukturu Poté někdy off-line algoritmus na obecnou optimalizaci textur Další problémy Prázdný prostředek Šikmé trojúhelníky

Vlastní ligtmapování Softwarově přes kolizní strukturu Po trojúhelnících pomocí karty (nejsou nutné shadery) Použitelné pro radiositu Pomocí shadowmap přes shadery

Softwarové lightmapování V UFO: Aftermath Pro každý texel vedu přímku ke zdroji světla – když narazí – jsem ve stínu; jinak ve světle Světlo: barva * normála.DotProduct(lv) Kolize přes BSP-stromy Zrychlení: po trojúhelnících; průnik čtyřstěnu s geometrií; poté s jednotlivými trojúhelníky

Softwarové lightmapování Výhody Velké rozlišení možné při výpočtu (ne omezení 2048x2048) Lepší kontrola Nevýhody rychlost

Aplikace lightmapy Barva textury * barva lightmapy * 2 Tímto jsme schopni dosáhnout určitého přesvícení Možné samozřejmě i jiné aplikace (např. přičítání) I bez shaderů

Lightmapování pomocí karty Pokud se na trojúhelník, který osvětlujeme, díváme z pohledu světla a okolní geometrii vykreslíme černě, dostaneme přesně to, co chceme Pokud do vertexů dáme správné barvy (a příslušně vykreslujeme), není nutné používat shadery Textury pro každé světlo spojíme buď screen metodou (a+b*(1-a)) nebo přičtením

Trojúhelníky – bodové světlo Pro bodové světlo: nastavení pohledového jehlanu Obrácená normála trojúhelníku je směr pohledu – aby měl hloubku konstantní, jinak by to nevyšlo přesně: glLookAt(pozice, pozice-normála, up_vektor); glFrustum(minx*tz, maxx*tz, minz*tz, maxy*tz, nearz, maxz+1.0f); kde tz = nearz/maxz a min*, max* jsou minima a maxima 3d-souřadnic po pronásobení kamerou a nearz = 1.0f

Trojúhelníky – bodové světlo Obr.: světlo osvětlovaný trojúhelník textura

Trojúhelníky – paralelní světlo Pro paralelní světlo: nastavení pohledového jehlanu Směr opět obrácená normála – ne směr světla, projekční matici ale nutno odvodit (sx = minx – bod.x, sy = miny – bod.y) projection_matrix.a00 = 2/(maxx-minx); projection_matrix.a01 = 0; projection_matrix.a02 = 2*(minx-sx)/(maxz*(maxx-minx)); projection_matrix.a03 = -2*sx/(maxx-minx)-1; projection_matrix.a10 = 0; projection_matrix.a11 = 2/(maxy-miny); projection_matrix.a12 = 2*(miny-sy)/(maxz*(maxy-miny)); projection_matrix.a13 = -2*sy/(maxy-miny)-1; projection_matrix.a20 = 0; projection_matrix.a21 = 0; projection_matrix.a22 = -2/maxz; projection_matrix.a23 = -1;

Kreslení trojúhelníků - výhody Při lightmapování se využije rychlá grafická karta Možno použít i barevná skla (nekreslila by se černě, ale v příslušné barvě, nutno mít setříděnou geometrii) Použitelné i pro radiositu Není nutné použít shadery

Kreslení trojúhelníků - nevýhody Nutno pracovat po trojúhelnících a ne po celých skupinách (jen když mají stejnou normálu) Při velkých grupách opět omezení velikostí pamětí na kartě Rychlost není ještě ideální

Shadowmapy – paralelní světlo Používá technologii shadowmap (pro dynamické zobrazení stínů) při počítání lightmap Scéna se vykreslí v ortogonálním zobrazení ve směru světla do shadowmapy – zapisuje se jenom z-buffer (v přesnosti 24 nebo 32 bitů) Při kreslení texelu se spočítá jeho z-hodnota v původním ortogonálním zobrazení a porovná se s tou spočítanou – pokud je větší, je bod ve stínu

Shadowmapy – paralelní světlo

Shadowmapy – lightmapování Pro každou grupu se nastaví modelview matice podle roviny, do které byla grupa promítnuta, projekční matice zůstává identita Musíme nastavit jen správně shadery, aby se při renderování grupy brala do úvahy shadowmapa pro dané světlo

Shadowmapy – bodové světlo Nestačí jedna shadowmapa, protože bodové světlo obsáhne celý prostor Možnosti Sférické – jen jedna shadowmapa, velice nepřesné Cube-mapa – šest shadowmap Dual-parabolické – dvě shadowmapy; používáme

Shadowmapy – dual-parabolické Používají se dva paraboloidy (f(x,y) = ½ - ½(x2 + y2)), které zachytí celou scénu

Shadowmapy – dual-parabolické

Dual-parabolické - implementace uniform vec3 lightPos; uniform float sign; uniform float maxDepth; void main(void) { vec4 transfP = gl_ModelViewMatrix * gl_Vertex; vec3 P = lightPos - transfP.xyz; P.z *= sign; if (P.z <= -0.5) P.z = -maxDepth-1.0; P = normalize(P); P.z += 1.0; vec4 OutPos; OutPos.x = P.x / P.z; OutPos.y = P.y / P.z; OutPos.z = (length(P.xyz) - gl_DepthRange.near) / gl_DepthRange.diff + 20.0; OutPos.z = (OutPos.z / maxDepth) * 2.0 - 1.0; OutPos.w = 1.0; gl_Position = OutPos; }

Dual-parabolické - problémy Tam, kde nastává řez (v našem případě rovina z), na sebe nemusí navazovat trojúhelníky: nutno zde rozříznout geometrii Geometrie musí být hodně teselovaná: v našem případě není problém Není to moc přesné

Dual-parabolické - problémy

Filtrování textur Díky filtrování textur (aby byly rozmazanější) je nutné zabarvit černé pixely u okraje textury grupy Pokud nebylo do bodu textury zapsáno (zjištěno pomocí alphy), uděláme průměr z okolních bodů a bod vyplníme Možno dělat jako filtrování shaderem, v našem případě ještě přidáme ambientní složku

Filtrování textur - obrázek

Paralelní světlo - implementace Vertex shader varying vec3 normal; uniform mat4 shadowCam; void main(void) { gl_Position = ftransform(); normal = gl_Normal; gl_TexCoord[0] = gl_ModelViewMatrix * gl_Vertex * shadowCam; } Fragment shader uniform vec4 lightColor; uniform vec3 lightDir; varying vec3 normal; uniform sampler2DShadow shadowMapTex; vec3 L = -normalize(lightDir); vec3 N = normalize(normal); float shadowTerm = shadow2DProj(shadowMapTex, gl_TexCoord[0]).r; gl_FragColor.rgb = lightColor.rgb * max(dot(N, L), 0.0) * shadowTerm; gl_FragColor.a = 1.0;

Paralelní světlo - implementace shadowCam bias matice (převádí z [-1, 1] na [0, 1]) * projekční matice kamery světla renderovaného do shadowmapy * pohledová matice kamery světla renderovaného do shadowmapy * inverzní pohledová matice současné kamery

Bodové světlo - implementace uniform sampler2DShadow shadowMapTex2; uniform sampler2DShadow shadowMapTex; uniform float endRad; uniform float fullRad; uniform vec4 lightColor; varying vec3 normal; varying vec3 Pos; void main(void) { float k; float lvLen = length(Pos); vec3 L = normalize(Pos); vec3 N = normalize(normal); float attenuation = 1.0 - min((max(lvLen - fullRad, 0.0))/(endRad - fullRad), 1.0); float Alpha = ((Pos.z / endRad) >= 0.0)? 1.0: -1.0; float ZValue = (lvLen - gl_DepthRange.near) / gl_DepthRange.diff; vec3 tPos = L;

Bodové světlo - implementace tPos += vec3(0.0, 0.0, Alpha); tPos.x /= (tPos.z * -Alpha); tPos.y /= (tPos.z * -Alpha); tPos.xy = vec2(0.5, 0.5) + 0.5 * tPos.xy; tPos.z = ZValue/endRad; if (Alpha >= 0.0) { k = shadow2D(shadowMapTex2, tPos).r; } else { k = shadow2D(shadowMapTex, tPos).r; gl_FragColor.rgb = lightColor.rgb * attenuation * max(-dot(N, L), 0.0) * k; gl_FragColor.a = 1.0;

Shadowmapy - výhody a nevýhody Relativní rychlost – pro jedno světlo „konstantní“ čas – dokonce ani tolik nezáleží na tom, jestli světlo vrhá stín nebo ne Omezení velikostí texturové paměti (hlavně u shadowmapy) – menší kvalita Nemožnost barevných skel Rozdíly u ATI a n-Vidie

Supersampling Použitelné jen u softwarových lightmap díky paměťovým omezením Jeden texel v lightmapě odpovídá 4, 9, 16, … texelům při výpočtu – je jejich průměrem

Multisampling Pro každé světlo se lightmapa vypočítá vícekrát – světlo je trochu vždy trošku posunuté Lépe řeší světlo těsně u stěny Opět zvýší kvalitu bez nutnosti mít velkou texturovací paměť Ještě jsme neimplemetovali

Perlin-noise Lightmapa se dá využít i pro šum – zbytečné plýtvat další texturou Pomáhá rozbít repetitivnost u velkých ploch, kde se opakuje textura, protože lightmapa se neopakuje

Aplikace lightmap Texel v lightmapě nemusí kódovat pouze barvu Jednou z možností je do barevné složky (R, G, B) zakódovat intenzitu světla – a při aplikaci pixel-shaderem vynásobit se skutečnou barvou světla: možno udělat například rozžínající se a plápolající oheň

Aplikace lightmap - příklad

On-line přepočítávání lightmap Nutno mít přesně označeno, které grupy a která světla se musí přepočítat – většinou se to předpočítává Použitelné i u softwarových lightmap – UFO: Aftermath Pro UFO: Aftershock ještě nevíme

Reference GameDeveloper – August 2004 pg.22-28; Brian Ramage: Fast Radiosity using Pixel Shaders Brabec, Annen, Seidel: Shadow Mapping for Hemispherical and Omnidirectional Light Sources