Hi guys,
I'm trying to blur a depth texture acquired for variance shadow mapping using webgl and I only get the result of the firs blur tap inside a texture, the other stays the same as the original. I'm new to JavaScript and I'm wondering what am I missing. The complete method is the following. There are no errors from OpenGL.
I'm enabling and disabling everything inside the for loop just to be sure there are no conflicts with resources owned by multiple objects.
function blurShadowTexture() {
checkError();
shaderBlur.bind();
shaderBlur.enablePosition();
shaderBlur.enableUV();
shaderBlur.disableNormal();
checkError();
GL.bindFramebuffer(GL.FRAMEBUFFER, rttFramebufferSoft);
GL.viewport(0.0, 0.0, SHADOW_MAP_WIDTH_SOFT, SHADOW_MAP_WIDTH_SOFT);
GL.clear(0,0,0,0);
var TRIANGLE_VERTEX = bufferScreenSpaceVertex;
var TRIANGLE_TEXCOORD = bufferScreenSpaceTexcoords;
GL.bindBuffer(GL.ARRAY_BUFFER, TRIANGLE_VERTEX);
shaderBlur.setPositionAttrib();
GL.bindBuffer(GL.ARRAY_BUFFER, TRIANGLE_TEXCOORD);
shaderBlur.setUVAttrib();
GL.activeTexture(GL.TEXTURE0);
checkError();
var i = 0;
for (i=0; i<10; i++) {
shaderBlur.bind();
checkError();
GL.bindFramebuffer(GL.FRAMEBUFFER, rttFramebufferSoft);
GL.framebufferTexture2D(GL.FRAMEBUFFER, GL.COLOR_ATTACHMENT0, GL.TEXTURE_2D, rttFloatTexture2, 0);
GL.bindTexture(GL.TEXTURE_2D, rttFloatTexture);
shaderBlur.setTexTexture(0);
GL.drawArrays(GL.TRIANGLES, 0, 6);
var t = rttFloatTexture2;
rttFloatTexture2 = rttFloatTexture;
rttFloatTexture = t;
GL.bindTexture(GL.TEXTURE_2D, null);
GL.framebufferTexture2D(GL.FRAMEBUFFER, GL.COLOR_ATTACHMENT0, GL.TEXTURE_2D, null, 0);
GL.bindFramebuffer(GL.FRAMEBUFFER, null);
GL.useProgram(null);
}
checkError();
shaderBlur.disableUV();
shaderBlur.disablePosition();
GL.bindFramebuffer(GL.FRAMEBUFFER, null);
}