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

Relevanta dokument
Shaders. Gustav Taxén

Grafiska pipelinens funktion

Laboration - Shaders

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

Mälardalens högskola Västerås, Maj 2006 Institutionen för Datavetenskap och Elektronik, IDE Student: Alexander Andersson E-post:

Geometry shaders! och Tesselation shaders!

Geometry shaders! och Tesselation shaders!

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

Designing a Shading System. David Larsson

Procedurell 3D-eld på grafikkortet

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

Repetition + lite av varje. Ulf Assarsson Department of Computer Engineering Chalmers University of Technology

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

Realtidsskuggalgoritmer för virtuella 3D-världar på modern grafikhårdvara M A R C U S B E A U S A N G

OpenGL-översikt. OpenGL. Viktigt att komma ihåg: OpenGL-kommandon. OpenGL är en tillståndsmaskin. Transformationer. Geometrispecifikation

DGI/SUDOA Den historiska utvecklingen. Globala - lokala belysningsmodeller. Lokala belysningsmodeller. Rendering equation

Procedurell Terräng med LOD i OpenGL 4

OpenGL-översikt. OpenGL. Lokala koordinatsystem. Transformationer. Hierarkiska modeller. Animation. Transformation Byte av koordinatsystem

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

Procedurell grottgenerator och eld i GLSL. Marcus Widegren

Varför behövs grafikbibliotek? Introduktion till OpenGL. OpenGL är ett grafikbibliotek. Fördelar med OpenGL. Allmänt om OpenGL. Nackdelar med OpenGL

Texturmappningsalgoritmer

Grafiska pipelinen. Edvin Fischer

Procedurell renderingsmotor i Javascript och HTML5

En introduktion till OpenGL. Gustav Taxén

Den tekniska utvecklingen av hårdvara och mjukvara för realtidsgrafik

Realtidsalgoritmer för ljusets spridning och absorption mot partiklar i luften P E T E R L Ö N N Q U I S T

TNM022 Proceduella Bilder Rendering av proceduell päls i realtid

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

RTG-formatet Gustav Taxén,

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre

OpenGL. grafikbibliotek? Nackdelar med OpenGL. Fördelar med OpenGL. En introduktion till OpenGL. OpenGL. rdvara. Grafikhårdvara.

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.

Skinning and Animation

OpenGL AGI HT05. Gustav Taxén

Teknik för avancerade datorspel!

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

Projekt i TNM084, Procedurella bilder

Institutionen för systemteknik

Teknik för avancerade datorspel!

Kurvor och ytor. Gustav Taxén

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

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

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

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 9 november 2015 Sida 1 / 28

Information Coding / Computer Graphics, ISY, LiTH

Tron Style OpenGL ES 2.0 Shaders för ios Möjligheten att implementera ett Bloomfilter på ett ios-device

Vector Displacement Mapping

OpenGL-översikt. Mer OpenGL. Består-av-hierarki. Hierarkiska modeller. Från hierarki till kod, steg 1. Lokala koordinatsystem

Implementering av interaktionsmetoder i 3D med haptik för undervisning i mekanisk konstruktion NIKLAS SCHERP

2D-grafik. Gustav Taxén

OpenGL, Maya och specialeffekter

Tentamen den 18 mars svar Datorteknik, EIT070

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

F5: Högnivåprogrammering

F5: Högnivåprogrammering

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 14:e januari klockan

En jämförande studie mellan Mental Ray och V-Ray

Bézierkurvor och parametriska objektrepresentationer

Matriser och Inbyggda funktioner i Matlab

Lösningar till linjära problem med MATLAB

Datorgrafik. Programkurs 6 hp Computer Graphics TSBK07 Gäller från: 2018 VT. Fastställd av. Fastställandedatum

Mönsterigenkänning och följning Digitala projekt VT 2004 Carl Loodberg, grupp 10

Grafik raytracing. Mattias Axblom.

Transformationer. Translation. Skalning. Homogena koordinater. Rotation. 2D-grafik. x y. Inom datorgrafik är transformationer den. Många. bevaras.

Parallellism i NVIDIAs Fermi GPU

Tentamensdag 2002-aug-20 Tentamen i Funktionell Programmering Skrivtid 5 h

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

Matriser och Inbyggda funktioner i Matlab

