Skip to content

Commit cdfdd5a

Browse files
committed
common.glsl: added visible bool (in range) to IncidentLight
1 parent 96bf053 commit cdfdd5a

File tree

3 files changed

+9
-3
lines changed

3 files changed

+9
-3
lines changed

src/renderers/shaders/ShaderChunk/common.glsl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ float average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }
1515
struct IncidentLight {
1616
vec3 color;
1717
vec3 direction;
18+
bool visible;
1819
};
1920

2021
struct ReflectedLight {

src/renderers/shaders/ShaderChunk/lights_pars.glsl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
directLight.color = directionalLight.color;
2020
directLight.direction = directionalLight.direction;
21+
directLight.visible = true;
2122

2223
return directLight;
2324

@@ -55,10 +56,12 @@
5556

5657
directLight.color = pointLight.color;
5758
directLight.color *= calcLightAttenuation( lightDistance, pointLight.distance, pointLight.decay );
59+
directLight.visible = true;
5860

5961
} else {
6062

6163
directLight.color = vec3( 0.0 );
64+
directLight.visible = false;
6265

6366
}
6467

@@ -105,10 +108,12 @@
105108

106109
directLight.color = spotLight.color;
107110
directLight.color *= ( spotEffect * calcLightAttenuation( lightDistance, spotLight.distance, spotLight.decay ) );
111+
directLight.visible = true;
108112

109113
} else {
110114

111115
directLight.color = vec3( 0.0 );
116+
directLight.visible = false;
112117

113118
}
114119

src/renderers/shaders/ShaderChunk/lights_template.glsl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ IncidentLight directLight;
3232
directLight = getPointDirectLight( pointLight, geometry );
3333

3434
#ifdef USE_SHADOWMAP
35-
directLight.color *= all( bvec2( pointLight.shadow, length( directLight.color ) > 0.0 ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ] ) : 1.0;
35+
directLight.color *= all( bvec2( pointLight.shadow, directLight.visible ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ] ) : 1.0;
3636
#endif
3737

3838
RE_Direct( directLight, geometry, material, reflectedLight );
@@ -52,7 +52,7 @@ IncidentLight directLight;
5252
directLight = getSpotDirectLight( spotLight, geometry );
5353

5454
#ifdef USE_SHADOWMAP
55-
directLight.color *= all( bvec2( spotLight.shadow, length( directLight.color ) > 0.0 ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;
55+
directLight.color *= all( bvec2( spotLight.shadow, directLight.visible ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;
5656
#endif
5757

5858
RE_Direct( directLight, geometry, material, reflectedLight );
@@ -72,7 +72,7 @@ IncidentLight directLight;
7272
directLight = getDirectionalDirectLight( directionalLight, geometry );
7373

7474
#ifdef USE_SHADOWMAP
75-
directLight.color *= all( bvec2( directionalLight.shadow, length( directLight.color ) > 0.0 ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
75+
directLight.color *= all( bvec2( directionalLight.shadow, directLight.visible ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
7676
#endif
7777

7878
RE_Direct( directLight, geometry, material, reflectedLight );

0 commit comments

Comments
 (0)