Rendering 13/01/2014. Marco Tarini - Video Game Dev - Univ Insubria (recall?) Game Engine

Documenti analoghi
Local Lighting 13/01/2014. Marco Tarini - Video Game Dev - Univ Insubria (recall?) Game Engine

Computer Graphics. Visione di insieme: Visione di insieme: Hardware specializzato per il rendering. Lezione 2: hardware ergo triangoli

Computer Graphics. Visione di insieme: Visione di insieme: Hardware specializzato per il rendering GRAPHIC HARDWARE

Caveat. Sintesi di Immagini. Sintesi di Immagini. Rendering: Approccio Fisico

Caveat. Object e viewer, come tutte le metafore, sono entità non definite rigidamente. La luce fa parte del viewer? Il viewer è anch esso un object?

Fondamenti di Grafica Tridimensionale

Grafica Computazionale

Fondamenti di Grafica Tridimensionale

Computer Graphics. Alcuni meccanismi propri del rasterization based rendering che non abbiamo visto Nuovi stage nel pipeline HW:

Obiettivi. Costruzione di interfacce. Esame. Programma. Strumenti. Concetti di base

Computer Graphics. Visione di insieme: Visione di insieme: Hardware specializzato per il rendering. Lezione 2: hardware ergo triangoli

Computer Graphics. Computer Graphics. Alcuni argomenti che non abbiamo trattato (o abbiamo trattato poco) Modelling: Rendering:

Introduzione al Many/Multi-core Computing

Grafica Computazionale. Texturing. Fabio Ganovelli a.a

Fondamenti di Grafica Tridimensionale

Pipeline di rendering. Pipeline di rendering. Outline. Grafica off-line vs Grafica real-time

Grafica al calcolatore - Computer Graphics

Introduzione al Real Time Shading

Computer Graphics. Superfici di suddivisione. Modo molto diffuso per costruire mesh. modelling: superfici di suddivisione

Corso di Grafica Computazionale

Computer Graphics. Digital representation of 3D objects. 3D Rendering. Scena 3D rendering image. Marco Tarini - univ insubria AA 2016/2017

Corso di Tecniche Avanzate per la Grafica

Corso di Tecniche Avanzate per la Grafica Texturing

Grafica al calcolatore Computer Graphics

Introduzione alla GPGPU Corso di sviluppo Nvidia CUDATM. Davide Barbieri

Normal maps: come si ottengono (2/4)

Corso Grafica Computazionale

Computer Graphics LIGHTING. (local) Lighting in breve. lo Shading. Baked lighting VS dynamic lighting. Es: equazione di Lighting.

Grafica 3D per i beni culturali: 3D and rendering

Corso GraficaComputazionale

Texture Mapping Realtà Virtuale: il presente, il pass T a e t x o u, r i e l f M u a t p u pi ro ng

Corso di GraficaComputazionale Texturing

Aggiungiamo attributi (per vertice!)

Computer Graphics. Semitrasparenze: come? Un vecchio trucco di imaging 2D: Quando scrivo un colore nello screen buffer, invece di: eseguo:

Grafica 3D per i beni culturali: 3D and rendering. Lezione 2: 20 Febbraio 2014

Computer Graphics. Memoria RAM nelle schede grafiche. Texture Mapping: paradigma di memoria. Concetto. Tessiture: Caso più comune.

Pipeline di rendering

Corso di Grafica Computazionale Texturing

Corso di Grafica Computazionale

Computer Graphics. 188 MegaBytes / sec. Riassunto puntata precedente 1/3. Computer Graphics ( CG ): Lezione 2: hardware ergo triangoli

Grafica al Calcolatore Rasterizzazione - 1. Introduzione

Mesh triangolari i Modelli 3D universali dei games

Grafica al calcolatore - Computer Graphics

Grafica Real-Time, Hardware Grafico e Linguaggi di Shading. Alessandro Martinelli

Grafica al calcolatore - Computer Graphics

