Skip to content

Commit 8ea664d

Browse files
committed
LensFlarePlugin code clean up.
1 parent fe42ceb commit 8ea664d

4 files changed

Lines changed: 106 additions & 102 deletions

File tree

src/extras/objects/LensFlare.js

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -29,27 +29,28 @@ THREE.LensFlare.prototype = Object.create( THREE.Object3D.prototype );
2929

3030
THREE.LensFlare.prototype.add = function ( texture, size, distance, blending, color, opacity ) {
3131

32-
if( size === undefined ) size = - 1;
33-
if( distance === undefined ) distance = 0;
34-
if( opacity === undefined ) opacity = 1;
35-
if( color === undefined ) color = new THREE.Color( 0xffffff );
36-
if( blending === undefined ) blending = THREE.NormalBlending;
32+
if ( size === undefined ) size = - 1;
33+
if ( distance === undefined ) distance = 0;
34+
if ( opacity === undefined ) opacity = 1;
35+
if ( color === undefined ) color = new THREE.Color( 0xffffff );
36+
if ( blending === undefined ) blending = THREE.NormalBlending;
3737

3838
distance = Math.min( distance, Math.max( 0, distance ) );
3939

40-
this.lensFlares.push( { texture: texture, // THREE.Texture
41-
size: size, // size in pixels (-1 = use texture.width)
42-
distance: distance, // distance (0-1) from light source (0=at light source)
43-
x: 0, y: 0, z: 0, // screen position (-1 => 1) z = 0 is ontop z = 1 is back
44-
scale: 1, // scale
45-
rotation: 1, // rotation
46-
opacity: opacity, // opacity
47-
color: color, // color
48-
blending: blending } ); // blending
40+
this.lensFlares.push( {
41+
texture: texture, // THREE.Texture
42+
size: size, // size in pixels (-1 = use texture.width)
43+
distance: distance, // distance (0-1) from light source (0=at light source)
44+
x: 0, y: 0, z: 0, // screen position (-1 => 1) z = 0 is ontop z = 1 is back
45+
scale: 1, // scale
46+
rotation: 1, // rotation
47+
opacity: opacity, // opacity
48+
color: color, // color
49+
blending: blending // blending
50+
} );
4951

5052
};
5153