I rastergrafikens barndom...gjorde man grafik genom att skriva i ett videominne. Operationer på buffert och pixlar. Idag... Varför grafikkort?

Information Coding / Computer Graphics, ISY, LiTH. Bump mapping!

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

Systemprogrammering i C på en mobil plattform. Kurskompendium

CG C för Grafik. Fredrik Bärg Institutionen för Informationsbehandling Åbo Akademi, FIN Åbo, Finland E-post:

TBSK03 Teknik för avancerade Datorspel. Jens Ogniewski Information Coding Group Linköpings universitet

Transformationer, Angel

The Procedural Arctic

Tentamen PC-teknik 5 p Lösningar och kommentarer

UPG5 och UPG8 Miniprojekt 1: 2D datorgrafik

HALFTONE SHADER APP HEMSIDA: Skapad av: John Tolunay

Fotorealistisk 3D Datorgrafik

Att skapa och hantera bilder från Pro/E

Splinebilen och andra rymdytor

Rastrering och displayalgoritmer. Gustav Taxén

Simulering av rök på GPU

Utveckling av terräng och partikeleffekter med

Transformationer i 3D. Gustav Taxén

Jacquards vävstol, 1801

Datorteknik. Föreläsning 7 Historia och framtid. Institutionen för elektro- och informationsteknologi, LTH

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

Vetenskapsdagen 2016 SciLab för laborativa inslag i matematik eller fysik

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

Information Coding / Computer Graphics, ISY, LiTH. Minnesaccess. Vitalt för prestanda! Minnestyper. Coalescing

Kort introduktion till POV-Ray, del 3

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Hjälpmedel: MATLAB

Index. Vektorer och Elementvisa operationer. Summor och Medelvärden. Grafik i två eller tre dimensioner. Ytor. 20 januari 2016 Sida 1 / 26

SIMD i Intel s P5- baserade Pentium MMX

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Föreläsning 4: Poster

Transkript:

Shaders Renderingssystem Applikation Geometri Rastrering Martin Fitger d00-mfi@d.kth.se VT 2008, DH2323 / DH2640 / NA8740 Renderingssystem Renderingssystem Applikation Per-vertex operationer Geometri Rastrering Per-pixel Skärmoperationer operationer Primitivgenerering Clipping Culling Projektion Rastrering Skärm CPU-intensiv Hög parallellitet Stor efterfrågan på interaktiva applikationer Datorspel Hårdvara för 3D-rendering Hårdvara för 3D-rendering Avlasta CPUn Fysisk implementering av pipeline Hög parallellitet Utvecklas snabbare än Moore s Law. Tidigt 90-tal tillgängligt på konsumentnivå Till en början endast rastrering Begränsat antal fasta funktioner Icke-flexibel Syntetiska bilder 1

Fixed-Function-Pipeline Programmerbar pipeline Application CPU Per-vertex operations Primitive assembly Graphics Hardware Clipping Culling Projection Rasterizing Per-fragment operations Framebuffer Vid millennieskiftet Shaders Godtyckliga effekter Flexibel Realistiska bilder Programmerbar pipeline Vertex Shader Application CPU Vertex processor Geometry processor Graphics Hardware Clipping Culling Projection Rasterizing Fragment processor Framebuffer Exekveras en gång per vertex Transformationer (vertex, normal) Generering av texturkoordinater Belysning etc. Vertex shader Geometry shader Fragment shader Geometry Shader Fragment Shader Exekveras en gång per primitiv (linje, triangel) Generering av nya vertex/primitiver Användningsområden: Tesselering (parametriserade ytor) Point-sprites Skuggvolymer Exekveras en gång per fragment (pixel) Texturläsning Färgblandning Belysning etc. 2

Vertexdata Applikationsvariabler matriser belysningsparametrar materialparametrar Varying Interpolering av varying position normal texturkoord. Vertex Shader transf. position transf. normal texturkoord. Texturer Interpolering av varying Varying (interpolerade) position normal texturkoord Applikationsvariabler matriser belysningsparametrar materialparametrar Fragment Shader Fragmentdata djup Texturer Shaderspråk Shaderspråk Assembler Effektiva program Tidsödande Kompatibilitetsproblem D3D Vertex Shader Assembler dp3 r7.w, VECTOR_VERTEXTOLIGHT, VECTOR_VERTEXTOLIGHT rsq VECTOR_VERTEXTOLIGHT.w, r7.w dst r7, r7.wwww, VECTOR_VERTEXTOLIGHT.wwww mul r6, r5, ATTENUATION.w OpenGL Vertex Program Assembler MOV R1, R2.yzwx; MUL R1.xyz, R2, R3; ADD R1, R2, -R3; RCP R1, R2.w; 3

