瀏覽代碼

NodeMaterial: Honor `ambientOcclusion` in basic, lambert and phong. (#28819)

Michael Herzog 1 年之前
父節點
當前提交
0200eb1309
共有 2 個文件被更改,包括 7 次插入3 次删除
  1. 4 2
      src/nodes/functions/BasicLightingModel.js
  2. 3 1
      src/nodes/functions/PhongLightingModel.js

+ 4 - 2
src/nodes/functions/BasicLightingModel.js

@@ -12,9 +12,11 @@ class BasicLightingModel extends LightingModel {
 
 	}
 
-	indirectDiffuse( { reflectedLight } ) {
+	indirectDiffuse( { ambientOcclusion, reflectedLight } ) {
 
-		reflectedLight.indirectDiffuse.assign( diffuseColor.rgb );
+		reflectedLight.indirectDiffuse.addAssign( diffuseColor.rgb );
+
+		reflectedLight.indirectDiffuse.mulAssign( ambientOcclusion );
 
 	}
 

+ 3 - 1
src/nodes/functions/PhongLightingModel.js

@@ -56,10 +56,12 @@ class PhongLightingModel extends BasicLightingModel {
 
 	}
 
-	indirectDiffuse( { irradiance, reflectedLight } ) {
+	indirectDiffuse( { ambientOcclusion, irradiance, reflectedLight } ) {
 
 		reflectedLight.indirectDiffuse.addAssign( irradiance.mul( BRDF_Lambert( { diffuseColor } ) ) );
 
+		reflectedLight.indirectDiffuse.mulAssign( ambientOcclusion );
+
 	}
 
 }