HIGH PERFORMANCE COMPUTING SU UNITA' GRAFICHE PROGRAMMABILI

Lighting. Realtà Virtuale: il presente, il passato, Lighting e il Shading futuro

Computer Graphics. Se non si vede, che non ci sia CULLING. Notazione. Lo chiamiamo culling se si scartano primitive intere.

Computer Graphics. Visione di insieme: Visione di insieme: Hardware specializzato per il rendering. Lezione 2: hardware ergo triangoli

Realtà Virtuale: il presente, il passato, il Shading futuro

Grafica al calcolatore - Computer Graphics

Videogame e rendering 3D. Enrico Colombini (Erix) µhackademy 1 Marzo 2019

Programmare l AGP: gli Shader

Il texture fetch (o: texture lookup) Operazione molto semplice in GLSL, es: e si memorizza le coord texture (s,t) per ogni vertice

Computer Graphics. I 4 fattori che consideriamo. luce finale = lo Shading. ambient

Computer Graphics. Reminder: API. Il primo Hello World. Storia. Open Graphic Language Libreria C-like. Specifiche API. ver 4.

Grafica 3D per i beni culturali: 3D e rendering. Lezione 2: 25 Febbraio 2016

Grafica 3D per i beni culturali: 3D and rendering. Lezione 2: 23 Febbraio 2011

Computer Graphics. Se non si vede, che non ci sia CULLING. Tipi di Culling. Notazione. Occlusion culling

Marco Tarini, Università dell'insubria AA 2016/2017. Computer Graphics. Facciamo una primissima applicaizone grafica rasterization based

0) transformazione di modellazione 1) transformazione di vista 2) transformazione di proiezione 3) transformazione di viewport.

Computer Graphics. vector and point algebra. Rasterization based pipeline. Marco Tarini - Grafica computazionale. Lezione 3 1.

Pipeline Rendering. Dove si introduce un metodo di rendering adatto alle applicazioni in real-time. Introduzione. Trasformazioni geometriche.

Lezione1. Cos è la computer grafica. Lezione del 10 Marzo Michele Antolini Dipartimento di Ingegneria Meccanica Politecnico di Milano

Texture maps assets e Mesh assets

Grafica al calcolatore - Computer Graphics

mat4 m, ma, mb ; vec4 v, u; m *= mb ; // come dire: m = m * mb (non mb * m!) u = m * v ; // prodotto matrice-vettore

Grafica al calcolatore Computer Graphics

Marco Tarini 10/22/2015

Rendering Paradigms. SciViz 2018/2019 Paolo Cignoni. (thx to Marco Tarini for part of the slides)

LA STRUTTURA NARRATIVA. Prof. M.A. Alberti, A. Berolo, P. Pasteris

Grafica Computazionale

Computer Graphics. es: 3D Scanning. Riassunto puntata precedente 1/3. Computer Graphics ( CG ): Lezione 2: hardware ergo triangoli

ANALISI E SVILUPPO DI SHADER GRAFICI IN LINGUAGGIO GLSL ANALYSIS AND DEVELOPMENT OF GRAPHICS SHADERS USING GLSL

Rendering Paradigms. FGT 2015/2016 Paolo Cignoni. (thx to Marco Tarini for part of the slides)

Rendering Paradigms. FGT 2015/2016 Paolo Cignoni. (thx to Marco Tarini for part of the slides)

Scuola Politecnica - DICGIM ANNO ACCADEMICO CORSO DI LAUREA MAGISTRALE Ingegneria Informatica INSEGNAMENTO

Descrizione tecnica. Tecnologia NVIDIA TurboCache Ridefinizione del rapporto prezzo/prestazioni per i PC Entry- Level

Grafica al calcolatore - Computer Graphics

Introduzione a API e game engine per la programmazione grafica

Corso di Tecniche Avanzate per la Grafica

CG Character. CG Character

Registro dell'insegnamento

Modelli per i materiali

