OPENGL

Matrice de projection sous OpenGL

Matrice : https://www.opengl.org/sdk/docs/man2/xhtml/gluPerspective.xml

http://www.songho.ca/opengl/gl_transform.html

Quelques explications: http://www.songho.ca/opengl/gl_projectionmatrix.html

Les shaders

Pour avoir accès, dans le fragment shader, aux coordonnées du fragment(futur pixel) actuellement en cours de traitement :

 gl_FragCoord.x : Coordonnée du pixel suivant la largeur,
                  exprimée dans l'intervalle [0,nombreDePixelSurLaLargeur]
 gl_FragCoord.y : Coordonnée du pixel suivant la hauteur,
                  exprimée dans l'intervalle [0,nombreDePixelSurLaHauteur]
 gl_FragCoord.z : Valeur utile pour le Z buffer,
                  exprimée dans l'intervalle [0,1]
 gl_FragCoord.w : L'inverse de la "coordonnée homogène"
 

gl_FragCoord est une built-in variable (https://www.opengl.org/wiki/Built-in_Variable_%28GLSL%29). gl_FragCoord.x et gl_FragCoord.y sont exprimés en pixel de l'image de la caméra. Ces coordonnées sont au centre des pixels. Par exemple gl_FragCoord.x varie de 0.5 à nombreDePixelSurLaLargeur - 0.5.

Pour récupérer les coordonnées de l'image en normalized device coordinates (ndc), exprimée dans l'intervalle [-1,1] :

 x_ndc = gl_FragCoord.x/width * 2 -1.0; // exprimée dans l'intervalle [-1,1]
 y_ndc = gl_FragCoord.y/height * 2 -1.0; // exprimée dans l'intervalle [-1,1]
 z_ndc = gl_FragCoord.z * 2 -1.0; // exprimée dans l'intervalle [-1,1]
 

Pour revenir aux coordonnées dans le repère de la caméra : http://www.txutxi.com/?p=83

Tutoriels sur les Framebuffer object pour faire du render to texture

http://www.lighthouse3d.com/tutorials/opengl-short-tutorials/opengl_framebuffer_objects/

http://alexandre-laurent.developpez.com/tutoriels/OpenGL/OpenGL-FBO/

http://www.songho.ca/opengl/gl_fbo.html

http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-14-render-to-texture/

https://open.gl/framebuffers

http://openclassrooms.com/courses/developpez-vos-applications-3d-avec-opengl-3-3/les-frame-buffer-objects