Seulement dans advanced_modelisation-1.2/: compile_flags.txt Les sous-répertoires advanced_modelisation-1.1/documentation et advanced_modelisation-1.2/documentation sont identiques Les sous-répertoires advanced_modelisation-1.1/images et advanced_modelisation-1.2/images sont identiques diff advanced_modelisation-1.1/main.c advanced_modelisation-1.2/main.c 2a3 > #include 6a8,9 > #define SHADOW_MAP_SIDE 1024 > 17c20 < static GLuint _pId[2] = { 0 }; --- > static GLuint _pId[3] = { 0 }; 19a23,27 > /*!\brief Framebuffer Object */ > static GLuint _fbo = 0; > /*!\brief Texture recevant la shadow map */ > static GLuint _smTex = 0; > 39a48,49 > /* ATTENTION à bien activer le cull-face mais à l'inverser pour la > shadow map afin d'avoir l'ombre des faces internes */ 45a56 > _pId[2] = gl4duCreateProgram("shaders/shadowMap.vs", "shaders/shadowMap.fs", NULL); 47a59,64 > gl4duGenMatrix(GL_FLOAT, "lightViewMatrix"); > gl4duGenMatrix(GL_FLOAT, "lightProjectionMatrix"); > > gl4duBindMatrix("lightProjectionMatrix"); > gl4duLoadIdentityf(); > gl4duOrthof(-13, 13, -6, 6, 1, 40); 53,55d69 < /* glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); */ < /* glLineWidth(7.0f); */ < /* glEnable(GL_LINE_SMOOTH); */ 101a116,122 > /* Création et paramétrage de la Texture de shadow map */ > glGenTextures(1, &_smTex); > glBindTexture(GL_TEXTURE_2D, _smTex); > glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); > glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); > glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, SHADOW_MAP_SIDE, SHADOW_MAP_SIDE, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL); > 102a124,127 > > /* Création du Framebuffer Object */ > glGenFramebuffers(1, &_fbo); > 115,116c140,181 < GLfloat lumpos[] = {-4.0f, 4.0f, 0.0f, 1.0f}; < lumpos[1] = 2.0f + 1.9f * sin(a); --- > GLfloat lumpos[] = {9.0f, 4.0f, 0.0f, 1.0f}; > lumpos[1] = 4.0f + 1.9f * sin(a); > gl4duBindMatrix("lightViewMatrix"); > gl4duLoadIdentityf(); > gl4duLookAtf(lumpos[0], lumpos[1], lumpos[2], 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f); > /* Attention le CULL FACE est sur les faces arrières */ > /* ATTENTION : donc ici il nous faut rendre la depth des faces > internes, pour cela on cull les faces FRONT */ > glCullFace(GL_FRONT); > > > glBindFramebuffer(GL_FRAMEBUFFER, _fbo); > glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, _smTex, 0); > /* ATTENTION : petit détail pouvant produire un résultat incomplet, > le viewport doit ici être adapté aux dimensions de la texture > dans laquelle la depth est stockée (peut être automatisée) */ > glViewport(0, 0, SHADOW_MAP_SIDE, SHADOW_MAP_SIDE); > glClear(GL_DEPTH_BUFFER_BIT); > glUseProgram(_pId[2]); > /* cone */ > gl4duBindMatrix("model"); > gl4duLoadIdentityf(); > gl4duTranslatef(0.0f, 1.5f, 0.0f); > gl4duRotatef(180.0f * a / M_PI, 0.0f, 1.0f, 0.0f); > gl4duSendMatrices(); > gl4dgDraw(_coneId); > /* quad */ > gl4duLoadIdentityf(); > gl4duRotatef(-90.0f, 1.0f, 0.0f, 0.0f); > gl4duScalef(13.0f, 13.0f, 13.0f); > gl4duSendMatrices(); > gl4dgDraw(_quadId); > > glBindFramebuffer(GL_FRAMEBUFFER, 0); > /* ATTENTION : maintenant qu'on est revenu à l'écran pour le rendu > final, remettre le cull-face sur les faces arrières */ > glCullFace(GL_BACK); > glDrawBuffer(GL_COLOR_ATTACHMENT0); > > /* ATTENTION : maintenant qu'on est revenu à l'écran, le viewport > doit être adapté aux dimensions de la fenêtre */ > glViewport(0, 0, _wW, _wH); 125,126d189 < /* Attention le CULL FACE est sur les faces arrières */ < glCullFace(GL_BACK); 133a197,198 > glActiveTexture(GL_TEXTURE0 + 1); > glBindTexture(GL_TEXTURE_2D, _smTex); 135a201,204 > glUniform1i(glGetUniformLocation(_pId[0], "tex"), 0); > glUniform1i(glGetUniformLocation(_pId[0], "tex_inv"), 1); > glUniform1f(glGetUniformLocation(_pId[0], "tex_zoom"), 2.0f); > glUniform1i(glGetUniformLocation(_pId[0], "sm"), 1); 143c212 < gl4duScalef(15.0f, 15.0f, 15.0f); --- > gl4duScalef(13.0f, 13.0f, 13.0f); 147c216,221 < glActiveTexture(GL_TEXTURE0 + 1); --- > /* ATTENTION : PB de rapidité qu'on a eu (c'est une découverte pour > moi), il semble que pour le même shader, avoir placé le sampler2D > sm en étage de texture 1 puis en 2, a ralenti drastiquement le > shader !!! J'ai cherché loooooongtemps avant de trouver l'origine > de ce problème. */ > glActiveTexture(GL_TEXTURE0 + 2); 151,153c225 < glUniform1i(glGetUniformLocation(_pId[0], "tex"), 0); < glUniform1i(glGetUniformLocation(_pId[0], "nm"), 1); < glUniform1i(glGetUniformLocation(_pId[0], "use_tex"), 1); --- > glUniform1i(glGetUniformLocation(_pId[0], "nm"), 2); 155c227 < --- > glUniform1f(glGetUniformLocation(_pId[0], "tex_zoom"), 10.0f); 156a229 > 160c233,235 < /* Attention le CULL FACE est sur les faces avant */ --- > /* ATTENTION : enfin, le CULL FACE est sur les faces avant ici car > on est dans la sphère englobante (rien à voir avec la > shadowmap) */ 165c240 < gl4duScalef(14.0f, 14.0f, 14.0f); --- > gl4duScalef(25.0f, 25.0f, 25.0f); 167c242,243 < glUniform1f(glGetUniformLocation(_pId[1], "zoom"), 0.9f); --- > glUniform1i(glGetUniformLocation(_pId[1], "tex_inv"), 0); > glUniform1f(glGetUniformLocation(_pId[1], "tex_zoom"), 1.6f); 172d247 < 174d248 < 179a254,258 > if(_fbo) { > glDeleteTextures(1, &_smTex); > glDeleteFramebuffers(1, &_fbo); > _fbo = 0; > } Seulement dans advanced_modelisation-1.2/: main.o diff advanced_modelisation-1.1/Makefile advanced_modelisation-1.2/Makefile 21c21 < VERSION = 1.1 --- > VERSION = 1.2 Les fichiers binaires advanced_modelisation-1.1/modelisation et advanced_modelisation-1.2/modelisation sont différents Seulement dans advanced_modelisation-1.2/: noise.o Les sous-répertoires advanced_modelisation-1.1/shaders et advanced_modelisation-1.2/shaders sont identiques