53
Real Time Shading

Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Page 2: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

SommarioSommario

� dal software all'hardware e ritorno

– cenni storici

� la “pipeline” grafica

– com'era: la pipeline “fissa”

– com'è: la pipeline programmabile

� GLSL

– panoramica

– esempi

– integrazione in XVR

Page 3: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Software e hardware ISoftware e hardware I

Dal software all'hardware

� pro

– performance

� contro

– flessibilità

� requisiti:

– algoritmo maturo

– notevoli vantaggi computazionali

– rapporto costi/benefici

SW

HW

Page 4: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Software e hardware IISoftware e hardware II

Dall'hardware al software

� N.B.: programmabilità

di hardware specializzato

� pro

– flessibilità

� contro

– complessità

HW

SW

Page 5: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

La discesa verso l'hardware ILa discesa verso l'hardware I

� struttura molto simile dei programmi 3d

� collo di bottiglia della rasterizzazione

– es. disegno di triangoli “pieni” a schermo

– texture mapping

� prima generazione (Voodoo 3dfx, TNT)

– supporto rasterizzazione in hardware

– 2 texture per poligono

Page 6: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

La discesa verso l'hardware ILa discesa verso l'hardware I

WolfensteinWolfenstein 3D3D

QuakeQuake

Page 7: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

La discesa verso l'hardware IILa discesa verso l'hardware II

� nuovi colli di bottiglia

– trasformazione dei vertici

– calcoli di illuminazione

� seconda generazione (GeForce2)

– salto di qualità:

supporto Transform & Lighting

Page 8: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

La discesa verso l'hardware IILa discesa verso l'hardware II

QuakeQuake

QuakeQuake 33

Page 9: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Analisi del successoAnalisi del successo

� in entrambi i casi:

– algoritmi molto maturi

– vantaggio computazionale notevole

� parallelismo vincente:grandi quantità di operazioni similisu dati altamente indipendenti

– costi/benefici

� l'utente paga una scheda in piùma può finalmente avere grafica 3D sul serio

Page 10: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Come migliorare la qualitCome migliorare la qualitàà visiva?visiva?

� modelli di illuminazione più accurati?

– modello OpenGL di default troppo semplicistico

– ma non sempre interessa il realismo

� supporto a più modelli di illuminazione?

– ma quali? e quanti?

� supporto a tecniche ad hoc?

– strada seguita inizialmente

Page 11: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

La crescente importanza delle textureLa crescente importanza delle texture

� non solo colori:

– environment mapping

– bump mapping

– normal mapping

– ecc.

� multitexturing

– combinare più texture su un oggetto

– laborioso combinarle in maniera “rigida”

Page 12: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

ProgrammabilitProgrammabilitàà delle GPUdelle GPU

� vera soluzione: programmabilità

– lasciamo che siano i programmatori

a decidere cosa fare e come

� nascono le GPU (Graphics Processing Unit)

� vertici

� normali

� texture

coords

� textures

� ecc.

programma

Page 13: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Lo shadingLo shading

� to shade, ovvero “ombreggiare”:assegnare un colore

ai punti di una superficie

– a prescindere dal criterio

con cui viene operata questa scelta

� shading procedurale:shading mediante una funzione “di codice”

� shader:programma che implementaun particolare shading

Page 14: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Nel mondo Nel mondo ““offlineoffline””

� Il dominio di RenderMan

– standard messo a punto dalla Pixar

– shading molto potente

(non solo “illuminazione”)

Page 15: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

La risalita verso il softwareLa risalita verso il software

� terza generazione

– programmabilità molto limitata

� linguaggio assembler

� limite di istruzioni

� molti altri limiti (accessi alle texture, etc.)

� quarta generazione

– programmabilità più flessibile

� linguaggi di alto livello

� limiti accettabili (ma diversi di GPU in GPU)

� e via dicendo: non si torna più indietro

Page 16: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

La La risalitarisalita verso verso ilil softwaresoftware

QuakeQuake 33

DoomDoom 33

Page 17: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

La GPU oltre la graficaLa GPU oltre la grafica

� mostruosa potenza delle GPU

� programmabilità dell'hardware

� usare la GPU al di fuori della grafica

– GPGPU – General-Purpose computing on GPU

� in realtà non tanto “general”

– particolarmente efficace solo in una ristretta

ma importante categoria di calcoli

� in futuro supporto esplicito nelle schede

Page 18: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

La pipeline: com'era e com'è

Page 19: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Pipeline fissa (non programmabile)Pipeline fissa (non programmabile)

Nota: gli stadi sono in serie ma insiemi diversi di dati vi possono

passare in parallelo

Page 20: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

1. Geometria1. Geometria

� punti, linee, poligoni

� specificabili in vari modi

– immediate mode (un vertice alla volta)

– vertex arrays

– display lists

– vertex buffers (in memoria video)

Page 21: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

2. Operazioni sui vertici2. Operazioni sui vertici

