gl: update fog and texture palette in Process()

This commit is contained in:
Flyinghead 2021-09-03 11:12:47 +02:00
parent b362a55c04
commit e02ccbf32a
3 changed files with 27 additions and 24 deletions

View File

@ -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
{

View File

@ -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)

View File

@ -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;