Moved functionality into shader.
This commit is contained in:
parent
959d17ccb5
commit
6f84a4dca1
@ -213,6 +213,14 @@ public:
|
|||||||
assignSamplerNames(0, "tex", ST_BILINEAR_CLAMPED_FILTERED,
|
assignSamplerNames(0, "tex", ST_BILINEAR_CLAMPED_FILTERED,
|
||||||
1, "depth", ST_BILINEAR_CLAMPED_FILTERED);
|
1, "depth", ST_BILINEAR_CLAMPED_FILTERED);
|
||||||
} // Gaussian17TapHShader
|
} // Gaussian17TapHShader
|
||||||
|
// ------------------------------------------------------------------------
|
||||||
|
void render(const FrameBuffer &fb, int width, int height)
|
||||||
|
{
|
||||||
|
setTextureUnits(fb.getRTT()[0],
|
||||||
|
irr_driver->getFBO(FBO_LINEAR_DEPTH).getRTT()[0] );
|
||||||
|
drawFullScreenEffect(core::vector2df(1.0f/width, 1.0f/height));
|
||||||
|
|
||||||
|
} // render
|
||||||
}; // Gaussian17TapHShader
|
}; // Gaussian17TapHShader
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
@ -230,6 +238,19 @@ public:
|
|||||||
1, "depth", ST_NEARED_CLAMPED_FILTERED);
|
1, "depth", ST_NEARED_CLAMPED_FILTERED);
|
||||||
assignTextureUnit(m_dest_tu, "dest");
|
assignTextureUnit(m_dest_tu, "dest");
|
||||||
} // ComputeGaussian17TapHShader
|
} // ComputeGaussian17TapHShader
|
||||||
|
// ------------------------------------------------------------------------
|
||||||
|
void render(const FrameBuffer &fb, const FrameBuffer &auxiliary,
|
||||||
|
int width, int height)
|
||||||
|
{
|
||||||
|
use();
|
||||||
|
glBindSampler(m_dest_tu, 0);
|
||||||
|
setTextureUnits(fb.getRTT()[0],
|
||||||
|
irr_driver->getFBO(FBO_LINEAR_DEPTH).getRTT()[0]);
|
||||||
|
glBindImageTexture(m_dest_tu, auxiliary.getRTT()[0], 0, false,
|
||||||
|
0, GL_WRITE_ONLY, GL_R16F);
|
||||||
|
setUniforms(core::vector2df(1.0f/width, 1.0f/height));
|
||||||
|
glDispatchCompute((int)width / 8 + 1, (int)height / 8 + 1, 1);
|
||||||
|
} // render
|
||||||
}; // ComputeGaussian17TapHShader
|
}; // ComputeGaussian17TapHShader
|
||||||
|
|
||||||
|
|
||||||
@ -1126,27 +1147,16 @@ void PostProcessing::renderGaussian17TapBlur(FrameBuffer &in_fbo,
|
|||||||
if (!CVS->supportsComputeShadersFiltering())
|
if (!CVS->supportsComputeShadersFiltering())
|
||||||
{
|
{
|
||||||
auxiliary.Bind();
|
auxiliary.Bind();
|
||||||
Gaussian17TapHShader::getInstance()
|
Gaussian17TapHShader::getInstance()->render(in_fbo,
|
||||||
->setTextureUnits(in_fbo.getRTT()[0],
|
in_fbo.getWidth(),
|
||||||
irr_driver->getFBO(FBO_LINEAR_DEPTH).getRTT()[0]);
|
in_fbo.getHeight());
|
||||||
DrawFullScreenEffect<Gaussian17TapHShader>
|
|
||||||
(core::vector2df(inv_width, inv_height));
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ComputeGaussian17TapHShader::getInstance()->use();
|
ComputeGaussian17TapHShader::getInstance()->render(in_fbo,
|
||||||
glBindSampler(ComputeGaussian17TapHShader::getInstance()
|
auxiliary,
|
||||||
->m_dest_tu, 0);
|
in_fbo.getWidth(),
|
||||||
ComputeGaussian17TapHShader::getInstance()
|
in_fbo.getHeight());
|
||||||
->setTextureUnits(in_fbo.getRTT()[0],
|
|
||||||
irr_driver->getFBO(FBO_LINEAR_DEPTH).getRTT()[0]);
|
|
||||||
glBindImageTexture(ComputeGaussian17TapHShader::getInstance()
|
|
||||||
->m_dest_tu, auxiliary.getRTT()[0], 0, false,
|
|
||||||
0, GL_WRITE_ONLY, GL_R16F);
|
|
||||||
ComputeGaussian17TapHShader::getInstance()
|
|
||||||
->setUniforms(core::vector2df(inv_width, inv_height));
|
|
||||||
glDispatchCompute((int)in_fbo.getWidth() / 8 + 1,
|
|
||||||
(int)in_fbo.getHeight() / 8 + 1, 1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (CVS->supportsComputeShadersFiltering())
|
if (CVS->supportsComputeShadersFiltering())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user