� il famoso Transform & Lighting

– trasformazioni

� vertici: modelview e projection

� normali: rotazione

� texture coordinates: texture matrix

– illuminazione

� stabilito il colore (materiali, luci, ecc.)

� ogni vertice è indipendente in questo stadio

Page 22: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

3. Montaggio delle primitive3. Montaggio delle primitive

� raggruppamento dei vertici richiestidalla primitiva corrente

– point: 1 vertice

– line: 2 vertici

– triangle: 3 vertici o 1 (fan e strip)

– quadriangle: 4 vertici o 2 (strips)

Page 23: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

4. Elaborazione delle primitive4. Elaborazione delle primitive

� clipping

– sia clipping planes che view frustum

� possibile eliminazione primitive

� proiezione prospettica

� viewport transform

– ottengo le window coordinates

� backface culling

� altra possibile eliminazione

Page 24: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

5. Rasterizzazione5. Rasterizzazione

� generazione di fragments

� N.B.: fragment != pixel

– un pixel può essere il risultato

di un'operazione fra più fragment

– un fragment può essere scartato

n vertici m fragments

Page 25: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

6. Elaborazione dei 6. Elaborazione dei fragmentfragment

� texturing

– applicazione delle texture

� tantissime possibilità

– nebbia

Page 26: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

7. Operazioni sui fragment7. Operazioni sui fragment

� scissor test

– si può scrivere in quest'area dello schermo?

� alpha test

– il fragment ha alpha > 0?

� stencil test

– simile allo scissor ma con maschera a piacere

� depth test

– il fragment è “davanti” alla destinazione?

� blending

– come combino il colore con ciò che è presente?

Page 27: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

8. Operazioni sul framebuffer8. Operazioni sul framebuffer

� cosa vado effettivamente a scrivere?

– colore

� con colormask

– profondità

� con depthmask

– stencil

� con stencilmask

Page 28: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Pipeline fissa (non programmabile)Pipeline fissa (non programmabile)

Page 29: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Pipeline programmabilePipeline programmabile

� NB: texture memory accessibile dal vp!

Page 30: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Nuove possibilitNuove possibilitàà di rilievodi rilievo

� texture fetch dal vertex processor� displacement mapping

Page 31: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Vertex processorVertex processor

Page 32: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Vertex processor: INPUTVertex processor: INPUT

� Attributi (diversi per ogni vertice) comunicano valori, che cambiano frequentemente, dall’applicazione al vertex processor

– di default: glVertex, glNormal,glTexCoord, glColor...

– personalizzati: glVertexAttrib

� variabili uniformi (costanti per “grossi gruppi” di vertici)

comunicano valori che non cambiano frequentemente, dall’applicazione al vertex processor

– di default: matrici, informazioni di stato

– personalizzati: glUniform

Page 33: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Vertex processor: OUTPUTVertex processor: OUTPUT

� gl_Position

– coordinate omogenee in “clip space”

� variabili varying(verranno interpolate dal fragment processor

lungo la primitiva)

comunicano valori dal vertex processor al fragment

processor

– di default: gl_FrontColor, gl_TexCoord[i]...

– impostabili dall'utente

� es. notevole: normali

Page 34: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Fragment processorFragment processor

Page 35: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Fragment processor: INPUTFragment processor: INPUT

� variabili varying

(interpolate dallo stadio di rasterizzazione)

– di default: gl_Color, gl_TexCoord[i]...

– definite nel vertex shader

� variabili uniformi

– come per il vertex shader (comunicano valori che non

cambiano frequentemente, dall’applicazione al fragment

processor)

� variabili speciali

– gl_FragCoord, coordinate sullo schermo

– gl_FrontFacing

Page 36: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Fragment processor: OUTPUTFragment processor: OUTPUT

� gl_FragColor

– finalmente, colore RGBA del fragment

� gl_FragDepth

– opzionalmente anche la profondità

– di default calcolata automaticamente

� oppure può scartare il fragment

– utile per fare materiali “bucati” (es. ruggine)

Page 37: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Osservazioni sulla pipeline correnteOsservazioni sulla pipeline corrente

� 1 in, 1 out: non posso “generare” geometria

� ogni vertice è considerato singolarmente

– non ho informazioni topologiche, di prossimità

– non posso agire a livello di primitiva

� non posso stabilire direttamente

la posizione di un fragment sullo schermo

� le funzionalità della pipeline fissa

vanno riscritte se servono

� NB: vertici e fragment possono

essere eliminati dopo che li ho processati

Page 38: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Page 39: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

PanoramicaPanoramica

� è il linguaggio di shading di OpenGL

– multipiattaforma

– estensione da OpenGL 1.5

– ufficialmente integrato da OpenGL 2.0

� molto simile ai concorrenti HLSL e Cg

� simile ad una versione semplificatae più rigida del C++

� compilato dal driver

Page 40: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Modello di esecuzioneModello di esecuzione

