Skip to content

Commit

Permalink
WebGLFlareRenderer, WebGLSpriteRenderer: context lost support.
Browse files Browse the repository at this point in the history
  • Loading branch information
mrdoob committed Jul 18, 2017
1 parent 30c966b commit 5e661c2
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 20 deletions.
13 changes: 6 additions & 7 deletions src/renderers/WebGLRenderer.js
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,7 @@ function WebGLRenderer( parameters ) {
var programCache, renderLists;

var background, bufferRenderer, indexedBufferRenderer;
var flareRenderer, spriteRenderer;

function initGLContext() {

Expand Down Expand Up @@ -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;
Expand All @@ -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 () {
Expand Down Expand Up @@ -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

Expand Down
9 changes: 3 additions & 6 deletions src/renderers/webgl/WebGLFlareRenderer.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;

Expand Down Expand Up @@ -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 );
Expand Down
11 changes: 4 additions & 7 deletions src/renderers/webgl/WebGLSpriteRenderer.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -88,7 +85,7 @@ function WebGLSpriteRenderer( renderer, sprites ) {

}

this.render = function ( scene, camera ) {
this.render = function ( sprites, scene, camera ) {

if ( sprites.length === 0 ) return;

Expand Down Expand Up @@ -261,7 +258,7 @@ function WebGLSpriteRenderer( renderer, sprites ) {

gl.shaderSource( vertexShader, [

'precision ' + renderer.getPrecision() + ' float;',
'precision ' + capabilities.precision + ' float;',

'#define SHADER_NAME ' + 'SpriteMaterial',

Expand Down Expand Up @@ -301,7 +298,7 @@ function WebGLSpriteRenderer( renderer, sprites ) {

gl.shaderSource( fragmentShader, [

'precision ' + renderer.getPrecision() + ' float;',
'precision ' + capabilities.precision + ' float;',

'#define SHADER_NAME ' + 'SpriteMaterial',

Expand Down

0 comments on commit 5e661c2

Please sign in to comment.