From dd90c2f4d1834d67e7be2baf1439f65941b451fe Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Mon, 28 Sep 2015 12:45:30 -0400 Subject: [PATCH] coding style --- src/renderers/WebGLRenderer.js | 58 ++++++++++++++++++++++++++-------- 1 file changed, 44 insertions(+), 14 deletions(-) diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index 3936868571..e4d4a2815b 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -3008,50 +3008,65 @@ THREE.WebGLRenderer = function ( parameters ) { _gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer ); if ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) { + _gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_COMPONENT16, renderTarget.width, renderTarget.height ); _gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer ); + } else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) { + _gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.DEPTH_STENCIL, renderTarget.width, renderTarget.height ); _gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer ); + } else { + // FIXME: We don't support !depth !stencil _gl.renderbufferStorage( _gl.RENDERBUFFER, _gl.RGBA4, renderTarget.width, renderTarget.height ); + } _gl.bindRenderbuffer( _gl.RENDERBUFFER, null ); + } // Setup GL resources for a non-texture depth buffer - function setupDepthRenderbuffer(renderTarget) { - + function setupDepthRenderbuffer( renderTarget ) { + var renderTargetProperties = properties.get( renderTarget ); var isCube = ( renderTarget instanceof THREE.WebGLRenderTargetCube ); if ( isCube ) { + renderTargetProperties.__webglDepthbuffer = []; for ( var i = 0; i < 6; i ++ ) { - _gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ i ]); + + _gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ i ] ); renderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer(); setupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget ); + } + } else { - _gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer ); + + _gl.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer ); renderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer(); setupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget ); + } - _gl.bindFramebuffer(_gl.FRAMEBUFFER, null ); + _gl.bindFramebuffer( _gl.FRAMEBUFFER, null ); + }; // Set up GL resources for the render target - function setupRenderTarget(renderTarget) { + function setupRenderTarget( renderTarget ) { + var renderTargetProperties = properties.get( renderTarget ); var textureProperties = properties.get( renderTarget.texture ); renderTarget.addEventListener( 'dispose', onRenderTargetDispose ); - + textureProperties.__webglTexture = _gl.createTexture(); - + _infoMemory.textures ++; var isCube = ( renderTarget instanceof THREE.WebGLRenderTargetCube ); @@ -3064,41 +3079,54 @@ THREE.WebGLRenderer = function ( parameters ) { // if ( isCube ) { + renderTargetProperties.__webglFramebuffer = []; for ( var i = 0; i < 6; i ++ ) { + renderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer(); + } + } else { + renderTargetProperties.__webglFramebuffer = _gl.createFramebuffer(); + } // // Setup color buffer // if ( isCube ) { + state.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture ); setTextureParameters( _gl.TEXTURE_CUBE_MAP, renderTarget.texture, isTargetPowerOfTwo ); for ( var i = 0; i < 6; i ++ ) { + setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i ); + } - + if ( renderTarget.texture.generateMipmaps && isTargetPowerOfTwo ) _gl.generateMipmap( _gl.TEXTURE_CUBE_MAP ); state.bindTexture( _gl.TEXTURE_CUBE_MAP, null ); - + } else { + state.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture ); setTextureParameters( _gl.TEXTURE_2D, renderTarget.texture, isTargetPowerOfTwo ); setupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D ); - + if ( renderTarget.texture.generateMipmaps && isTargetPowerOfTwo ) _gl.generateMipmap( _gl.TEXTURE_2D ); state.bindTexture( _gl.TEXTURE_2D, null ); + } - + // // Setup depth and stencil buffers // if ( renderTarget.depthBuffer ) { - setupDepthRenderbuffer(renderTarget); + + setupDepthRenderbuffer( renderTarget ); + } } @@ -3106,7 +3134,9 @@ THREE.WebGLRenderer = function ( parameters ) { this.setRenderTarget = function ( renderTarget ) { if ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) { - setupRenderTarget(renderTarget); + + setupRenderTarget( renderTarget ); + } var isCube = ( renderTarget instanceof THREE.WebGLRenderTargetCube ); -- GitLab