Shaderspråk Shaderspråk Högnivåspråk GLSL, HLSL, Cg Liknar C Extra datatyper: vektorer, matriser mm. Inbyggda vektor- och grafikoperationer GLSL Vertex Shader varying float LightIntensity; vec3 n = normalize(gl_normalmatrix * gl_normal); LightIntensity = max( dot(n, gl_lightsource[0].position), 0.0); gl_position = ftransform(); Exempel: Exempel: N H E L I = k ambient + k diffuse (N L) + k specular (N H) shininess H = (L + E) / (L + E) Alternativ 1 (Gouraud shading) Utför beräkningar i vertex shader Interpolera resulterande en Alternativ 2 (Phong shading) Interpolera normaler etc. Utför beräkningar i fragment shader // Applikationsvariabler uniform vec3 Ambient; uniform vec3 Diffuse; uniform vec3 Specular; uniform float Shininess; varying vec3 v_color; Alternativ 1 (Gouraud shading) // Beräkna vektorer vec3 E = normalize(-vec3(gl_modelviewmatrix * gl_vertex)); vec3 N = gl_normalmatrix * gl_normal; vec3 L = gl_lightsource[0].position.xyz; vec3 H = normalize(l + E); // Matt reflektion float diff = max(dot(l, N), 0.0); // Speglad reflektion float spec = pow(max(dot(h, N), 0.0), Shininess); // Beräkna v_color = Ambient + (Diffuse * diff) + (Specular * spec); Vertex Shader varying vec3 v_color; // Skriv ut gl_fragcolor = vec3(v_color, 1.0); Alternativ 1 (Gouraud shading) Fragment Shader // Transformera vertex gl_position = ftransform(); 4

Exempel: varying vec3 v_e; // Eye vector varying vec3 v_n; // Normal vector Alternativ 2 (Phong shading) Vertex Shader Alternativ 1 (Gouraud shading) Utför beräkningar i vertex shader Interpolera resulterande en Alternativ 2 (Phong shading) Interpolera normaler etc. Utför beräkningar i fragment shader // Beräkna och passa vidare vektorer v_e = normalize(-vec3(gl_modelviewmatrix * gl_vertex)); v_n = normalize(gl_normalmatrix * gl_normal); // Transformera vertex gl_position = ftransform(); // Applikationsvariabler uniform vec3 Ambient; uniform vec3 Diffuse; uniform vec3 Specular; uniform float Shininess; varying vec3 v_e; // Eye vector varying vec3 v_n; // Normal vector Alternativ 2 (Phong shading) Fragment Shader Exempel: // Beräkna vektorer vec3 E = normalize(v_e); vec3 N = normalize(v_n); vec3 L = gl_lightsource[0].position.xyz; vec3 H = normalize(l + E); // Matt reflektion float diff = max(dot(l, N), 0.0); // Speglad reflektion float spec = pow(max(dot(h, N), 0.0), Shininess); // Beräkna vec3 color = Ambient + (Diffuse * diff) + (Specular * spec); Alternativ 1 (Gouraud shading) Alternativ 2 (Phong shading) // Skriv ut gl_fragcolor = vec3(color, 1.0); Inte bara shading Inte bara shading Generella processorer Billigt Hög prestanda (flera 100 miljarder flops) Andra beräkningsområden Beräkningsintensiva problem Hög parallellitet Problemet måste anpassas Användningsområden: Fysiksimulering Bioinformatik Lösa ekvationssystem mm 5

Shaderutveckling Shaderutveckling Högnivåspråk underlättar utvecklingen Krävs programmerare för att skriva shaders Shading hör till grafikers område Verktyg FX Composer (Nvidia) RenderMonkey (ATI) Maya/3DSMax FX Composer Shaderutveckling Visuell programmering Visuell programmering print( (X + Y) * Z ) Grafer Automatisk generering av kod Finns som verktyg till spelmotorer Visuell programmering Demonstration print( (X + Y) * Z ) X Add Y Value1 Value2 Sum Z Multiply Factor1 Factor2 Product Print Value 6