Možnosti moderního grafického HW

35
Erik "Deathgate" Veselý Erik "Deathgate" Veselý Mat Mat úš úš "Backslash" "Backslash" Zamborský Zamborský Možnosti moderního Možnosti moderního grafického HW grafického HW

description

Možnosti moderního grafického HW. Erik "Deathgate" Veselý Mat úš "Backslash" Zamborský. Úvodem. nejen nejnovější technologie, zpětný pohled na vývoj grafiky na PC shrnutí současných technik osvětlení a jeho provedení hraje největší roli při renderingu - PowerPoint PPT Presentation

Transcript of Možnosti moderního grafického HW

Page 1: Možnosti moderního grafického HW

Erik "Deathgate" VeselýErik "Deathgate" VeselýMatMatúšúš "Backslash" Zamborský "Backslash" Zamborský

Možnosti moderního Možnosti moderního grafického HW grafického HW

Page 2: Možnosti moderního grafického HW

ÚvodemÚvodem

nejen nejnovější technologie, zpětný nejen nejnovější technologie, zpětný pohled na vývoj grafiky na PCpohled na vývoj grafiky na PC

shrnutí současných technikshrnutí současných technik

osvětlení a jeho provedení hraje největší osvětlení a jeho provedení hraje největší roli při renderinguroli při renderingu

každé řešení osvětlení s sebou nese každé řešení osvětlení s sebou nese jednotlivé problémyjednotlivé problémy

Page 3: Možnosti moderního grafického HW

SVSVĚTLOĚTLO

Page 4: Možnosti moderního grafického HW

Co to je?Co to je?

jedna se o část elektromagnetického jedna se o část elektromagnetického spektra, jež je viditelná lidským okemspektra, jež je viditelná lidským okemjednotlivé úhly pohledujednotlivé úhly pohledu

snažíme se co nejvíce přiblížit realitěsnažíme se co nejvíce přiblížit realitěv grafice nejde o reálný osvětlovací model, v grafice nejde o reálný osvětlovací model, ale snažíme se o co nejkvalitnější vizuální ale snažíme se o co nejkvalitnější vizuální výsledekvýsledek

Page 5: Možnosti moderního grafického HW

Všechno je aproximaceVšechno je aproximace

základem je Lambertova rovniczákladem je Lambertova rovnicee

intenzita = nintenzita = n dot l dot l

n – normala povrchun – normala povrchu

l – vektor ke svl – vektor ke světluětlu

Page 6: Možnosti moderního grafického HW

rendering svetel se tyka distribuce energie rendering svetel se tyka distribuce energie elektromagnetického záření do jednotlivych typu povrchu elektromagnetického záření do jednotlivych typu povrchu a reakce povrchu na dané záření a reakce povrchu na dané záření materiály část světelné energie přijmou, část ji odrazímateriály část světelné energie přijmou, část ji odrazípřijmutá energie se částečne přemění v teplo a zbytek přijmutá energie se částečne přemění v teplo a zbytek se vyzáří zpětse vyzáří zpět

barva materialu závisí na tom, kterou část spektra pohltí barva materialu závisí na tom, kterou část spektra pohltí a kterou vyzáří zpěta kterou vyzáří zpět

každý povrch přijímá světelnou energii, část ji vyzáří každý povrch přijímá světelnou energii, část ji vyzáří zpět, část jí promění v tepelnou energiizpět, část jí promění v tepelnou energii

Page 7: Možnosti moderního grafického HW

Phongův osvětlovací modelPhongův osvětlovací model

- ambienambientt

- diffusediffuse

- speculaspecularr

intensita = ambient intensita = ambient + diffuse + specular + diffuse + specular

Page 8: Možnosti moderního grafického HW

PhongPhongův osvětlovací modelův osvětlovací model

ambient = ambient = kkonstantaonstanta

diffuse = N dot Ldiffuse = N dot L

specular = (V dot R)specular = (V dot R)^shininess^shininess

farba = ambient + diffuseLight * diffuseMat + specularLight farba = ambient + diffuseLight * diffuseMat + specularLight *specularMat*specularMat

Page 9: Možnosti moderního grafického HW

direct a indirect lighting - indirect bere direct a indirect lighting - indirect bere nejen svetlo od zdroje k povrchu, ale take nejen svetlo od zdroje k povrchu, ale take od povrchu k ostatnim povrchum, na od povrchu k ostatnim povrchum, na zaklade zakona zachovani energiezaklade zakona zachovani energie

Page 10: Možnosti moderního grafického HW

Metody osvětleníMetody osvětlení

statická vs. dynamická světlastatická vs. dynamická světla

