- add gl_dither for toggling dithered output on and off
This commit is contained in:
parent
863b9fff8a
commit
d121fa21bf
6 changed files with 19 additions and 3 deletions
|
|
@ -49,6 +49,8 @@
|
|||
|
||||
extern bool vid_hdr_active;
|
||||
|
||||
CVAR(Bool, gl_dither, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL)
|
||||
|
||||
void FGLRenderer::RenderScreenQuad()
|
||||
{
|
||||
mVBO->BindVBO();
|
||||
|
|
@ -234,6 +236,11 @@ void FGLRenderer::DrawPresentTexture(const IntRect &box, bool applyGamma)
|
|||
// Full screen exclusive mode treats a rgba16f frame buffer as linear.
|
||||
// It probably will eventually in desktop mode too, but the DWM doesn't seem to support that.
|
||||
mPresentShader->Uniforms->InvGamma *= 2.2f;
|
||||
mPresentShader->Uniforms->ColorScale = gl_dither ? 1023.0f : 0.0f;
|
||||
}
|
||||
else
|
||||
{
|
||||
mPresentShader->Uniforms->ColorScale = gl_dither ? 255.0f : 0.0f;
|
||||
}
|
||||
mPresentShader->Uniforms->Scale = { screen->mScreenViewport.width / (float)mBuffers->GetWidth(), screen->mScreenViewport.height / (float)mBuffers->GetHeight() };
|
||||
mPresentShader->Uniforms.Set();
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ EXTERN_CVAR(Float, vid_saturation)
|
|||
EXTERN_CVAR(Float, vid_brightness)
|
||||
EXTERN_CVAR(Float, vid_contrast)
|
||||
EXTERN_CVAR(Int, gl_satformula)
|
||||
EXTERN_CVAR(Bool, gl_dither)
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
|
|
@ -162,6 +163,7 @@ static void prepareInterleavedPresent(FPresentShaderBase& shader)
|
|||
shader.Uniforms->Saturation = clamp<float>(vid_saturation, -15.0f, 15.0f);
|
||||
shader.Uniforms->GrayFormula = static_cast<int>(gl_satformula);
|
||||
}
|
||||
shader.Uniforms->ColorScale = gl_dither ? 255.0f : 0.0f;
|
||||
shader.Uniforms->Scale = {
|
||||
screen->mScreenViewport.width / (float)GLRenderer->mBuffers->GetWidth(),
|
||||
screen->mScreenViewport.height / (float)GLRenderer->mBuffers->GetHeight()
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ public:
|
|||
int GrayFormula;
|
||||
int WindowPositionParity; // top-of-window might not be top-of-screen
|
||||
FVector2 Scale;
|
||||
float ColorScale;
|
||||
float Padding1, Padding2, Padding3;
|
||||
|
||||
static std::vector<UniformFieldDesc> Desc()
|
||||
{
|
||||
|
|
@ -30,6 +32,7 @@ public:
|
|||
{ "GrayFormula", UniformType::Int, offsetof(UniformBlock, GrayFormula) },
|
||||
{ "WindowPositionParity", UniformType::Int, offsetof(UniformBlock, WindowPositionParity) },
|
||||
{ "UVScale", UniformType::Vec2, offsetof(UniformBlock, Scale) },
|
||||
{ "ColorScale", UniformType::Float, offsetof(UniformBlock, ColorScale) },
|
||||
};
|
||||
}
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue