Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Modelowanie Materiałów Michał Drobot Visual Technical Director Reality Pump.

Podobne prezentacje


Prezentacja na temat: "Modelowanie Materiałów Michał Drobot Visual Technical Director Reality Pump."— Zapis prezentacji:

1 Modelowanie Materiałów Michał Drobot Visual Technical Director Reality Pump

2 Cel Projektowanie i wdrażanie shaderów Renderujących powierzchnie Określone własności powierzchni Geometryczne Interakcji ze światłem Atrakcyjnych wizualnie Konkretne efekty Wydajnych

3 Plan Właściwości interakcji materiał – światło (1 część)Właściwości interakcji materiał – światło (1 część) Właściwości fizyczne materiałów (2 część)Właściwości fizyczne materiałów (2 część)

4 Właściwości interakcji Modele oświetleniaModele oświetlenia RealistyczneRealistyczne analitycznie bądź empirycznie modelują interakcje materiału o określonych właściwościach ze światłemanalitycznie bądź empirycznie modelują interakcje materiału o określonych właściwościach ze światłem Korzystamy z aproksymacji istniejących modeli matematycznychKorzystamy z aproksymacji istniejących modeli matematycznych Wykorzystujemy dane pomiarowe materiałów rzeczywistychWykorzystujemy dane pomiarowe materiałów rzeczywistych NierealistyczneNierealistyczne Mają za zadanie przedstawić dany obiekt w sposób odpowiadający konkretnemu celowiMają za zadanie przedstawić dany obiekt w sposób odpowiadający konkretnemu celowi CADCAD BlueprintBlueprint Medical analisysMedical analisys Gry (toon, ink & paint, alien)Gry (toon, ink & paint, alien)

5 Właściwości interakcji RealistyczneRealistyczne Właściwości materiału wpływające na interakcjeWłaściwości materiału wpływające na interakcje MikrostrukturaMikrostruktura IzotropiaIzotropia Metal…Metal… AnizotropiaAnizotropia Metal szczotkowany, włosy, satyna..Metal szczotkowany, włosy, satyna.. Przepuszczalność świetlnaPrzepuszczalność świetlna Wosk, skóra, plastik…Wosk, skóra, plastik… WielowarstwowośćWielowarstwowość Skóra, lakier samochodowy…Skóra, lakier samochodowy…

6 Właściwości interakcji

7 Właściwości interakcji BRDF BRDF – Bidirectional Reflectance Distribution FunctionBRDF – Bidirectional Reflectance Distribution Function Dwukierunkowa funkcja rozkładu odbiciaDwukierunkowa funkcja rozkładu odbicia Wyraża stosunek luminancji energetycznej mierzonej w kierunku obserwatora do natężenia napromienienia badanego z kierunku padania promieniowaniaWyraża stosunek luminancji energetycznej mierzonej w kierunku obserwatora do natężenia napromienienia badanego z kierunku padania promieniowania w pełni charakteryzuje własności refleksyjne powierzchni odbijającejw pełni charakteryzuje własności refleksyjne powierzchni odbijającej Można określić empirycznie poprzez pomiary interakcji światła z powierzchniąMożna określić empirycznie poprzez pomiary interakcji światła z powierzchnią

8 Właściwości interakcji BRDF BRDFBRDF Wi – wektor w kierunku światłaWi – wektor w kierunku światła Wo – wektor w kierunku kameryWo – wektor w kierunku kamery THi – kąt między Wi a N – normalną płaszczyzny w pukncieTHi – kąt między Wi a N – normalną płaszczyzny w pukncie L – radiancja – energia oddawana przez materiałL – radiancja – energia oddawana przez materiał E – irradiancja – energia dochodząca do materiałuE – irradiancja – energia dochodząca do materiału

9 Właściwości interakcji BRDF

10 Cosine emission lawCosine emission law Traktujemy nadchodzące światło jako wiązkę promieni światłaTraktujemy nadchodzące światło jako wiązkę promieni światła Energie świetlną (oświetlająca powierzchnię) liczymy względem powierzchni do jakiej dociera energiaEnergie świetlną (oświetlająca powierzchnię) liczymy względem powierzchni do jakiej dociera energia Kąt nachylenia powierzchni do wektora światła ma znaczenieKąt nachylenia powierzchni do wektora światła ma znaczenie

11 Właściwości interakcji BRDF

12 Równanie Fresnela IOR – index refrakcjiIOR – index refrakcji Miara ośrodka wyrażająca jak bardzo światło jest spowolnione wewnątrz ośrodka względem próżniMiara ośrodka wyrażająca jak bardzo światło jest spowolnione wewnątrz ośrodka względem próżni Np. szklanka ma IOR około 1.5 co oznacza, że wewnątrz jej, światło porusza się z prędkością 1 / 1.5 = 2 /3 prędkości światła w próżniNp. szklanka ma IOR około 1.5 co oznacza, że wewnątrz jej, światło porusza się z prędkością 1 / 1.5 = 2 /3 prędkości światła w próżni Światło zmienia kierunek w chwili przejścia między ośrodkami o różnych IORŚwiatło zmienia kierunek w chwili przejścia między ośrodkami o różnych IOR Światło częściowo odbija się w momencie przejścia między ośrodkami o różnych IORŚwiatło częściowo odbija się w momencie przejścia między ośrodkami o różnych IOR

13 Równanie Fresnela Prawo SnellaPrawo Snella Opisuje relację między kątami padania a wyjścia światła przy przechodzeniu między dwoma izotropowymi ośrodkami (woda, szkło…)Opisuje relację między kątami padania a wyjścia światła przy przechodzeniu między dwoma izotropowymi ośrodkami (woda, szkło…)

14 Równanie Fresnela Podczas przechodzenia przez płaszczyznę ośrodków część światła ulega odbiciu (refleksja) a część przechodzi do wnętrza ośrodka (refrakcja / światło przepuszczone)Podczas przechodzenia przez płaszczyznę ośrodków część światła ulega odbiciu (refleksja) a część przechodzi do wnętrza ośrodka (refrakcja / światło przepuszczone) Równanie Fresnela wyraża jaka cześć (energia) początkowego światła ulegnie odbiciuRównanie Fresnela wyraża jaka cześć (energia) początkowego światła ulegnie odbiciu

15 Równanie Fresnela

16

17 Aproksymacja empirycznaAproksymacja empiryczna Float R0 = pow(1.0-refractionIndexRatio, 2.0) / pow(1.0+refractionIndexRatio, 2.0); fresnel = R0 + (1 – R0) * (1 + dot( I, N ))^fp)

18 Właściwości interakcji Phong Podstawowy model oświetleniaPodstawowy model oświetlenia Phong ShadingPhong Shading Rozdziela oświetlenie na komponentyRozdziela oświetlenie na komponenty DiffuseDiffuse AmbientAmbient SpecularSpecular Właściwości modelu powierzchniWłaściwości modelu powierzchni IzotropiaIzotropia Idealna gładkość powierzchniIdealna gładkość powierzchni Idealne odbicie (lustrzane)Idealne odbicie (lustrzane)

19 Właściwości interakcji Phong

20

21 Color = ambient + diffuse + specular

22 Właściwości interakcji Phong Phong – BlinnPhong – Blinn Zastępuje wektor R – odbicia wektorem połówkowym H = (V + L)Zastępuje wektor R – odbicia wektorem połówkowym H = (V + L) Przyśpiesza obliczeniaPrzyśpiesza obliczenia Wizualnie podobny rezultatWizualnie podobny rezultat

23 Właściwości interakcji Phong finalColor = emmisive + ambient + diffuse + specular emmisive = Ke ambient = Ka * globalAmbient diffuse = Kd * lightColor * max(dot(N,L),0) specular = Ks * lightColor * facing * pow(max(dot(N,H), 0), shinnines) Ke – kolor emisji materiału Ka – kolor odbicia światła rozproszonego Kd – kolor właściwy powierzchni Ks – kolor właściwy odbic globalAmbient – globalny kolor światła rozproszonego

24 Właściwości interakcji Phong

25 Właściwości interakcji BRDF Podstawowe modele BRDF - DiffusePodstawowe modele BRDF - Diffuse LambertLambert Dot(N,L)Dot(N,L) UproszczonyUproszczony Powierzchnia gładkaPowierzchnia gładka Oren – NayarOren – Nayar Zakłada izotropową powierzchnię o współczynniku nierówności – szorstkościZakłada izotropową powierzchnię o współczynniku nierówności – szorstkości Świetnie modeluje powierzchnie o zmiennych nierównościachŚwietnie modeluje powierzchnie o zmiennych nierównościach Piasek, beton, glinę…Piasek, beton, glinę…

26 Właściwości interakcji Oren Nayar

27

28 α = max(θi,θr), β = min(θi,θr) Sigma – współczynnik nierówności

29 Właściwości interakcji Oren Nayar

30 BRDF Specular Podstawowe modele BRDF – SpecularPodstawowe modele BRDF – Specular PhongPhong GaussianGaussian BeckmannBeckmann Heidrich-SeidelHeidrich-Seidel Ward anisotropicWard anisotropic Cook-TorranceCook-Torrance

31 BRDF Specular PhongPhong Zakłada lustrzane odbicieZakłada lustrzane odbicie Izotropową powierzchnięIzotropową powierzchnię Blinn-Phong – zamienia R na HBlinn-Phong – zamienia R na H N – kontroluje gładkośćN – kontroluje gładkość

32 BRDF Specular GaussianGaussian Lepsze rezultaty niż PhongLepsze rezultaty niż Phong WolniejszeWolniejsze Założenia jak w PhonguZałożenia jak w Phongu M – kontroluje gładkośc [0;1]M – kontroluje gładkośc [0;1]

33 BRDF Specular BeckmannBeckmann Model fizycznyModel fizyczny Bardzo dokładnyBardzo dokładny KosztownyKosztowny M kontroluje gładkośćM kontroluje gładkość

