|
@@ -127,6 +127,9 @@ THREE.ShaderLib = {
|
|
|
uniforms: THREE.UniformsUtils.merge( [
|
|
|
|
|
|
THREE.UniformsLib[ "common" ],
|
|
|
+ THREE.UniformsLib[ "aomap" ],
|
|
|
+ THREE.UniformsLib[ "lightmap" ],
|
|
|
+ THREE.UniformsLib[ "emissivemap" ],
|
|
|
THREE.UniformsLib[ "fog" ],
|
|
|
THREE.UniformsLib[ "ambient" ],
|
|
|
THREE.UniformsLib[ "lights" ],
|
|
@@ -209,6 +212,9 @@ THREE.ShaderLib = {
|
|
|
THREE.ShaderChunk[ "uv2_pars_fragment" ],
|
|
|
THREE.ShaderChunk[ "map_pars_fragment" ],
|
|
|
THREE.ShaderChunk[ "alphamap_pars_fragment" ],
|
|
|
+ THREE.ShaderChunk[ "aomap_pars_fragment" ],
|
|
|
+ THREE.ShaderChunk[ "lightmap_pars_fragment" ],
|
|
|
+ THREE.ShaderChunk[ "emissivemap_pars_fragment" ],
|
|
|
THREE.ShaderChunk[ "envmap_pars_fragment" ],
|
|
|
THREE.ShaderChunk[ "ambient_pars" ],
|
|
|
THREE.ShaderChunk[ "fog_pars_fragment" ],
|
|
@@ -221,6 +227,7 @@ THREE.ShaderLib = {
|
|
|
" vec3 outgoingLight = vec3( 0.0 );",
|
|
|
" vec4 diffuseColor = vec4( diffuse, opacity );",
|
|
|
" vec3 totalAmbientLight = getAmbientLightIrradiance( ambientLightColor );",
|
|
|
+ " vec3 totalEmissiveLight = emissive;",
|
|
|
|
|
|
THREE.ShaderChunk[ "logdepthbuf_fragment" ],
|
|
|
THREE.ShaderChunk[ "map_fragment" ],
|
|
@@ -228,18 +235,33 @@ THREE.ShaderLib = {
|
|
|
THREE.ShaderChunk[ "alphamap_fragment" ],
|
|
|
THREE.ShaderChunk[ "alphatest_fragment" ],
|
|
|
THREE.ShaderChunk[ "specularmap_fragment" ],
|
|
|
+ THREE.ShaderChunk[ "emissivemap_fragment" ],
|
|
|
THREE.ShaderChunk[ "shadowmap_fragment" ],
|
|
|
|
|
|
+ // former lightmap_fragment.glsl
|
|
|
+ " #ifdef USE_LIGHTMAP",
|
|
|
+
|
|
|
+ " totalAmbientLight += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;", // factor of PI should not be present; included here to prevent breakage
|
|
|
+
|
|
|
+ " #endif",
|
|
|
+
|
|
|
+ // former aomap_fragment.glsl
|
|
|
+ " #ifdef USE_AOMAP",
|
|
|
+
|
|
|
+ " totalAmbientLight *= ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;",
|
|
|
+
|
|
|
+ " #endif",
|
|
|
+
|
|
|
" #ifdef DOUBLE_SIDED",
|
|
|
|
|
|
" if ( gl_FrontFacing )",
|
|
|
- " outgoingLight += RECIPROCAL_PI * diffuseColor.rgb * ( vLightFront * shadowMask + totalAmbientLight ) + emissive;",
|
|
|
+ " outgoingLight += RECIPROCAL_PI * diffuseColor.rgb * ( vLightFront * shadowMask + totalAmbientLight ) + totalEmissiveLight;",
|
|
|
" else",
|
|
|
- " outgoingLight += RECIPROCAL_PI * diffuseColor.rgb * ( vLightBack * shadowMask + totalAmbientLight ) + emissive;",
|
|
|
+ " outgoingLight += RECIPROCAL_PI * diffuseColor.rgb * ( vLightBack * shadowMask + totalAmbientLight ) + totalEmissiveLight;",
|
|
|
|
|
|
" #else",
|
|
|
|
|
|
- " outgoingLight += RECIPROCAL_PI * diffuseColor.rgb * ( vLightFront * shadowMask + totalAmbientLight ) + emissive;",
|
|
|
+ " outgoingLight += RECIPROCAL_PI * diffuseColor.rgb * ( vLightFront * shadowMask + totalAmbientLight ) + totalEmissiveLight;",
|
|
|
|
|
|
" #endif",
|
|
|
|
|
@@ -392,7 +414,6 @@ THREE.ShaderLib = {
|
|
|
// accumulation
|
|
|
THREE.ShaderChunk[ "lights_phong_fragment" ],
|
|
|
THREE.ShaderChunk[ "lights_template" ],
|
|
|
- THREE.ShaderChunk[ "lightmap_fragment" ],
|
|
|
|
|
|
// modulation
|
|
|
THREE.ShaderChunk[ "aomap_fragment" ],
|
|
@@ -562,7 +583,6 @@ THREE.ShaderLib = {
|
|
|
// accumulation
|
|
|
THREE.ShaderChunk[ "lights_standard_fragment" ],
|
|
|
THREE.ShaderChunk[ "lights_template" ],
|
|
|
- THREE.ShaderChunk[ "lightmap_fragment" ],
|
|
|
|
|
|
// modulation
|
|
|
THREE.ShaderChunk[ "aomap_fragment" ],
|