Marco Tarini, Università dell'Insubria AA 2016/2017
Grafica computazionale - Es 03 1
Computer Graphics
Marco Tarini
Università dell’Insubria
Corso di Laurea in Informatica Anno Accademico 2016/17
Trasformazioni 3D in GLSL
Matrici in GLSL
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
mat4 m , mA , mB ; vec4 v , u;
m = mA * mB ; // prodotto matrice matrice // (riga per colonna)
m *= mB ; // come dire: m = m * mB (non mB * m !) u = m * v ; // prodotto matrice-vettore
u = m[ 0 ] ; // prendi la 1ma colonna di m m[ 3 ] = u ; // setta la 4ta colonna di m m = mat4( v ) ; // matrice diagonale
m = mat4( 1.0 ) ; // 1 nella diagonale (cioè l’ide)
Marco Tarini, Università dell'Insubria AA 2016/2017
Grafica computazionale - Es 03 2
Matrici in GLSL
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
mat4 m , mA , mB ; vec4 v , u;
m = transpose( m ); // non oneroso m = inverse( m ); // molto più oneroso!
float k = determinant( m );
m = mA * 5; // moltipilca tutti gli elementi m = mA + mB; // somma fra matici
mat3 submat = mat3( m ); // sottomatrice 3x3
m = mat4( submat ); // borda con 0, e 1 sulla diago
Serializzare le matrici
Row-major Order
(per riga) : Column-major Order
(per colonna) :
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
p o n m
l k j i
h g f e
d c b a
p l h d
o k g c
n j f b
m i e a
trasposta di
« trascrivere come serie di numeri » (in memoria, su disco, etc)
a b c d e f g h i j k l m n o p
standard più
Marco Tarini, Università dell'Insubria AA 2016/2017
Grafica computazionale - Es 03 3
Piano
• Costruire una semplice forma tridimensionale
• Nel vertex shader (GLSL):
costruire matrici di modellazione/
vista/
proiezione
• Applicarle.
• In seguito, costruire tali
matrici nel codice dell’applicazione (JavaScript) e passarle come uniform
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Per una visione d’insieme del codice, vedere l’implementazione sul sito:
Esercitaz 03
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a