Browse Source

TSL: Node - Introduce `getElementType()` (#28437)

* Fix Array Element Type

* revision
sunag 1 year ago
parent
commit
114f0ad78f

+ 6 - 0
examples/jsm/nodes/accessors/BufferNode.js

@@ -15,6 +15,12 @@ class BufferNode extends UniformNode {
 
 	}
 
+	getElementType( builder ) {
+
+		return this.getNodeType( builder );
+
+	}
+
 	getInputType( /*builder*/ ) {
 
 		return 'buffer';

+ 9 - 0
examples/jsm/nodes/core/Node.js

@@ -163,6 +163,15 @@ class Node extends EventDispatcher {
 
 	}
 
+	getElementType( builder ) {
+
+		const type = this.getNodeType( builder );
+		const elementType = builder.getElementType( type );
+
+		return elementType;
+
+	}
+
 	getNodeType( builder ) {
 
 		const nodeProperties = builder.getNodeProperties( this );

+ 10 - 0
examples/jsm/nodes/core/NodeBuilder.js

@@ -498,6 +498,16 @@ class NodeBuilder {
 
 	}
 
+	getElementType( type ) {
+
+		if ( type === 'mat2' ) return 'vec2';
+		if ( type === 'mat3' ) return 'vec3';
+		if ( type === 'mat4' ) return 'vec4';
+
+		return this.getComponentType( type );
+
+	}
+
 	getComponentType( type ) {
 
 		type = this.getVectorType( type );

+ 1 - 1
examples/jsm/nodes/utils/ArrayElementNode.js

@@ -15,7 +15,7 @@ class ArrayElementNode extends Node { // @TODO: If extending from TempNode it br
 
 	getNodeType( builder ) {
 
-		return this.node.getNodeType( builder );
+		return this.node.getElementType( builder );
 
 	}