34 BRDF Specular Heidrich-SeidelHeidrich-Seidel Model przewiduje anizotropową powierzchnięModel przewiduje anizotropową powierzchnię Włosy, szczotkowany metal…Włosy, szczotkowany metal… N – wykładnik anizoN – wykładnik anizo T – wektor równoległy do nierówności powierzchniT – wektor równoległy do nierówności powierzchni Dla włosów będzie to kierunek ułożenia pojedynczego włosaDla włosów będzie to kierunek ułożenia pojedynczego włosa T – możemy zapisywać na teksturze w Tangent Space podobnie jak wektory normalnychT – możemy zapisywać na teksturze w Tangent Space podobnie jak wektory normalnych

35 BRDF Specular

36 Ward anisotropicWard anisotropic Model parametrycznyModel parametryczny DokładnyDokładny KosztownyKosztowny Parametry alfaX, alfaY kierują anizo wg zadanych w płaszczyźnie normalnej wektorów ortogonalnych X i Y (analogicznie do T z Heidricha-Seidela)Parametry alfaX, alfaY kierują anizo wg zadanych w płaszczyźnie normalnej wektorów ortogonalnych X i Y (analogicznie do T z Heidricha-Seidela)

37 BRDF Specular Cook-TorranceCook-Torrance Najbardziej zaawansowany model analitycznyNajbardziej zaawansowany model analityczny Wg tego modelu dokonuje się pomiarów większości pomiarów BRDF powierzchniWg tego modelu dokonuje się pomiarów większości pomiarów BRDF powierzchni Zadana przez dystrybucje Beckmanna, współczynnik Fresnela oraz zanik geometrycznyZadana przez dystrybucje Beckmanna, współczynnik Fresnela oraz zanik geometryczny Alfa – kąt między H i N

38 BRDF Funkcje BRDF tworzymy poprzez kombinacje odpowiednich dystrybucji rozproszenia i odbiciaFunkcje BRDF tworzymy poprzez kombinacje odpowiednich dystrybucji rozproszenia i odbicia O doborze decyduje typ modelowanej powierzchni oraz wydajność łączonego rozwiązaniaO doborze decyduje typ modelowanej powierzchni oraz wydajność łączonego rozwiązania Można stosować odczyt BRDF z funkcji wedle zadanych wektorów, które przyjmuje funkcjaMożna stosować odczyt BRDF z funkcji wedle zadanych wektorów, które przyjmuje funkcja

39 NPR Non Photorealistic RenderingNon Photorealistic Rendering ZastosowaniaZastosowania CADCAD Gooch shaderGooch shader Blueprint shader – depth peelingBlueprint shader – depth peeling ToonToon Toon shaderToon shader Ink & PaintInk & Paint CrosshatchCrosshatch

40 NPR - CAD W aplikacjach typu CAD zachodzi potrzeba oddania cech przestrzennych obiektuW aplikacjach typu CAD zachodzi potrzeba oddania cech przestrzennych obiektu Typowym inżynierską formą przekazu sa blueprintyTypowym inżynierską formą przekazu sa blueprinty Wydruki niebiesko – białe przecinających się krawędziWydruki niebiesko – białe przecinających się krawędzi Cieniowanie umożliwiające łatwiejsze dostrzeganie detali geometrycznychCieniowanie umożliwiające łatwiejsze dostrzeganie detali geometrycznych Gooch shadingGooch shading

41 NPR – CAD - Gooch Gooch shadingGooch shading Opiera się o techniki ilustracji tradycyjnejOpiera się o techniki ilustracji tradycyjnej Wykorzystuje pełen zakres oświetlenia dodając zmieszane kolory ciepłe oraz zimne wg kątu padania światłaWykorzystuje pełen zakres oświetlenia dodając zmieszane kolory ciepłe oraz zimne wg kątu padania światła Pozwala zaznaczać krawędzie sylwetekPozwala zaznaczać krawędzie sylwetek

42 NPR – CAD - Gooch

43 NPR – CAD - Toon Toon shadingToon shading Opisuje światło kilkoma tonami zamiast pełną paletąOpisuje światło kilkoma tonami zamiast pełną paletą Wymaga 3 podstawowych elementówWymaga 3 podstawowych elementów Min 2 – tonowego oświetlenia : jasno/ciemnoMin 2 – tonowego oświetlenia : jasno/ciemno Min 1 – tonu na odbłyski jeśli są wystarczająco mocneMin 1 – tonu na odbłyski jeśli są wystarczająco mocne Zaznaczenia krawędziZaznaczenia krawędzi

44 NPR – CAD - Toon Funkcje dot(N,L) reprezentujemy schodkową funkcją przejściaFunkcje dot(N,L) reprezentujemy schodkową funkcją przejścia

45 NPR – CAD - Toon Funkcja może być zapisana w texturze jeśli zależy nam na większej ilości odcieniFunkcja może być zapisana w texturze jeśli zależy nam na większej ilości odcieni I = texture1D(stepTex, dot(N,L));

