Designing a Shading System. David Larsson

Relevanta dokument
Procedurell renderingsmotor i Javascript och HTML5

Shaders. Renderingssystem. Renderingssystem. Renderingssystem. Hårdvara för 3D-rendering. Hårdvara för 3D-rendering

Shaders. Gustav Taxén

Procedurell grottgenerator och eld i GLSL. Marcus Widegren

Grafiska pipelinens funktion

Tentamen TNM061, 3D-grafik och animering för MT2. Onsdag 20/ kl SP71. Inga hjälpmedel

HAND TRACKING MED DJUPKAMERA

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Realtidssystem HT03. Vad är realtidssystem? Inbyggda system. Att programmera, Tasks (Uppgifter) Realtidssystem kräver analys

Classes och Interfaces, Objects och References, Initialization

Procedurell 3D-eld på grafikkortet

The Awakening Short Film

Teknik för avancerade datorspel!

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

PROCEDUELL TERRÄNG. Proceduella metoder för bilder (TNM084) Jimmy Liikala Institutionen för teknik och naturvetenskap

Avalanche Studios. OpenGL. Vår teknik. Våra spel. Lite inspiration... Stora, öppna spelvärldar. Sandbox-gameplay. Hög audiovisuell standard

Teknik för avancerade datorspel!

Din idé Vår verklighet VIRTUELLT

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Pipelining i Intel Pentium II

Klient/server. Översikt. Lektion 1: Webbtekniker från Microsoft. Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning.

Spelutveckling 3d-grafik och modellering. Grunder för 3d-grafik Blender Animering

Grafik raytracing. Mattias Axblom.

Procedurell Terräng med LOD i OpenGL 4

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

Cel-shadings påverkan på effektivitet inom animerad film

Information Coding / Computer Graphics, ISY, LiTH CUDA. En lösning för generella beräkningar. En introduktion: Programmingsmodell och språk

Inledande programmering med C# (1DV402) Introduktion till C#

Tentamen TNM061, 3D-grafik och animering för MT2. Tisdag 3/ kl 8-12 TP51, TP52, TP54, TP56, TP41, TP43. Inga hjälpmedel

Kv. Ogräset. Martin Stenmarck,

RTG-formatet Gustav Taxén,

Här är ett väldigt bra tidpunkt att spara scenen. Jag har valt att bygga ett litet pyramidtorn.

Introduktion till Datalogi DD1339. Föreläsning 1 8 sept 2014

VRay för SketchUp Camilla Ravenna / André Ravenna Alto Punto 2014 Alto Punto Askims Stationsväg Askim

Kort introduktion till POV-Ray, del 1

A comparison study between OpenGL 4.3, OpenGL ES 3.0 and WebGL 1.0 With focus on rendering pipeline and texture handling

Tentamen den 18 mars svar Datorteknik, EIT070

Geometry shaders! och Tesselation shaders!

Fotorealistiska bilder 1 PV360 kap 1 7: Grunder samt material och dekaler i Photoview 360

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

Geometry shaders! och Tesselation shaders!

Det finns många flaggor till g++,

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

The Procedural Arctic

Erbjuder studenterna en möjlighet att lära sig grunderna i polygonmodellering, samt erfarenhet av att använda ett modernt 3D-modelleringsverktyg.

Introduktion till arv

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Skinning and Animation

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Introduktion till programmering. Programspråk och paradigmer

Android översikt. TDDD80 Mobila och sociala applikationer

Information Coding / Computer Graphics, ISY, LiTH. Compute shaders!! Framtiden för GPU computing eller sen efterapning av Direct Compute?

Abstrakta shadergrafer för hårdvarushaders med multipla shaderspråk Richard Svensson

MÄRKSPRÅK OCH STILMALLAR II EXAMINATIONSUPPGIFT 1 HELENE BROGELAND

Frågor till filmen Vi lär oss om: Ljus

Björn Abelli Programmeringens grunder med exempel i C#

Hantering av hazards i multi-pipelines

C-UPPSATS. Cinematic Animation in a Production Pipeline

Introduktion till programmering och Python Grundkurs i programmering med Python

Universe Engine Rapport

OOP Objekt-orienterad programmering

Föreläsning 2 Programmeringsteknik och C DD1316

Introduktion till After Effects

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Rendera med mental ray

Variabler, värden och typer

Pipelining i Intel 80486

Variabler, värden och typer

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

F5: Högnivåprogrammering

VRay för Max Camilla Ravenna / André Ravenna Alto Punto 2012 Alto Punto Askims Stationsväg Askim

F5: Högnivåprogrammering

Grafiska pipelinen. Edvin Fischer

Föreläsning 2 Datastrukturer (DAT037)

Kapitel 4 Arkivmenyn Innehåll

Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning

GUIDE LJUSKÄLLOR Fo Karolinska

Laboration - Shaders

Subtyping och variance. Objekt-orienterad programmering och design Alex Gerdes, 2018

NYHETER I INVENTOR 2012

Spelutveckling - Scenegrafer. Scenegrafer Optimeringar Culling

Big Data för Fordon och Transport! Vår Digitala Framtid, Trafikverket!! Björn Bjurling, SICS Swedish ICT, !

Flera processer. Minneshantering. Trashing kan uppstå ändå. Ersätta globalt

Mittuniversitetet Institutionen informationsteknologi och medier

Modeller och teknik Grundl program och gränssnitt. Matlab-tips

För att komma igång. Ta skissen från designlabben eller motsvarande och lägg in den i front/side/top fönstret/fönstrena.

Superscalar Bra: Hårdvaran löser allt: Hårdvara detekterar poten6ell parallellism av instruk6oner Hårdvara försöker starta exekvering (issue) av så