statické vs. dynamické objektystatické vs. dynamické objekty

při návrhu renderingu je důležité dobře při návrhu renderingu je důležité dobře promyslet jednotlivá řešení, všechno má promyslet jednotlivá řešení, všechno má svoje pro a protisvoje pro a proti

Page 11: Možnosti moderního grafického HW

Statické osvětleníStatické osvětlení

1.) STATICK1.) STATICKÁ SVETLAÁ SVETLA

statický terénstatický terén

pohyblivé objektypohyblivé objekty

2.2.) DYNAMICK) DYNAMICKÁ SVETLAÁ SVETLA

statický terénstatický terén

pohyblivé objektypohyblivé objekty

Page 12: Možnosti moderního grafického HW

NejstarNejstarší osvětlovací metodyší osvětlovací metody

simple lightmapper už od dob Quakesimple lightmapper už od dob Quake11

textury nanestextury nanesené na statickou scénu ené na statickou scénu obsahují barvu světla, skalární součin a obsahují barvu světla, skalární součin a energii světla, reprezentovanou rovnicí energii světla, reprezentovanou rovnicí útlumuútlumustatické lightmapy pracují pouze se statické lightmapy pracují pouze se statickými objekty, dynamické věci statickými objekty, dynamické věci potřebují svoje vlastní řešenípotřebují svoje vlastní řešení

Page 13: Možnosti moderního grafického HW

Per-Vertex lightingPer-Vertex lighting

OpenGL přišlo vstříci developerům, FFP OpenGL přišlo vstříci developerům, FFP per-vertex lightingper-vertex lighting

intenzita osvětlení počítána na úrovni intenzita osvětlení počítána na úrovni jednotlivých vertexůjednotlivých vertexů

následná interpolacenásledná interpolace

Page 14: Možnosti moderního grafického HW

Per-Vertex LightingPer-Vertex Lighting

Výhody:Výhody:

- relativně rychlérelativně rychlé

- celkem dobrý výsledekcelkem dobrý výsledek

Nevýhody:Nevýhody:

- nepresne, pro realny vzhled potreba - nepresne, pro realny vzhled potreba dostatecne teselovat geometriidostatecne teselovat geometrii

Page 15: Možnosti moderního grafického HW

Per-Pixel lightingPer-Pixel lighting

řeší problémy s nepřenostmi, jež vznikají řeší problémy s nepřenostmi, jež vznikají při per vertex lightingupři per vertex lightingu

intenzita pixelu se počítá pro každý pixel intenzita pixelu se počítá pro každý pixel zvlášťzvlášť

Page 16: Možnosti moderního grafického HW

Per-Pixel lightingPer-Pixel lighting

Výhody:Výhody:- přesné, přesné, - nepotřebuje teselacinepotřebuje teselaci

Nevýhody:Nevýhody:- vysoké nároky na výkonvysoké nároky na výkon- osvětlovací rovnice se počítá pro každý osvětlovací rovnice se počítá pro každý

pixel zvlášťpixel zvlášť

Page 17: Možnosti moderního grafického HW

Další fáze vývojeDalší fáze vývoje

vyrobci grafickych karet se zacinaji preorientovavat, investuje se vyrobci grafickych karet se zacinaji preorientovavat, investuje se hlavne do vyvoje pixel pipeline a hlavne do vyvoje pixel pipeline a do do jeji zparalelni k co nejvetsimu jeji zparalelni k co nejvetsimu vypocetnimu vykonu na urovni pixel computinguvypocetnimu vykonu na urovni pixel computingu

pixely renderuji jednotky paralelne, vykon karty v pripade pixel pixely renderuji jednotky paralelne, vykon karty v pripade pixel bottlenecku velmi zavisi na poctu pixel pipelines, ATI i NV pouzivaji bottlenecku velmi zavisi na poctu pixel pipelines, ATI i NV pouzivaji mirne jine reseni co se týče architektury pixel pipelinesmirne jine reseni co se týče architektury pixel pipelines

- objevuji se nove techniky na zdetailneni a zkvalitneni renderingu - objevuji se nove techniky na zdetailneni a zkvalitneni renderingu jednotlivych povrchujednotlivych povrchu

- metody jako Emboss bump mapping, Dot3 bump mapping, - metody jako Emboss bump mapping, Dot3 bump mapping, Paralax mapping, displacement mappingParalax mapping, displacement mapping

- detaily povrchu jsou pridavany pomoci textur, jez definuji tvar - detaily povrchu jsou pridavany pomoci textur, jez definuji tvar povrchupovrchu

Page 18: Možnosti moderního grafického HW