52-
5354
/*
5455
* Update lens flares update positions on all flares based on the screen position
5556
* Set myLensFlare.customUpdateCallback to alter the flares in your project specific way.
@@ -76,14 +77,3 @@ THREE.LensFlare.prototype.updateLensFlares = function () {
7677

7778
};
7879

79-
80-
81-
82-
83-
84-
85-
86-
87-
88-
89-

src/extras/renderers/plugins/DepthPassPlugin.js

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,33 @@ THREE.DepthPassPlugin = function () {
2828
var depthShader = THREE.ShaderLib[ "depthRGBA" ];
2929
var depthUniforms = THREE.UniformsUtils.clone( depthShader.uniforms );
3030

31-
_depthMaterial = new THREE.ShaderMaterial( { fragmentShader: depthShader.fragmentShader, vertexShader: depthShader.vertexShader, uniforms: depthUniforms } );
32-
_depthMaterialMorph = new THREE.ShaderMaterial( { fragmentShader: depthShader.fragmentShader, vertexShader: depthShader.vertexShader, uniforms: depthUniforms, morphTargets: true } );
33-
_depthMaterialSkin = new THREE.ShaderMaterial( { fragmentShader: depthShader.fragmentShader, vertexShader: depthShader.vertexShader, uniforms: depthUniforms, skinning: true } );
34-
_depthMaterialMorphSkin = new THREE.ShaderMaterial( { fragmentShader: depthShader.fragmentShader, vertexShader: depthShader.vertexShader, uniforms: depthUniforms, morphTargets: true, skinning: true } );
31+
_depthMaterial = new THREE.ShaderMaterial( {
32+
fragmentShader: depthShader.fragmentShader,
33+
vertexShader: depthShader.vertexShader,
34+
uniforms: depthUniforms
35+
} );
36+
37+
_depthMaterialMorph = new THREE.ShaderMaterial( {
38+
fragmentShader: depthShader.fragmentShader,
39+
vertexShader: depthShader.vertexShader,
40+
uniforms: depthUniforms,
41+
morphTargets: true
42+
} );
43+
44+
_depthMaterialSkin = new THREE.ShaderMaterial( {
45+
fragmentShader: depthShader.fragmentShader,
46+
vertexShader: depthShader.vertexShader,
47+
uniforms: depthUniforms,
48+
skinning: true
49+
} );
50+
51+
_depthMaterialMorphSkin = new THREE.ShaderMaterial( {
52+
fragmentShader: depthShader.fragmentShader,
53+
vertexShader: depthShader.vertexShader,
54+
uniforms: depthUniforms,
55+
morphTargets: true,
56+
skinning: true
57+
} );
3558

3659
_depthMaterial._shadowPass = true;
3760
_depthMaterialMorph._shadowPass = true;

src/extras/renderers/plugins/LensFlarePlugin.js

Lines changed: 56 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,15 @@
55

66
THREE.LensFlarePlugin = function () {
77

8+
var _gl, _renderer, _precision;
9+
810
var flares = [];
9-
10-
var _gl, _renderer, _precision, _lensFlare = {};
11+
12+
var vertexBuffer, elementBuffer;
13+
var program, attributes, uniforms;
14+
var hasVertexTexture;
15+
16+
var tempTexture, occlusionTexture;
1117

1218
this.init = function ( renderer ) {
1319

@@ -16,82 +22,75 @@ THREE.LensFlarePlugin = function () {
1622

1723
_precision = renderer.getPrecision();
1824

19-
_lensFlare.vertices = new Float32Array( 8 + 8 );
20-
_lensFlare.faces = new Uint16Array( 6 );
21-
22-
var i = 0;
23-
_lensFlare.vertices[ i ++ ] = - 1; _lensFlare.vertices[ i ++ ] = - 1; // vertex
24-
_lensFlare.vertices[ i ++ ] = 0; _lensFlare.vertices[ i ++ ] = 0; // uv... etc.
25-
26-
_lensFlare.vertices[ i ++ ] = 1; _lensFlare.vertices[ i ++ ] = - 1;
27-
_lensFlare.vertices[ i ++ ] = 1; _lensFlare.vertices[ i ++ ] = 0;
28-
29-
_lensFlare.vertices[ i ++ ] = 1; _lensFlare.vertices[ i ++ ] = 1;
30-
_lensFlare.vertices[ i ++ ] = 1; _lensFlare.vertices[ i ++ ] = 1;
31-
32-
_lensFlare.vertices[ i ++ ] = - 1; _lensFlare.vertices[ i ++ ] = 1;
33-
_lensFlare.vertices[ i ++ ] = 0; _lensFlare.vertices[ i ++ ] = 1;
25+
var vertices = new Float32Array( [
26+
-1, -1, 0, 0,
27+
1, -1, 1, 0,
28+
1, 1, 1, 1,
29+
-1, 1, 0, 1
30+
] );
3431

35-
i = 0;
36-
_lensFlare.faces[ i ++ ] = 0; _lensFlare.faces[ i ++ ] = 1; _lensFlare.faces[ i ++ ] = 2;
37-
_lensFlare.faces[ i ++ ] = 0; _lensFlare.faces[ i ++ ] = 2; _lensFlare.faces[ i ++ ] = 3;
32+
var faces = new Uint16Array( [
33+
0, 1, 2,
34+
0, 2, 3
35+
] );
3836

3937
// buffers
4038

41-
_lensFlare.vertexBuffer = _gl.createBuffer();
42-
_lensFlare.elementBuffer = _gl.createBuffer();
39+
vertexBuffer = _gl.createBuffer();
40+
elementBuffer = _gl.createBuffer();
4341

44-
_gl.bindBuffer( _gl.ARRAY_BUFFER, _lensFlare.vertexBuffer );
45-
_gl.bufferData( _gl.ARRAY_BUFFER, _lensFlare.vertices, _gl.STATIC_DRAW );
42+
_gl.bindBuffer( _gl.ARRAY_BUFFER, vertexBuffer );
43+
_gl.bufferData( _gl.ARRAY_BUFFER, vertices, _gl.STATIC_DRAW );
4644

47-
_gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, _lensFlare.elementBuffer );
48-
_gl.bufferData( _gl.ELEMENT_ARRAY_BUFFER, _lensFlare.faces, _gl.STATIC_DRAW );
45+
_gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, elementBuffer );
46+
_gl.bufferData( _gl.ELEMENT_ARRAY_BUFFER, faces, _gl.STATIC_DRAW );
4947

5048
// textures
5149

52-
_lensFlare.tempTexture = _gl.createTexture();
53-
_lensFlare.occlusionTexture = _gl.createTexture();
50+
tempTexture = _gl.createTexture();
51+
occlusionTexture = _gl.createTexture();
5452

55-
_gl.bindTexture( _gl.TEXTURE_2D, _lensFlare.tempTexture );
53+
_gl.bindTexture( _gl.TEXTURE_2D, tempTexture );
5654
_gl.texImage2D( _gl.TEXTURE_2D, 0, _gl.RGB, 16, 16, 0, _gl.RGB, _gl.UNSIGNED_BYTE, null );
5755
_gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE );
5856
_gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE );
5957
_gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_MAG_FILTER, _gl.NEAREST );
6058
_gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_MIN_FILTER, _gl.NEAREST );
6159

62-
_gl.bindTexture( _gl.TEXTURE_2D, _lensFlare.occlusionTexture );
60+
_gl.bindTexture( _gl.TEXTURE_2D, occlusionTexture );
6361
_gl.texImage2D( _gl.TEXTURE_2D, 0, _gl.RGBA, 16, 16, 0, _gl.RGBA, _gl.UNSIGNED_BYTE, null );
6462
_gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE );
6563
_gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE );
6664
_gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_MAG_FILTER, _gl.NEAREST );
6765
_gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_MIN_FILTER, _gl.NEAREST );
6866

69-
if ( _gl.getParameter( _gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS ) <= 0 ) {
67+
hasVertexTexture = _gl.getParameter( _gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS ) > 0;
7068

71-
_lensFlare.hasVertexTexture = false;
72-
_lensFlare.program = createProgram( THREE.ShaderFlares[ "lensFlare" ], _precision );
69+
if ( hasVertexTexture ) {
70+
71+
program = createProgram( THREE.ShaderFlares[ "lensFlare" ], _precision );
7372

7473
} else {
7574

76-
_lensFlare.hasVertexTexture = true;
77-
_lensFlare.program = createProgram( THREE.ShaderFlares[ "lensFlareVertexTexture" ], _precision );
75+
program = createProgram( THREE.ShaderFlares[ "lensFlareVertexTexture" ], _precision );
7876

7977
}
8078

81-
_lensFlare.attributes = {};
82-
_lensFlare.uniforms = {};
83-
84-
_lensFlare.attributes.vertex = _gl.getAttribLocation ( _lensFlare.program, "position" );
85-
_lensFlare.attributes.uv = _gl.getAttribLocation ( _lensFlare.program, "uv" );
79+
attributes = {
80+
vertex: _gl.getAttribLocation ( program, "position" ),
81+
uv: _gl.getAttribLocation ( program, "uv" )
82+
}
8683

87-
_lensFlare.uniforms.renderType = _gl.getUniformLocation( _lensFlare.program, "renderType" );
88-
_lensFlare.uniforms.map = _gl.getUniformLocation( _lensFlare.program, "map" );
89-
_lensFlare.uniforms.occlusionMap = _gl.getUniformLocation( _lensFlare.program, "occlusionMap" );
90-
_lensFlare.uniforms.opacity = _gl.getUniformLocation( _lensFlare.program, "opacity" );
91-
_lensFlare.uniforms.color = _gl.getUniformLocation( _lensFlare.program, "color" );
92-
_lensFlare.uniforms.scale = _gl.getUniformLocation( _lensFlare.program, "scale" );
93-
_lensFlare.uniforms.rotation = _gl.getUniformLocation( _lensFlare.program, "rotation" );
94-
_lensFlare.uniforms.screenPosition = _gl.getUniformLocation( _lensFlare.program, "screenPosition" );
84+
uniforms = {
85+
renderType: _gl.getUniformLocation( program, "renderType" ),
86+
map: _gl.getUniformLocation( program, "map" ),
87+
occlusionMap: _gl.getUniformLocation( program, "occlusionMap" ),
88+
opacity: _gl.getUniformLocation( program, "opacity" ),
89+
color: _gl.getUniformLocation( program, "color" ),
90+
scale: _gl.getUniformLocation( program, "scale" ),
91+
rotation: _gl.getUniformLocation( program, "rotation" ),
92+
screenPosition: _gl.getUniformLocation( program, "screenPosition" )
93+
};
9594

9695
};
9796

@@ -100,9 +99,6 @@ THREE.LensFlarePlugin = function () {
10099
* Render lens flares
101100
* Method: renders 16x16 0xff00ff-colored points scattered over the light source area,
102101
* reads these back and calculates occlusion.
103-
* Then _lensFlare.update_lensFlares() is called to re-position and
104-
* update transparency of flares. Then they are rendered.
105-
*
106102
*/
107103