Utbildningskatalog för SPF Syrenen. Höstprogrammet Allmän Utbildning. Kjell Höddelius

Lambdas. (och fler design patterns) Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017

Föreläsning 15: Parallella subrutiner. Parallellitet. Varför parallella underprogram?

EXAMENSARBETE. Tekniker för fotorealistisk rendering. Christoffer Lindvall. Teknologie kandidatexamen Datorgrafik

Lektion 1: Möt Robo! Områden: Robotteknik, ingenjörsteknik mekanisk design

Procedurell modellering i visualiseringsprocessen. Sandra Stendahl

LANDING ZONE IV (v1.0, uppgift 4 av 4) för 3D Animering B 1112

Q I t. Ellära 2 Elektrisk ström, kap 23. Eleonora Lorek. Ström. Ström är flöde av laddade partiklar.

Effektiva renderingstekniker av subsurface scattering med mental ray

FK Elektromagnetism, Fysikum, Stockholms universitet Tentamensskrivning (1:a omtentan), tisdag 16 juni 2015, kl 9:00-14:00

FK Elektromagnetism och vågor, Fysikum, Stockholms Universitet Tentamensskrivning, måndag 21 mars 2016, kl 9:00-14:00

Datorgrafik, kandidat 2018

Transkript:

Designing a Shading System David Larsson

Överblick Genomgång av rendering och shading Designval Implementationsdetaljer

Rendering Omvandla en konceptuell 3d-värld till en bild

Geometri

Kamera

Något saknas?

Något saknas? Belysning Materialbeskrivningar

Shading Stort begrepp Traditionellt sett ljus- och materialinteraktion Används ofta om andra saker än material (partiklar, kameror mm) I resten av presentationen betyder shading enbart material och belysning

Indata för Shading Material Fragmentets position i världen Ytnormal Riktning till belysning Riktning till betraktaren Annat spännande Allt detta tillsammans kallas ytfragment

Materialmodeller Finns modeller för många olika sammanhang. Allt från väldigt enkla till extremt komplexa Diffusa, reflektiva, anisotropiska mm. Även icke-fysikaliska som ger exempelvis tecknad film -utseende

Materialmodeller

Texturering Material är sällan homogena

Textureringskoordinater Platta ut föremålets yta på ett plan

3D-texturering Bra för material med djup Marmor, trä mm Ofta procedurella, svårt att fotografera, enorma datamängder

3D-texturering

Shading Brukade vara fix modell (tänk gamla 3dgrafikkort, gammal opengl-belysning) Behöver mer inställningsmöjligheter än andra parametrar i en renderare.

Exempel

Designval

Exjobbet Designa ett shadingsystem för Turtle, en renderare till Maya Resultat som liknar Mayas Bra prestanda Trådsäkert Enkelt att göra nya shaders

Shadinglösningar Fix modell Shading-programspråk Träd- och byggklossmodeller

Fix modell Oflexibelt Slöseri med prestanda

Programspråkslösning surface plastic( float Ks=.5, Kd=.5, Ka=1, roughness=.1; color specularcolor=1 ) { point Nf, V; Nf = faceforward( normalize(n), I ); V = -normalize(i); Oi = Os; Ci = Os * ( Cs * (Ka*ambient() + Kd*diffuse(Nf)) + specularcolor * Ks * specular(nf,v,roughness) ); }

Programspråkslösning Inarbetat (Renderman shading language) Svårt för ickeprogrammerare Kan användas som back-end till Byggkloss-modell Kräver egen kompilator/interpretator

Byggklossmodell

Byggklossmodell Enkelt för artister Enkelt att stödja Mayas shaders Viss overhead

Byggklossar eller språk? Måste stödja byggklossar i slutet ändå Bygga eget språk tar tid och ger ofta undermåligt resultat Använda färdigt språk (lua, python etc.) ger minskad kontroll Kompilering i efterhand öppnar optimeringsmöjligheter

Byggkloss-lösning i C++ C++ är bekant och pålitligt Inga obehagliga överraskningar Enkelt för mig och resten av folket Statiskt Inget hindrar att en byggkloss exekverar ett programspråk

Implementationsdetaljer

Indata Fragmentdatan kopplas automatiskt in

Laddande av nätverk Laddning konvertera mayas nätverk till eget format. Det enda mayaspecifika i de bästa av världar. Länkning omvandla textreferenser till riktiga referenser för prestanda Post-länkning förberäkna, propagera konstanter mm.

Exekvering av nätverk Overhead i att byta shader Bättre kod- och data-cache prestanda Kan öka prestandan genom att spara undan och sortera fragment Kan SIMD-exekvera

Exekvering av nätverk Problem med sekundärstrålar i raytracing Reflektioner och liknande går att lösa delvis, men adaptiv sampling är svårt

Trådningsproblem Många fällor Akta sig för statisk data Minnesallokeringar är dyra, använd stacken och trådspecifika minnespooler av olika slag Farligt att cacha värden i nätverken

Resultat Svårt att jämföra Mycket spelar in (strålskickande, texturhantering, kvalitet på koden i noderna) Overhead i dataskickande mellan klossar går att mäta Står sig bra i de tester jag gjort (resultat i rapporten)

Resultat Skalar bra Enkelt att skapa nya shaders Emulerar Maya bra (med lite hjälp från Alias) Används i produktion

Framtida arbete Smarta cachar Automatisk konstantpropagering Smartare hantering av implicit fragmentdata (inte beräkna saker som aldrig används) Titta på andra anropskonventioner SIMD-shading med sekundärstrålar

Resultat

Resultat

Resultat

Resultat

Tack till Illuminate Labs Folket bakom bilderna (Engine Room, Vetor Zero, Izmeth Siddek, E3DI, Mats)

Frågor?