Computer Graphics. I 4 fattori che consideriamo. luce finale = lo Shading. ambient. + riflessione diffusa + riflessione speculare + emissione

Computer Graphics. v 1. Rasterizer: lines (segmenti) la rasterizzazione from vertex to pixels. Rasterizzazione: lines (segmenti)

Algoritmi per la gestione della dinamica di complessi simpliciali in GPU

Texture mapping. Davide Gadia Corso di Programmazione Grafica per il Tempo Reale Laurea Magistrale in Informatica a.a. 2014/2015

General info. Marco Tarini. Marco Tarini 25/09/2015. Google for marco tarini 1 st hit Follow teaching (bottom) Follow contact (bottom)

Introduzione alla Computer Graphics

Rasterizzazione. Dove si introduce un metodo di rendering adatto alle applicazioni in real-time. Introduzione. Trasformazioni geometriche.

Corso Autodesk Maya. consulteklab.com CELL. 349/8/ web: (Effetti speciali 3d per film e animazioni)

GAME DEV: tools programming. Parte 2: programming

Tecniche di semplificazione

Transcript:

Rendering (recall?) Game Engine Parte del game che si occupa di alcuni dei task comuni Scena / livello Renderer Real time transofrm + lighting Models, materials Phsics engine (soft real-time) newtonian phsical simulations Collision detection + response Networking (LAN es tramite UTP) Sound mixer e sound-renderer Gestore unificato HCI devices Main event loop, timers, windows manager Memor management Artificial intelligence module Soluz dei sotto task comuni AI Supporto alla localizzazione Scripting GUI (HUD) 1

Rendering Scena 3D descritto da un insieme di primitive rendering Immagine screen buffer ( arra 2D di pixel ) Real Time 3D Rendering Task molto oneroso ma, "embarrassingl parallel" Ingrediente base della soluzione: hardware specializzato 2

Rendering nei games Real time 20 o 30 o 60 FPS Hardware based Pipelined, stream processing Complessità: Lineare col numero di primitive Real Time 3D Rendering: API OpenGL (gruppo Khronos) DirectX (Microsoft) 3

Hardware specializzato per il rendering "GPU": Graphics Processing Unit La CPU della scheda video Instruction Set specializzato! Architettura a pipeline a "catena di montaggio" Modello di computazione SIMD sfrutta l'alto grado di parallelismo insito nel problema Possiede la propria memoria RAM a bordo "RAM CPU" vs "RAM GPU" grandi copie di memoria da una all'altra dispendiose 7 Hardware specializzato per il rendering potenza di calcolo migliaia di GFlops! bus molto performante e.g. PCI-express: ~16 GB/s 8 4

Schema (semplificato) Scheda video GPU RAM (sch. video) CPU ALU (central) RAM bus interno (scheda video) Disk BUS 9 Il triangolo x =( x0, 0, z0 ) =( x1, 1, z1 ) =( x2, 2, z2 ) z 5

Rasterization-Based Rendering transform fragment process pixels finali z vertici 3D x triangolo 2D a schermo (2D screen triangle) "frammenti" (fragments) 11 Rasterization-Based Rendering ( transform and lighting ) transform fragment process pixels finali z vertici 3D x triangolo 2D a schermo (2D screen triangle) "frammenti" (fragments) carico di lavoro per vertice (sottosistema geometrico) 12 carico di lavoro (~per pixel) (sottosistema raster) 6

