Skip to content

Commit

Permalink
- convert colormap shader to postprocess steps
Browse files Browse the repository at this point in the history
  • Loading branch information
dpjudas committed Jun 21, 2018
1 parent 83f50f5 commit ebf0cef
Show file tree
Hide file tree
Showing 8 changed files with 64 additions and 127 deletions.
1 change: 0 additions & 1 deletion src/CMakeLists.txt
Expand Up @@ -1068,7 +1068,6 @@ set (PCH_SOURCES
hwrenderer/postprocessing/hw_presentshader.cpp
hwrenderer/postprocessing/hw_present3dRowshader.cpp
hwrenderer/postprocessing/hw_ambientshader.cpp
hwrenderer/postprocessing/hw_colormapshader.cpp
hwrenderer/postprocessing/hw_tonemapshader.cpp
hwrenderer/textures/hw_material.cpp
hwrenderer/textures/hw_precache.cpp
Expand Down
46 changes: 4 additions & 42 deletions src/gl/renderer/gl_postprocess.cpp
Expand Up @@ -41,7 +41,6 @@
#include "gl/data/gl_vertexbuffer.h"
#include "hwrenderer/postprocessing/hw_ambientshader.h"
#include "hwrenderer/postprocessing/hw_tonemapshader.h"
#include "hwrenderer/postprocessing/hw_colormapshader.h"
#include "hwrenderer/postprocessing/hw_presentshader.h"
#include "hwrenderer/postprocessing/hw_postprocess.h"
#include "hwrenderer/postprocessing/hw_postprocess_cvars.h"
Expand Down Expand Up @@ -451,45 +450,14 @@ void FGLRenderer::ClearTonemapPalette()
}
}

//-----------------------------------------------------------------------------
//
// Colormap scene texture and place the result in the HUD/2D texture
//
//-----------------------------------------------------------------------------

void FGLRenderer::ColormapScene(int fixedcm)
{
if (fixedcm < CM_FIRSTSPECIALCOLORMAP || fixedcm >= CM_MAXCOLORMAP)
return;

FGLDebug::PushGroup("ColormapScene");

FGLPostProcessState savedState;

mBuffers->BindNextFB();
mBuffers->BindCurrentTexture(0);
mColormapShader->Bind(NOQUEUE);

FSpecialColormap *scm = &SpecialColormaps[fixedcm - CM_FIRSTSPECIALCOLORMAP];
float m[] = { scm->ColorizeEnd[0] - scm->ColorizeStart[0],
scm->ColorizeEnd[1] - scm->ColorizeStart[1], scm->ColorizeEnd[2] - scm->ColorizeStart[2], 0.f };

mColormapShader->Uniforms->MapStart = { scm->ColorizeStart[0], scm->ColorizeStart[1], scm->ColorizeStart[2], 0.f };
mColormapShader->Uniforms->MapRange = m;
mColormapShader->Uniforms.Set();

RenderScreenQuad();
mBuffers->NextTexture();

FGLDebug::PopGroup();
PPColormap colormap;
colormap.DeclareShaders();
colormap.UpdateSteps(fixedcm);
mBuffers->RenderEffect("ColormapScene");
}

//-----------------------------------------------------------------------------
//
// Apply lens distortion and place the result in the HUD/2D texture
//
//-----------------------------------------------------------------------------

void FGLRenderer::LensDistortScene()
{
PPLensDistort lens;
Expand All @@ -498,12 +466,6 @@ void FGLRenderer::LensDistortScene()
mBuffers->RenderEffect("LensDistortScene");
}

//-----------------------------------------------------------------------------
//
// Apply FXAA and place the result in the HUD/2D texture
//
//-----------------------------------------------------------------------------