46 NPR – CAD - Toon Analogicznie postępujemy z wartością rozbłysku dot(H, N)Analogicznie postępujemy z wartością rozbłysku dot(H, N) Wykrywanie krawędzi:Wykrywanie krawędzi: Stosujemy funkcje schodkową do wyniku dot(V,N)Stosujemy funkcje schodkową do wyniku dot(V,N) Powoduje błędy dla obiektów o ostrych krawędziachPowoduje błędy dla obiektów o ostrych krawędziach Renderowanie dwuprzebiegoweRenderowanie dwuprzebiegowe Najpierw powiększony na VS model (vertexy popchnięte w kierunku normalnych) renderujemy na kolor krawędziNajpierw powiększony na VS model (vertexy popchnięte w kierunku normalnych) renderujemy na kolor krawędzi Dokonujemy normalnego renderingu na niemodyfikowanym modeluDokonujemy normalnego renderingu na niemodyfikowanym modelu Dokonujemy detekcji krawędzi w przestrzeni obrazuDokonujemy detekcji krawędzi w przestrzeni obrazu Post processingPost processing Większe kosztaWiększe koszta Dokładne rezultaty uwzględniające wszystkie krawędzieDokładne rezultaty uwzględniające wszystkie krawędzie

47 NPR – CAD - Toon

48

49 NPR – CAD – Ink & Paint Model post processingowyModel post processingowy Udaje ilustrowanie przy pomocy tuszu i farbyUdaje ilustrowanie przy pomocy tuszu i farby Istnieje możliwość wylania się koloru poza obrysIstnieje możliwość wylania się koloru poza obrys Obrys zarówno jak i farba mogą mieć teksturę udająca odręczny rysunek, pędzel itp..Obrys zarówno jak i farba mogą mieć teksturę udająca odręczny rysunek, pędzel itp.. Obrys oraz farba mogą być animowane udając np. animację odręcznąObrys oraz farba mogą być animowane udając np. animację odręczną

50

51

52 NPR – CAD – Crosshatch Technika udająca tradycyjne metody cieniowaniaTechnika udająca tradycyjne metody cieniowania Obszary zacieniowane (dot(N,L) < 0) pokrywa teksturą imitującą np. cieniowanie ołówkiemObszary zacieniowane (dot(N,L) < 0) pokrywa teksturą imitującą np. cieniowanie ołówkiem Tekstura może być animowana w celu symulacji animacji odręcznejTekstura może być animowana w celu symulacji animacji odręcznej Może być stosowana podczas renderingu obiektu jak i w post processinguMoże być stosowana podczas renderingu obiektu jak i w post processingu

53 NPR – CAD – Crosshatch

54

55 Właściwości fizyczne materiałów Stosujemy modele analityczno empiryczne nastawione na wydajnośćStosujemy modele analityczno empiryczne nastawione na wydajność Podstawowe właściwościPodstawowe właściwości RefleksjeRefleksje RefrakcjeRefrakcje Współczynnik FresnelaWspółczynnik Fresnela Nierówności powierzchniNierówności powierzchni MakroskalaMakroskala MikroskalaMikroskala

56 Refleksje RefleksjeRefleksje thIthR I N R thI = thR R = reflect(I,N); R = I - 2 * N * dot(IN)

57 Refleksje Dla optymalizacji przestrzeń dookoła (otoczenie) zapisujemy i odtwarzamy przez przekształceniaDla optymalizacji przestrzeń dookoła (otoczenie) zapisujemy i odtwarzamy przez przekształcenia Sześcienne – cube mappingSześcienne – cube mapping 6 rzutów przestrzeni dookoła mapujemy na sześcian (x, -x, y, -y, z, -z)6 rzutów przestrzeni dookoła mapujemy na sześcian (x, -x, y, -y, z, -z) Brak zniekształceńBrak zniekształceń Wsparcie sprzętowe (textureCUBE)Wsparcie sprzętowe (textureCUBE) 6 krotny koszt renderingu sceny z punktu widzenia kamery6 krotny koszt renderingu sceny z punktu widzenia kamery Paraboloidalne – (dual) paraboloid mappingParaboloidalne – (dual) paraboloid mapping Mapowanie otoczenia na paraboloide (2 półkule)Mapowanie otoczenia na paraboloide (2 półkule) Małe zniekształceniaMałe zniekształcenia Brak wsparcia sprzętowego (ręcznie w VS/PS)Brak wsparcia sprzętowego (ręcznie w VS/PS) 2 krotny koszt renderingu sceny2 krotny koszt renderingu sceny SferyczneSferyczne Mapowanie otoczenia na kuleMapowanie otoczenia na kule Duże zniekształceniaDuże zniekształcenia Brak wsparcia sprzętowegoBrak wsparcia sprzętowego Pojedynczy koszt renderowaniaPojedynczy koszt renderowania

58 Refleksje

59 Refleksje

60 Refleksje varying vec3 E; varying vec3 N; void main() { gl_TexCoord[0] = gl_MultiTexCoord0; vec4 Vertex_ModelView = gl_ModelViewMatrix * gl_Vertex; N = normalize(gl_NormalMatrix * gl_Normal); E = vec3(Vertex_ModelView); E = normalize(E); gl_Position = ftransform(); }

