Port Bloom shaders.
This commit is contained in:
parent
d8e4a352ba
commit
c3cead9f9c
@ -207,11 +207,11 @@ void PostProcessing::update(float dt)
|
||||
static
|
||||
void renderBloom(GLuint in)
|
||||
{
|
||||
glUseProgram(FullScreenShader::BloomShader::Program);
|
||||
glBindVertexArray(FullScreenShader::BloomShader::vao);
|
||||
glUseProgram(FullScreenShader::BloomShader::getInstance()->Program);
|
||||
glBindVertexArray(FullScreenShader::BloomShader::getInstance()->vao);
|
||||
|
||||
setTexture(0, in, GL_NEAREST, GL_NEAREST);
|
||||
FullScreenShader::BloomShader::setUniforms(0);
|
||||
setTexture(FullScreenShader::BloomShader::getInstance()->TU_tex, in, GL_NEAREST, GL_NEAREST);
|
||||
FullScreenShader::BloomShader::getInstance()->setUniforms();
|
||||
|
||||
glDrawArrays(GL_TRIANGLES, 0, 3);
|
||||
}
|
||||
@ -814,12 +814,12 @@ FrameBuffer *PostProcessing::render(scene::ICameraSceneNode * const camnode, boo
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_ONE, GL_ONE);
|
||||
glBlendEquation(GL_FUNC_ADD);
|
||||
setTexture(0, irr_driver->getRenderTargetTexture(RTT_BLOOM_128), GL_LINEAR, GL_LINEAR);
|
||||
setTexture(1, irr_driver->getRenderTargetTexture(RTT_BLOOM_256), GL_LINEAR, GL_LINEAR);
|
||||
setTexture(2, irr_driver->getRenderTargetTexture(RTT_BLOOM_512), GL_LINEAR, GL_LINEAR);
|
||||
glUseProgram(FullScreenShader::BloomBlendShader::Program);
|
||||
FullScreenShader::BloomBlendShader::setUniforms(0, 1, 2);
|
||||
glBindVertexArray(FullScreenShader::BloomBlendShader::vao);
|
||||
setTexture(FullScreenShader::BloomBlendShader::getInstance()->TU_tex_128, irr_driver->getRenderTargetTexture(RTT_BLOOM_128), GL_LINEAR, GL_LINEAR);
|
||||
setTexture(FullScreenShader::BloomBlendShader::getInstance()->TU_tex_256, irr_driver->getRenderTargetTexture(RTT_BLOOM_256), GL_LINEAR, GL_LINEAR);
|
||||
setTexture(FullScreenShader::BloomBlendShader::getInstance()->TU_tex_512, irr_driver->getRenderTargetTexture(RTT_BLOOM_512), GL_LINEAR, GL_LINEAR);
|
||||
glUseProgram(FullScreenShader::BloomBlendShader::getInstance()->Program);
|
||||
FullScreenShader::BloomBlendShader::getInstance()->setUniforms();
|
||||
glBindVertexArray(FullScreenShader::BloomBlendShader::getInstance()->vao);
|
||||
glDrawArrays(GL_TRIANGLES, 0, 3);
|
||||
|
||||
glDisable(GL_BLEND);
|
||||
|
@ -373,8 +373,6 @@ void Shaders::loadShaders()
|
||||
initCubeVBO();
|
||||
initFrustrumVBO();
|
||||
initShadowVPMUBO();
|
||||
FullScreenShader::BloomBlendShader::init();
|
||||
FullScreenShader::BloomShader::init();
|
||||
FullScreenShader::GlowShader::init();
|
||||
FullScreenShader::PassThroughShader::init();
|
||||
FullScreenShader::LayerPassThroughShader::init();
|
||||
@ -1549,48 +1547,31 @@ static GLuint createVAO(GLuint Program)
|
||||
|
||||
namespace FullScreenShader
|
||||
{
|
||||
GLuint BloomShader::Program;
|
||||
GLuint BloomShader::uniform_texture;
|
||||
GLuint BloomShader::vao;
|
||||
void BloomShader::init()
|
||||
BloomShader::BloomShader()
|
||||
{
|
||||
Program = LoadProgram(
|
||||
GL_VERTEX_SHADER, file_manager->getAsset("shaders/screenquad.vert").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/utils/getCIEXYZ.frag").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/bloom.frag").c_str());
|
||||
uniform_texture = glGetUniformLocation(Program, "tex");
|
||||
AssignUniforms();
|
||||
TU_tex = 0;
|
||||
AssignTextureUnit(Program, TexUnit(TU_tex, "tex"));
|
||||
vao = createFullScreenVAO(Program);
|
||||
}
|
||||
|
||||
void BloomShader::setUniforms(unsigned TU_tex)
|
||||
{
|
||||
glUniform1i(FullScreenShader::BloomShader::uniform_texture, TU_tex);
|
||||
}
|
||||
|
||||
GLuint BloomBlendShader::Program;
|
||||
GLuint BloomBlendShader::uniform_tex_128;
|
||||
GLuint BloomBlendShader::uniform_tex_256;
|
||||
GLuint BloomBlendShader::uniform_tex_512;
|
||||
GLuint BloomBlendShader::vao;
|
||||
|
||||
void BloomBlendShader::init()
|
||||
BloomBlendShader::BloomBlendShader()
|
||||
{
|
||||
Program = LoadProgram(
|
||||
GL_VERTEX_SHADER, file_manager->getAsset("shaders/screenquad.vert").c_str(),
|
||||
GL_FRAGMENT_SHADER, file_manager->getAsset("shaders/bloomblend.frag").c_str());
|
||||
uniform_tex_128 = glGetUniformLocation(Program, "tex_128");
|
||||
uniform_tex_256 = glGetUniformLocation(Program, "tex_256");
|
||||
uniform_tex_512 = glGetUniformLocation(Program, "tex_512");
|
||||
AssignUniforms();
|
||||
TU_tex_128 = 0;
|
||||
TU_tex_256 = 1;
|
||||
TU_tex_512 = 2;
|
||||
AssignTextureUnit(Program, TexUnit(TU_tex_128, "tex_128"), TexUnit(TU_tex_256, "tex_256"), TexUnit(TU_tex_512, "tex_512"));
|
||||
vao = createFullScreenVAO(Program);
|
||||
}
|
||||
|
||||
void BloomBlendShader::setUniforms(unsigned TU_tex_128, unsigned TU_tex_256, unsigned TU_tex_512)
|
||||
{
|
||||
glUniform1i(uniform_tex_128, TU_tex_128);
|
||||
glUniform1i(uniform_tex_256, TU_tex_256);
|
||||
glUniform1i(uniform_tex_512, TU_tex_512);
|
||||
}
|
||||
|
||||
ToneMapShader::ToneMapShader()
|
||||
{
|
||||
Program = LoadProgram(
|
||||
|
@ -519,26 +519,22 @@ public:
|
||||
namespace FullScreenShader
|
||||
{
|
||||
|
||||
class BloomShader
|
||||
class BloomShader : public ShaderHelperSingleton<BloomShader>
|
||||
{
|
||||
public:
|
||||
static GLuint Program;
|
||||
static GLuint uniform_texture;
|
||||
static GLuint vao;
|
||||
GLuint TU_tex;
|
||||
GLuint vao;
|
||||
|
||||
static void init();
|
||||
static void setUniforms(unsigned TU_tex);
|
||||
BloomShader();
|
||||
};
|
||||
|
||||
class BloomBlendShader
|
||||
class BloomBlendShader : public ShaderHelperSingleton<BloomBlendShader>
|
||||
{
|
||||
public:
|
||||
static GLuint Program;
|
||||
static GLuint uniform_tex_128, uniform_tex_256, uniform_tex_512;
|
||||
static GLuint vao;
|
||||
GLuint TU_tex_128, TU_tex_256, TU_tex_512;
|
||||
GLuint vao;
|
||||
|
||||
static void init();
|
||||
static void setUniforms(unsigned TU_tex_128, unsigned TU_tex_256, unsigned TU_tex_512);
|
||||
BloomBlendShader();
|
||||
};
|
||||
|
||||
class ToneMapShader : public ShaderHelperSingleton<ToneMapShader>
|
||||
|
Loading…
x
Reference in New Issue
Block a user