|
@@ -214,8 +214,9 @@ THREE.ShaderLib = {
|
|
|
|
|
|
"void main() {",
|
|
"void main() {",
|
|
|
|
|
|
- " vec3 outgoingLight = vec3( 0.0 );", // outgoing light does not have an alpha, the surface does
|
|
|
|
|
|
+ " vec3 outgoingLight = vec3( 0.0 );",
|
|
" vec4 diffuseColor = vec4( diffuse, opacity );",
|
|
" vec4 diffuseColor = vec4( diffuse, opacity );",
|
|
|
|
+ " vec3 totalAmbientLight = PI * ambientLightColor;",
|
|
" vec3 shadowMask = vec3( 1.0 );",
|
|
" vec3 shadowMask = vec3( 1.0 );",
|
|
|
|
|
|
THREE.ShaderChunk[ "logdepthbuf_fragment" ],
|
|
THREE.ShaderChunk[ "logdepthbuf_fragment" ],
|
|
@@ -229,13 +230,13 @@ THREE.ShaderLib = {
|
|
" #ifdef DOUBLE_SIDED",
|
|
" #ifdef DOUBLE_SIDED",
|
|
|
|
|
|
" if ( gl_FrontFacing )",
|
|
" if ( gl_FrontFacing )",
|
|
- " outgoingLight += RECIPROCAL_PI * diffuseColor.rgb * ( vLightFront * shadowMask ) + emissive;",
|
|
|
|
|
|
+ " outgoingLight += RECIPROCAL_PI * diffuseColor.rgb * ( vLightFront * shadowMask + totalAmbientLight ) + emissive;",
|
|
" else",
|
|
" else",
|
|
- " outgoingLight += RECIPROCAL_PI * diffuseColor.rgb * ( vLightBack * shadowMask ) + emissive;",
|
|
|
|
|
|
+ " outgoingLight += RECIPROCAL_PI * diffuseColor.rgb * ( vLightBack * shadowMask + totalAmbientLight ) + emissive;",
|
|
|
|
|
|
" #else",
|
|
" #else",
|
|
|
|
|
|
- " outgoingLight += RECIPROCAL_PI * diffuseColor.rgb * ( vLightFront * shadowMask ) + emissive;",
|
|
|
|
|
|
+ " outgoingLight += RECIPROCAL_PI * diffuseColor.rgb * ( vLightFront * shadowMask + totalAmbientLight ) + emissive;",
|
|
|
|
|
|
" #endif",
|
|
" #endif",
|
|
|
|
|