gl: update fog and texture palette in Process()
This commit is contained in:
parent
b362a55c04
commit
e02ccbf32a
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue