diff --git a/Makefile b/Makefile index 24c6a7a..1fb966d 100644 --- a/Makefile +++ b/Makefile @@ -59,7 +59,6 @@ package:build rm -f paysages3d-linux.tar.bz2 mkdir paysages3d-linux mkdir paysages3d-linux/lib - mkdir paysages3d-linux/cache cp $(BUILDPATH)/system/libpaysages_system.so* paysages3d-linux/lib/ cp $(BUILDPATH)/basics/libpaysages_basics.so* paysages3d-linux/lib/ cp $(BUILDPATH)/definition/libpaysages_definition.so* paysages3d-linux/lib/ @@ -69,7 +68,6 @@ package:build cp $(BUILDPATH)/interface/desktop/paysages-gui paysages3d-linux/lib/ chmod +x paysages3d-linux/lib/paysages-gui cp -r data paysages3d-linux/ - cp -r cache/*.cache paysages3d-linux/cache/ cp dist/paysages3d.sh paysages3d-linux/ chmod +x paysages3d-linux/paysages3d.sh cp dist/collectlib.sh paysages3d-linux/ diff --git a/data/cache/atmo-br-inscatter-128-32-8-32-0.cache b/data/cache/atmo-br-inscatter-128-32-8-32-0.cache new file mode 100644 index 0000000..70e7bf5 Binary files /dev/null and b/data/cache/atmo-br-inscatter-128-32-8-32-0.cache differ diff --git a/data/cache/atmo-br-irradiance-64-16-0-0-0.cache b/data/cache/atmo-br-irradiance-64-16-0-0-0.cache new file mode 100644 index 0000000..163ffd9 Binary files /dev/null and b/data/cache/atmo-br-irradiance-64-16-0-0-0.cache differ diff --git a/data/cache/atmo-br-transmittance-256-64-0-0-0.cache b/data/cache/atmo-br-transmittance-256-64-0-0-0.cache new file mode 100644 index 0000000..868607f Binary files /dev/null and b/data/cache/atmo-br-transmittance-256-64-0-0-0.cache differ diff --git a/src/experiments/bruneton/Main.cpp b/src/experiments/bruneton/Main.cpp index e9ea038..f9909f5 100644 --- a/src/experiments/bruneton/Main.cpp +++ b/src/experiments/bruneton/Main.cpp @@ -700,6 +700,101 @@ void idleFunc() glutPostRedisplay(); } +#include "Texture2D.h" +#include "Texture4D.h" +#include "Color.h" +#include "Logs.h" +#include "PackStream.h" +void dumpTextures() +{ + PackStream stream; + int x, y, z, w; + float* texdata; + + /* Dump irradiance */ + Texture2D irradiance(SKY_W, SKY_H); + + texdata = new float[SKY_W * SKY_H * 3 * sizeof(float)]; + + glBindTexture(GL_TEXTURE_2D, irradianceTexture); + glGetTexImage(GL_TEXTURE_2D, 0, GL_RGB, GL_FLOAT, texdata); + + for (x = 0; x < SKY_W; x++) + { + for (y = 0; y < SKY_H; y++) + { + float* pixel = texdata + (y * SKY_W + x) * 3; + irradiance.setPixel(x, y, Color(pixel[0], pixel[1], pixel[2], 1.0)); + } + } + + stream = PackStream(); + stream.bindToFile("atmo-br-irradiance-64-16-0-0-0.cache", true); + irradiance.save(&stream); + irradiance.saveToFile("irradiance.png"); + delete[] texdata; + + /* Dump transmittance */ + Texture2D transmittance(TRANSMITTANCE_W, TRANSMITTANCE_H); + + texdata = new float[TRANSMITTANCE_W * TRANSMITTANCE_H * 3 * sizeof(float)]; + + glBindTexture(GL_TEXTURE_2D, transmittanceTexture); + glGetTexImage(GL_TEXTURE_2D, 0, GL_RGB, GL_FLOAT, texdata); + + for (x = 0; x < TRANSMITTANCE_W; x++) + { + for (y = 0; y < TRANSMITTANCE_H; y++) + { + float* pixel = texdata + (y * TRANSMITTANCE_W + x) * 3; + transmittance.setPixel(x, y, Color(pixel[0], pixel[1], pixel[2], 1.0)); + } + } + + stream = PackStream(); + stream.bindToFile("atmo-br-transmittance-256-64-0-0-0.cache", true); + transmittance.save(&stream); + transmittance.saveToFile("transmittance.png"); + delete[] texdata; + + /* Dump inscatter */ + Texture4D inscatter(RES_MU, RES_MU_S, RES_NU, RES_R); + //Texture3D inscatter(RES_MU_S * RES_NU, RES_MU, RES_R); + + texdata = new float[RES_MU * RES_MU_S * RES_NU * RES_R * 4 * sizeof(float)]; + + glBindTexture(GL_TEXTURE_3D, inscatterTexture); + glGetTexImage(GL_TEXTURE_3D, 0, GL_RGBA, GL_FLOAT, texdata); + + for (x = 0; x < RES_MU; x++) + { + for (y = 0; y < RES_MU_S; y++) + { + for (z = 0; z < RES_NU; z++) + { + for (w = 0; w < RES_R; w++) + { + float* pixel = texdata + (w * (RES_MU * RES_MU_S * RES_NU) + z * (RES_MU_S) + y + x * (RES_MU_S * RES_NU)) * 4; + inscatter.setPixel(x, y, z, w, Color(pixel[0], pixel[1], pixel[2], pixel[3])); + } + } + } + } + + stream = PackStream(); + stream.bindToFile("atmo-br-inscatter-128-32-8-32-0.cache", true); + inscatter.save(&stream); + inscatter.saveToFile("inscatter.png"); + delete[] texdata; + + /* Check errors */ + int error_code; + while ((error_code = glGetError()) != GL_NO_ERROR) + { + logWarning("[OpenGL] ERROR : %s", (const char*)gluErrorString(error_code)); + } +} + int main(int argc, char* argv[]) { glutInit(&argc, argv); @@ -718,6 +813,7 @@ int main(int argc, char* argv[]) loadData(); precompute(); + dumpTextures(); updateView(); glutMainLoop(); } diff --git a/src/experiments/bruneton/bruneton.pro b/src/experiments/bruneton/bruneton.pro index 4b8801a..881f524 100644 --- a/src/experiments/bruneton/bruneton.pro +++ b/src/experiments/bruneton/bruneton.pro @@ -1,7 +1,5 @@ TEMPLATE = app -CONFIG += console CONFIG -= app_bundle -CONFIG -= qt TARGET = paysages-experiment-bruneton @@ -23,3 +21,15 @@ HEADERS += \ mat4.h \ vec3.h + +win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../../system/release/ -lpaysages_system +else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../../system/debug/ -lpaysages_system +else:unix: LIBS += -L$$OUT_PWD/../../system/ -lpaysages_system +INCLUDEPATH += $$PWD/../../system +DEPENDPATH += $$PWD/../../system + +win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../../basics/release/ -lpaysages_basics +else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../../basics/debug/ -lpaysages_basics +else:unix: LIBS += -L$$OUT_PWD/../../basics/ -lpaysages_basics +INCLUDEPATH += $$PWD/../../basics +DEPENDPATH += $$PWD/../../basics diff --git a/src/system/CacheFile.cpp b/src/system/CacheFile.cpp index 583e206..270b656 100644 --- a/src/system/CacheFile.cpp +++ b/src/system/CacheFile.cpp @@ -5,7 +5,7 @@ CacheFile::CacheFile(const char* module, const char* ext, const char* tag1, int datapath = (char*)malloc(sizeof(char) * 501); filepath = (char*)malloc(sizeof(char) * 501); - snprintf(datapath, 500, "/usr/share/paysages3d/%s-%s-%d-%d-%d-%d-%d.%s", module, tag1, tag2, tag3, tag4, tag5, tag6, ext); + snprintf(datapath, 500, "./data/cache/%s-%s-%d-%d-%d-%d-%d.%s", module, tag1, tag2, tag3, tag4, tag5, tag6, ext); snprintf(filepath, 500, "./cache/%s-%s-%d-%d-%d-%d-%d.%s", module, tag1, tag2, tag3, tag4, tag5, tag6, ext); }