Bonjour à tous et à toutes ,
Je débute totalement avec les shaders glsl cela fais 2 semaines que je lis les tutos etc.. , je ne trouve pas de forum français qui traite du sujet pour m'aider,
tout est généralement en anglais, j'espère que ma question n'est pas trop débutante pour ce forum .
j'ai su me débrouiller pour réaliser ce que je voulais avec les fragments shaders (cadre autour des textures2D , effet de flou , transitions ,etc..)
mais j'ai des problèmes pour bien comprendre l'utilisation des matrices de transformations par le vertex shader.
J'essaye de faire une rotation sur plusieurs axes mais pas moyen d'y arriver je suis vraiment perdue , si quelqu'un pouvait m'aider ,
je ne trouve nul part un simple exemple compréhensible pour faire tourner une texture 2D déjà sur un seul axe.
Je ne prend pas de cours, j'essaye d' apprendre par moi même et je comprend mieux en voyant un exemple que je décortique qu'en lisant les formules mathématique que je ne comprend pas encore.
ça fonctionne plus ou moins ( enfin ça pivote mais ce n'est pas juste à mon avis) , déjà la rotation ne se fais pas en son centre et je pense me tromper avec l'axe z.
J'ai peur de me perdre et de ne pas être sur la bonne voie , j'ai l'impression de faire n'importe quoi à la longue ...
Donc avant de m'arracher encore les cheveux je fais appel a vous pour m'aider un peu.
Merci
voici mon vertex shader, le but est une inclinaison de la texture2D (une pochette de CD) , X à 40° et Y à 30°
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 #ifdef GL_ES precision mediump float; #endif uniform vec3 angle; // 40, 30, 0 void main(){ float PI = 3.14159265358979323846264; float rad_X = angle.x*PI/180.0; float rad_Y = angle.y*PI/180.0; float rad_Z = angle.z*PI/180.0; //Z axis mat4 rotationMatrix_Z = mat4( cos(rad_Z), -sin(rad_Z), 0.0, 0.0, sin(rad_Z), cos(rad_Z), 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); //X axis mat4 rotationMatrix_X = mat4( 1.0, 0.0, 0.0, 0.0, 0.0, cos(rad_X), -sin(rad_X), 0.0, 0.0, sin(rad_X), cos(rad_X), 0.0, 0.0, 0.0, 0.0, 1.0); //Y axis mat4 rotationMatrix_Y = mat4( cos(rad_Y), 0.0, sin(rad_Y), 0.0, 0.0, 1.0, 0.0, 0.0, -sin(rad_Y), 0.0, cos(rad_Y), 0.0, 0.0, 0.0, 0.0, 1.0); gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex * rotationMatrix_X * rotationMatrix_Y * rotationMatrix_Z ; gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; gl_FrontColor = gl_Color; }
Partager