Просмотр исходного кода

Merge pull request #17003 from DanielSturk/cubetexturenode-lod

Fixed CubeTextureNode having incorrect roughness
Mr.doob 6 лет назад
Родитель
Сommit
ec596c6e74
2 измененных файлов с 39 добавлено и 15 удалено
  1. 38 14
      examples/webgl_materials_nodes.html
  2. 1 1
      src/renderers/webgl/WebGLProgram.js

+ 38 - 14
examples/webgl_materials_nodes.html

@@ -2534,28 +2534,52 @@
 
 					case 'node-reflect':
 
-						// MATERIAL
+							// MATERIAL
 
-						var node = new Nodes.ReflectNode();
+							var node = new Nodes.ReflectNode();
 
-						mtl = new Nodes.PhongNodeMaterial();
-						mtl.environment = new Nodes.CubeTextureNode( cubemap, node );
+							var nodeMaterial = new Nodes.StandardNodeMaterial();
+							nodeMaterial.environment = new Nodes.CubeTextureNode( cubemap, node );
+							nodeMaterial.roughness = new Nodes.FloatNode(0);
+							nodeMaterial.metalness = new Nodes.FloatNode(1);
 
-						// GUI
+							var standardMaterial = new THREE.MeshStandardMaterial( {
+								envMap: cubemap,
+								roughness: 0,
+								metalness: 1
+							} );
 
-						addGui( 'scope', {
-							vector: Nodes.ReflectNode.VECTOR,
-							cube: Nodes.ReflectNode.CUBE,
-							sphere: Nodes.ReflectNode.SPHERE
-						}, function ( val ) {
+							mtl = nodeMaterial;
 
-							node.scope = val;
+							// GUI
 
-							mtl.needsUpdate = true;
+							addGui( 'scope', {
+								vector: Nodes.ReflectNode.VECTOR,
+								cube: Nodes.ReflectNode.CUBE,
+								sphere: Nodes.ReflectNode.SPHERE
+							}, function ( val ) {
 
-						} );
+								node.scope = val;
 
-						break;
+								nodeMaterial.needsUpdate = true;
+
+							} );
+
+							addGui( 'node', true, function ( val ) {
+
+								mtl = val ? nodeMaterial : standardMaterial;
+								mesh.material = mtl;
+
+							} );
+
+							addGui( 'roughness', 0, function ( val ) {
+
+								nodeMaterial.roughness.value = val;
+								standardMaterial.roughness = val;
+
+							}, false, 0, 1 );
+
+							break;
 
 
 					case 'varying':

+ 1 - 1
src/renderers/webgl/WebGLProgram.js

@@ -534,7 +534,7 @@ function WebGLProgram( renderer, extensions, code, material, shader, parameters,
 			parameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',
 			parameters.logarithmicDepthBuffer && ( capabilities.isWebGL2 || extensions.get( 'EXT_frag_depth' ) ) ? '#define USE_LOGDEPTHBUF_EXT' : '',
 
-			parameters.envMap && ( capabilities.isWebGL2 || extensions.get( 'EXT_shader_texture_lod' ) ) ? '#define TEXTURE_LOD_EXT' : '',
+			( ( material.extensions ? material.extensions.shaderTextureLOD : false ) || parameters.envMap ) && ( capabilities.isWebGL2 || extensions.get( 'EXT_shader_texture_lod' ) ) ? '#define TEXTURE_LOD_EXT' : '',
 
 			'uniform mat4 viewMatrix;',
 			'uniform vec3 cameraPosition;',