Bonjour,
Accroché vous bien car je ne suis pas sur de pouvoir me faire comprendre. Donc si vous avez besoin d'éclaircissement, n'hésitez pas à demander.
Voilà, dans la base, je voudrais ( beaucoup de chose ) faire une sphère que je peux modifier facilement les couleurs de celle ci pixel par pixel.
Donc je me suis dis, que passé par la fonction gluSphere serai une bonne base pour la physique de l'objet et puis, par les shaders faire en sorte que les couleurs de ma sphère soit modifié.
J'espère déjà avoir juste dans le principe, sinon j'attends toutes les suggestions d'améliorations/rectifications.
Dans le vertice shader, je me passe la point du centre de la sphère, pour pouvoir modifier la couleur des pixels selon leurs distance du centre.
Dans le fragment shader, je me passe la taille de la sphère pour faire la normalisation de mes couleurs, et je me passe grace au vertex shader le centre de la sphère en coordonnée écran.
Voici le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 // Vertice shader uniform vec4 position; varying vec3 center; void main(void) { gl_Position = ftransform(); center = (gl_ModelViewProjectionMatrix * position).xyz; gl_FrontColor = gl_Color; }Ce code, pensais-je, aurais du me donner un dégradé sur ma sphère ... n'importe quel que soit l'angle de vue. Mais comme vous savez surement déjà cela me donne une sphère rouge pure.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 // Fragment shader varying vec3 center; uniform float radius; void main(void) { gl_FragColor = vec4((gl_FragCoord.x - center.x)/radius, 0, 0, 1); }
Comment puis je faire pour atteindre ce que je veux?
Partager