@@ -33,16 +33,29 @@ var ForwardDiffuseLightPipeline = new Class({
3333
3434 onRender : function ( scene , camera )
3535 {
36+ var lightManager = scene . lights ;
37+
38+ lightManager . culledLights . length = 0 ;
39+
40+ if ( lightManager . lights . length <= 0 || ! lightManager . active )
41+ {
42+ return this ; // If not visible lights just passthrough
43+ }
44+
3645 var renderer = this . renderer ;
3746 var program = this . program ;
38- var lightManager = scene . lights ;
3947 var lights = scene . lights . cull ( camera ) ;
4048 var lightCount = Math . min ( lights . length , LIGHT_COUNT ) ;
4149 var cameraMatrix = camera . matrix ;
4250 var point = { x : 0 , y : 0 } ;
4351 var height = renderer . height ;
4452
45- if ( lightCount <= 0 ) return ; // If not visible lights just passthrough
53+ for ( var index = 0 ; index < LIGHT_COUNT ; ++ index )
54+ {
55+ renderer . setFloat1 ( program , 'uLights[' + index + '].radius' , 0 ) ; // reset lights
56+ }
57+
58+ if ( lightCount <= 0 ) return this ;
4659
4760 renderer . setFloat4 ( program , 'uCamera' , camera . x , camera . y , camera . rotation , camera . zoom ) ;
4861 renderer . setFloat3 ( program , 'uAmbientLightColor' , lightManager . ambientColor . r , lightManager . ambientColor . g , lightManager . ambientColor . b ) ;
@@ -57,7 +70,7 @@ var ForwardDiffuseLightPipeline = new Class({
5770 renderer . setFloat1 ( program , lightName + 'intensity' , light . intensity ) ;
5871 renderer . setFloat1 ( program , lightName + 'radius' , light . radius ) ;
5972 }
60-
73+
6174 return this ;
6275 } ,
6376
@@ -216,4 +229,6 @@ var ForwardDiffuseLightPipeline = new Class({
216229
217230} ) ;
218231
232+ ForwardDiffuseLightPipeline . LIGHT_COUNT = LIGHT_COUNT ;
233+
219234module . exports = ForwardDiffuseLightPipeline ;
0 commit comments