From 46124d6efb2b455cc55883181a41ca012e168f2c Mon Sep 17 00:00:00 2001 From: aardgoose Date: Wed, 13 Dec 2023 16:27:56 +0000 Subject: [PATCH 1/4] remove duplicate code --- examples/jsm/nodes/core/NodeBuilder.js | 14 ++++++++++++- .../renderers/webgl/nodes/GLSLNodeBuilder.js | 20 ------------------- .../renderers/webgpu/nodes/WGSLNodeBuilder.js | 18 ----------------- 3 files changed, 13 insertions(+), 39 deletions(-) diff --git a/examples/jsm/nodes/core/NodeBuilder.js b/examples/jsm/nodes/core/NodeBuilder.js index e1148e30e1f17a..ae3d6bd2ddac51 100644 --- a/examples/jsm/nodes/core/NodeBuilder.js +++ b/examples/jsm/nodes/core/NodeBuilder.js @@ -7,7 +7,7 @@ import NodeKeywords from './NodeKeywords.js'; import NodeCache from './NodeCache.js'; import ParameterNode from './ParameterNode.js'; import FunctionNode from '../code/FunctionNode.js'; -import { createNodeMaterialFromType } from '../materials/NodeMaterial.js'; +import { createNodeMaterialFromType, default as NodeMaterial } from '../materials/NodeMaterial.js'; import { NodeUpdateType, defaultBuildStages, shaderStages } from './constants.js'; import { @@ -1091,6 +1091,18 @@ class NodeBuilder { build() { + const { object, material } = this; + + if ( material !== null ) { + + NodeMaterial.fromMaterial( material ).build( this ); + + } else { + + this.addFlow( 'compute', object ); + + } + // setup() -> stage 1: create possible new nodes and returns an output reference node // analyze() -> stage 2: analyze nodes to possible optimization and validation // generate() -> stage 3: generate shader diff --git a/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js b/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js index b1f2811bb5fbc8..bc281ce7141102 100644 --- a/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +++ b/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js @@ -647,26 +647,6 @@ void main() { } - build() { - - // @TODO: Move this code to super.build() - - const { object, material } = this; - - if ( material !== null ) { - - NodeMaterial.fromMaterial( material ).build( this ); - - } else { - - this.addFlow( 'compute', object ); - - } - - return super.build(); - - } - } export default GLSLNodeBuilder; diff --git a/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js b/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js index f435b6446efda8..b8c0d233b7839e 100644 --- a/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +++ b/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js @@ -124,24 +124,6 @@ class WGSLNodeBuilder extends NodeBuilder { } - build() { - - const { object, material } = this; - - if ( material !== null ) { - - NodeMaterial.fromMaterial( material ).build( this ); - - } else { - - this.addFlow( 'compute', object ); - - } - - return super.build(); - - } - needsColorSpaceToLinear( texture ) { return texture.isVideoTexture === true && texture.colorSpace !== NoColorSpace; From 22aad23f78b537e57d5399bc5730b36ae664c0e6 Mon Sep 17 00:00:00 2001 From: aardgoose Date: Wed, 20 Dec 2023 22:29:28 +0000 Subject: [PATCH 2/4] remove imports --- examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js | 2 +- examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js b/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js index bc281ce7141102..e05aeb648ebf7e 100644 --- a/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +++ b/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js @@ -1,4 +1,4 @@ -import { MathNode, GLSLNodeParser, NodeBuilder, NodeMaterial } from '../../../nodes/Nodes.js'; +import { MathNode, GLSLNodeParser, NodeBuilder } from '../../../nodes/Nodes.js'; import UniformBuffer from '../../common/UniformBuffer.js'; import NodeUniformsGroup from '../../common/nodes/NodeUniformsGroup.js'; diff --git a/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js b/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js index b8c0d233b7839e..2776170aa4b34d 100644 --- a/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +++ b/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js @@ -9,7 +9,7 @@ import UniformBuffer from '../../common/UniformBuffer.js'; import StorageBuffer from '../../common/StorageBuffer.js'; import { getVectorLength, getStrideLength } from '../../common/BufferUtils.js'; -import { NodeBuilder, CodeNode, NodeMaterial } from '../../../nodes/Nodes.js'; +import { NodeBuilder, CodeNode } from '../../../nodes/Nodes.js'; import { getFormat } from '../utils/WebGPUTextureUtils.js'; From 88ea84c364d55d4d88514784c63d39fa39310c4f Mon Sep 17 00:00:00 2001 From: aardgoose Date: Thu, 28 Dec 2023 20:37:15 +0000 Subject: [PATCH 3/4] add switch for standard renderer path --- examples/jsm/nodes/core/NodeBuilder.js | 14 ++++++++----- .../webgl-legacy/nodes/GLSL1NodeBuilder.js | 20 ------------------- .../webgl-legacy/nodes/WebGLNodeBuilder.js | 2 +- 3 files changed, 10 insertions(+), 26 deletions(-) diff --git a/examples/jsm/nodes/core/NodeBuilder.js b/examples/jsm/nodes/core/NodeBuilder.js index ae3d6bd2ddac51..c72af7cbc1186d 100644 --- a/examples/jsm/nodes/core/NodeBuilder.js +++ b/examples/jsm/nodes/core/NodeBuilder.js @@ -1089,17 +1089,21 @@ class NodeBuilder { } - build() { + build( convertMaterial = true ) { const { object, material } = this; - if ( material !== null ) { + if ( convertMaterial ) { - NodeMaterial.fromMaterial( material ).build( this ); + if ( material !== null ) { - } else { + NodeMaterial.fromMaterial( material ).build( this ); + + } else { - this.addFlow( 'compute', object ); + this.addFlow( 'compute', object ); + + } } diff --git a/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js b/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js index 8a55c91cd8fa28..e762d44e8ca65d 100644 --- a/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +++ b/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js @@ -315,26 +315,6 @@ void main() { } - build() { - - // @TODO: Move this code to super.build() - - const { object, material } = this; - - if ( material !== null ) { - - NodeMaterial.fromMaterial( material ).build( this ); - - } else { - - this.addFlow( 'compute', object ); - - } - - return super.build(); - - } - } export default GLSL1NodeBuilder; diff --git a/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js b/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js index 7484b928e5f00a..09481c18cdacde 100644 --- a/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +++ b/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js @@ -671,7 +671,7 @@ ${this.shader[ getShaderStageProperty( shaderStage ) ]} build() { - super.build(); + super.build( false ); this._addSnippets(); this._addUniforms(); From e9efa0e11a27fa769088f02c39cb26d2421055fc Mon Sep 17 00:00:00 2001 From: aardgoose Date: Thu, 28 Dec 2023 21:55:20 +0000 Subject: [PATCH 4/4] remove unused import --- examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js b/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js index e762d44e8ca65d..240237b2a478c6 100644 --- a/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +++ b/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js @@ -1,4 +1,4 @@ -import { MathNode, GLSLNodeParser, NodeBuilder, NodeMaterial } from '../../../nodes/Nodes.js'; +import { MathNode, GLSLNodeParser, NodeBuilder } from '../../../nodes/Nodes.js'; const glslMethods = { [ MathNode.ATAN2 ]: 'atan'