Преглед изворни кода

Merge pull request #19014 from WestLangley/dev_lambert_probe

MeshLambertMaterial: add support for LightProbes
Mr.doob пре 5 година
родитељ
комит
04bc116fcb

+ 12 - 1
src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl.js

@@ -13,7 +13,6 @@ backGeometry.viewDir = geometry.viewDir;
 
 vLightFront = vec3( 0.0 );
 vIndirectFront = vec3( 0.0 );
-
 #ifdef DOUBLE_SIDED
 	vLightBack = vec3( 0.0 );
 	vIndirectBack = vec3( 0.0 );
@@ -23,6 +22,18 @@ IncidentLight directLight;
 float dotNL;
 vec3 directLightColor_Diffuse;
 
+vIndirectFront += getAmbientLightIrradiance( ambientLightColor );
+
+vIndirectFront += getLightProbeIrradiance( lightProbe, geometry );
+
+#ifdef DOUBLE_SIDED
+
+	vIndirectBack += getAmbientLightIrradiance( ambientLightColor );
+
+	vIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry );
+
+#endif
+
 #if NUM_POINT_LIGHTS > 0
 
 	#pragma unroll_loop_start

+ 1 - 1
src/renderers/shaders/ShaderLib/meshlambert_frag.glsl.js

@@ -52,7 +52,6 @@ void main() {
 	#include <emissivemap_fragment>
 
 	// accumulation
-	reflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );
 
 	#ifdef DOUBLE_SIDED
 
@@ -81,6 +80,7 @@ void main() {
 	reflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();
 
 	// modulation
+
 	#include <aomap_fragment>
 
 	vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;