Browse Source

LightingModel: Refactor indirect lighting (#28824)

sunag 1 year ago
parent
commit
807d04252e

+ 1 - 3
src/nodes/core/LightingModel.js

@@ -8,9 +8,7 @@ class LightingModel {
 
 
 	directRectArea( /*input, stack, builder*/ ) {}
 	directRectArea( /*input, stack, builder*/ ) {}
 
 
-	indirectDiffuse( /*input, stack, builder*/ ) { }
-
-	indirectSpecular( /*input, stack, builder*/ ) { }
+	indirect( /*input, stack, builder*/ ) { }
 
 
 	ambientOcclusion( /*input, stack, builder*/ ) { }
 	ambientOcclusion( /*input, stack, builder*/ ) { }
 
 

+ 1 - 1
src/nodes/functions/BasicLightingModel.js

@@ -12,7 +12,7 @@ class BasicLightingModel extends LightingModel {
 
 
 	}
 	}
 
 
-	indirectDiffuse( { ambientOcclusion, reflectedLight } ) {
+	indirect( { ambientOcclusion, reflectedLight } ) {
 
 
 		reflectedLight.indirectDiffuse.addAssign( diffuseColor.rgb );
 		reflectedLight.indirectDiffuse.addAssign( diffuseColor.rgb );
 
 

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

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

+ 8 - 0
src/nodes/functions/PhysicalLightingModel.js

@@ -507,6 +507,14 @@ class PhysicalLightingModel extends LightingModel {
 
 
 	}
 	}
 
 
+	indirect( context, stack, builder ) {
+
+		this.indirectDiffuse( context, stack, builder );
+		this.indirectSpecular( context, stack, builder );
+		this.ambientOcclusion( context, stack, builder );
+
+	}
+
 	indirectDiffuse( { irradiance, reflectedLight } ) {
 	indirectDiffuse( { irradiance, reflectedLight } ) {
 
 
 		reflectedLight.indirectDiffuse.addAssign( irradiance.mul( BRDF_Lambert( { diffuseColor } ) ) );
 		reflectedLight.indirectDiffuse.addAssign( irradiance.mul( BRDF_Lambert( { diffuseColor } ) ) );

+ 1 - 1
src/nodes/functions/ToonLightingModel.js

@@ -38,7 +38,7 @@ class ToonLightingModel extends LightingModel {
 
 
 	}
 	}
 
 
-	indirectDiffuse( { ambientOcclusion, irradiance, reflectedLight } ) {
+	indirect( { ambientOcclusion, irradiance, reflectedLight } ) {
 
 
 		reflectedLight.indirectDiffuse.addAssign( irradiance.mul( BRDF_Lambert( { diffuseColor } ) ) );
 		reflectedLight.indirectDiffuse.addAssign( irradiance.mul( BRDF_Lambert( { diffuseColor } ) ) );
 
 

+ 1 - 3
src/nodes/lighting/LightsNode.js

@@ -99,9 +99,7 @@ class LightsNode extends Node {
 
 
 			//
 			//
 
 
-			lightingModel.indirectDiffuse( context, stack, builder );
-			lightingModel.indirectSpecular( context, stack, builder );
-			lightingModel.ambientOcclusion( context, stack, builder );
+			lightingModel.indirect( context, stack, builder );
 
 
 			//
 			//