108104
this.render = function ( scene, camera, viewportWidth, viewportHeight ) {
@@ -133,27 +129,22 @@ THREE.LensFlarePlugin = function () {
133129
var screenPosition = new THREE.Vector3( 1, 1, 0 ),
134130
screenPositionPixels = new THREE.Vector2( 1, 1 );
135131

136-
var uniforms = _lensFlare.uniforms,
137-
attributes = _lensFlare.attributes;
138-
139-
// set _lensFlare program and reset blending
140-
141-
_gl.useProgram( _lensFlare.program );
132+
_gl.useProgram( program );
142133

143-
_gl.enableVertexAttribArray( _lensFlare.attributes.vertex );
144-
_gl.enableVertexAttribArray( _lensFlare.attributes.uv );
134+
_gl.enableVertexAttribArray( attributes.vertex );
135+
_gl.enableVertexAttribArray( attributes.uv );
145136

146137
// loop through all lens flares to update their occlusion and positions
147138
// setup gl and common used attribs/unforms
148139

149140
_gl.uniform1i( uniforms.occlusionMap, 0 );
150141
_gl.uniform1i( uniforms.map, 1 );
151142

152-
_gl.bindBuffer( _gl.ARRAY_BUFFER, _lensFlare.vertexBuffer );
143+
_gl.bindBuffer( _gl.ARRAY_BUFFER, vertexBuffer );
153144
_gl.vertexAttribPointer( attributes.vertex, 2, _gl.FLOAT, false, 2 * 8, 0 );
154145
_gl.vertexAttribPointer( attributes.uv, 2, _gl.FLOAT, false, 2 * 8, 8 );
155146

156-
_gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, _lensFlare.elementBuffer );
147+
_gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, elementBuffer );
157148

