diff --git a/Source/Engine/Renderer/GBufferPass.cpp b/Source/Engine/Renderer/GBufferPass.cpp index 6b3a655c0..6e7c5bc3c 100644 --- a/Source/Engine/Renderer/GBufferPass.cpp +++ b/Source/Engine/Renderer/GBufferPass.cpp @@ -21,10 +21,12 @@ #include "Engine/Level/Actors/Decal.h" #include "Engine/Level/Actors/Sky.h" #include "Engine/Engine/Engine.h" +#include "Engine/Graphics/Graphics.h" GPU_CB_STRUCT(GBufferPassData { ShaderGBufferData GBuffer; - Float3 Dummy0; + Float2 Dummy0; + int32 ViewLinear; int32 ViewMode; }); @@ -248,6 +250,13 @@ void GBufferPass::RenderDebug(RenderContext& renderContext) // Set constants buffer SetInputs(renderContext.View, data.GBuffer); + data.ViewLinear = 0; + switch (renderContext.View.Mode) + { + case ViewMode::Diffuse: + data.ViewLinear = !Graphics::GammaColorSpace; + break; + } data.ViewMode = static_cast(renderContext.View.Mode); auto cb = lights->GetCB(0); context->UpdateCB(cb, &data); diff --git a/Source/Shaders/GBuffer.shader b/Source/Shaders/GBuffer.shader index cc89ea310..bc2730a22 100644 --- a/Source/Shaders/GBuffer.shader +++ b/Source/Shaders/GBuffer.shader @@ -5,10 +5,12 @@ #include "./Flax/Common.hlsl" #include "./Flax/GBuffer.hlsl" #include "./Flax/BRDF.hlsl" +#include "./Flax/GammaCorrectionCommon.hlsl" META_CB_BEGIN(0, Data) GBufferData GBuffer; -float3 Dummy0; +float2 Dummy0; +int ViewLinear; int ViewMode; META_CB_END @@ -67,5 +69,7 @@ float4 PS_DebugView(Quad_VS2PS input) : SV_Target case View_Mode_SubsurfaceColor: result = gBuffer.CustomData.rgb; break; case View_Mode_Unlit: result = gBuffer.Color * gBuffer.AO; break; } + if (ViewLinear) + result = LinearToSrgb(result); return float4(result, 1); }