From 47532a4e737ea9e75a3dc4713516a2cb5849d464 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Wed, 20 Mar 2019 13:51:46 +1100 Subject: [PATCH] fixed composition when color management is off --- rendering/renderthread.cpp | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/rendering/renderthread.cpp b/rendering/renderthread.cpp index 076cf635e..740cab9b6 100644 --- a/rendering/renderthread.cpp +++ b/rendering/renderthread.cpp @@ -252,20 +252,32 @@ void RenderThread::paint() { FramebufferObject& buffer = front_buffer_switcher ? front_buffer_1 : front_buffer_2; - // Convert linear frame to display color space + // Blit the composite buffer to one of the front buffers + bool standard_blit = true; + #ifndef NO_OCIO - olive::rendering::OCIOBlit(ocio_shader.get(), - ocio_lut_texture, - buffer, - composite_buffer.texture()); + // If we're color managing, conver the linear composited frame to display color space + if (olive::CurrentConfig.enable_color_management && ocio_shader != nullptr) { + olive::rendering::OCIOBlit(ocio_shader.get(), + ocio_lut_texture, + buffer, + composite_buffer.texture()); + + standard_blit = false; + } #else - buffer.BindBuffer(); - composite_buffer.BindTexture(); - olive::rendering::Blit(pipeline_program.get()); - composite_buffer.ReleaseTexture(); - buffer.ReleaseBuffer(); + #endif + // If we're not color managing, just blit normally + if (standard_blit) { + buffer.BindBuffer(); + composite_buffer.BindTexture(); + olive::rendering::Blit(pipeline_program.get()); + composite_buffer.ReleaseTexture(); + buffer.ReleaseBuffer(); + } + // flush changes f->glFinish();