SSAO: Factorize setUniforms()
This commit is contained in:
parent
5e68334ce9
commit
5515f51f65
@ -524,20 +524,15 @@ void PostProcessing::renderSSAO(const core::matrix4 &invprojm, const core::matri
|
|||||||
glDisable(GL_BLEND);
|
glDisable(GL_BLEND);
|
||||||
glDisable(GL_ALPHA_TEST);
|
glDisable(GL_ALPHA_TEST);
|
||||||
|
|
||||||
glUseProgram(FullScreenShader::SSAOShader::Program);
|
|
||||||
glBindVertexArray(FullScreenShader::SSAOShader::vao);
|
|
||||||
glUniformMatrix4fv(FullScreenShader::SSAOShader::uniform_invprojm, 1, GL_FALSE, invprojm.pointer());
|
|
||||||
glUniformMatrix4fv(FullScreenShader::SSAOShader::uniform_projm, 1, GL_FALSE, projm.pointer());
|
|
||||||
glUniform4fv(FullScreenShader::SSAOShader::uniform_samplePoints, 16, FullScreenShader::SSAOShader::SSAOSamples);
|
|
||||||
|
|
||||||
glActiveTexture(GL_TEXTURE0);
|
|
||||||
setTexture(0, static_cast<irr::video::COpenGLTexture*>(irr_driver->getRTT(RTT_NORMAL_AND_DEPTH))->getOpenGLTextureName(), GL_LINEAR, GL_LINEAR);
|
|
||||||
glUniform1i(FullScreenShader::SSAOShader::uniform_normals_and_depth, 0);
|
|
||||||
|
|
||||||
if (!noise_tex)
|
if (!noise_tex)
|
||||||
noise_tex = irr_driver->getTexture(file_manager->getAsset("textures/noise.png").c_str());
|
noise_tex = irr_driver->getTexture(file_manager->getAsset("textures/noise.png").c_str());
|
||||||
|
|
||||||
|
glUseProgram(FullScreenShader::SSAOShader::Program);
|
||||||
|
glBindVertexArray(FullScreenShader::SSAOShader::vao);
|
||||||
|
setTexture(0, static_cast<irr::video::COpenGLTexture*>(irr_driver->getRTT(RTT_NORMAL_AND_DEPTH))->getOpenGLTextureName(), GL_LINEAR, GL_LINEAR);
|
||||||
setTexture(1, static_cast<irr::video::COpenGLTexture*>(noise_tex)->getOpenGLTextureName(), GL_NEAREST, GL_NEAREST);
|
setTexture(1, static_cast<irr::video::COpenGLTexture*>(noise_tex)->getOpenGLTextureName(), GL_NEAREST, GL_NEAREST);
|
||||||
glUniform1i(FullScreenShader::SSAOShader::uniform_noise_texture, 1);
|
|
||||||
|
FullScreenShader::SSAOShader::setUniforms(projm, invprojm, 0, 1);
|
||||||
|
|
||||||
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
|
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
|
||||||
glBindVertexArray(0);
|
glBindVertexArray(0);
|
||||||
|
@ -1263,6 +1263,7 @@ namespace FullScreenShader
|
|||||||
GLuint SSAOShader::uniform_samplePoints;
|
GLuint SSAOShader::uniform_samplePoints;
|
||||||
GLuint SSAOShader::vao;
|
GLuint SSAOShader::vao;
|
||||||
float SSAOShader::SSAOSamples[64];
|
float SSAOShader::SSAOSamples[64];
|
||||||
|
|
||||||
void SSAOShader::init()
|
void SSAOShader::init()
|
||||||
{
|
{
|
||||||
Program = LoadProgram(file_manager->getAsset("shaders/screenquad.vert").c_str(), file_manager->getAsset("shaders/ssao.frag").c_str());
|
Program = LoadProgram(file_manager->getAsset("shaders/screenquad.vert").c_str(), file_manager->getAsset("shaders/ssao.frag").c_str());
|
||||||
@ -1387,6 +1388,16 @@ namespace FullScreenShader
|
|||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SSAOShader::setUniforms(const core::matrix4& projm, const core::matrix4 &invprojm, unsigned TU_ntex, unsigned TU_noise)
|
||||||
|
{
|
||||||
|
glUniformMatrix4fv(FullScreenShader::SSAOShader::uniform_invprojm, 1, GL_FALSE, invprojm.pointer());
|
||||||
|
glUniformMatrix4fv(FullScreenShader::SSAOShader::uniform_projm, 1, GL_FALSE, projm.pointer());
|
||||||
|
glUniform4fv(FullScreenShader::SSAOShader::uniform_samplePoints, 16, FullScreenShader::SSAOShader::SSAOSamples);
|
||||||
|
|
||||||
|
glUniform1i(FullScreenShader::SSAOShader::uniform_normals_and_depth, TU_ntex);
|
||||||
|
glUniform1i(FullScreenShader::SSAOShader::uniform_noise_texture, TU_noise);
|
||||||
|
}
|
||||||
|
|
||||||
GLuint FogShader::Program;
|
GLuint FogShader::Program;
|
||||||
GLuint FogShader::uniform_tex;
|
GLuint FogShader::uniform_tex;
|
||||||
GLuint FogShader::uniform_fogmax;
|
GLuint FogShader::uniform_fogmax;
|
||||||
|
@ -420,6 +420,7 @@ public:
|
|||||||
static float SSAOSamples[64];
|
static float SSAOSamples[64];
|
||||||
|
|
||||||
static void init();
|
static void init();
|
||||||
|
static void setUniforms(const core::matrix4& projm, const core::matrix4 &invprojm, unsigned TU_ntex, unsigned TU_noise);
|
||||||
};
|
};
|
||||||
|
|
||||||
class FogShader
|
class FogShader
|
||||||
|
Loading…
x
Reference in New Issue
Block a user