Page 41: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Vantaggi architetturaliVantaggi architetturali

� ~indipendenza dal motore di rendering(shading procedurale in generale)

– dal punto di vista del codice,

le funzionalità possono essere molto “ad hoc”

– riusabilità

– programmazione anche separata

� indipendenza dall'hardware(shading di alto livello in generale)

– uno shader in futuro va solo ricompilato

– nb: performance potenzialmente molto diverse

Page 42: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Breve panoramica sulla sintassiBreve panoramica sulla sintassi

� simile al C++ ma più severo sui tipi

– conversioni esplicite

– niente switch, goto, ecc.

– funzioni con in, out e inout per i parametri

� supportati solo i float

� nuovi tipi: vecN, matN, samplerND

– vettori con swizzle (.xyzw, .rgba, .stpq)

� nuovi qualifiers:– attribute (solo vertex), uniform, varying

� nutrita libreria di operazioni di base

Page 43: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Lo Lo ““Hello WorldHello World”” degli shaderdegli shader

[VERTEX SHADER]

void main() {

gl_Position = ftransform();

// equivale concettualmente a:

// gl_Position = gl_ModelViewProjectionMatrix *

// gl_Vertex;

}

[FRAGMENT SHADER]

void main() {

gl_Color = vec4(1.0, 0.0, 0.0, 1.0);

}

� la primitiva viene completamente rossa

Page 44: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

GLSL shaders in XVR

Page 45: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Supporto in XVR Script EditorSupporto in XVR Script Editor

� a partire dalla serie 1.4.4 betasupporto ai file .sh con syntax highlight– scaricabile da wiki.vrmedia.it

� tre modi di usare gli shader– invocandoli esplicitamente da script

� impostando uno “stato” (valido per tutti gli oggetti)

� associandoli ad una particolare mesh

– integrandoli in un file AAMcon XVR Shader Editor (o manualmente)

� alcuni uniform sono inviatiautomaticamente da XVR

Page 46: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

UsoUso esplicitoesplicito: : impostazioneimpostazione dellodello statostato

var sh = CVmShaderProgram(“prog.sh”);

var mesh = CVmNewMesh(“mesh.aam”);

sh.Start();

sh.SetParameter(“nome_uniform_a”, valore1);

sh.SetParameter(“nome_uniform_b”, valore2);

mesh.Draw(); // viene disegnata con lo shader

// ogni altra draw di altri oggetti verrà disegnata con lo shader

sh.Stop();

Page 47: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

UsoUso esplicitoesplicito: : associazioneassociazione a mesha mesh

var mesh = CVmNewMesh(“mesh.aam”);

mesh.AddShader("basic.sh", 0, -2);

mesh.ActiveShader(true);

mesh.SetShaderParameter(0, “nome_uniform_a”,

valore1);

mesh.Draw(); // viene disegnata con lo shader

* -2 -> adds a new shader

* -1 -> adds a new pass

* N -> replaces pass N

subset number

Page 48: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Uso implicitoUso implicito

� una volta impostato lo shadernel file AAM è sufficiente disegnare la mesh

� var mesh = CVmNewMesh(“mesh.aam”);

mesh.Draw();

SHADERSnum: 1

SHADERBEGINnumPass: 1PASSname: sky.shnumP: 2numT: 1numGL: 2samplerCUBE Env 0 Mars.ddsvec3f cameraPosition 0.0 0.0 0.0glDisable 2929glDisable 2884ENDPASSSHADEREND

ENDSHADERS

MATERIALSMatCount: 1Mat# 0{

Name: 17 - DefaultClass: StandardAm: 0.5882 0.5882

0.5882Di: 0.5882 0.5882

0.5882Sp: 0.1000 0.1000

0.1000Tr: 0.0000Sh: 0.1000WS: 1.0000Sh: BLINNTx: Y{

FN: Mars.dds

…}TS: N

}ENDMATERIALS

GEOMETRY SmGEnabledNObj: 1NFrames: 1Animation_mode: NoneFrame: 0{

Obj: 0 Parallelep.04

Par: -1{MatID: 0

mesh.aam

Page 49: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Tool di supportoper la programmazione di shader

Page 50: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

ATI RendermonkeyATI Rendermonkey

Page 51: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Typhoon Labs Shader DesignerTyphoon Labs Shader Designer

Page 52: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

nVidia FX Composer (Cg)nVidia FX Composer (Cg)

Page 53: Real Time Shadingpercro.sssup.it/marcello/didattica/AA20082009/20_RTShading.pdfGLSL shaders in XVR. Real Time Shading Supporto in XVR Script Editor a partire dalla serie 1.4.4 beta

Real Time Shading

Risorse onlineRisorse online

� www.opengl.org

– specifiche, link vari

� www.3dshaders.com

– sito dell'Orange Book

� developer.3dlabs.com

– documentazione varia

� www.lighthouse3d.com

– esempi e tutorial

� wiki.vrmedia.it

– esempi relativi ad XVR