From 3931e386348b1d6311753d9bb1cccfc6baf52472 Mon Sep 17 00:00:00 2001 From: Mylloon Date: Fri, 26 May 2023 14:16:58 +0200 Subject: [PATCH 1/5] gl4d diff --- impl-shadow-map.diff | 164 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 impl-shadow-map.diff diff --git a/impl-shadow-map.diff b/impl-shadow-map.diff new file mode 100644 index 0000000..0d2b123 --- /dev/null +++ b/impl-shadow-map.diff @@ -0,0 +1,164 @@ +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 -- 2.45.2 From 1fdc16106fc0172574673b90f927ddd8e175396f Mon Sep 17 00:00:00 2001 From: Mylloon Date: Fri, 26 May 2023 20:59:31 +0200 Subject: [PATCH 2/5] always strip instead of flto --- Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 3474287..3a06632 100644 --- a/Makefile +++ b/Makefile @@ -22,7 +22,7 @@ AWK = awk STRIP = strip -s # Déclaration des options du compilateur -COPTI = -O3 -flto +COPTI = -O3 CFLAGS = -Wall $(COPTI) -std=gnu17 CPPFLAGS = -I. LDFLAGS = -lm @@ -69,6 +69,8 @@ CPPFLAGS += $(shell sdl2-config --cflags) LDFLAGS += -lGL4Dummies $(shell sdl2-config --libs) -lSDL2_mixer -lSDL2_image -lSDL2_ttf all: $(PROGNAME) +all: strip + $(PROGNAME): $(OBJ) $(CC) $(OBJ) $(LDFLAGS) -o $(PROGNAME) -- 2.45.2 From eef3f9d4a190f0d6269e4239af50f60e0f6ce629 Mon Sep 17 00:00:00 2001 From: Mylloon Date: Fri, 26 May 2023 21:02:48 +0200 Subject: [PATCH 3/5] use upx --- Makefile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Makefile b/Makefile index 3a06632..41db27e 100644 --- a/Makefile +++ b/Makefile @@ -20,6 +20,7 @@ TAIL = tail GREP = grep AWK = awk STRIP = strip -s +UPX = upx # Déclaration des options du compilateur COPTI = -O3 @@ -70,6 +71,7 @@ LDFLAGS += -lGL4Dummies $(shell sdl2-config --libs) -lSDL2_mixer -lSDL2_image - all: $(PROGNAME) all: strip +all: upx $(PROGNAME): $(OBJ) $(CC) $(OBJ) $(LDFLAGS) -o $(PROGNAME) @@ -86,6 +88,9 @@ debug: $(PROGNAME) strip: $(STRIP) $(PROGNAME) +upx: + $(UPX) $(PROGNAME) + dist: distdir $(CHMOD) -R a+r $(distdir) $(TAR) zcvf $(distdir).tgz $(distdir) -- 2.45.2 From 7e2cb7a4c58bab3abcc3d35655f9c9f4743b4e8e Mon Sep 17 00:00:00 2001 From: Mylloon Date: Fri, 26 May 2023 21:02:59 +0200 Subject: [PATCH 4/5] date --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 41db27e..9a685ac 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ # Auteur : Farès BELHADJ # Email : amsi@up8.edu # Date : 28/04/2020 -# Modified : Anri KENNEL (anri.kennel@etud.univ-paris8.fr) - 03/05/2023 +# Modified : Anri KENNEL (anri.kennel@etud.univ-paris8.fr) - 26/05/2023 # Définition des commandes utilisées CC = gcc -- 2.45.2 From 4cf56c60f2e60a623979a270660fa1e708ef1c26 Mon Sep 17 00:00:00 2001 From: Mylloon Date: Fri, 26 May 2023 21:03:25 +0200 Subject: [PATCH 5/5] Revert "gl4d diff" This reverts commit 3931e386348b1d6311753d9bb1cccfc6baf52472. --- impl-shadow-map.diff | 164 ------------------------------------------- 1 file changed, 164 deletions(-) delete mode 100644 impl-shadow-map.diff 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 -- 2.45.2