Emboss bump mappingEmboss bump mapping

první metoda bump mappinguprvní metoda bump mappingu

používá height – mapupoužívá height – mapu

height mapa vyjadřuje nerovnosti povrchuheight mapa vyjadřuje nerovnosti povrchu

definuje vyvýšeniny oproti fyzické definuje vyvýšeniny oproti fyzické geometrii dané trianglygeometrii dané triangly

nepoužívá se, ale dala vzniku dalším nepoužívá se, ale dala vzniku dalším metodámmetodám

Page 19: Možnosti moderního grafického HW

Dot3 Bump mappingDot3 Bump mapping

stará dobrá heightmapa se zderivujestará dobrá heightmapa se zderivuje

získáme změny výšky mezi jednotlivými získáme změny výšky mezi jednotlivými texely textury(povrchu)texely textury(povrchu)

vzniká normal mapa, kde jednotlivé texely vzniká normal mapa, kde jednotlivé texely reprezentují normálu pixelureprezentují normálu pixelu

používá se klasická RGB texturapoužívá se klasická RGB textura

Page 20: Možnosti moderního grafického HW

Dot3 Bump mappingDot3 Bump mapping

jsou dva základní způsoby jak definovat jsou dva základní způsoby jak definovat normal mapunormal mapu

OBJECT SPACE NORMAL MAPAOBJECT SPACE NORMAL MAPA

TANGENT SPACE NORMAL MAPATANGENT SPACE NORMAL MAPA

Page 21: Možnosti moderního grafického HW

Dot3 Bump mappingDot3 Bump mapping

OBJECT SPACE BUMP MAPPINGOBJECT SPACE BUMP MAPPING

vyhody: relativne jednoduche na vyhody: relativne jednoduche na pochopeni, netreba delat dalsi vypocty a pochopeni, netreba delat dalsi vypocty a transformacetransformacenevyhody: kazdy kus geometrie musi mit nevyhody: kazdy kus geometrie musi mit svoji vlastni object space( world space ) svoji vlastni object space( world space ) mapu, nemuze se opakovat, ro kazdy bod mapu, nemuze se opakovat, ro kazdy bod je identicka, zabira vela mistaje identicka, zabira vela mista

Page 22: Možnosti moderního grafického HW

Dot3 Bump mappingDot3 Bump mapping

TANGENT SPACE BUMP MAPPINGTANGENT SPACE BUMP MAPPING

normalova mapa je definovana relativne vuci danemu normalova mapa je definovana relativne vuci danemu polygonupolygonu

pred vypoctem intenzity daneho bodu je potreba dostat pred vypoctem intenzity daneho bodu je potreba dostat vektor ke svetlu do prostoru dane texturyvektor ke svetlu do prostoru dane textury

prostor textury nanesene na jednotlivych polygonech prostor textury nanesene na jednotlivych polygonech definuje tangent space transformacni maticedefinuje tangent space transformacni matice

urcuje lokalny souradnicovy system textury mapovane urcuje lokalny souradnicovy system textury mapovane na dany polygonna dany polygon

Page 23: Možnosti moderního grafického HW

Paralax mappingParalax mapping

vychádza z klasického bumpmappinguvychádza z klasického bumpmappingu

normály jednotlivých pixelov pochádzajú z normal mapy a vyska z normály jednotlivých pixelov pochádzajú z normal mapy a vyska z height mapyheight mapy

pridáva zlepšenie v simuláci hrbolatých povrchovpridáva zlepšenie v simuláci hrbolatých povrchov

vyhody: zlepšenie vizuálneho dojmu zo scényvyhody: zlepšenie vizuálneho dojmu zo scény dynamickosť povrchov pri pohybe kamerydynamickosť povrchov pri pohybe kamery

nevýhody: ďalšie inštrukcie na úrovni pixel/fragment shaderunevýhody: ďalšie inštrukcie na úrovni pixel/fragment shaderu väčšia pamäťová náročnosť, pretože je potreba height mapaväčšia pamäťová náročnosť, pretože je potreba height mapa pri ostrých uhloch pohľadu efekt ztraci svuj smysl, protoze pri ostrých uhloch pohľadu efekt ztraci svuj smysl, protoze

vynikne planarna podstata povrchavynikne planarna podstata povrcha

Page 24: Možnosti moderního grafického HW

iným názvom pre parallax mapping je offset mapping, iným názvom pre parallax mapping je offset mapping, takže ide o offsetovanie texturových koordinátovtakže ide o offsetovanie texturových koordinátov

