Merge branch 'exposure_pass' into lightmath
# Conflicts: # src/gl/renderer/gl_renderbuffers.cpp # src/gl/renderer/gl_renderbuffers.h # src/gl/renderer/gl_renderer.h # src/gl/scene/gl_scene.cpp
This commit is contained in:
commit
38be2333d0
16 changed files with 327 additions and 34 deletions
|
|
@ -46,7 +46,7 @@ void FBloomExtractShader::Bind()
|
|||
mShader.Link("shaders/glsl/bloomextract");
|
||||
mShader.SetAttribLocation(0, "PositionInProjection");
|
||||
SceneTexture.Init(mShader, "SceneTexture");
|
||||
Exposure.Init(mShader, "ExposureAdjustment");
|
||||
ExposureTexture.Init(mShader, "ExposureTexture");
|
||||
Scale.Init(mShader, "Scale");
|
||||
Offset.Init(mShader, "Offset");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ public:
|
|||
void Bind();
|
||||
|
||||
FBufferedUniformSampler SceneTexture;
|
||||
FBufferedUniform1f Exposure;
|
||||
FBufferedUniformSampler ExposureTexture;
|
||||
FBufferedUniform2f Scale;
|
||||
FBufferedUniform2f Offset;
|
||||
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ void FTonemapShader::Bind()
|
|||
shader.Link("shaders/glsl/tonemap");
|
||||
shader.SetAttribLocation(0, "PositionInProjection");
|
||||
SceneTexture.Init(shader, "InputTexture");
|
||||
Exposure.Init(shader, "ExposureAdjustment");
|
||||
ExposureTexture.Init(shader, "ExposureTexture");
|
||||
PaletteLUT.Init(shader, "PaletteLUT");
|
||||
}
|
||||
shader.Bind();
|
||||
|
|
@ -70,3 +70,51 @@ const char *FTonemapShader::GetDefines(int mode)
|
|||
case Palette: return "#define PALETTE\n";
|
||||
}
|
||||
}
|
||||
|
||||
void FExposureExtractShader::Bind()
|
||||
{
|
||||
if (!mShader)
|
||||
{
|
||||
mShader.Compile(FShaderProgram::Vertex, "shaders/glsl/screenquad.vp", "", 330);
|
||||
mShader.Compile(FShaderProgram::Fragment, "shaders/glsl/exposureextract.fp", "", 330);
|
||||
mShader.SetFragDataLocation(0, "FragColor");
|
||||
mShader.Link("shaders/glsl/exposureextract");
|
||||
mShader.SetAttribLocation(0, "PositionInProjection");
|
||||
SceneTexture.Init(mShader, "SceneTexture");
|
||||
Scale.Init(mShader, "Scale");
|
||||
Offset.Init(mShader, "Offset");
|
||||
}
|
||||
mShader.Bind();
|
||||
}
|
||||
|
||||
void FExposureAverageShader::Bind()
|
||||
{
|
||||
if (!mShader)
|
||||
{
|
||||
mShader.Compile(FShaderProgram::Vertex, "shaders/glsl/screenquad.vp", "", 400);
|
||||
mShader.Compile(FShaderProgram::Fragment, "shaders/glsl/exposureaverage.fp", "", 400);
|
||||
mShader.SetFragDataLocation(0, "FragColor");
|
||||
mShader.Link("shaders/glsl/exposureaverage");
|
||||
mShader.SetAttribLocation(0, "PositionInProjection");
|
||||
ExposureTexture.Init(mShader, "ExposureTexture");
|
||||
}
|
||||
mShader.Bind();
|
||||
}
|
||||
|
||||
void FExposureCombineShader::Bind()
|
||||
{
|
||||
if (!mShader)
|
||||
{
|
||||
mShader.Compile(FShaderProgram::Vertex, "shaders/glsl/screenquad.vp", "", 330);
|
||||
mShader.Compile(FShaderProgram::Fragment, "shaders/glsl/exposurecombine.fp", "", 330);
|
||||
mShader.SetFragDataLocation(0, "FragColor");
|
||||
mShader.Link("shaders/glsl/exposurecombine");
|
||||
mShader.SetAttribLocation(0, "PositionInProjection");
|
||||
ExposureTexture.Init(mShader, "ExposureTexture");
|
||||
ExposureBase.Init(mShader, "ExposureBase");
|
||||
ExposureMin.Init(mShader, "ExposureMin");
|
||||
ExposureScale.Init(mShader, "ExposureScale");
|
||||
ExposureSpeed.Init(mShader, "ExposureSpeed");
|
||||
}
|
||||
mShader.Bind();
|
||||
}
|
||||
|
|
@ -9,7 +9,7 @@ public:
|
|||
void Bind();
|
||||
|
||||
FBufferedUniformSampler SceneTexture;
|
||||
FBufferedUniform1f Exposure;
|
||||
FBufferedUniformSampler ExposureTexture;
|
||||
FBufferedUniformSampler PaletteLUT;
|
||||
|
||||
static bool IsPaletteMode();
|
||||
|
|
@ -31,4 +31,43 @@ private:
|
|||
FShaderProgram mShader[NumTonemapModes];
|
||||
};
|
||||
|
||||
class FExposureExtractShader
|
||||
{
|
||||
public:
|
||||
void Bind();
|
||||
|
||||
FBufferedUniformSampler SceneTexture;
|
||||
FBufferedUniform2f Scale;
|
||||
FBufferedUniform2f Offset;
|
||||
|
||||
private:
|
||||
FShaderProgram mShader;
|
||||
};
|
||||
|
||||
class FExposureAverageShader
|
||||
{
|
||||
public:
|
||||
void Bind();
|
||||
|
||||
FBufferedUniformSampler ExposureTexture;
|
||||
|
||||
private:
|
||||
FShaderProgram mShader;
|
||||
};
|
||||
|
||||
class FExposureCombineShader
|
||||
{
|
||||
public:
|
||||
void Bind();
|
||||
|
||||
FBufferedUniformSampler ExposureTexture;
|
||||
FBufferedUniform1f ExposureBase;
|
||||
FBufferedUniform1f ExposureMin;
|
||||
FBufferedUniform1f ExposureScale;
|
||||
FBufferedUniform1f ExposureSpeed;
|
||||
|
||||
private:
|
||||
FShaderProgram mShader;
|
||||
};
|
||||
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue