diff --git a/impl-shadow-map.diff b/impl-shadow-map.diff deleted file mode 100644 index 0d2b123..0000000 --- a/impl-shadow-map.diff +++ /dev/null @@ -1,164 +0,0 @@ -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