158149
_gl.disable( _gl.CULL_FACE );
159150
_gl.depthMask( false );
@@ -181,7 +172,7 @@ THREE.LensFlarePlugin = function () {
181172

182173
// screen cull
183174

184-
if ( _lensFlare.hasVertexTexture || (
175+
if ( hasVertexTexture || (
185176
screenPositionPixels.x > 0 &&
186177
screenPositionPixels.x < viewportWidth &&
187178
screenPositionPixels.y > 0 &&
@@ -190,7 +181,7 @@ THREE.LensFlarePlugin = function () {
190181
// save current RGB to temp texture
191182

192183
_gl.activeTexture( _gl.TEXTURE1 );
193-
_gl.bindTexture( _gl.TEXTURE_2D, _lensFlare.tempTexture );
184+
_gl.bindTexture( _gl.TEXTURE_2D, tempTexture );
194185
_gl.copyTexImage2D( _gl.TEXTURE_2D, 0, _gl.RGB, screenPositionPixels.x - 8, screenPositionPixels.y - 8, 16, 16, 0 );
195186

196187

@@ -209,7 +200,7 @@ THREE.LensFlarePlugin = function () {
209200
// copy result to occlusionMap
210201

211202
_gl.activeTexture( _gl.TEXTURE0 );
212-
_gl.bindTexture( _gl.TEXTURE_2D, _lensFlare.occlusionTexture );
203+
_gl.bindTexture( _gl.TEXTURE_2D, occlusionTexture );
213204
_gl.copyTexImage2D( _gl.TEXTURE_2D, 0, _gl.RGBA, screenPositionPixels.x - 8, screenPositionPixels.y - 8, 16, 16, 0 );
214205

215206

@@ -219,7 +210,7 @@ THREE.LensFlarePlugin = function () {
219210
_gl.disable( _gl.DEPTH_TEST );
220211

221212
_gl.activeTexture( _gl.TEXTURE1 );
222-
_gl.bindTexture( _gl.TEXTURE_2D, _lensFlare.tempTexture );
213+
_gl.bindTexture( _gl.TEXTURE_2D, tempTexture );
223214
_gl.drawElements( _gl.TRIANGLES, 6, _gl.UNSIGNED_SHORT, 0 );
224215

225216

src/extras/renderers/plugins/SpritePlugin.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,22 @@ THREE.SpritePlugin = function () {
99

1010
var sprites = [];
1111

12-
var vertices, faces, vertexBuffer, elementBuffer;
12+
var vertexBuffer, elementBuffer;
1313
var program, attributes, uniforms;
1414

1515
this.init = function ( renderer ) {
1616

1717
_gl = renderer.context;
1818
_renderer = renderer;
1919

20-
vertices = new Float32Array( [
21-
- 0.5, - 0.5, 0, 0,
22-
0.5, - 0.5, 1, 0,
23-
0.5, 0.5, 1, 1,
24-
- 0.5, 0.5, 0, 1
20+
var vertices = new Float32Array( [
21+
- 0.5, - 0.5, 0, 0,
22+
0.5, - 0.5, 1, 0,
23+
0.5, 0.5, 1, 1,
24+
- 0.5, 0.5, 0, 1
2525
] );
2626

27-
faces = new Uint16Array( [
27+
var faces = new Uint16Array( [
2828
0, 1, 2,
2929
0, 2, 3
3030
] );

0 commit comments

Comments
 (0)