|
@@ -0,0 +1,24 @@
|
|
|
+import BRDF_Lambert from './BSDF/BRDF_Lambert.js';
|
|
|
+import { lightingModel } from '../core/LightingModel.js';
|
|
|
+import { diffuseColor } from '../core/PropertyNode.js';
|
|
|
+import { transformedNormalView } from '../accessors/NormalNode.js';
|
|
|
+import { tslFn } from '../shadernode/ShaderNode.js';
|
|
|
+
|
|
|
+const RE_Direct_Lambert = tslFn( ( { lightDirection, lightColor, reflectedLight } ) => {
|
|
|
+
|
|
|
+ const dotNL = transformedNormalView.dot( lightDirection ).clamp();
|
|
|
+ const irradiance = dotNL.mul( lightColor );
|
|
|
+
|
|
|
+ reflectedLight.directDiffuse.addAssign( irradiance.mul( BRDF_Lambert( { diffuseColor: diffuseColor.rgb } ) ) );
|
|
|
+
|
|
|
+} );
|
|
|
+
|
|
|
+const RE_IndirectDiffuse_Lambert = tslFn( ( { irradiance, reflectedLight } ) => {
|
|
|
+
|
|
|
+ reflectedLight.indirectDiffuse.addAssign( irradiance.mul( BRDF_Lambert( { diffuseColor } ) ) );
|
|
|
+
|
|
|
+} );
|
|
|
+
|
|
|
+const lambertLightingModel = lightingModel( null, RE_Direct_Lambert, RE_IndirectDiffuse_Lambert );
|
|
|
+
|
|
|
+export default lambertLightingModel;
|