|
@@ -5,6 +5,8 @@
|
|
|
|
|
|
THREE.LensFlarePlugin = function () {
|
|
THREE.LensFlarePlugin = function () {
|
|
|
|
|
|
|
|
+ var flares = [];
|
|
|
|
+
|
|
var _gl, _renderer, _precision, _lensFlare = {};
|
|
var _gl, _renderer, _precision, _lensFlare = {};
|
|
|
|
|
|
this.init = function ( renderer ) {
|
|
this.init = function ( renderer ) {
|
|
@@ -105,10 +107,19 @@ THREE.LensFlarePlugin = function () {
|
|
|
|
|
|
this.render = function ( scene, camera, viewportWidth, viewportHeight ) {
|
|
this.render = function ( scene, camera, viewportWidth, viewportHeight ) {
|
|
|
|
|
|
- var flares = scene.__webglFlares,
|
|
|
|
- nFlares = flares.length;
|
|
|
|
|
|
+ flares.length = 0;
|
|
|
|
+
|
|
|
|
+ scene.traverseVisible( function ( child ) {
|
|
|
|
+
|
|
|
|
+ if ( child instanceof THREE.LensFlare ) {
|
|
|
|
|
|
- if ( ! nFlares ) return;
|
|
|
|
|
|
+ flares.push( child );
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } );
|
|
|
|
+
|
|
|
|
+ if ( flares.length === 0 ) return;
|
|
|
|
|
|
var tempPosition = new THREE.Vector3();
|
|
var tempPosition = new THREE.Vector3();
|
|
|
|
|
|
@@ -147,18 +158,14 @@ THREE.LensFlarePlugin = function () {
|
|
_gl.disable( _gl.CULL_FACE );
|
|
_gl.disable( _gl.CULL_FACE );
|
|
_gl.depthMask( false );
|
|
_gl.depthMask( false );
|
|
|
|
|
|
- var i, j, jl, flare, sprite;
|
|
|
|
-
|
|
|
|
- for ( i = 0; i < nFlares; i ++ ) {
|
|
|
|
|
|
+ for ( var i = 0, l = flares.length; i < l; i ++ ) {
|
|
|
|
|
|
size = 16 / viewportHeight;
|
|
size = 16 / viewportHeight;
|
|
scale.set( size * invAspect, size );
|
|
scale.set( size * invAspect, size );
|
|
|
|
|
|
// calc object screen position
|
|
// calc object screen position
|
|
|
|
|
|
- flare = flares[ i ];
|
|
|
|
-
|
|
|
|
- if ( flare.visible === false ) continue;
|
|
|
|
|
|
+ var flare = flares[ i ];
|
|
|
|
|
|
tempPosition.set( flare.matrixWorld.elements[12], flare.matrixWorld.elements[13], flare.matrixWorld.elements[14] );
|
|
tempPosition.set( flare.matrixWorld.elements[12], flare.matrixWorld.elements[13], flare.matrixWorld.elements[14] );
|
|
|
|
|
|
@@ -235,9 +242,9 @@ THREE.LensFlarePlugin = function () {
|
|
_gl.uniform1i( uniforms.renderType, 2 );
|
|
_gl.uniform1i( uniforms.renderType, 2 );
|
|
_gl.enable( _gl.BLEND );
|
|
_gl.enable( _gl.BLEND );
|
|
|
|
|
|
- for ( j = 0, jl = flare.lensFlares.length; j < jl; j ++ ) {
|
|
|
|
|
|
+ for ( var j = 0, jl = flare.lensFlares.length; j < jl; j ++ ) {
|
|
|
|
|
|
- sprite = flare.lensFlares[ j ];
|
|
|
|
|
|
+ var sprite = flare.lensFlares[ j ];
|
|
|
|
|
|
if ( sprite.opacity > 0.001 && sprite.scale > 0.001 ) {
|
|
if ( sprite.opacity > 0.001 && sprite.scale > 0.001 ) {
|
|
|
|
|