@@ -34,7 +34,7 @@ var LightLayer = new Class({
3434 GameObject . call ( this , scene , 'LightLayer' ) ;
3535
3636 var resourceManager = scene . game . renderer . resourceManager ;
37- var deferred = WebGLSupportedExtensions . has ( 'WEBGL_draw_buffers' ) ;
37+ this . _isDeferred = WebGLSupportedExtensions . has ( 'WEBGL_draw_buffers' ) ;
3838
3939 this . renderer = scene . game . renderer ;
4040 this . passShader = null ;
@@ -49,7 +49,7 @@ var LightLayer = new Class({
4949 this . lightsLocations = [ ] ;
5050 this . _z = 0 ;
5151
52- if ( resourceManager !== undefined && ! deferred )
52+ if ( resourceManager !== undefined && ! this . _isDeferred )
5353 {
5454 this . gl = scene . game . renderer . gl ;
5555 this . passShader = resourceManager . createShader ( 'Phong2DShaderForward' , { vert : TexturedAndNormalizedTintedShader . vert , frag : `
@@ -116,7 +116,7 @@ var LightLayer = new Class({
116116 {
117117 var gl = this . gl = scene . game . renderer . gl ;
118118 this . ext = scene . game . renderer . getExtension ( 'WEBGL_draw_buffers' ) ;
119- this . gBufferShaderPass = resourceManager . createShader ( 'GBufferShader' , { vert : TexturedAndNormalizedTintedShader . vert , frag : `
119+ this . gBufferShaderPass = resourceManager . createShader ( 'GBufferShader' , { vert : TexturedAndNormalizedTintedShader . vert , frag : `
120120 #extension GL_EXT_draw_buffers : require
121121
122122 precision mediump float;
@@ -161,7 +161,7 @@ var LightLayer = new Class({
161161 uniform sampler2D uGbufferColor;
162162 uniform sampler2D uGbufferNormal;
163163 uniform vec3 uAmbientLightColor;
164- uniform Light uLights[` + Const . MAX_LIGHTS + `];
164+ uniform Light uLights[` + Const . DEFERRED_MAX_LIGHTS + `];
165165
166166 void main()
167167 {
@@ -171,7 +171,7 @@ var LightLayer = new Class({
171171 vec3 gbNormal = texture2D(uGbufferNormal, uv).rgb;
172172 vec3 normal = normalize(vec3(gbNormal * 2.0 - 1.0));
173173
174- for (int index = 0; index < ` + Const . MAX_LIGHTS + `; ++index)
174+ for (int index = 0; index < ` + Const . DEFERRED_MAX_LIGHTS + `; ++index)
175175 {
176176 Light light = uLights[index];
177177 float lightY = uResolution.y - light.position.y;
@@ -189,7 +189,7 @@ var LightLayer = new Class({
189189 ` } ) ;
190190 this . lightPassVBO = gl . createBuffer ( ) ;
191191 gl . bindBuffer ( gl . ARRAY_BUFFER , this . lightPassVBO ) ;
192- gl . bufferData ( gl . ARRAY_BUFFER , new Float32Array ( [ - 1 , 7 , - 1 , - 1 , 7 , - 1 ] ) , gl . STATIC_DRAW ) ;
192+ gl . bufferData ( gl . ARRAY_BUFFER , new Float32Array ( [ - 1 , 7 , - 1 , - 1 , 7 , - 1 ] ) , gl . STATIC_DRAW ) ;
193193
194194 this . uMainTextureLoc = this . gBufferShaderPass . getUniformLocation ( 'uMainTexture' ) ;
195195 this . uNormTextureLoc = this . gBufferShaderPass . getUniformLocation ( 'uNormTexture' ) ;
@@ -210,7 +210,7 @@ var LightLayer = new Class({
210210 this . gBufferShaderPass . bindAttribLocation ( 2 , 'v_alpha' ) ;
211211 this . lightPassShader . bindAttribLocation ( 0 , 'vertexPosition' ) ;
212212
213- for ( var index = 0 ; index < Const . MAX_LIGHTS ; ++ index )
213+ for ( var index = 0 ; index < Const . DEFERRED_MAX_LIGHTS ; ++ index )
214214 {
215215 this . lightsLocations [ index ] = {
216216 position : this . lightPassShader . getUniformLocation ( 'uLights[' + index + '].position' ) ,
@@ -242,7 +242,7 @@ var LightLayer = new Class({
242242 gl . framebufferTexture2D ( gl . FRAMEBUFFER , this . ext . COLOR_ATTACHMENT0_WEBGL , gl . TEXTURE_2D , this . gBufferColorTex , 0 ) ;
243243 gl . framebufferTexture2D ( gl . FRAMEBUFFER , this . ext . COLOR_ATTACHMENT1_WEBGL , gl . TEXTURE_2D , this . gBufferNormalTex , 0 ) ;
244244
245- this . ext . drawBuffersWEBGL ( [ this . ext . COLOR_ATTACHMENT0_WEBGL , this . ext . COLOR_ATTACHMENT1_WEBGL ] ) ;
245+ this . ext . drawBuffersWEBGL ( [ this . ext . COLOR_ATTACHMENT0_WEBGL , this . ext . COLOR_ATTACHMENT1_WEBGL ] ) ;
246246
247247 var complete = gl . checkFramebufferStatus ( gl . FRAMEBUFFER ) ;
248248
@@ -263,26 +263,26 @@ var LightLayer = new Class({
263263 this . setOrigin ( 0 , 0 ) ;
264264 } ,
265265
266- get z ( )
266+ get z ( )
267267 {
268268 return this . _z ;
269269 } ,
270270
271- set z ( newZ )
271+ set z ( newZ )
272272 {
273273 this . _z = newZ ;
274- } ,
274+ } ,
275275
276- setAmbientLightColor : function ( r , g , b )
276+ setAmbientLightColor : function ( r , g , b )
277277 {
278- this . ambientLightColorR = r ;
279- this . ambientLightColorG = g ;
280- this . ambientLightColorB = b ;
278+ this . ambientLightColorR = r ;
279+ this . ambientLightColorG = g ;
280+ this . ambientLightColorB = b ;
281281 } ,
282282
283283 getMaxLights : function ( )
284284 {
285- return Const . MAX_LIGHTS ;
285+ return ( this . _isDeferred ) ? Const . DEFERRED_MAX_LIGHTS : Const . MAX_LIGHTS ;
286286 } ,
287287
288288 getLightCount : function ( )
@@ -292,7 +292,7 @@ var LightLayer = new Class({
292292
293293 isDeferred : function ( )
294294 {
295- return WebGLSupportedExtensions . has ( 'WEBGL_draw_buffers' ) ;
295+ return this . _isDeferred ;
296296 } ,
297297
298298 /* This will probably be removed later */
@@ -330,7 +330,7 @@ var LightLayer = new Class({
330330
331331 addLight : function ( x , y , z , r , g , b , attenuation )
332332 {
333- if ( this . lights . length < Const . MAX_LIGHTS )
333+ if ( this . lights . length < this . getMaxLights ( ) )
334334 {
335335 var light = null ;
336336 if ( this . lightPool . length > 0 )
@@ -359,14 +359,13 @@ var LightLayer = new Class({
359359 }
360360 } ,
361361
362- updateLights : function ( renderer , camera , shader )
362+ updateLights : function ( renderer , camera , shader )
363363 {
364364 if ( this . gl !== null )
365365 {
366366 var locations = this . lightsLocations ;
367367 var lights = this . lights ;
368368 var length = lights . length ;
369- var gl = this . gl ;
370369 var point = { x : 0 , y : 0 } ;
371370
372371 shader . setConstantFloat2 ( this . uResolutionLoc , renderer . width , renderer . height ) ;
0 commit comments