Grafické efekty Jan Zelený Senior Engine Programmer jan.zeleny@bistudio.com Úvodem 2 / 177 Úvodem • Bohemia Interactive - Enfusion 3 / 177 Úvodem • Bohemia Interactive - Enfusion • Mashinky – Vláčková Strategie 4 / 177 Úvodem • Bohemia Interactive - Enfusion • Mashinky – Vláčková Strategie • 6 let v 2K Czech (Mafia II + III) 5 / 177 Úvodem • Bohemia Interactive - Enfusion • Mashinky – Vláčková Strategie • 6 let v 2K Czech (Mafia II + III) • První hra 2003 – U Becherů 6 / 177 Úvodem • Bohemia Interactive - Enfusion • Mashinky – Vláčková Strategie • 6 let v 2K Czech (Mafia II + III) • První hra 2003 – U Becherů • Specializace  Skin / Hair / Eye shader / SSS  Wrinkles / GPU Morphs  Depth of Field / Motion Blur  Water / Deferred decals / Terrain 7 / 177 Grafické efekty ve hrách 8 / 177 • Mnoho změn za pár let. Nové postupy, metody • Jeden z nejdynamičtěji se rozvíjejících oborů v herní tvorbě 9 / 177 Realismus vs stylizace • Realistická grafika 10 / 177 Realismus vs stylizace • Realistická grafika • Physically Based Rendering 11 / 177 Realismus vs stylizace • Realistická grafika • Physically Based Rendering 12 / 52 • Šíření světla • Chování materiálů 12 / 177 Realismus vs stylizace • Stylizovaná grafika 13 / 177 Realismus vs stylizace • Stylizovaná grafika • Mnoho možností, směrů 14 / 177 Realismus vs stylizace • Stylizovaná grafika • Mnoho možností, směrů 15 / 177 Realismus vs stylizace • Stylizovaná grafika • Mnoho možností, směrů 16 / 177 Realismus vs stylizace • Stylizovaná grafika • Mnoho možností, směrů 17 / 177 Realismus vs stylizace • Stylizovaná grafika • Mnoho možností, směrů 18 / 177 Realismus vs stylizace • Stylizovaná grafika • Mnoho možností, směrů • Stejný herní obsah se dá grafikou výrazně odlišit • Cílová skupina • Atmosféra hry • Hardwarové možnosti 19 / 177 Realismus vs stylizace • Stylizovaná grafika • Mnoho možností, směrů • Stejný herní obsah se dá grafikou výrazně odlišit • Cílová skupina • Atmosféra hry • Hardwarové možnosti 20 / 177 Realistická grafika • Geometrie objektu • Přímé nasvětlení • Stíny • Nepřímé nasvětlení a odrazy • Physically based rendering • Optimalizace • Zpracování výsledného obrazu 21 / 177 Realistická grafika • Geometrie objektu • Přímé nasvětlení • Stíny • Nepřímé nasvětlení a odrazy • Physically based rendering • Optimalizace • Zpracování výsledného obrazu 22 / 177 Geometrie objektu - získání 23 / 177 Geometrie objektu - získání • Získání modelu s co nejvíce polygony • Problém modelovat konvenční metodou 24 / 177 Geometrie objektu - získání • Získání modelu s co nejvíce polygony • Problém modelovat konvenční metodou • Sculpting - Zbrush, MudBox + Přirozenější + Adaptivní detaily - Nutnost zjednodušení - Silnější hardware na práci 25 / 177 Geometrie objektu - získání • Získání modelu s co nejvíce polygony • Problém modelovat konvenční metodou • Sculpting - Zbrush, MudBox • Procedurální generování + Variabilita + Úspornost - Výpočetní náročnost 26 / 177 Geometrie objektu - získání • Získání modelu s co nejvíce polygony • Problém modelovat konvenční metodou • Procedurální generování • Scanování + Realismus - Realismus • Sculpting - Zbrush, MudBox 27 / 177 Geometrie objektu - získání • Fotogrammetrie  Rekonstrukce 3D objektů z fotografií 28 / 177 Geometrie objektu - získání • Fotogrammetrie  Rekonstrukce 3D objektů z fotografií + Získání Geometrie i Textur 29 / 177 Geometrie objektu - získání • Fotogrammetrie  Rekonstrukce 3D objektů z fotografií + Získání Geometrie i Textur - Zapečená světla 30 / 177 Geometrie objektu - získání • Fotogrammetrie  Rekonstrukce 3D objektů z fotografií + Získání Geometrie i Textur - Zapečená světla - Jen to, co je vidět 31 / 177 Geometrie objektu - získání • Fotogrammetrie  Rekonstrukce 3D objektů z fotografií + Získání Geometrie i Textur - Zapečená světla - Jen to, co je vidět - Objekt musí existovat :-) 32 / 177 Geometrie objektu - získání • Fotogrammetrie  Rekonstrukce 3D objektů z fotografií + Získání Geometrie i Textur - Zapečená světla - Jen to, co je vidět - Objekt musí existovat :-) - Náchylné na šum, algor. složité 33 / 177 Geometrie objektu - získání • Fotogrammetrie 34 / 177 Geometrie objektu - získání • Fotogrammetrie 35 / 177 Geometrie objektu - získání • Marvelous Designer 36 / 177 Geometrie objektu - získání • Marvelous Designer • Grafik určí „střih“ a kde „sešít“ 37 / 177 Geometrie objektu - získání • Marvelous Designer • Grafik určí „střih“ a kde „sešít“ • Zbytek udělá fyzika 38 / 177 Geometrie objektu - Optimalizace • Zjednodušení modelu pro vykreslení 39 / 177 Geometrie objektu - Optimalizace • Zjednodušení modelu pro vykreslení • Příprava zjednodušeného modelu • Vyexportování Normal map, Height map 40 / 177 Geometrie objektu - Optimalizace • Zjednodušení modelu pro vykreslení • Příprava zjednodušeného modelu • Vyexportování Normal map, Height map • Nástroje • xNormal – free, vypečení map • Simplygon – příprava lowpoly • MudBox, Zbrush, 3dsMax - vše 41 / 177 Realistická grafika • Geometrie objektu • Přímé nasvětlení • Stíny • Nepřímé nasvětlení a odrazy • Physically based rendering • Optimalzace • Zpracování výsledného obrazu 42 / 177 Realistická grafika • Geometrie objektu • Přímé nasvětlení • Stíny • Nepřímé nasvětlení a odrazy • Physically based rendering • Optimalzace • Zpracování výsledného obrazu 43 / 177 Přímé nasvětlení – Struktura povrchu • Struktura povrchu 44 / 177 Přímé nasvětlení – Struktura povrchu • Struktura povrchu • Pouze Diffuse mapa • Normal mapa • Height mapa + Displacement 45 / 177 Přímé nasvětlení – Struktura povrchu • Struktura povrchu • Pouze Diffuse mapa • Normal mapa • Height mapa + Displacement • Parallax mapping jednoduchý Raytracing 46 / 177 Přímé nasvětlení – Hodně světel? • Hodně světel? 47 / 177 Přímé nasvětlení – Hodně světel? • Hodně světel? • Dříve Forward na každý objekt se nejprve aplikují všechna světla, pak se jde na další objekt) 48 / 177 Přímé nasvětlení – Hodně světel? • Později Deffered Shading příprava bufferů obrazovky „GBuffers“, poté iteračně všechna světla jen tam, kam dosáhnou) • Hodně světel? • Dříve Forward na každý objekt se nejprve aplikují všechna světla, pak se jde na další objekt) 49 / 177 Přímé nasvětlení – Hodně světel? • Trendem je využití návrat k jakému si Forward renderingu Rozdělit obrazovku a tvořit seznam světel pro každý díl Compute shadery k dalšímu zefektivnění Tile-based Lighting alias Forward plus 50 / 177 Přímé nasvětlení – Deffered Shading 51 / 177 Přímé nasvětlení – Deffered Shading • Buffery obrazovky • Albedo 52 / 177 Přímé nasvětlení – Deffered Shading • Buffery obrazovky • Albedo • Depth (hloubka scény) 53 / 177 Přímé nasvětlení – Deffered Shading • Buffery obrazovky • Albedo • Depth (hloubka scény) • Normal (směr povrchu) 54 / 177 Přímé nasvětlení – Deffered Shading • Buffery obrazovky • Albedo • Depth (hloubka scény) • Normal (směr povrchu) • Specular (velikost / síla odlesku) PBR - Gloss / Roughness 55 / 177 Přímé nasvětlení – Deffered Shading • Zpracování na závěr • Aplikace Diffuse světla 56 / 177 Přímé nasvětlení – Deffered Shading • Zpracování na závěr • Aplikace Diffuse světla • Specular odlesk / Reflexe 57 / 177 Přímé nasvětlení – Deffered Shading • Zpracování na závěr • Aplikace Diffuse světla • Specular odlesk / Reflexe • Výsledný obraz 58 / 177 Realistická grafika • Geometrie objektu • Přímé nasvětlení • Stíny • Nepřímé nasvětlení a odrazy • Physically based rendering • Optimalizace • Zpracování výsledného obrazu 59 / 177 Realistická grafika • Geometrie objektu • Přímé nasvětlení • Stíny • Nepřímé nasvětlení a odrazy • Physically based rendering • Optimalizace • Zpracování výsledného obrazu 60 / 177 Přímé nasvětlení – Vrhání stínů • Předpočítané light mapy 61 / 177 Přímé nasvětlení – Vrhání stínů • Předpočítané light mapy • Dynamické lightmapy (vitráže, dým) 62 / 177 Přímé nasvětlení – Vrhání stínů • Předpočítané light mapy • Dynamické lightmapy (vitráže, dým) • Geometrické metody Pomocí volume tělesa a stencil bufferu 63 / 177 Přímé nasvětlení – Vrhání stínů • Předpočítané light mapy • Dynamické lightmapy (vitráže, dým) • Geometrické metody Pomocí volume tělesa a stencil bufferu • Shadow depth mapy V mnoha variantách dnes nejrozšířenější 64 / 177 Přímé nasvětlení – Vrhání stínů • Předpočítané light mapy • Dynamické lightmapy (vitráže, dým) • Geometrické metody Pomocí volume tělesa a stencil bufferu • Shadow depth mapy V mnoha variantách dnes nejrozšířenější • Raytracing Zatím vzácně (screen space, obličej, vlasy, ...) 65 / 177 Přímé nasvětlení – Vrhání stínů • Shadow depth map metody (textura s hloubkou) 66 / 177 Přímé nasvětlení – Vrhání stínů • Shadow depth map metody (textura s hloubkou) • CSM, PSSM, Per Object, PSM... 67 / 177 Přímé nasvětlení – Vrhání stínů • Shadow depth map metody (textura s hloubkou) • CSM, PSSM, Per Object, PSM... • Většina se stejným principem 68 / 177 Přímé nasvětlení – Vrhání stínů • Shadow depth map metody (textura s hloubkou) • CSM, PSSM, Per Object, PSM... • Většina se stejným principem • Každá metoda má své výhody i nevýhody, případy použití • V praxi se využívá kombinace k dosažení lepších výsledků 69 / 177 Přímé nasvětlení – Vrhání stínů • Pokročilejší metody & problémy 70 / 177 Přímé nasvětlení – Vrhání stínů • Pokročilejší metody & problémy • Area shadows (penumbra) – soft shadows 71 / 177 Přímé nasvětlení – Vrhání stínů • Pokročilejší metody & problémy • Area shadows (penumbra) – soft shadows • Transparentní objekty (kouř) – depth opacity maps 72 / 177 Přímé nasvětlení – Vrhání stínů • Pokročilejší metody & problémy • Area shadows (penumbra) – soft shadows • Transparentní objekty (kouř) – depth opacity maps • Barevné stíny (vitráže) – light maps, raytrace 73 / 177 Realistická grafika • Geometrie objektu • Přímé nasvětlení • Stíny • Nepřímé nasvětlení a odrazy • Physically based rendering • Optimalizace • Zpracování výsledného obrazu 74 / 177 Realistická grafika • Geometrie objektu • Přímé nasvětlení • Stíny • Nepřímé nasvětlení a odrazy • Physically based rendering • Optimalizace • Zpracování výsledného obrazu 75 / 177 Nepřímé nasvětlení a odrazy - Radiozita 76 / 177 Nepřímé nasvětlení a odrazy - Radiozita  Každá nasvětlená plocha se stává zdrojem světla 77 / 177 Nepřímé nasvětlení a odrazy - Radiozita  Každá nasvětlená plocha se stává zdrojem světla  Metoda předpočítaných vztahů který polygon ovlivňuje který polygon z kolika procent) Jakmile se plocha nasvítí, propaguje energii dalším 78 / 177 Nepřímé nasvětlení a odrazy - Radiozita  Každá nasvětlená plocha se stává zdrojem světla  Metoda předpočítaných vztahů který polygon ovlivňuje který polygon z kolika procent) Jakmile se plocha nasvítí, propaguje energii dalším • V komerčních hrách se používá např. Enlighten. Své řešení ale obsahuje většina enginů včetně Unity. 79 / 177 Nepřímé nasvětlení a odrazy - Radiozita • Dynamické objekty neodrážejí! 80 / 177 Nepřímé nasvětlení a odrazy - Radiozita • Dynamické objekty neodrážejí! • Umístí se „Light probes“ 81 / 177 Nepřímé nasvětlení a odrazy - Radiozita • Dynamické objekty neodrážejí! • Umístí se „Light probes“ • V nich se vypočítá odkud jde kolik světla (low freq) 82 / 177 Nepřímé nasvětlení a odrazy - Radiozita • Dynamické objekty neodrážejí! • Umístí se „Light probes“ • V nich se vypočítá odkud jde kolik světla (low freq) • Ukládání do Spherical harmonics 83 / 177 Nepřímé nasvětlení a odrazy - Radiozita • Dynamické objekty neodrážejí! • Umístí se „Light probes“ • V nich se vypočítá odkud jde kolik světla (low freq) • Ukládání do Spherical harmonics • Dynamické objekty se nasvětlují podle nejbližších prób. 84 / 177 Nepřímé nasvětlení a odrazy - Radiozita • Metoda 3D Voxelizace 85 / 177 Nepřímé nasvětlení a odrazy - Radiozita • Metoda 3D Voxelizace Převod scény do 3D mřížky Každý voxel šíří energii do sousedních, příp. ji odrazí, rozptýlí 86 / 177 Nepřímé nasvětlení a odrazy - Radiozita • Metoda 3D Voxelizace Převod scény do 3D mřížky Každý voxel šíří energii do sousedních, příp. ji odrazí, rozptýlí • V komerční sféře vytvořeno od nVidia pro UDK „Voxel Cone Tracing“ youtub e https://www.youtube.com/watch?v=fAsg_xNzhcQ 87 / 177 Realistická grafika • Geometrie objektu • Přímé nasvětlení • Stíny • Nepřímé nasvětlení a odrazy • Physically based rendering • Optimalizace • Zpracování výsledného obrazu 88 / 177 Realistická grafika • Geometrie objektu • Přímé nasvětlení • Stíny • Nepřímé nasvětlení a odrazy • Physically based rendering • Optimalizace • Zpracování výsledného obrazu 89 / 177 Physically based rendering - Trendy 90 / 177 Physically based rendering - Trendy • Trendem je co možná nejvíce informací pro render získat na základě alespoň zjednodušených fyzikálních vlastností a jevů. 91 / 177 Physically based rendering - Trendy • Trendem je co možná nejvíce informací pro render získat na základě alespoň zjednodušených fyzikálních vlastností a jevů. • Grafik vytvářející jednotlivé 3D modely čím dál méně ovlivňuje finální vzhled hry v konkrétních situacích. Výsledný vzhled určuje engine a grafik nastavující světelné podmínky, vlastnosti materiálu a postprocesy. 92 / 177 Physically based rendering - Materiály • Komplexní shadery na každém objektu 93 / 177 Physically based rendering - Materiály • Komplexní shadery na každém objektu • Potřeba konzistence při různém nasvětlení 94 / 177 Physically based rendering - Microfacets 95 / 177 Physically based rendering - Microfacets • Teorie Microfacets - mikro-plošky (Naty Hoffman) 96 / 177 Physically based rendering - Microfacets • Teorie Microfacets - mikro-plošky (Naty Hoffman) • Drobné plošky odrážející světlo 97 / 177 Physically based rendering - Microfacets • Teorie Microfacets - mikro-plošky (Naty Hoffman) • Drobné plošky odrážející světlo • Statistické řešení 98 / 177 Physically based rendering - Microfacets • Teorie Microfacets - mikro-plošky (Naty Hoffman) • Drobné plošky odrážející světlo • Statistické řešení • Určuje lesk / mat povrchu • „Glossiness / Roughness“ 99 / 177 Physically based rendering - Microfacets • Teorie Microfacets - mikro-plošky (Naty Hoffman) • Drobné plošky odrážející světlo • Statistické řešení • Určuje lesk / mat povrchu • „Glossiness / Roughness“ • Zachování energie 100 / 177 Physically based rendering - Microfacets • Difúzní vs Reflexní barva (kovy) 101 / 177 Physically based rendering - Microfacets • Difúzní vs Reflexní barva (kovy) • U téměř všech materiálů - krom kovů vstupuje světlo pod povrch a „obarvuje se“ 102 / 177 Physically based rendering - Microfacets • Difúzní vs Reflexní barva (kovy) • U téměř všech materiálů - krom kovů vstupuje světlo pod povrch a „obarvuje se“ • „Metalness“ 103 / 177 Physically based rendering - Microfacets • Difúzní vs Reflexní barva (kovy) • U téměř všech materiálů - krom kovů vstupuje světlo pod povrch a „obarvuje se“ • „Metalness“ • Vystupující světlo je pak více všesměrové 104 / 177 Physically based rendering - Microfacets • Difúzní vs Reflexní barva (kovy) • U téměř všech materiálů - krom kovů vstupuje světlo pod povrch a „obarvuje se“ • „Metalness“ • Vystupující světlo je pak více všesměrové • Zachování energie 105 / 177 Physically based rendering - Textury • Kalibrování textur 106 / 177 Physically based rendering - Textury • Kalibrování textur pomocí kalibrační tabulky 107 / 177 Physically based rendering - Textury • Kalibrování textur pomocí kalibrační tabulky • Konzistentní při různých podmínkách focení 108 / 177 Physically based rendering - Textury • Online databáze 109 / 177 Physically based rendering - Textury • Online databáze • Fyzikálně korektní materiály 110 / 177 Physically based rendering - Textury • Online databáze • Fyzikálně korektní materiály • Nasvětlování, HDR, optimalizace pro mobily 111 / 177 Realistická grafika • Geometrie objektu • Přímé nasvětlení • Stíny • Nepřímé nasvětlení a odrazy • Physically based rendering • Optimalizace • Zpracování výsledného obrazu 112 / 177 Realistická grafika • Geometrie objektu • Přímé nasvětlení • Stíny • Nepřímé nasvětlení a odrazy • Physically based rendering • Optimalizace • Zpracování výsledného obrazu 113 / 177 Optimalizace - Zjednodušení 114 / 177 Optimalizace - Zjednodušení Urychlení vykreslování • LOD – geometrie 115 / 177 Optimalizace - Zjednodušení Urychlení vykreslování • LOD – geometrie • MipMap – textura 116 / 177 Optimalizace - Zjednodušení Urychlení vykreslování • LOD – geometrie • MipMap – textura • Shader 117 / 177 Optimalizace - Zjednodušení Urychlení vykreslování • LOD – geometrie • MipMap – textura • Shader V produkční fázi podle platformy Za běhu podle vzdálenosti / nastavení 118 / 177 Optimalizace – Identifikace problémů v Unity 119 / 177 Optimalizace – Identifikace problémů v Unity • Rendering Statistics Window • Tris & Verts, Batches 120 / 177 • Rendering Statistics Window • Tris & Verts, Batches • Frame Debugger • Draw Calls, playback Optimalizace – Identifikace problémů v Unity 121 / 177 Optimalizace – Identifikace problémů Obecně 122 / 177 Optimalizace – Identifikace problémů Obecně • nVidia Nsight (nástupce PerfHud) • Timing CPU&GPU, Bottlenecks, • Memory, Buffers, Shaders, CUDA … • Integrace do Visual Studia 123 / 177 Optimalizace – Identifikace problémů Obecně • nVidia Nsight (nástupce PerfHud) • Timing CPU&GPU, Bottlenecks, • Memory, Buffers, Shaders, CUDA … • Integrace do Visual Studia • Intel Graphics Performance Analyzer • Podobné, jen pro Intel. Jinak PS/VS time 124 / 177 Optimalizace – Identifikace problémů Obecně • nVidia Nsight (nástupce PerfHud) • Timing CPU&GPU, Bottlenecks, • Memory, Buffers, Shaders, CUDA … • Integrace do Visual Studia • Intel Graphics Performance Analyzer • Podobné, jen pro Intel. Jinak PS/VS time • GPU Perf Studio – ATI • Podobné nSightu, jen AMD 125 / 177 Optimalizace – Identifikace problémů • Co hledáme? 126 / 177 Optimalizace – Identifikace problémů • Co hledáme? • Příliž dlouhé Draw Calls (>1ms) 127 / 177 Optimalizace – Identifikace problémů • Co hledáme? • Příliž dlouhé Draw Calls (>1ms) • Zjistíme v čem je problém – Shader logic, Frame buffer, L2 cache,… ? 128 / 177 Optimalizace – Identifikace problémů • Co hledáme? • Příliž dlouhé Draw Calls (>1ms) • Zjistíme v čem je problém – Shader logic, Frame buffer, L2 cache,… • Závislosti – Následuje efekt, který využívá výsledek hned předchozí operace? 129 / 177 Optimalizace – Identifikace problémů • Co hledáme? • Příliž dlouhé Draw Calls (>1ms) • Zjistíme v čem je problém – Shader logic, Frame buffer, L2 cache,… • Závislosti – Následuje efekt, který využívá výsledek hned předchozí operace? • Problémy • Stejné nástroje i při hledání chyb, glitchů, apod. 130 / 177 Optimalizace – Zásady 131 / 177 Optimalizace – Zásady • Naučit se s těmito nástroji 132 / 177 Optimalizace – Zásady • Naučit se s těmito nástroji • Nevykreslovat co není nutné (zahazovat na CPU, využívat předchozí snímky, …) 133 / 177 Optimalizace – Zásady • Naučit se s těmito nástroji • Nevykreslovat co není nutné (zahazovat na CPU, využívat předchozí snímky, …) • Minimalizovat Překreslování (Fillrate limit GPU, Depth pass?, Rozlišení mezivýsledků) 134 / 177 Optimalizace – Zásady • Naučit se s těmito nástroji • Nevykreslovat co není nutné (zahazovat na CPU, využívat předchozí snímky, …) • Minimalizovat Překreslování (Fillrate limit GPU, Depth pass?, Rozlišení mezivýsledků) • LODovat (Vertex processing limit, počet per Vertex parametrů) 135 / 177 Optimalizace – Zásady • Naučit se s těmito nástroji • Nevykreslovat co není nutné (zahazovat na CPU, využívat předchozí snímky, …) • Minimalizovat Překreslování (Fillrate limit GPU, Depth pass?, Rozlišení mezivýsledků) • LODovat (Vertex processing limit, počet per Vertex parametrů) • Batche (unity) – shlukování geometrie dohromady, vykreslování naráz (static/dynamic) 136 / 177 Optimalizace – Zásady • Naučit se s těmito nástroji • Nevykreslovat co není nutné (zahazovat na CPU, využívat předchozí snímky, …) • Minimalizovat Překreslování (Fillrate limit GPU, Depth pass?, Rozlišení mezivýsledků) • LODovat (Vertex processing limit, počet per Vertex parametrů) • Batche (unity) – shlukování geometrie dohromady, vykreslování naráz (static/dynamic) • Instancing – vykreslování více instancí jednoho objektu naráz (stromy např.) 137 / 177 Optimalizace – Zásady • Naučit se s těmito nástroji • Nevykreslovat co není nutné (zahazovat na CPU, využívat předchozí snímky, …) • Minimalizovat Překreslování (Fillrate limit GPU, Depth pass?, Rozlišení mezivýsledků) • LODovat (Vertex processing limit, počet per Vertex parametrů) • Batche (unity) – shlukování geometrie dohromady, vykreslování naráz (static/dynamic) • Instancing – vykreslování více instancí jednoho objektu naráz (stromy např.) • Co nejméně materiálů (spojování textur do jedné) 138 / 177 Optimalizace – Zásady • Naučit se s těmito nástroji • Nevykreslovat co není nutné (zahazovat na CPU, využívat předchozí snímky, …) • Minimalizovat Překreslování (Fillrate limit GPU, Depth pass?, Rozlišení mezivýsledků) • LODovat (Vertex processing limit, počet per Vertex parametrů) • Batche (unity) – shlukování geometrie dohromady, vykreslování naráz (static/dynamic) • Instancing – vykreslování více instancí jednoho objektu naráz (stromy např.) • Co nejméně materiálů (spojování textur do jedné) • Vypékání všeho nedynamického (nasvětlení levelu do textur / vertex color ?) 139 / 177 Realistická grafika • Geometrie objektu • Přímé nasvětlení • Stíny • Nepřímé nasvětlení a odrazy • Physically based rendering • Optimalizace • Zpracování výsledného obrazu 140 / 177 Realistická grafika • Geometrie objektu • Přímé nasvětlení • Stíny • Nepřímé nasvětlení a odrazy • Physically based rendering • Optimalizace • Zpracování výsledného obrazu 141 / 177 Zpracování obrazu - PostProcesy • Nejjednodušší postFx je tónování obrazu 142 / 177 Zpracování obrazu - PostProcesy • Nejjednodušší postFx je tónování obrazu • Mafia 1 – obarvení jen pomocí barvy světla 143 / 177 Zpracování obrazu - PostProcesy • Nejjednodušší postFx je tónování obrazu • Mafia 1 – obarvení jen pomocí barvy světla • Mafia 2 – jednoduché obarvení post-processem 144 / 177 Zpracování obrazu - PostProcesy • Nejjednodušší postFx je tónování obrazu • Mafia 1 – obarvení jen pomocí barvy světla • Mafia 2 – jednoduché obarvení post-processem • Grafici by ale chtěli: 145 / 177 Zpracování obrazu - Color grading 146 / 177 Zpracování obrazu - Color grading • Překladová tabulka (3D textura) kde XYZ ~ RGB 147 / 177 Zpracování obrazu - Color grading • Překladová tabulka (3D textura) kde XYZ ~ RGB • Tabulka se rozbalí do 2D a ukryje do screenshotu ze hry 148 / 177 Zpracování obrazu - Color grading • Překladová tabulka (3D textura) kde XYZ ~ RGB • Tabulka se rozbalí do 2D a ukryje do screenshotu ze hry • Screenshot se upraví třeba ve photoshopu. 149 / 177 Zpracování obrazu - Color grading • Překladová tabulka (3D textura) kde XYZ ~ RGB • Tabulka se rozbalí do 2D a ukryje do screenshotu ze hry • Screenshot se upraví třeba ve photoshopu. • Výsledek se vyjme a použije v shaderu jako překladová tabulka 150 / 177 Zpracování obrazu - Color grading • Přečte se barva obrazu, použije se jako souřadnice do překladové tabulky [červená, zelená, modrá] → [x,y,z] a přečtená barva v tabulce se pak aplikuje. 151 / 177 Zpracování obrazu - HDR • High Dynamic Range + Tonemapping 152 / 177 Zpracování obrazu - HDR  Formát Backbufferu namísto R8G8B8X8 -> R16G16B16A16F 153 / 177 Zpracování obrazu - HDR  Formát Backbufferu namísto R8G8B8X8 -> R16G16B16A16F  HDR data -> Tone mapping (blue shift) -> LDR buffer 154 / 177 Zpracování obrazu - HDR  Formát Backbufferu namísto R8G8B8X8 -> R16G16B16A16F  HDR data -> Tone mapping (blue shift) -> LDR buffer  Dynamické přizpůsobování expozice – problémy s kolísáním, histogramem 155 / 177 Zpracování obrazu - HDR  Formát Backbufferu namísto R8G8B8X8 -> R16G16B16A16F  HDR data -> Tone mapping (blue shift) -> LDR buffer  Dynamické přizpůsobování expozice – problémy s kolísáním, histogramem  Data pro Bloom effekt 156 / 177 Zpracování obrazu - HDR  Formát Backbufferu namísto R8G8B8X8 -> R16G16B16A16F  HDR data -> Tone mapping (blue shift) -> LDR buffer  Dynamické přizpůsobování expozice – problémy s kolísáním, histogramem  Data pro Bloom effekt  Složitější nastavení scény 157 / 177 Zpracování obrazu - SSAO • Screen Space Ambient Occlusion • Zatmavení koutů. Snaha o napodobení měkkého světla oblohy 158 / 177 Zpracování obrazu - SSAO • Bez 159 / 177 Zpracování obrazu - SSAO • S 160 / 177 Zpracování obrazu - SSAO • SSAO 161 / 177 Zpracování obrazu – Vyhlazení (Anti Aliasing) • Bez 162 / 177 Zpracování obrazu – Vyhlazení (Anti Aliasing) • Bez • FXAA / SMAA Post process 163 / 177 Zpracování obrazu – Vyhlazení (Anti Aliasing) • Bez • FXAA / SMAA Post process • TXAA Kombinuje předchozí snímky 164 / 177 Zpracování obrazu – Vyhlazení (Anti Aliasing) • Bez • FXAA / SMAA Post process • TXAA Kombinuje předchozí snímky • MSAA / SSAA Sub pixel 165 / 177 Zpracování obrazu – Vyhlazení (Anti Aliasing) 166 / 177 Zpracování obrazu – Depth Of Field 167 / 177 Zpracování obrazu – Depth Of Field • Fyzikálně korektní Bokeh • F-Stop, Full Frame, Ohnisková vzdálenost, Počet lamel, ... 168 / 177 Zpracování obrazu – Depth Of Field • Váhování pro potlačení přetékání do z popředí do pozadí • Více průchodů 169 / 177 Zpracování obrazu – Depth Of Field • Váhování pro potlačení přetékání do z popředí do pozadí • Fyzikální vlastnosti clony 170 / 177 Zpracování obrazu – Depth Of Field - M3 171 / 177  Marschnerovi rovnice  Light scattering from Human Hair Fibers  Statistická metoda  Tři složky:  R – Odraz  TT – Průchod skrz  TRT – Vnitřní odraz 172 / 177 Zpracování obrazu – Hair shader  Marschnerovi rovnice  Light scattering from Human Hair Fibers  Statistická metoda  Tři složky:  R – Odraz  TT – Průchod skrz  TRT – Vnitřní odraz  Tangent mapa místo Normal map 173 / 177 Zpracování obrazu – Hair shader  Marschnerovi rovnice  Light scattering from Human Hair Fibers 174 / 177 Zpracování obrazu – Hair shader 175 / 177 Zpracování obrazu – Hair shader  Stíny pomocí fake Sub Surface Scatteringu + PBR materiál  Metodou v Image space: Stíny do textury → Rozostřit → Aplikovat zpět změkčené stíny spolu s barevným posunem Jorge Jimenez 2009 – Screen-Space Perceptual Rendering of Human Skin 176 / 177 Zpracování obrazu – Skin shader  Využití přesnějšího Sub Surface Scatteringu – Prosvětlení materiálu  Metodou pomocí Shadow Depth map: Porovnání vzdálenosti mezi pozorovaným bodem a vzdáleností od světla v shadow mapě 177 / 177 Zpracování obrazu – Skin shader 178 / 177 Zpracování obrazu – Sub Surface Scattering Na závěr https://vimeo.com/188343452 • Mafia III Facial Animation Reel • Face anims • Depth of Field • Hair shader • Skin shader Díky ! Dotazy ? jan.zeleny@bistudio.com