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
Rendering Pipeline 1. Načtení modelu –Vertex data: Vertex coords, vertex normals, texture coords –Faces: vertex indices 2. Nastavení parametrů –Transformace –Pozice a parametry světel –Materiály a textury 3. ???? 4. Obraz! PHA cvičení 9 3
GPU Pipeline PHA cvičení 9 4
Stínování Jakou barvu má mít ten který bod na povrchu? Mnoho možností podle aplikace –šrafování –false-colour –solid colour Pro hry zpravidla snaha o realistický vzhled Simulace osvětlení PHA cvičení 9 5
Osvětlení V Unity vestavěné: –Lambert –Blinn-Phong Vstupní data: –směr k světlu, normála povrchu, barva povrchu –směr ke kameře, lesklost PHA cvičení 9 6
Shader model Standardní postup při výpočtu osvětlení: 1. Vertex shader –aplikuje transformace na pozice, normály a další data 2. Primitive assembly & rasterizer –Sestaví z vertexů primitiva, rasterizuje je na obrazovku a interpoluje výstupní data z VS mezi pixely 3. Fragment (pixel) shader –Z interpolovaných dat počítá výsledné osvětlení a nastaví barvu PHA cvičení 9 7
Shadery v Unity ShaderLab fixní shadery –nastavení parametrů vestavěných shaderů, texturování –neumožňuje žádné složitější operace mimo texturování Cg shadery –plná kontrola nad vykreslováním (téměř) –píše se přímo VS a FS –obtížná spolupráce s vestavěným osvětlením Surface shadery –interagují s osvětlením –programově nastaví parametry osvětlovacích modelů pro každý pixel –umožňují i vertex transformace a barevné transformace PHA cvičení 9 8
Programování Otevřít projekt Použijeme Surface Shader Nastavíme: –albedo –spekularitu –emisi (simulace odrazu) Dále: –vertex transformace –barevná transformace PHA cvičení 9 9
Co dál? Vertex shadery –procedurální animace na vertex úrovni –skinning Fragment (surface) shadery –normal mapping, parallax mapping –multitextury, texturové animace, screen-space textury Barevné efekty Post-process efekty (pouze Pro verze) –motion blur, depth-of field, film grain PHA cvičení 9 10