Browse Source

Added sheen to StandardNodeMaterial

# Conflicts:
#	examples/jsm/nodes/materials/nodes/StandardNode.js
#	examples/webgl_materials_nodes.html
Daniel Sturk 6 years ago
parent
commit
1ae0a6568f

+ 2 - 1
examples/jsm/nodes/materials/StandardNodeMaterial.js

@@ -35,7 +35,8 @@ NodeUtils.addShortcuts( StandardNodeMaterial.prototype, 'fragment', [
 	'ao',
 	'environment',
 	'mask',
-	'position'
+	'position',
+	'sheen'
 ] );
 
 export { StandardNodeMaterial };

+ 3 - 1
examples/jsm/nodes/materials/nodes/StandardNode.js

@@ -30,7 +30,7 @@ StandardNode.prototype.build = function ( builder ) {
 
 	var code;
 
-	builder.define( this.clearCoat || this.clearCoatRoughness ? 'PHYSICAL' : 'STANDARD' );
+	builder.define( this.clearCoat || this.clearCoatRoughness || this.sheen ? 'PHYSICAL' : 'STANDARD' );
 
 	builder.requires.lights = true;
 
@@ -183,6 +183,8 @@ StandardNode.prototype.build = function ( builder ) {
 
 		var clearCoatEnv = useClearCoat && environment ? this.environment.flow( builder, 'c', { cache: 'clearCoat', context: contextEnvironment, slot: 'environment' } ) : undefined;
 
+		var sheen = ! builder.isDefined( 'STANDARD' ) && this.sheen ? this.sheen.buildCode( builder, 'f' ) : undefined;
+
 		builder.requires.transparent = alpha !== undefined;
 
 		builder.addParsCode( [

+ 11 - 1
examples/webgl_materials_nodes.html

@@ -559,7 +559,9 @@
 							Nodes.OperatorNode.MUL
 						);
 
-						mtl.color = new Nodes.ColorNode( 0xEEEEEE );
+						var sheen = new THREE.FloatNode(.5);
+
+						mtl.color = new THREE.ColorNode( 0xEEEEEE );
 						mtl.roughness = roughness;
 						mtl.metalness = metalness;
 						mtl.reflectivity = reflectivity;
@@ -569,6 +571,8 @@
 						mtl.normal = new Nodes.NormalMapNode( new Nodes.TextureNode( getTexture( "grassNormal" ) ) );
 						mtl.normal.scale = normalMask;
 
+						mtl.sheen = sheen;
+
 						// GUI
 
 						addGui( 'color', mtl.color.value.getHex(), function ( val ) {
@@ -625,6 +629,12 @@
 
 						}, false, 0, 1 );
 
+						addGui( 'sheen', sheen.value, function ( val ) {
+
+							sheen.value = val;
+
+						}, false, 0, 1 );
+
 						break;
 
 					case 'wave':