diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index d44fcd689a9ea7bdcac74439b86e26bf540f03cf..f95c995bfe381fc8f491f657af562744fd6bcb37 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -246,6 +246,7 @@ function WebGLRenderer( parameters ) { var programCache, renderLists; var background, bufferRenderer, indexedBufferRenderer; + var flareRenderer, spriteRenderer; function initGLContext() { @@ -284,6 +285,9 @@ function WebGLRenderer( parameters ) { bufferRenderer = new WebGLBufferRenderer( _gl, extensions, _infoRender ); indexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, _infoRender ); + flareRenderer = new WebGLFlareRenderer( _this, _gl, state, capabilities ); + spriteRenderer = new WebGLSpriteRenderer( _this, _gl, state, capabilities ); + _this.info.programs = programCache.programs; _this.context = _gl; @@ -309,11 +313,6 @@ function WebGLRenderer( parameters ) { this.shadowMap = shadowMap; - // - - var spriteRenderer = new WebGLSpriteRenderer( this, spritesArray ); - var flareRenderer = new WebGLFlareRenderer( this, flaresArray ); - // API this.getContext = function () { @@ -1184,8 +1183,8 @@ function WebGLRenderer( parameters ) { // custom renderers - spriteRenderer.render( scene, camera ); - flareRenderer.render( scene, camera, _currentViewport ); + spriteRenderer.render( spritesArray, scene, camera ); + flareRenderer.render( flaresArray, scene, camera, _currentViewport ); // Generate mipmap if we're using any kind of mipmap filtering diff --git a/src/renderers/webgl/WebGLFlareRenderer.js b/src/renderers/webgl/WebGLFlareRenderer.js index ff22c8d733a01af7d50587a74181644fc80741fd..c7b02ebef05289291e54f79f77e5462125bed4e3 100644 --- a/src/renderers/webgl/WebGLFlareRenderer.js +++ b/src/renderers/webgl/WebGLFlareRenderer.js @@ -7,10 +7,7 @@ import { Box2 } from '../../math/Box2'; import { Vector2 } from '../../math/Vector2'; import { Vector3 } from '../../math/Vector3'; -function WebGLFlareRenderer( renderer, flares ) { - - var gl = renderer.context; - var state = renderer.state; +function WebGLFlareRenderer( renderer, gl, state, capabilities ) { var vertexBuffer, elementBuffer; var shader, program, attributes, uniforms; @@ -181,7 +178,7 @@ function WebGLFlareRenderer( renderer, flares ) { * reads these back and calculates occlusion. */ - this.render = function ( scene, camera, viewport ) { + this.render = function ( flares, scene, camera, viewport ) { if ( flares.length === 0 ) return; @@ -366,7 +363,7 @@ function WebGLFlareRenderer( renderer, flares ) { var fragmentShader = gl.createShader( gl.FRAGMENT_SHADER ); var vertexShader = gl.createShader( gl.VERTEX_SHADER ); - var prefix = "precision " + renderer.getPrecision() + " float;\n"; + var prefix = "precision " + capabilities.precision + " float;\n"; gl.shaderSource( fragmentShader, prefix + shader.fragmentShader ); gl.shaderSource( vertexShader, prefix + shader.vertexShader ); diff --git a/src/renderers/webgl/WebGLSpriteRenderer.js b/src/renderers/webgl/WebGLSpriteRenderer.js index b9b29c02c64a74f91ba30b898dbbab6eec6e6bf2..17e953b1900c2b917e9e9cf3d5e159b087d5afde 100644 --- a/src/renderers/webgl/WebGLSpriteRenderer.js +++ b/src/renderers/webgl/WebGLSpriteRenderer.js @@ -7,10 +7,7 @@ import { CanvasTexture } from '../../textures/CanvasTexture'; import { Vector3 } from '../../math/Vector3'; import { Quaternion } from '../../math/Quaternion'; -function WebGLSpriteRenderer( renderer, sprites ) { - - var gl = renderer.context; - var state = renderer.state; +function WebGLSpriteRenderer( renderer, gl, state, capabilities ) { var vertexBuffer, elementBuffer; var program, attributes, uniforms; @@ -88,7 +85,7 @@ function WebGLSpriteRenderer( renderer, sprites ) { } - this.render = function ( scene, camera ) { + this.render = function ( sprites, scene, camera ) { if ( sprites.length === 0 ) return; @@ -261,7 +258,7 @@ function WebGLSpriteRenderer( renderer, sprites ) { gl.shaderSource( vertexShader, [ - 'precision ' + renderer.getPrecision() + ' float;', + 'precision ' + capabilities.precision + ' float;', '#define SHADER_NAME ' + 'SpriteMaterial', @@ -301,7 +298,7 @@ function WebGLSpriteRenderer( renderer, sprites ) { gl.shaderSource( fragmentShader, [ - 'precision ' + renderer.getPrecision() + ' float;', + 'precision ' + capabilities.precision + ' float;', '#define SHADER_NAME ' + 'SpriteMaterial',