diff --git a/src/hardware/hw_defs.h b/src/hardware/hw_defs.h index 51c89e75c..2e82ef325 100644 --- a/src/hardware/hw_defs.h +++ b/src/hardware/hw_defs.h @@ -166,6 +166,7 @@ enum SHADER_SKY, SHADER_PALETTE_POSTPROCESS, SHADER_UI_COLORMAP_FADE, + SHADER_FINAL_POST_PROCESS, NUMSHADERTARGETS }; diff --git a/src/hardware/hw_shaders.c b/src/hardware/hw_shaders.c index 9e8bb7e92..75e760123 100644 --- a/src/hardware/hw_shaders.c +++ b/src/hardware/hw_shaders.c @@ -435,6 +435,8 @@ customshaderxlat_t shaderxlat[] = {"Sky", SHADER_SKY}, {"PalettePostprocess", SHADER_PALETTE_POSTPROCESS}, {"UIColormapFade", SHADER_UI_COLORMAP_FADE}, + {"FinalPostProcess", SHADER_FINAL_POST_PROCESS}, + {NULL, 0}, }; diff --git a/src/hardware/r_opengl/r_opengl.c b/src/hardware/r_opengl/r_opengl.c index 9a32989a1..3d3cd75c0 100644 --- a/src/hardware/r_opengl/r_opengl.c +++ b/src/hardware/r_opengl/r_opengl.c @@ -3449,6 +3449,8 @@ void GL_DrawScreenFinalTexture(int tex, int width, int height) GL_ClearBuffer(true, false, false, &clearColour); pglBindTexture(GL_TEXTURE_2D, screenTextures[tex]); + Shader_SetUniforms(NULL, NULL, NULL, NULL); // prepare shader, if it is enabled + pglColor4ubv(white); pglTexCoordPointer(2, GL_FLOAT, 0, fix); diff --git a/src/sdl/ogl_sdl.c b/src/sdl/ogl_sdl.c index bd04e2a02..9a96759fc 100644 --- a/src/sdl/ogl_sdl.c +++ b/src/sdl/ogl_sdl.c @@ -185,7 +185,9 @@ void OglSdlFinishUpdate(boolean waitvbl) SDL_GetWindowSizeInPixels(window, &sdlw, &sdlh); HWR_MakeScreenFinalTexture(); + GL_SetShader(HWR_GetShaderFromTarget(SHADER_FINAL_POST_PROCESS)); HWR_DrawScreenFinalTexture(sdlw, sdlh); + GL_UnSetShader(); SDL_GL_SwapWindow(window); GL_GClipRect(0, 0, vid.width, vid.height, NZCLIP_PLANE);