From 31991ecd7e9a62eed7cb024e0fb40706d8285d85 Mon Sep 17 00:00:00 2001 From: Vincent Lejeune Date: Mon, 27 Jan 2014 00:09:36 +0100 Subject: [PATCH] SSAO: Improve randomness using NEAREST filtering --- data/shaders/ssao.frag | 2 +- src/graphics/post_processing.cpp | 13 ++----------- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/data/shaders/ssao.frag b/data/shaders/ssao.frag index 8e9451d2a..d94d79a52 100644 --- a/data/shaders/ssao.frag +++ b/data/shaders/ssao.frag @@ -17,7 +17,7 @@ const float invSamples = strengh / SAMPLES; vec3 rand(vec2 co) { - return texture(noise_texture, co*20).xyz; + return texture(noise_texture, co*20.16).xyz; } void main(void) diff --git a/src/graphics/post_processing.cpp b/src/graphics/post_processing.cpp index 10e629ac2..5f2f6c5f9 100644 --- a/src/graphics/post_processing.cpp +++ b/src/graphics/post_processing.cpp @@ -539,21 +539,12 @@ void PostProcessing::renderSSAO(const core::matrix4 &invprojm, const core::matri glUniform4fv(FullScreenShader::SSAOShader::uniform_samplePoints, 16, FullScreenShader::SSAOShader::SSAOSamples); glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_2D, static_cast(irr_driver->getRTT(RTT_NORMAL_AND_DEPTH))->getOpenGLTextureName()); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + setTexture(0, static_cast(irr_driver->getRTT(RTT_NORMAL_AND_DEPTH))->getOpenGLTextureName(), GL_LINEAR, GL_LINEAR); glUniform1i(FullScreenShader::SSAOShader::uniform_normals_and_depth, 0); if (!noise_tex) noise_tex = irr_driver->getTexture(file_manager->getAsset("textures/noise.png").c_str()); - glActiveTexture(GL_TEXTURE1); - glBindTexture(GL_TEXTURE_2D, static_cast(noise_tex)->getOpenGLTextureName()); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + setTexture(1, static_cast(noise_tex)->getOpenGLTextureName(), GL_NEAREST, GL_NEAREST); glUniform1i(FullScreenShader::SSAOShader::uniform_noise_texture, 1); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);