... Rasterization-Based Rendering Dove è il collo di bottiglia? nel sistema geometrico? (l'applicaizone è transofrm-limited sinonimo: geometr-limited) nel sistema raster? (applicaizone è fill-limited) nel bus? (applicaizone è bus-limited sin: bandwidth-limited) nella CPU? (applicaizone è CPU-limited) come si può predirre (in teoria)? come si può verificare in pratica? perché è importante scoprirlo? HW support Vertici (punti in R 3 ) per vertice Z Vertici proiettati (punti in R 2 ) frammenti (candidati pixels) pixel finali (nello screen-buffer) Vertex porcessor Fragment proces. componenti fisiche dell'hw! Pipeline Parallelismo Efficienza inoltre, molte componenti sono replicate 14 (negli stages collo di bottiglia) 7

Vertici (punti in R 3 ) per vertice Z Vertici proiettati (punti in R 2 ) frammenti (candidati pixels) pixel finali (nello screen-buffer) z x Rasterizzare triangoli 3 Vertici (punti in R 3 ) per vertice Z 3 Vertici proiettati (punti in R 2 ) triangoli frammenti (candidati pixels) pixel finali (nello screen-buffer) z x 8

Rasterizzare Segmenti 2 Vertici (punti in R 3 ) per vertice Z 2 Vertici proiettati (punti in R 2 ) triangoli segmenti frammenti (candidati pixels) pixel finali (nello screen-buffer) z x O anche punti Vertice (punto in R 3 ) per vertice Z Vertice proiettato (punto in R 2 ) punti triangoli segmenti frammenti (candidati pixels) pixel finali (nello screen-buffer) z x esempio di point "splat" (point splatting) 9

in parallelo (in cascata) (in pipeline) (a catena di montaggio) 1. Ogni vertice viene trasformato proiettato da spazio 3D (spazio oggetto ) a spazio 2D (spazio schermo ) indipendentemente dagli altri vertici (deve poter avvenire in parallelo!) indipendentemente da quale primitiva fa parte 2. Ogni primitiva viene rasterizzata in 2D primitiva = triangolo, segmento, o punto rasterizzatore distinti per ogni tipo di primitiva indipendentemente dalle altre primitive rasterizzare = produrre i frammenti corrispondenti 3. Ogni frammento in pos [X,Y] viene processato indipendentemente dagli altri frammenti indipendentemente da quale primitiva lo ha generato output della computazione: un pixel nello screen buffer (RGB) quello a pos [X,Y] (prefissata, la computazione decide solo RGB, non X,Y) Programmable HW Vertici & loro attributi per vertice Vertici poriettati & attributi computati punti triangoli segmenti Frammenti & attributi interpolati Screen buffer PROGRAMMABILITA'!!! 10

Programmable HW Vertici & loro attributi per vertice Vertici poriettati & attributi computati punti triangoli segmenti Frammenti & attributi interpolati Screen buffer Qui agisce il nostro "Vertex Program" (anche detto vertex shader) arbitrario Qui agisce il nostro "Fragment Program" (anche detto fragment shader) arbitrario Rasterization based rendering: schema base Per vertice: (vertex shader) transform (da spazio oggetto a spazio schermo) Per primitiva: () rasterizzazione interpolazione dati prodotti per vertice Per frammento: (fragment shader) lighting (da normale + luci + materiale a RGB) texturing alpha kill Per frammento: (dopo il fragment shader) depth test alpha blend 11

Linguaggi di shading Alto livello: HLSL (High Level Shader Language, Direct3D, Microsoft) GLSL (OpenGL Shading Language) CG (C for Graphics, NVidia) Basso livello ARB Shader Program (come un assembler) HLSL e GLSL molto simili CG più ad alto livello e pensato per utilizzare sia HLSL che GLSL Algoritmo dello z-buffer Vertici & loro attributi per vertice Vertici & attributi computati punti triangoli segmenti Frammenti & attributi interpolati Screen buffer Depth buffer Transform. Metti la z finale come attributo aggiuntivo Interpola la z (come tutti gli attributi) per un frammento con screen coordinates (x,), colore (r,g,b) e profondità z: if ( z <= DepthBuffer[x,] ) { depth test ScreenBuffer[x,] = (r, g, b) ; DepthBuffer[x,] = z ; } else scarta ( discard, kill ) frammento 12

Algoritmo dello z-buffer: proprietà order independent!!! Molto robusto funziona anche su: 5 5 5 5 5 5 5 63 5 5 5 5 5 5 63 63 5 5 5 5 5 63 63 63 5 5 5 5 63 63 63 63 4 5 5 7 63 63 63 63 3 4 5 6 7 63 63 63 2 3 4 5 6 7 63 63 Eseguire un rendering = costruire un depth test (come effetto collaterale) Algoritmo dello z-buffer: esempio a 63) 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 + = 5 5 5 5 5 5 5 5 5 5 5 5 5 63 5 5 5 5 5 5 63 63 5 5 5 5 5 63 63 63 5 5 5 5 63 63 63 63 5 5 5 63 63 63 63 63 5 5 63 63 63 63 63 63 5 63 63 63 63 63 63 63 5 5 5 5 5 5 5 63 5 5 5 5 5 5 63 63 5 5 5 5 5 63 63 63 5 5 5 5 63 63 63 63 5 5 5 63 63 63 63 63 5 5 63 63 63 63 63 63 5 63 63 63 63 63 63 63 M a r c o T a r i n i C o m p u t e r G r a p h i c s 2 0 1 1 / 1 2 U n i v e r s i t à d e l l I n s u b r i a 7 6 7 5 6 7 + 4 5 6 7 = 3 4 5 6 7 2 3 4 5 6 7 5 5 5 5 5 5 5 63 5 5 5 5 5 5 63 63 5 5 5 5 5 63 63 63 5 5 5 5 63 63 63 63 4 5 5 7 63 63 63 63 3 4 5 6 7 63 63 63 2 3 4 5 6 7 63 63 13

