Sfoglia il codice sorgente

MaterialNode: Add specularStrength (#26444)

sunag 2 anni fa
parent
commit
22b0af4c4b

+ 11 - 5
examples/jsm/nodes/accessors/MaterialNode.js

@@ -110,20 +110,24 @@ class MaterialNode extends Node {
 
 			node = this.getColor( 'specular' );
 
-		} else if ( scope === MaterialNode.REFLECTIVITY ) {
+		} else if ( scope === MaterialNode.SPECULAR_STRENGTH ) {
 
-			const reflectivityNode = this.getFloat( 'reflectivity' );
+			const specularNode = this.getColor( 'specular' );
 
 			if ( material.specularMap && material.specularMap.isTexture === true ) {
 
-				node = reflectivityNode.mul( this.getTexture( 'specularMap' ).r );
+				node = specularNode.mul( this.getTexture( 'specularMap' ).r );
 
 			} else {
 
-				node = reflectivityNode;
+				node = specularNode;
 
 			}
 
+		} else if ( scope === MaterialNode.REFLECTIVITY ) {
+
+			node = this.getFloat( 'reflectivity' );
+
 		} else if ( scope === MaterialNode.ROUGHNESS ) {
 
 			const roughnessNode = this.getFloat( 'roughness' );
@@ -246,7 +250,8 @@ MaterialNode.ALPHA_TEST = 'alphaTest';
 MaterialNode.COLOR = 'color';
 MaterialNode.OPACITY = 'opacity';
 MaterialNode.SHININESS = 'shininess';
-MaterialNode.SPECULAR_COLOR = 'specularColor';
+MaterialNode.SPECULAR = 'specular';
+MaterialNode.SPECULAR_STRENGTH = 'specularStrength';
 MaterialNode.REFLECTIVITY = 'reflectivity';
 MaterialNode.ROUGHNESS = 'roughness';
 MaterialNode.METALNESS = 'metalness';
@@ -265,6 +270,7 @@ export const materialShininess = nodeImmutable( MaterialNode, MaterialNode.SHINI
 export const materialEmissive = nodeImmutable( MaterialNode, MaterialNode.EMISSIVE );
 export const materialOpacity = nodeImmutable( MaterialNode, MaterialNode.OPACITY );
 export const materialSpecularColor = nodeImmutable( MaterialNode, MaterialNode.SPECULAR_COLOR );
+export const materialSpecularStrength = nodeImmutable( MaterialNode, MaterialNode.SPECULAR_STRENGTH );
 export const materialReflectivity = nodeImmutable( MaterialNode, MaterialNode.REFLECTIVITY );
 export const materialRoughness = nodeImmutable( MaterialNode, MaterialNode.ROUGHNESS );
 export const materialMetalness = nodeImmutable( MaterialNode, MaterialNode.METALNESS );

+ 2 - 2
examples/jsm/nodes/functions/PhongLightingModel.js

@@ -2,7 +2,7 @@ import BRDF_Lambert from './BSDF/BRDF_Lambert.js';
 import BRDF_BlinnPhong from './BSDF/BRDF_BlinnPhong.js';
 import { lightingModel } from '../core/LightingModel.js';
 import { diffuseColor } from '../core/PropertyNode.js';
-import { materialReflectivity } from '../accessors/MaterialNode.js';
+import { materialSpecularStrength } from '../accessors/MaterialNode.js';
 import { transformedNormalView } from '../accessors/NormalNode.js';
 import { tslFn } from '../shadernode/ShaderNode.js';
 
@@ -13,7 +13,7 @@ const RE_Direct_BlinnPhong = tslFn( ( { lightDirection, lightColor, reflectedLig
 
 	reflectedLight.directDiffuse.addAssign( irradiance.mul( BRDF_Lambert( { diffuseColor: diffuseColor.rgb } ) ) );
 
-	reflectedLight.directSpecular.addAssign( irradiance.mul( BRDF_BlinnPhong( { lightDirection } ) ).mul( materialReflectivity ) );
+	reflectedLight.directSpecular.addAssign( irradiance.mul( BRDF_BlinnPhong( { lightDirection } ) ).mul( materialSpecularStrength ) );
 
 } );