From b8ffe6f6c02d6969c9409296621235ae48394a64 Mon Sep 17 00:00:00 2001 From: Robert Beckebans Date: Sat, 13 Oct 2018 19:46:31 +0200 Subject: [PATCH] Fixed too bright Bink decoding in HDR mode --- base/renderprogs/bink.pixel | 9 ++++++--- neo/renderer/RenderBackend.cpp | 12 +++++++++++- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/base/renderprogs/bink.pixel b/base/renderprogs/bink.pixel index 1fee8654..bc5913e2 100644 --- a/base/renderprogs/bink.pixel +++ b/base/renderprogs/bink.pixel @@ -54,7 +54,10 @@ void main( PS_IN fragment, out PS_OUT result ) { float3 p = ( YScalar * Y ); p += ( crc * Cr ) + ( crb * Cb ) + adj; - result.color.xyz = p; - result.color.w = 1.0; - result.color *= rpColor; + float4 color; + color.xyz = p; + color.w = 1.0; + color *= rpColor; + + result.color = sRGBAToLinearRGBA( color ); } \ No newline at end of file diff --git a/neo/renderer/RenderBackend.cpp b/neo/renderer/RenderBackend.cpp index 8c9ba3e8..bd2b23d9 100644 --- a/neo/renderer/RenderBackend.cpp +++ b/neo/renderer/RenderBackend.cpp @@ -576,12 +576,22 @@ void idRenderBackend::BindVariableStageImage( const textureStage_t* texture, con { GL_SelectTexture( 0 ); cin.imageY->Bind(); + GL_SelectTexture( 1 ); cin.imageCr->Bind(); + GL_SelectTexture( 2 ); cin.imageCb->Bind(); + // DG: imageY is only used for bink videos (with libbinkdec), so the bink shader must be used - renderProgManager.BindShader_Bink(); + if( viewDef->is2Dgui ) + { + renderProgManager.BindShader_BinkGUI(); + } + else + { + renderProgManager.BindShader_Bink(); + } } else if( cin.image != NULL ) {