Alpha Blending Semitrasparenze Vertici & loro attributi per vertice Vertici poriettati & attributi computati punti triangoli segmenti Frammenti & attributi interpolati Screen buffer Alpha Blending I colori hanno 4 componenti: R,G,B, α Frammenti & attributi interpolati Screen buffer Dato un frammento (che sopravviva al depth test) invece di sovrascriverlo, uso la formula ( r, g, b) ( r, g, b) (1 α) + ( r, g, b) ( α) finale = vecchio nuovo "alpha blending" 14

Alpha Blending Frammenti & attributi interpolati Screen buffer Il fragment shader dovrà dare in output: un colore RGB e una profondità e un parametro alpha la trasparenza di quel pixel e la quarta componente del colore RGBα Parte I: Transform z z x object Coordinates 0 world Coordinates x 0) transformazione di modellazione 1) transformazione di vista 2) transformazione di proiezione 3) transformazione di viewport 1 -z x view Coordinates (a.k.a. ee Coordinates) 2 1 1-1 -1 -x -z screen Space 3 normalized projected coordinates 15

Trasformazione di proiezione: deformazione prospettica Come si svolge fisicamente il processo: Occhio o macchina fotografica (stesso concetto): CCD o pellicola (2D screen buffer) retina (2D screen buffer) lenti lenti distanza focale distanza focale 16

Pin-hole camera image plane -x -z distanza focale View Frustum 17

Pin-hole camera: parametri Estrinseci posizione, orientamento Intrinseci Lunghezza focale, (equivalentemente, angolo Field of View, FOV) Distanze di near plane, far plane Rendering parte II: lighting base Lighting locale (vediamo dettagli prossima lezione) 18

Rendering parte III: tecniche avanzate diffuse nei games Shadowing shadow volumes shadow mapping Screen Space Ambient Occlusion Camera lens effects Flares limited Depth Of Field Motion blur High Dnamic Range Non Photorealistic Rendering contours toon BRDF Texture based techniques Bumpmapping Parallax mapping con PCF SSAO DoF HDR NPR 19

Shadowing: shadow maps Due renderings: 1: dal punto di vista della luce tieni solo il depth buffer 2: della camera usa il depth buffer precedente per determinare luce/ombra Shadow mapping LUCE OCCHIO SHADOW MAP final SCREEN BUFFER 20