diff --git a/core/rend/gl4/gles.cpp b/core/rend/gl4/gles.cpp index 51f12986c..8fb2e9e93 100644 --- a/core/rend/gl4/gles.cpp +++ b/core/rend/gl4/gles.cpp @@ -742,17 +742,6 @@ static bool RenderFrame(int width, int height) gl4ShaderUniforms.fog_clamp_max[2] = ((pvrrc.fog_clamp_max >> 0) & 0xFF) / 255.0f; gl4ShaderUniforms.fog_clamp_max[3] = ((pvrrc.fog_clamp_max >> 24) & 0xFF) / 255.0f; - if (fog_needs_update && config::Fog) - { - fog_needs_update = false; - UpdateFogTexture((u8 *)FOG_TABLE, GL_TEXTURE5, GL_RED); - } - if (palette_updated) - { - UpdatePaletteTexture(GL_TEXTURE6); - palette_updated = false; - } - glcache.UseProgram(gl4.modvol_shader.program); glUniformMatrix4fv(gl4.modvol_shader.normal_matrix, 1, GL_FALSE, &gl4ShaderUniforms.normal_mat[0][0]); @@ -968,6 +957,13 @@ struct OpenGL4Renderer : OpenGLRenderer return render_output_framebuffer(); } + GLenum getFogTextureSlot() const override { + return GL_TEXTURE5; + } + GLenum getPaletteTextureSlot() const override { + return GL_TEXTURE6; + } + #ifdef LIBRETRO void DrawOSD(bool clearScreen) override { diff --git a/core/rend/gles/gles.cpp b/core/rend/gles/gles.cpp index 41dfb1b7b..caa157fc5 100644 --- a/core/rend/gles/gles.cpp +++ b/core/rend/gles/gles.cpp @@ -1076,7 +1076,7 @@ void OSD_DRAW(bool clear_screen) #endif } -bool ProcessFrame(TA_context* ctx) +bool OpenGLRenderer::Process(TA_context* ctx) { if (KillTex) TexCache.Clear(); @@ -1088,6 +1088,17 @@ bool ProcessFrame(TA_context* ctx) } else { + if (fog_needs_update && config::Fog) + { + fog_needs_update = false; + UpdateFogTexture((u8 *)FOG_TABLE, getFogTextureSlot(), gl.single_channel_format); + } + if (palette_updated) + { + UpdatePaletteTexture(getPaletteTextureSlot()); + palette_updated = false; + } + if (!ta_parse_vdrc(ctx)) return false; } @@ -1171,17 +1182,6 @@ bool RenderFrame(int width, int height) ShaderUniforms.fog_clamp_max[2] = ((pvrrc.fog_clamp_max >> 0) & 0xFF) / 255.0f; ShaderUniforms.fog_clamp_max[3] = ((pvrrc.fog_clamp_max >> 24) & 0xFF) / 255.0f; - if (fog_needs_update && config::Fog) - { - fog_needs_update = false; - UpdateFogTexture((u8 *)FOG_TABLE, GL_TEXTURE1, gl.single_channel_format); - } - if (palette_updated) - { - UpdatePaletteTexture(GL_TEXTURE2); - palette_updated = false; - } - glcache.UseProgram(gl.modvol_shader.program); if (gl.modvol_shader.depth_scale != -1) diff --git a/core/rend/gles/gles.h b/core/rend/gles/gles.h index 3deace7b3..0dc0ab924 100755 --- a/core/rend/gles/gles.h +++ b/core/rend/gles/gles.h @@ -269,7 +269,7 @@ struct OpenGLRenderer : Renderer void Resize(int w, int h) override { width = w; height = h; } void Term() override; - bool Process(TA_context* ctx) override { return ProcessFrame(ctx); } + bool Process(TA_context* ctx) override; bool Render() override; @@ -290,6 +290,13 @@ struct OpenGLRenderer : Renderer return true; } + virtual GLenum getFogTextureSlot() const { + return GL_TEXTURE1; + } + virtual GLenum getPaletteTextureSlot() const { + return GL_TEXTURE2; + } + bool frameRendered = false; int width; int height;