diff --git a/src/game.h b/src/game.h index f84d43c..38555d2 100644 --- a/src/game.h +++ b/src/game.h @@ -224,6 +224,12 @@ namespace Game { level->flipMap(); Input::down[ikF] = false; } + + if (Input::down[ikCtrl] && Input::down[ik1]) { + delete shaderCache; + shaderCache = new ShaderCache(); + Input::down[ik1] = false; + } #endif if (Input::down[ik5] && !inventory->isActive()) { diff --git a/src/gapi_gl.h b/src/gapi_gl.h index 08ff171..2e4cc1b 100644 --- a/src/gapi_gl.h +++ b/src/gapi_gl.h @@ -373,6 +373,38 @@ namespace GAPI { default : ASSERT(false); LOG("! wrong pass id\n"); return; } + #ifdef _DEBUG + Stream *stream = NULL; + switch (pass) { + case Core::passCompose : + case Core::passShadow : + case Core::passAmbient : stream = new Stream("../../src/shaders/shader.glsl"); break; + case Core::passWater : stream = new Stream("../../src/shaders/water.glsl"); break; + case Core::passFilter : stream = new Stream("../../src/shaders/filter.glsl"); break; + case Core::passGUI : stream = new Stream("../../src/shaders/gui.glsl"); break; + default : ASSERT(false); return; + } + + char *sourceData = new char[stream->size + 1]; + stream->raw(sourceData, stream->size); + sourceData[stream->size] = 0; + + source = sourceData; + for (int i = 0; i < stream->size; i++) // trim string resource begin tag + if (sourceData[i] == '(') { + source = sourceData + i + 1; + break; + } + + for (int i = stream->size - 1; i >= 0; i--) // trim string resource end tag + if (sourceData[i] == ')') { + sourceData[i] = 0; + break; + } + + delete stream; + #endif + char defines[1024]; defines[0] = 0; @@ -422,6 +454,10 @@ namespace GAPI { } } + #ifdef _DEBUG + delete[] sourceData; + #endif + Core::active.shader = this; glUseProgram(ID);