|
|
@@ -11,7 +11,8 @@
|
|
|
Pps::Pps(Renderer& r_):
|
|
|
RenderingPass(r_),
|
|
|
hdr(r_),
|
|
|
- ssao(r_)
|
|
|
+ ssao(r_),
|
|
|
+ bl(r_)
|
|
|
{}
|
|
|
|
|
|
|
|
|
@@ -22,8 +23,6 @@ void Pps::init(const RendererInitializer& initializer)
|
|
|
{
|
|
|
ssao.init(initializer);
|
|
|
hdr.init(initializer);
|
|
|
- blurringEnabled = initializer.pps.blurringEnabled;
|
|
|
- blurringIterationsNum = initializer.pps.blurringIterationsNum;
|
|
|
|
|
|
//
|
|
|
// Init pre pass
|
|
|
@@ -90,63 +89,10 @@ void Pps::init(const RendererInitializer& initializer)
|
|
|
postPassSProg.loadRsrc(ShaderProg::createSrcCodeToCache("shaders/PpsPostPass.glsl", pps.c_str(),
|
|
|
prefix.c_str()).c_str());
|
|
|
|
|
|
-
|
|
|
//
|
|
|
- // Blurring
|
|
|
+ // Init Bl after
|
|
|
//
|
|
|
- if(blurringEnabled)
|
|
|
- {
|
|
|
- Renderer::createFai(r.getWidth(), r.getHeight(), GL_RGB, GL_RGB, GL_FLOAT, blurFai);
|
|
|
-
|
|
|
- // Horizontal
|
|
|
- try
|
|
|
- {
|
|
|
- hBlurFbo.create();
|
|
|
- hBlurFbo.bind();
|
|
|
- hBlurFbo.setNumOfColorAttachements(1);
|
|
|
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, blurFai.getGlId(), 0);
|
|
|
- }
|
|
|
- catch(std::exception& e)
|
|
|
- {
|
|
|
- throw EXCEPTION("Cannot create horizontal blur post-processing stage FBO: " + e.what());
|
|
|
- }
|
|
|
-
|
|
|
- hBlurSProg.loadRsrc(ShaderProg::createSrcCodeToCache("shaders/PpsBlurGeneric.glsl", "#define HPASS\n",
|
|
|
- "h").c_str());
|
|
|
-
|
|
|
- // Vertical
|
|
|
- try
|
|
|
- {
|
|
|
- vBlurFbo.create();
|
|
|
- vBlurFbo.bind();
|
|
|
- vBlurFbo.setNumOfColorAttachements(1);
|
|
|
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, postPassFai.getGlId(), 0);
|
|
|
- }
|
|
|
- catch(std::exception& e)
|
|
|
- {
|
|
|
- throw EXCEPTION("Cannot create vertical blur post-processing stage FBO: " + e.what());
|
|
|
- }
|
|
|
-
|
|
|
- vBlurSProg.loadRsrc(ShaderProg::createSrcCodeToCache("shaders/PpsBlurGeneric.glsl", "#define VPASS\n",
|
|
|
- "v").c_str());
|
|
|
-
|
|
|
- // Side blur
|
|
|
- try
|
|
|
- {
|
|
|
- sideBlurFbo.create();
|
|
|
- sideBlurFbo.bind();
|
|
|
- sideBlurFbo.setNumOfColorAttachements(1);
|
|
|
- glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
|
|
|
- r.getMs().getNormalFai().getGlId(), 0);
|
|
|
- }
|
|
|
- catch(std::exception& e)
|
|
|
- {
|
|
|
- throw EXCEPTION("Cannot create side blur post-processing stage FBO: " + e.what());
|
|
|
- }
|
|
|
-
|
|
|
- sideBlur.loadRsrc("engine-rsrc/side-blur.png");
|
|
|
- sideBlurSProg.loadRsrc("shaders/PpsSideBlur.glsl");
|
|
|
- } // end blurring enabled
|
|
|
+ bl.init(initializer);
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -178,57 +124,6 @@ void Pps::runPrePass()
|
|
|
}
|
|
|
|
|
|
|
|
|
-//======================================================================================================================
|
|
|
-// runBlur =
|
|
|
-//======================================================================================================================
|
|
|
-void Pps::runBlur()
|
|
|
-{
|
|
|
- GlStateMachineSingleton::getInstance().enable(GL_BLEND, false);
|
|
|
-
|
|
|
- for(uint i = 0; i < blurringIterationsNum; i++)
|
|
|
- {
|
|
|
- // hpass
|
|
|
- hBlurFbo.bind();
|
|
|
-
|
|
|
- hBlurSProg->bind();
|
|
|
- hBlurSProg->findUniVar("img")->set(postPassFai, 0);
|
|
|
- hBlurSProg->findUniVar("msNormalFai")->set(r.getMs().getNormalFai(), 1);
|
|
|
- float tmp = r.getWidth();
|
|
|
- hBlurSProg->findUniVar("imgDimension")->set(&tmp);
|
|
|
-
|
|
|
- r.drawQuad();
|
|
|
-
|
|
|
- // vpass
|
|
|
- vBlurFbo.bind();
|
|
|
-
|
|
|
- vBlurSProg->bind();
|
|
|
- vBlurSProg->findUniVar("img")->set(blurFai, 0);
|
|
|
- vBlurSProg->findUniVar("msNormalFai")->set(r.getMs().getNormalFai(), 1);
|
|
|
- tmp = r.getHeight();
|
|
|
- vBlurSProg->findUniVar("imgDimension")->set(&tmp);
|
|
|
-
|
|
|
- r.drawQuad();
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-//======================================================================================================================
|
|
|
-// runSideBlur =
|
|
|
-//======================================================================================================================
|
|
|
-void Pps::runSideBlur()
|
|
|
-{
|
|
|
- sideBlurFbo.bind();
|
|
|
-
|
|
|
- GlStateMachineSingleton::getInstance().enable(GL_BLEND, true);
|
|
|
- glBlendFunc(GL_ONE, GL_ONE);
|
|
|
-
|
|
|
- sideBlurSProg->bind();
|
|
|
- sideBlurSProg->findUniVar("tex")->set(*sideBlur, 0);
|
|
|
-
|
|
|
- r.drawQuad();
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
//======================================================================================================================
|
|
|
// runPostPass =
|
|
|
//======================================================================================================================
|
|
|
@@ -260,9 +155,5 @@ void Pps::runPostPass()
|
|
|
//
|
|
|
// Blurring
|
|
|
//
|
|
|
- if(blurringEnabled)
|
|
|
- {
|
|
|
- runSideBlur();
|
|
|
- runBlur();
|
|
|
- }
|
|
|
+ bl.run();
|
|
|
}
|