61 Refleksje void main() { // // Reflection // vec3 reflection = textureCube(enviromentCube, reflect(E,N)).rgb; vec3 finalColor = reflection; gl_FragColor = vec4(finalColor, 1.0); }

62 Refrakcje RefrakcjeRefrakcje N I R thI thR eO eI eI * sin(thI) = eO * sin(thR) thR = sin^-1(eO/eI * sin(thI)) Prawo Snella Próżnia 1.0 Powietrze Woda Szkło 1.5 Plastik 1.6 Diament 2.417

63 Refrakcje vec3 ref(vec3 I, vec3 N, float eO, float eI) { float eta = eO/eI; float cos_theta1 = dot(-I, N); float cos_theta2 = eta * eta * ( (cos_theta1 * cos_theta1)); vec3 refraction = (eta * I) + (eta * cos_theta1 - sqrt(abs(cos_theta2))) * N; return refraction * (vec3)(cos_theta2 > 0.0); } vec3 refract = refract(I, N, eO/eI);

64 Refrakcje varying vec3 E; varying vec3 N; void main() { gl_TexCoord[0] = gl_MultiTexCoord0; vec4 Vertex_ModelView = gl_ModelViewMatrix * gl_Vertex; N = normalize(gl_NormalMatrix * gl_Normal); E = vec3(Vertex_ModelView); E = normalize(E); gl_Position = ftransform(); }

65 Refrakcje void main() { // // Refraction // vec3 refraction = textureCube(enviromentCube, refract(E,N,eO/eI)).rgb; vec3 finalColor = refraction; gl_FragColor = vec4(finalColor, 1.0); }

66 Refrakcje – dyfrakcja DyfrakcjaDyfrakcja N I

67 Nierówności powierzchni Nierówności powierzchniNierówności powierzchni nierówności w makroskali przestrzeni renderowania wpływają na odbiór powierzchni (widzimy nierówność gołym okiem)nierówności w makroskali przestrzeni renderowania wpływają na odbiór powierzchni (widzimy nierówność gołym okiem) Modelujemy poprzez zniekształcenie powierzchni widzialnej oraz normalnych płaszczyznyModelujemy poprzez zniekształcenie powierzchni widzialnej oraz normalnych płaszczyzny nierówności w mikroskali przestrzeni renderowania wpływają na odbiór interakcji powierzchnia – światło (nie widzimy nierówności lecz dostrzegamy jej efekt)nierówności w mikroskali przestrzeni renderowania wpływają na odbiór interakcji powierzchnia – światło (nie widzimy nierówności lecz dostrzegamy jej efekt) Modelujemy w trakcie analizy modelu oświetleniaModelujemy w trakcie analizy modelu oświetlenia

68 Nierówności powierzchni

69 Wpływ nierówności powierzchniWpływ nierówności powierzchni Efekt paralaksyEfekt paralaksy Lokalne zmiany w oświetleniuLokalne zmiany w oświetleniu Sylwetkę/obrys obiektuSylwetkę/obrys obiektu CieńCień RzucanyRzucany Na siebie (self shadowing)Na siebie (self shadowing) Na inne obiektyNa inne obiekty OdbieranyOdbierany

70 Nierówności powierzchni

71 Bump mapping Bump mappingBump mapping Perturbacja normalnej płaszczyzny przy użyciu tekstury nierówności (bump texture)Perturbacja normalnej płaszczyzny przy użyciu tekstury nierówności (bump texture) Bump może reprezentować mapę wysokościBump może reprezentować mapę wysokości Bardzo szybkieBardzo szybkie Wpływa jedynie na oświetlenieWpływa jedynie na oświetlenie Mało wymagające pamięciowoMało wymagające pamięciowo 1x8bit1x8bit

72 Normal mapping Normal mappingNormal mapping Podmiana istniejącej normalnej obiektu w punkcie na normalną zdefiniowana z góryPodmiana istniejącej normalnej obiektu w punkcie na normalną zdefiniowana z góry Wyliczona z modelu o większej złożonościWyliczona z modelu o większej złożoności Przetworzoną przez lokalne nierówności powierzchniPrzetworzoną przez lokalne nierówności powierzchni Szybki obliczeniowoSzybki obliczeniowo Wpływa jedynie na zmianę normalnych = modelowanie oświetleniaWpływa jedynie na zmianę normalnych = modelowanie oświetlenia PamięciowoPamięciowo Bump mapping = height map (8A/16A)Bump mapping = height map (8A/16A) Narzut obliczeniowyNarzut obliczeniowy Normal mapping = normal map (RGB8)Normal mapping = normal map (RGB8) Narzut pamięciowyNarzut pamięciowy Podatne na artefakty przy zachowaniu min. Narzutu pamięciowegoPodatne na artefakty przy zachowaniu min. Narzutu pamięciowego

73 Normal mapping Tangent spaceTangent space Przestrzeń płaszczyzny obiektuPrzestrzeń płaszczyzny obiektu Wyznaczana przezWyznaczana przez Wektor normalnej w punkcieWektor normalnej w punkcie Wektor pochodnej koordynatów texturyWektor pochodnej koordynatów textury Traktujemy jak 3D owinięcie (wrap) powierzchni obiektuTraktujemy jak 3D owinięcie (wrap) powierzchni obiektu płaska powierzchnia posiada w dowolnym punkcie wektor normalny (0,0,1) – do górypłaska powierzchnia posiada w dowolnym punkcie wektor normalny (0,0,1) – do góry

74 Normal mapping Tangent spaceTangent space N U V

75 Normal mapping

76 Wyliczanie normalnej z height mapyWyliczanie normalnej z height mapy Hu HcHr Normal = (Hc – Hr, Hc – Hu, 1) / | (Hc – Hr, Hc – Hu, 1)| Normal = normalize(vec3(ddx,ddy,1));

77 Normal mapping Przechowywanie normalnychPrzechowywanie normalnych Normalne możemy przechowywać w teksturachNormalne możemy przechowywać w teksturach Większość dostępnych formatów opiera się na unsigned intWiększość dostępnych formatów opiera się na unsigned int Wymagana ręczna kompresja z [-1;1] -> [0;1]Wymagana ręczna kompresja z [-1;1] -> [0;1] Compression = 0.5 * normal + 0.5;Compression = 0.5 * normal + 0.5; DeCompression = 2 * (compressedNormal – 0.5)DeCompression = 2 * (compressedNormal – 0.5) Dla zmniejszenia wymagań pamięciowych możliwość wyliczania (z) z (x,y) – koszt główny = sqrt()Dla zmniejszenia wymagań pamięciowych możliwość wyliczania (z) z (x,y) – koszt główny = sqrt()

78 Normal mapping Problem jakości kompresjiProblem jakości kompresji 8bit na skalar wektora normalnej może okazać się niewystarczające przy modelach oświetlenia bazujących na wysokiej jakości komponencie specular8bit na skalar wektora normalnej może okazać się niewystarczające przy modelach oświetlenia bazujących na wysokiej jakości komponencie specular Normal mapy 32Bit (RG16F)Normal mapy 32Bit (RG16F) Możliwość authorowania i przechowywania normalnych w formatach 32B dwuskalarnych (Killzone2)Możliwość authorowania i przechowywania normalnych w formatach 32B dwuskalarnych (Killzone2) Przy formatach unsigned int pojawia się problem normalnej prosto w góręPrzy formatach unsigned int pojawia się problem normalnej prosto w górę 0 = 2 * (x * 1/255 – 0.5)0 = 2 * (x * 1/255 – 0.5) X = 255/2 = != INTX = 255/2 = != INT W efekcie niemożliwe jest np. stworzenie płaskich powierzchni łączących się ze sobą (powstanie szczelina)W efekcie niemożliwe jest np. stworzenie płaskich powierzchni łączących się ze sobą (powstanie szczelina)

79 Normal mapping Istniejące (DX9-10) kompresje texturIstniejące (DX9-10) kompresje textur Zostały stworzone na potrzeby obrazów kolorowychZostały stworzone na potrzeby obrazów kolorowych Metody kompresji stratnej opierającej się na interpolacji danych w różnych zakresach widzialności (poziomy kompresji RGB – )Metody kompresji stratnej opierającej się na interpolacji danych w różnych zakresach widzialności (poziomy kompresji RGB – ) Nie nadają się do kompresji wektorówNie nadają się do kompresji wektorów Mimo to często używane z racji akceptowalnej jakościMimo to często używane z racji akceptowalnej jakości Należy uważać na kompresję stratnąNależy uważać na kompresję stratną Odzyskane Z będzie jakości najgorszej ze skalarów X,YOdzyskane Z będzie jakości najgorszej ze skalarów X,Y

80 Bump mapping attribute vec3 tangent; attribute vec3 binormal; varying vec3 V; varying vec3 L; varying vec3 H; void main() { gl_TexCoord[0] = gl_MultiTexCoord0; mat3 TBN_Matrix =gl_NormalMatrix * mat3(tangent, binormal, gl_Normal); vec4 Vertex_ModelView = gl_ModelViewMatrix * gl_Vertex; V = vec3(-Vertex_ModelView) * TBN_Matrix ; V = normalize(V); vec4 lightEye = gl_ModelViewMatrix * gl_LightSource[0].position; vec3 lightVec = lightEye.xyz - Vertex_ModelView.xyz; L = normalize(lightVec * TBN_Matrix); H = normalize(L + V); gl_Position = ftransform(); }

81 Bump mapping void main() { vec2 texUV = gl_TexCoord[0].xy; // Sample new diffuse Value vec3 baseColor = texture2D(baseTex, texUV).rgb; // Sample normal vec3 N = texture2D(normalTex, texUV.xy).rgb * ; N = normalize(N); // Phong Light float diffuse = clamp(dot(L,N),0.0,1.0); float specular = pow(clamp(dot( H, N), 0.0, 1.0), 16.0); vec3 finalColor = diffuse * baseColor.rgb + specular * baseColor.b; gl_FragColor = vec4(finalColor, 1.0); }

82 Paralax mapping View Ray False Height UV Texture Space

83 Paralax mapping View Ray False Height UV Texture Space Correct

84 Paralax mapping View Ray False Light Ray Height UV Texture Space Correct

85 Paralax mapping View Ray False Light Ray Height UV Texture Space Correct

86 Paralax mapping Paralax mappingParalax mapping Rozszerza koncepcje bump mappingu o dodanie efektu paralaksyRozszerza koncepcje bump mappingu o dodanie efektu paralaksy Wymagają dodatkowej informacji o wysokości powierzchni w danym miejscuWymagają dodatkowej informacji o wysokości powierzchni w danym miejscu Informacje o normalnych mogą być przekazanaInformacje o normalnych mogą być przekazana Zaawansowane modele umożliwiają dodanie self-shadowinguZaawansowane modele umożliwiają dodanie self-shadowingu Różne metodyRóżne metody Paralax offset mappingParalax offset mapping Raytraced / Raymarched ParalaxRaytraced / Raymarched Paralax Relief mappingRelief mapping Paralax Occlusion MappingParalax Occlusion Mapping Cone Step MappingCone Step Mapping Inne zaawansowane metody optymalizacyjneInne zaawansowane metody optymalizacyjne

87 Paralax mapping Paralax offset mappingParalax offset mapping Dokonuje offsetu UV o pewną wartość zależną od wartości height mapy w danym pixeluDokonuje offsetu UV o pewną wartość zależną od wartości height mapy w danym pixelu Aproksymuję prawidłową wartość offsetuAproksymuję prawidłową wartość offsetu Powstają liczne artefaktyPowstają liczne artefakty pływanie teksturypływanie tekstury Artefakty pod małymi kątami dot(E,N)Artefakty pod małymi kątami dot(E,N) dystorsjedystorsje Mało przekonywujące, proste, szybkie, w niektórych zastosowaniach warte uwagiMało przekonywujące, proste, szybkie, w niektórych zastosowaniach warte uwagi Płaskie powierzchniePłaskie powierzchnie

88 Paralax mapping varying vec3 V; void main() { gl_TexCoord[0] = gl_MultiTexCoord0; mat3 TBN_Matrix =gl_NormalMatrix * mat3(tangent, binormal, gl_Normal); vec4 Vertex_ModelView = gl_ModelViewMatrix * gl_Vertex; // Eye vec to TS V = vec3(-Vertex_ModelView) * TBN_Matrix ; V = normalize(V); gl_Position = ftransform(); }

89 Paralax mapping void main() { vec2 texUV = gl_TexCoord[0].xy; // New UV calculation float height = texture2D(bumpTex, texUV).r; float v = height * scaleBias.x - scaleBias.y; texUV += (-V.xy * v); // Sample new diffuse Value vec3 baseColor = texture2D(baseTex, texUV).rgb; vec3 finalColor = baseColor; // Fake Occlusion biasing height = mix(height, 1.0, occlusionBias); finalColor *= height; gl_FragColor = vec4(finalColor, 1.0); }

90 Paralax mapping Raytraced/Raymarched paralaxRaytraced/Raymarched paralax Znajduje prawidłowy offset UV poprzez raytracingZnajduje prawidłowy offset UV poprzez raytracing Na GPU w przestrzeni textury możemy jedynie aproksymować raytracing przez raymarchingNa GPU w przestrzeni textury możemy jedynie aproksymować raytracing przez raymarching Znajdujemy miejsce przecięcia poprzez powolne zbliżanie się do niego poprzezZnajdujemy miejsce przecięcia poprzez powolne zbliżanie się do niego poprzez Binary searchBinary search Linear SearchLinear Search Binary + Linear Search ComboBinary + Linear Search Combo Dla aktualnego pixela poszukujemy w kierunku wyznaczonym przez wektor od oka do pixela rzutowany do przestrzeni textury = Tangent SpaceDla aktualnego pixela poszukujemy w kierunku wyznaczonym przez wektor od oka do pixela rzutowany do przestrzeni textury = Tangent Space Metoda ta rozwiązuje problemMetoda ta rozwiązuje problem ParalaksyParalaksy Stabilności (częściowo przy zachowaniu wysokiej wydajności)Stabilności (częściowo przy zachowaniu wysokiej wydajności) Metoda umożliwia rozwiązanieMetoda umożliwia rozwiązanie CieniowaniaCieniowania SylwetekSylwetek

91 Paralax mapping Relief mappingRelief mapping Poszukuje miejsca przecięciaPoszukuje miejsca przecięcia Liniowo przy stałej liczbie krokówLiniowo przy stałej liczbie kroków Następnie binarnie o stałej liczbie kroków dookoła najlepszego dotąd miejscaNastępnie binarnie o stałej liczbie kroków dookoła najlepszego dotąd miejsca W zależności od ilości kroków może dość do pomyłek == artefaktówW zależności od ilości kroków może dość do pomyłek == artefaktów W sytuacji małego kąta dot(E,N) dokładność znacząco spada przy zbyt małej liczbie krokówW sytuacji małego kąta dot(E,N) dokładność znacząco spada przy zbyt małej liczbie kroków

92 Paralax mapping Paralax Occlusion MappingParalax Occlusion Mapping Wykorzystuje SM3.0Wykorzystuje SM3.0 Zawiera dynamiczne ograniczenia na ilość krokówZawiera dynamiczne ograniczenia na ilość kroków Dla dużych kątów zmniejszamy, dla małych zwiększamyDla dużych kątów zmniejszamy, dla małych zwiększamy Prowadzi przeszukiwanie liniowe z interpolacja danych między krokamiProwadzi przeszukiwanie liniowe z interpolacja danych między krokami Możliwe wiele optymalizacjiMożliwe wiele optymalizacji

93 Paralax mapping Metody opierające się na preprocessingu danychMetody opierające się na preprocessingu danych Kodują optymalną długość kroku przy użyciu wyliczonych uprzednio strukturKodują optymalną długość kroku przy użyciu wyliczonych uprzednio struktur Cone Step MappingCone Step Mapping Distance Sphere MappingDistance Sphere Mapping Etc.Etc. Wydajniejsze jeśli celujemy w wysoką jakośćWydajniejsze jeśli celujemy w wysoką jakość Nie do zastosowania dla hegiht map dynamicznych z racji wymagań preprocessinguNie do zastosowania dla hegiht map dynamicznych z racji wymagań preprocessingu

94 Paralax mapping Rozwiązanie problemuRozwiązanie problemu CieniowaniaCieniowania Dokonujemy dodatkowego raytracingu wektora od światła do pixelaDokonujemy dodatkowego raytracingu wektora od światła do pixela Zapisujemy uzyskaną podczas raytracingu głębokośc powierzchniZapisujemy uzyskaną podczas raytracingu głębokośc powierzchni Porównujemy z głębokością aktualnego pixelaPorównujemy z głębokością aktualnego pixela W zależności od wyniku cieniujemy bądź nieW zależności od wyniku cieniujemy bądź nie

95 Paralax mapping Rozwiązanie problemuRozwiązanie problemu SylwetkiSylwetki SM4.0SM4.0 GS Na krawędziach obiektów tworzy dodatkowe poligonyGS Na krawędziach obiektów tworzy dodatkowe poligony Vertex shader wyciąga poligony wg normalnej sylwetkiVertex shader wyciąga poligony wg normalnej sylwetki Dla dodatkowych poligonów przeprowadzamy raytracing w przestrzeni poligonuDla dodatkowych poligonów przeprowadzamy raytracing w przestrzeni poligonu W razie trafienia zapisujemy wynik jak zwykleW razie trafienia zapisujemy wynik jak zwykle W przeciwnym razie wycinamy dany pixel (tworzymy maske alpha wystającego fragmentu)W przeciwnym razie wycinamy dany pixel (tworzymy maske alpha wystającego fragmentu)

96 Displacement mapping Metody wykorzystujące textury wysokości do przemieszczenia vertexa względem jego normalnej o wartość odczytaną z texturyMetody wykorzystujące textury wysokości do przemieszczenia vertexa względem jego normalnej o wartość odczytaną z textury Rozwiązuje wszystkie problemy modelowania geometrycznego nierównościRozwiązuje wszystkie problemy modelowania geometrycznego nierówności Ograniczenia wydajnościOgraniczenia wydajności Wymaga odpowiednio gęstej siatki modeluWymaga odpowiednio gęstej siatki modelu Wymaga dynamicznej adaptywnej tesselacjiWymaga dynamicznej adaptywnej tesselacji

97 Displacement mapping Kilka sposobów użycia na GPUKilka sposobów użycia na GPU Vertex Texture Fetch (SM3.0)Vertex Texture Fetch (SM3.0) VS czyta z textury wartość displacementu i rusza vertexem w odpowiednią stronęVS czyta z textury wartość displacementu i rusza vertexem w odpowiednią stronę Wymaga gęstej siatkiWymaga gęstej siatki Stosowane w modelowaniu i renderowaniu terenuStosowane w modelowaniu i renderowaniu terenu Często po stronie CPUCzęsto po stronie CPU TesselationTesselation Tesselacja przy uzyciu GS z DX10Tesselacja przy uzyciu GS z DX10 Siatka jest zagęszczana softwareowoSiatka jest zagęszczana softwareowo Następnie vertexy są displacementowane na VSNastępnie vertexy są displacementowane na VS Bardzo wymagające obliczeniowoBardzo wymagające obliczeniowo Hardware Adaptive TesselationHardware Adaptive Tesselation Możliwe sprzętowo od DX11 przy użyciu sprzętowego Tesselatora pracującego z kilkoma reprezentacjami krzywych (quadsmoothing, catmull- clark, NURBS…)Możliwe sprzętowo od DX11 przy użyciu sprzętowego Tesselatora pracującego z kilkoma reprezentacjami krzywych (quadsmoothing, catmull- clark, NURBS…) Najwydajniejsze i zalecane na przyszłośćNajwydajniejsze i zalecane na przyszłość

98 Displacement mapping

99

100

101

102 Studium przypadku FurFur Modelujemy futro (WiP)…Modelujemy futro (WiP)…


Pobierz ppt "Modelowanie Materiałów Michał Drobot Visual Technical Director Reality Pump."

Podobne prezentacje


Reklamy Google