koordináty sa offsetujú podľa vektora pohľadu na daný koordináty sa offsetujú podľa vektora pohľadu na daný povrch a výšky povrchupovrch a výšky povrchu

výška povrchu je daná height mapou, ktorá ju kóduje ako výška povrchu je daná height mapou, ktorá ju kóduje ako hodnoty od 0.0 až 1.0, pričom je na nás aby sme hodnoty od 0.0 až 1.0, pričom je na nás aby sme ich správne rozpakovali do rozsahu aký potrebujeme, ich správne rozpakovali do rozsahu aký potrebujeme, teda napríklad -1.5 až 2.8 a pod.teda napríklad -1.5 až 2.8 a pod.

Page 25: Možnosti moderního grafického HW

na pervertex úrovni sa vo vertex shaderi vypočíta kamera vektor a prevedie sa do tangent na pervertex úrovni sa vo vertex shaderi vypočíta kamera vektor a prevedie sa do tangent spacespace

kamera vektor sa interpoluje po celom polygone, teda posle sa do pixel/fragment shaderukamera vektor sa interpoluje po celom polygone, teda posle sa do pixel/fragment shaderu

je nutné ho normalizovať aby mal jednotkovú dĺžkuje nutné ho normalizovať aby mal jednotkovú dĺžku

na perpixel urovni sa nasampluje heightmapana perpixel urovni sa nasampluje heightmapa

k nasamplovanej hodnote sa nasobi scale a pripocita bias, ktorý hodnotu z rozsahu 0.0 až 1.0 k nasamplovanej hodnote sa nasobi scale a pripocita bias, ktorý hodnotu z rozsahu 0.0 až 1.0 dostane do nami zvoleného rozsahudostane do nami zvoleného rozsahu

normalizovaný kamera vektor(koordináty X a Y) sa násobí hodnotou paralaxu, ktorú sme práve normalizovaný kamera vektor(koordináty X a Y) sa násobí hodnotou paralaxu, ktorú sme práve vypočítalivypočítali

tým dostávame offset o ktorý zmeníme textúrové koordinátytým dostávame offset o ktorý zmeníme textúrové koordináty

na záver sa offset pripočíta k pôvodným texturovacím koordinátomna záver sa offset pripočíta k pôvodným texturovacím koordinátom

Page 26: Možnosti moderního grafického HW

Po vypočítaní zoffsetovaných koordinátov, ich Po vypočítaní zoffsetovaných koordinátov, ich používame na samplovanie všetkých ostatných používame na samplovanie všetkých ostatných textúr(diffuse, normal mapa, specular mapa, ...)textúr(diffuse, normal mapa, specular mapa, ...)

float2 GetParalax(float2 baseCoord, float Scale, float Bias, float3 camvect)float2 GetParalax(float2 baseCoord, float Scale, float Bias, float3 camvect){{ float height = tex2D(heightTex, baseCoord);float height = tex2D(heightTex, baseCoord); float paralax = height * Scale - Bias;float paralax = height * Scale - Bias; float2 offset = camvect.xy * paralax;float2 offset = camvect.xy * paralax; return baseCoord + offset;return baseCoord + offset;}}

Page 27: Možnosti moderního grafického HW

HDRHDRHigh Dynamic RangeHigh Dynamic Range

Page 28: Možnosti moderního grafického HW

Čo to je?Čo to je?

je to forma zobrazenia, pri ktorej simulujeme správanie je to forma zobrazenia, pri ktorej simulujeme správanie sa ľudského okasa ľudského okaľudské oko je schopné zachytiť veľký rozsah intenzít ľudské oko je schopné zachytiť veľký rozsah intenzít svetlasvetlanaraz však dokáže zobraziť len malú časť naraz však dokáže zobraziť len malú časť

vždy sa zobrazuje iný rozsah intenzity svetla, ten závisí vždy sa zobrazuje iný rozsah intenzity svetla, ten závisí od celkovej intenzity svetla, ktoré vstupuje do okaod celkovej intenzity svetla, ktoré vstupuje do oka

ďalším faktorom pri HDR je pomalá adaptácia svetelným ďalším faktorom pri HDR je pomalá adaptácia svetelným podmienkampodmienkam

Page 29: Možnosti moderního grafického HW

VýhodyVýhody

dynamickosdynamickosťť scény scény

energia, ktorú vyžarujú povrchy v scéne je energia, ktorú vyžarujú povrchy v scéne je čo najlepšie rozdistribuovaná do rozsahu 0 čo najlepšie rozdistribuovaná do rozsahu 0 až 1až 1

možnosť pridania ďalších efektov ako je možnosť pridania ďalších efektov ako je bloom, star efekt a pod.bloom, star efekt a pod.