void FGLRenderer::ApplyFXAA()
{
PPFXAA fxaa;
Expand Down
4 changes: 0 additions & 4 deletions src/gl/renderer/gl_renderer.cpp
Expand Up @@ -52,7 +52,6 @@
#include "gl/scene/gl_scenedrawer.h"
#include "hwrenderer/postprocessing/hw_ambientshader.h"
#include "hwrenderer/postprocessing/hw_tonemapshader.h"
#include "hwrenderer/postprocessing/hw_colormapshader.h"
#include "hwrenderer/postprocessing/hw_presentshader.h"
#include "hwrenderer/postprocessing/hw_present3dRowshader.h"
#include "hwrenderer/postprocessing/hw_shadowmapshader.h"
Expand Down Expand Up @@ -101,7 +100,6 @@ FGLRenderer::FGLRenderer(OpenGLFrameBuffer *fb)
mPresent3dRowShader = nullptr;
mTonemapShader = nullptr;
mTonemapPalette = nullptr;
mColormapShader = nullptr;
mLinearDepthShader = nullptr;
mDepthBlurShader = nullptr;
mSSAOShader = nullptr;
Expand All @@ -120,7 +118,6 @@ void FGLRenderer::Initialize(int width, int height)
mSSAOShader = new FSSAOShader();
mSSAOCombineShader = new FSSAOCombineShader();
mTonemapShader = new FTonemapShader();
mColormapShader = new FColormapShader();
mTonemapPalette = nullptr;
mPresentShader = new FPresentShader();
mPresent3dCheckerShader = new FPresent3DCheckerShader();
Expand Down Expand Up @@ -178,7 +175,6 @@ FGLRenderer::~FGLRenderer()
if (mPresent3dRowShader) delete mPresent3dRowShader;
if (mTonemapShader) delete mTonemapShader;
if (mTonemapPalette) delete mTonemapPalette;
if (mColormapShader) delete mColormapShader;
if (mShadowMapShader) delete mShadowMapShader;
delete mCustomPostProcessShaders;
}
Expand Down
2 changes: 0 additions & 2 deletions src/gl/renderer/gl_renderer.h
Expand Up @@ -30,7 +30,6 @@ class FDepthBlurShader;
class FSSAOShader;
class FSSAOCombineShader;
class FTonemapShader;
class FColormapShader;
class FPresentShader;
class FPresent3DCheckerShader;
class FPresent3DColumnShader;
Expand Down Expand Up @@ -76,7 +75,6 @@ class FGLRenderer
FDepthBlurShader *mDepthBlurShader;
FSSAOCombineShader *mSSAOCombineShader;
FTonemapShader *mTonemapShader;
FColormapShader *mColormapShader;
FHardwareTexture *mTonemapPalette;
FPresentShader *mPresentShader;
FPresent3DCheckerShader *mPresent3dCheckerShader;
Expand Down
45 changes: 0 additions & 45 deletions src/hwrenderer/postprocessing/hw_colormapshader.cpp

This file was deleted.

33 changes: 0 additions & 33 deletions src/hwrenderer/postprocessing/hw_colormapshader.h

This file was deleted.

36 changes: 36 additions & 0 deletions src/hwrenderer/postprocessing/hw_postprocess.cpp
Expand Up @@ -478,3 +478,39 @@ void PPCameraExposure::UpdateSteps()

hw_postprocess.Effects["UpdateCameraExposure"] = steps;
}

/////////////////////////////////////////////////////////////////////////////

void PPColormap::DeclareShaders()
{
hw_postprocess.Shaders["Colormap"] = { "shaders/glsl/colormap.fp", "", ColormapUniforms::Desc() };
}

void PPColormap::UpdateSteps(int fixedcm)
{
if (fixedcm < CM_FIRSTSPECIALCOLORMAP || fixedcm >= CM_MAXCOLORMAP)
{
hw_postprocess.Effects["ColormapScene"] = {};
return;
}

FSpecialColormap *scm = &SpecialColormaps[fixedcm - CM_FIRSTSPECIALCOLORMAP];
float m[] = { scm->ColorizeEnd[0] - scm->ColorizeStart[0],
scm->ColorizeEnd[1] - scm->ColorizeStart[1], scm->ColorizeEnd[2] - scm->ColorizeStart[2], 0.f };

ColormapUniforms uniforms;
uniforms.MapStart = { scm->ColorizeStart[0], scm->ColorizeStart[1], scm->ColorizeStart[2], 0.f };
uniforms.MapRange = m;

PPStep step;
step.ShaderName = "Colormap";
step.Uniforms.Set(uniforms);
step.Viewport = screen->mScreenViewport;
step.SetInputCurrent(0);
step.SetOutputNext();
step.SetNoBlend();

TArray<PPStep> steps;
steps.Push(step);
hw_postprocess.Effects["ColormapScene"] = steps;
}
24 changes: 24 additions & 0 deletions src/hwrenderer/postprocessing/hw_postprocess.h
Expand Up @@ -387,3 +387,27 @@ class PPCameraExposure
TArray<PPExposureLevel> ExposureLevels;
bool FirstExposureFrame = true;
};

/////////////////////////////////////////////////////////////////////////////

struct ColormapUniforms
{
FVector4 MapStart;
FVector4 MapRange;

static std::vector<UniformFieldDesc> Desc()
{
return
{
{ "uFixedColormapStart", UniformType::Vec4, offsetof(ColormapUniforms, MapStart) },
{ "uFixedColormapRange", UniformType::Vec4, offsetof(ColormapUniforms, MapRange) },
};
}
};

class PPColormap
{
public:
void DeclareShaders();
void UpdateSteps(int fixedcm);
};

0 comments on commit ebf0cef

Please sign in to comment.