소스 검색

Nodes: Fix `ConvertType` (#24967)

* Update ShaderNode.js

* Update JoinNode.js

* A fix for `color`

* Don't compute `defaultType` if not needed
Levi Pesin 2 년 전
부모
커밋
4738e28802
2개의 변경된 파일9개의 추가작업 그리고 3개의 파일을 삭제
  1. 1 1
      examples/jsm/nodes/shadernode/ShaderNode.js
  2. 8 2
      examples/jsm/nodes/utils/JoinNode.js

+ 1 - 1
examples/jsm/nodes/shadernode/ShaderNode.js

@@ -253,7 +253,7 @@ export const ConvertType = function ( type, cacheMap = null ) {
 
 
 			}
 			}
 
 
-			return nodeObject( new ConvertNode( new JoinNode( nodes ), type ) );
+			return nodeObject( new JoinNode( nodes, type ) );
 
 
 		}
 		}
 
 

+ 8 - 2
examples/jsm/nodes/utils/JoinNode.js

@@ -2,9 +2,9 @@ import TempNode from '../core/Node.js';
 
 
 class JoinNode extends TempNode {
 class JoinNode extends TempNode {
 
 
-	constructor( nodes = [] ) {
+	constructor( nodes = [], nodeType = null ) {
 
 
-		super();
+		super( nodeType );
 
 
 		this.nodes = nodes;
 		this.nodes = nodes;
 
 
@@ -12,6 +12,12 @@ class JoinNode extends TempNode {
 
 
 	getNodeType( builder ) {
 	getNodeType( builder ) {
 
 
+		if ( this.nodeType !== null ) {
+
+			return builder.getVectorType( this.nodeType );
+
+		}
+
 		return builder.getTypeFromLength( this.nodes.reduce( ( count, cur ) => count + builder.getTypeLength( cur.getNodeType( builder ) ), 0 ) );
 		return builder.getTypeFromLength( this.nodes.reduce( ( count, cur ) => count + builder.getTypeLength( cur.getNodeType( builder ) ), 0 ) );
 
 
 	}
 	}