Page 30: Možnosti moderního grafického HW

NevýhodyNevýhody

niekoľkonásobné väčšie nároky na niekoľkonásobné väčšie nároky na bandwidth grafickej kartybandwidth grafickej kartyvyžaduje niekoľko dodatočných výpočtov vyžaduje niekoľko dodatočných výpočtov na konci renderovania scényna konci renderovania scényvyžaduje float textúry(SM 2.0 HW)vyžaduje float textúry(SM 2.0 HW)zatiaľ obmedzené použitie antialiasingu s zatiaľ obmedzené použitie antialiasingu s HDRHDRvhodná je aj podpora float blendingu(SM vhodná je aj podpora float blendingu(SM 3.0 HW)3.0 HW)

Page 31: Možnosti moderního grafického HW

PostupPostup

scéna sa vyrenderuje do float framebuffru scéna sa vyrenderuje do float framebuffru

vypočíta sa priemerná luminancia scényvypočíta sa priemerná luminancia scény

(môže sa pridať bloom alebo star effekt)(môže sa pridať bloom alebo star effekt)

prebehne tonemappingprebehne tonemapping

Výsledok sa zobrazí na obrazovkeVýsledok sa zobrazí na obrazovke

Page 32: Možnosti moderního grafického HW

Počítanie luminanciePočítanie luminancie

všteko prebieha na grafickej kartevšteko prebieha na grafickej kartez float framebufferu s vyrenderovanou scénou z float framebufferu s vyrenderovanou scénou vytvoríme luminance textúru scényvytvoríme luminance textúru scényNa každom pixeli prebehne funkcia Na každom pixeli prebehne funkcia

float CalculateLuminance(float red, float green, float blue)float CalculateLuminance(float red, float green, float blue){{ float luminance = red*float luminance = red*0.30.3 + green* + green*0.590.59 + blue* + blue*0.110.11;; return log(luminance + return log(luminance + epsilonepsilon); ); // epsilon bude mala konstanta// epsilon bude mala konstanta}}

získame priemernú luminanciu scény pomocou získame priemernú luminanciu scény pomocou mipmapovaniamipmapovaniato sa bude líšiť na NVIDA a ATI kartáchto sa bude líšiť na NVIDA a ATI kartách

Page 33: Možnosti moderního grafického HW

GeForce GeForce 6 a 76 a 7

podporuje mipmapovanie NPOT(non-podporuje mipmapovanie NPOT(non-power of two) textur – luminančná textúrapower of two) textur – luminančná textúra

zmipmapujeme túto textúruzmipmapujeme túto textúru

priemerná luminancia bude uložená v priemerná luminancia bude uložená v poslednej mipmapeposlednej mipmape

Page 34: Možnosti moderního grafického HW

ATI RadeonATI Radeon

nepodporuje mipmapovanie NPOT(non-power nepodporuje mipmapovanie NPOT(non-power of two) texturof two) textur

najprv pomocou shaderu namapujeme najprv pomocou shaderu namapujeme luminančnú textúru na POT 1-komponentovú luminančnú textúru na POT 1-komponentovú textúru s pomocou lineárneho - filteringu ... textúru s pomocou lineárneho - filteringu ...

512x512 a pod.512x512 a pod.

- ďalej pokračujeme ručným downsaplovaním - ďalej pokračujeme ručným downsaplovaním textúry až sa dostaneme na rozmer 1x1textúry až sa dostaneme na rozmer 1x1

Page 35: Možnosti moderního grafického HW

TonemappingTonemapping

spočíva v mapovaní hodnot z framebuffera v rozmedzi 0 spočíva v mapovaní hodnot z framebuffera v rozmedzi 0 az nekonecno na rozsah 0 az 1, ktorý je pripravený na az nekonecno na rozsah 0 az 1, ktorý je pripravený na zobrazenie na zobrazenie na monitoremonitoredosiahneme to delenim farby pixelu z float framebuffru, dosiahneme to delenim farby pixelu z float framebuffru, sebou samou + 1sebou samou + 1final_color = HDR_color / (HDR_color + 1.0)final_color = HDR_color / (HDR_color + 1.0)

spôsobov ako dosiahnuť tonemapping, je viacero a spôsobov ako dosiahnuť tonemapping, je viacero a väčšina je omnoho sofistikovanejšia ako uvádzaná väčšina je omnoho sofistikovanejšia ako uvádzaná metódametóda- prípadne sa dá doimplementovať postupná adaptácia - prípadne sa dá doimplementovať postupná adaptácia na zmenu osvetleniana zmenu osvetlenia