From 2d50495d590f7b087a86fd7dcf622e4cf87e22ee Mon Sep 17 00:00:00 2001 From: sunag Date: Fri, 5 Aug 2022 01:27:40 -0300 Subject: [PATCH 1/7] Cache CheckerNode if necessary --- examples/jsm/nodes/procedural/CheckerNode.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/jsm/nodes/procedural/CheckerNode.js b/examples/jsm/nodes/procedural/CheckerNode.js index 8c449e83ca3fb5..2ffb73d639342e 100644 --- a/examples/jsm/nodes/procedural/CheckerNode.js +++ b/examples/jsm/nodes/procedural/CheckerNode.js @@ -1,4 +1,4 @@ -import Node from '../core/Node.js'; +import TempNode from '../core/TempNode.js'; import { ShaderNode, uv, add, mul, floor, mod, sign } from '../shadernode/ShaderNodeBaseElements.js'; const checkerShaderNode = new ShaderNode( ( inputs ) => { @@ -13,7 +13,7 @@ const checkerShaderNode = new ShaderNode( ( inputs ) => { } ); -class CheckerNode extends Node { +class CheckerNode extends TempNode { constructor( uvNode = uv() ) { From 16d6c702edac79b20afb8ea2b65a8e1701e0396c Mon Sep 17 00:00:00 2001 From: sunag Date: Fri, 5 Aug 2022 02:09:05 -0300 Subject: [PATCH 2/7] Nodes: Refactor, ior, specular, transmission nodes --- .../materials/MeshPhysicalNodeMaterial.js | 16 + .../jsm/renderers/webgl/nodes/SlotNode.js | 12 +- .../renderers/webgl/nodes/WebGLNodeBuilder.js | 533 +++++++++--------- .../jsm/renderers/webgl/nodes/WebGLNodes.js | 6 +- .../webgl/nodes/WebGLPhysicalContextNode.js | 45 -- 5 files changed, 311 insertions(+), 301 deletions(-) delete mode 100644 examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js diff --git a/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js b/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js index f63d0007448c97..83c201bfb820b0 100644 --- a/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +++ b/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js @@ -23,6 +23,14 @@ export default class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial { this.iridescenceIORNode = null; this.iridescenceThicknessNode = null; + this.specularIntensityNode = null; + this.specularColorNode = null; + + this.transmissionNode = null; + this.thicknessNode = null; + this.attenuationDistanceNode = null; + this.attenuationColorNode = null; + this.sheen = 0; this.clearcoat = 0; this.iridescence = 0; @@ -47,6 +55,14 @@ export default class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial { this.iridescenceIORNode = source.iridescenceIORNode; this.iridescenceThicknessNode = source.iridescenceThicknessNode; + this.specularIntensityNode = source.specularIntensityNode; + this.specularColorNode = source.specularColorNode; + + this.transmissionNode = source.transmissionNode; + this.thicknessNode = source.thicknessNode; + this.attenuationDistanceNode = source.attenuationDistanceNode; + this.attenuationColorNode = source.attenuationColorNode; + return super.copy( source ); } diff --git a/examples/jsm/renderers/webgl/nodes/SlotNode.js b/examples/jsm/renderers/webgl/nodes/SlotNode.js index fbabcd37afcb16..ee797cc7419bb7 100644 --- a/examples/jsm/renderers/webgl/nodes/SlotNode.js +++ b/examples/jsm/renderers/webgl/nodes/SlotNode.js @@ -2,12 +2,16 @@ import Node from 'three-nodes/core/Node.js'; class SlotNode extends Node { - constructor( node, name, nodeType ) { + constructor( params ) { - super( nodeType ); + super( params.nodeType ); - this.node = node; - this.name = name; + this.node = null; + this.source = null; + this.target = null; + this.inclusionType = 'replace'; + + Object.assign( this, params ); } diff --git a/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js b/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js index 8b8262f1abf05b..e7eb7bb187c3b6 100644 --- a/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +++ b/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js @@ -2,7 +2,6 @@ import NodeBuilder, { defaultShaderStages } from 'three-nodes/core/NodeBuilder.j import NodeFrame from 'three-nodes/core/NodeFrame.js'; import SlotNode from './SlotNode.js'; import GLSLNodeParser from 'three-nodes/parsers/GLSLNodeParser.js'; -import WebGLPhysicalContextNode from './WebGLPhysicalContextNode.js'; import { PerspectiveCamera, ShaderChunk, ShaderLib, UniformsUtils, UniformsLib, LinearEncoding, RGBAFormat, UnsignedByteType, sRGBEncoding } from 'three'; @@ -15,7 +14,7 @@ const nodeShaderLib = { MeshBasicNodeMaterial: ShaderLib.basic, PointsNodeMaterial: ShaderLib.points, MeshStandardNodeMaterial: ShaderLib.standard, - MeshPhysicalMaterial: ShaderLib.physical + MeshPhysicalNodeMaterial: ShaderLib.physical }; function getIncludeSnippet( name ) { @@ -39,16 +38,18 @@ class WebGLNodeBuilder extends NodeBuilder { this.shader = shader; this.slots = { vertex: [], fragment: [] }; + this._parseShaderLib(); + this._parseInclude( 'fragment', 'lights_physical_fragment', 'clearcoat_normal_fragment_begin', 'transmission_fragment' ); this._parseObject(); + this._sortSlotsToFlow(); + } addSlot( shaderStage, slotNode ) { this.slots[ shaderStage ].push( slotNode ); - return this.addFlow( shaderStage, slotNode ); - } addFlowCode( code ) { @@ -63,20 +64,12 @@ class WebGLNodeBuilder extends NodeBuilder { } - _parseObject() { - - const { material, renderer } = this; + _parseShaderLib() { - let type = material.type; + const type = this.material.type; // shader lib - if ( material.isMeshPhysicalNodeMaterial ) type = 'MeshPhysicalMaterial'; - else if ( material.isMeshStandardNodeMaterial ) type = 'MeshStandardNodeMaterial'; - else if ( material.isMeshBasicNodeMaterial ) type = 'MeshBasicNodeMaterial'; - else if ( material.isPointsNodeMaterial ) type = 'PointsNodeMaterial'; - else if ( material.isLineBasicNodeMaterial ) type = 'LineBasicNodeMaterial'; - if ( nodeShaderLib[ type ] !== undefined ) { const shaderLib = nodeShaderLib[ type ]; @@ -88,9 +81,20 @@ class WebGLNodeBuilder extends NodeBuilder { } + } + + _parseObject() { + + const { material, renderer } = this; + if ( renderer.toneMappingNode?.isNode === true ) { - this.replaceCode( 'fragment', getIncludeSnippet( 'tonemapping_fragment' ), '' ); + this.addSlot( 'fragment', new SlotNode( { + node: material.colorNode, + nodeType: 'vec4', + source: getIncludeSnippet( 'tonemapping_fragment' ), + target: '' + } ) ); } @@ -98,129 +102,308 @@ class WebGLNodeBuilder extends NodeBuilder { if ( material.colorNode && material.colorNode.isNode ) { - this.addSlot( 'fragment', new SlotNode( material.colorNode, 'COLOR', 'vec4' ) ); + this.addSlot( 'fragment', new SlotNode( { + node: material.colorNode, + nodeType: 'vec4', + source: getIncludeSnippet( 'color_fragment' ), + target: 'diffuseColor = %RESULT%;', + inclusionType: 'append' + } ) ); } if ( material.opacityNode && material.opacityNode.isNode ) { - this.addSlot( 'fragment', new SlotNode( material.opacityNode, 'OPACITY', 'float' ) ); + this.addSlot( 'fragment', new SlotNode( { + node: material.opacityNode, + nodeType: 'float', + source: getIncludeSnippet( 'alphatest_fragment' ), + target: 'diffuseColor.a = %RESULT%;', + inclusionType: 'append' + } ) ); } if ( material.normalNode && material.normalNode.isNode ) { - this.addSlot( 'fragment', new SlotNode( material.normalNode, 'NORMAL', 'vec3' ) ); + this.addSlot( 'fragment', new SlotNode( { + node: material.normalNode, + nodeType: 'vec3', + source: getIncludeSnippet( 'normal_fragment_begin' ), + target: 'normal = %RESULT%;', + inclusionType: 'append' + } ) ); } if ( material.emissiveNode && material.emissiveNode.isNode ) { - this.addSlot( 'fragment', new SlotNode( material.emissiveNode, 'EMISSIVE', 'vec3' ) ); + this.addSlot( 'fragment', new SlotNode( { + node: material.emissiveNode, + nodeType: 'vec3', + source: getIncludeSnippet( 'emissivemap_fragment' ), + target: 'totalEmissiveRadiance = %RESULT%;', + inclusionType: 'append' + } ) ); } - if ( material.metalnessNode && material.metalnessNode.isNode ) { + if ( material.isMeshStandardNodeMaterial ) { - this.addSlot( 'fragment', new SlotNode( material.metalnessNode, 'METALNESS', 'float' ) ); + if ( material.metalnessNode && material.metalnessNode.isNode ) { - } + this.addSlot( 'fragment', new SlotNode( { + node: material.metalnessNode, + nodeType: 'float', + source: getIncludeSnippet( 'metalnessmap_fragment' ), + target: 'metalnessFactor = %RESULT%;', + inclusionType: 'append' + } ) ); - if ( material.roughnessNode && material.roughnessNode.isNode ) { + } - this.addSlot( 'fragment', new SlotNode( material.roughnessNode, 'ROUGHNESS', 'float' ) ); + if ( material.roughnessNode && material.roughnessNode.isNode ) { - } + this.addSlot( 'fragment', new SlotNode( { + node: material.roughnessNode, + nodeType: 'float', + source: getIncludeSnippet( 'roughnessmap_fragment' ), + target: 'roughnessFactor = %RESULT%;', + inclusionType: 'append' + } ) ); - if ( material.isMeshPhysicalNodeMaterial ) { + } - if ( material.clearcoatNode && material.clearcoatNode.isNode ) { + if ( material.isMeshPhysicalNodeMaterial ) { - this.addSlot( 'fragment', new SlotNode( material.clearcoatNode, 'CLEARCOAT', 'float' ) ); + if ( material.clearcoatNode && material.clearcoatNode.isNode ) { - if ( material.clearcoatRoughnessNode && material.clearcoatRoughnessNode.isNode ) { + this.addSlot( 'fragment', new SlotNode( { + node: material.clearcoatNode, + nodeType: 'float', + source: 'material.clearcoat = clearcoat;', + target: 'material.clearcoat = %RESULT%;' + } ) ); - this.addSlot( 'fragment', new SlotNode( material.clearcoatRoughnessNode, 'CLEARCOAT_ROUGHNESS', 'float' ) ); + if ( material.clearcoatRoughnessNode && material.clearcoatRoughnessNode.isNode ) { - } + this.addSlot( 'fragment', new SlotNode( { + node: material.clearcoatRoughnessNode, + nodeType: 'float', + source: 'material.clearcoatRoughness = clearcoatRoughness;', + target: 'material.clearcoatRoughness = %RESULT%;' + } ) ); - if ( material.clearcoatNormalNode && material.clearcoatNormalNode.isNode ) { + } - this.addSlot( 'fragment', new SlotNode( material.clearcoatNormalNode, 'CLEARCOAT_NORMAL', 'vec3' ) ); + if ( material.clearcoatNormalNode && material.clearcoatNormalNode.isNode ) { + + this.addSlot( 'fragment', new SlotNode( { + node: material.clearcoatNormalNode, + nodeType: 'vec3', + source: 'vec3 clearcoatNormal = geometryNormal;', + target: 'vec3 clearcoatNormal = %RESULT%;' + } ) ); + + } + + material.defines.USE_CLEARCOAT = ''; + + } else { + + delete material.defines.USE_CLEARCOAT; } - material.defines.USE_CLEARCOAT = ''; + if ( material.sheenNode && material.sheenNode.isNode ) { - } else { + this.addSlot( 'fragment', new SlotNode( { + node: material.sheenNode, + nodeType: 'vec3', + source: 'material.sheenColor = sheenColor;', + target: 'material.sheenColor = %RESULT%;' + } ) ); - delete material.defines.USE_CLEARCOAT; + if ( material.sheenRoughnessNode && material.sheenRoughnessNode.isNode ) { - } + this.addSlot( 'fragment', new SlotNode( { + node: material.sheenRoughnessNode, + nodeType: 'float', + source: 'material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );', + target: 'material.sheenRoughness = clamp( %RESULT%, 0.07, 1.0 );' + } ) ); - if ( material.sheenNode && material.sheenNode.isNode ) { + } - this.addSlot( 'fragment', new SlotNode( material.sheenNode, 'SHEEN', 'vec3' ) ); + material.defines.USE_SHEEN = ''; - if ( material.sheenRoughnessNode && material.sheenRoughnessNode.isNode ) { + } else { - this.addSlot( 'fragment', new SlotNode( material.sheenRoughnessNode, 'SHEEN_ROUGHNESS', 'float' ) ); + delete material.defines.USE_SHEEN; } - material.defines.USE_SHEEN = ''; + if ( material.iridescenceNode && material.iridescenceNode.isNode ) { - } else { + this.addSlot( 'fragment', new SlotNode( { + node: material.iridescenceNode, + nodeType: 'float', + source: 'material.iridescence = iridescence;', + target: 'material.iridescence = %RESULT%;' + } ) ); - delete material.defines.USE_SHEEN; + if ( material.iridescenceIORNode && material.iridescenceIORNode.isNode ) { - } + this.addSlot( 'fragment', new SlotNode( { + node: material.iridescenceIORNode, + nodeType: 'float', + source: 'material.iridescenceIOR = iridescenceIOR;', + target: 'material.iridescenceIOR = %RESULT%;' + } ) ); - if ( material.iridescenceNode && material.iridescenceNode.isNode ) { + } - this.addSlot( 'fragment', new SlotNode( material.iridescenceNode, 'IRIDESCENCE', 'float' ) ); + if ( material.iridescenceThicknessNode && material.iridescenceThicknessNode.isNode ) { - if ( material.iridescenceIORNode && material.iridescenceIORNode.isNode ) { + this.addSlot( 'fragment', new SlotNode( { + node: material.iridescenceThicknessNode, + nodeType: 'float', + source: 'material.iridescenceThickness = iridescenceThicknessMaximum;', + target: 'material.iridescenceThickness = %RESULT%;' + } ) ); - this.addSlot( 'fragment', new SlotNode( material.iridescenceIORNode, 'IRIDESCENCE_IOR', 'float' ) ); + } + + material.defines.USE_IRIDESCENCE = ''; + + } else { + + delete material.defines.USE_IRIDESCENCE; } - if ( material.iridescenceThicknessNode && material.iridescenceThicknessNode.isNode ) { + if ( material.iorNode && material.iorNode.isNode ) { - this.addSlot( 'fragment', new SlotNode( material.iridescenceThicknessNode, 'IRIDESCENCE_THICKNESS', 'float' ) ); + this.addSlot( 'fragment', new SlotNode( { + node: material.iorNode, + nodeType: 'float', + source: 'material.ior = ior;', + target: 'material.ior = %RESULT%;' + } ) ); } - material.defines.USE_IRIDESCENCE = ''; + if ( material.specularColorNode && material.specularColorNode.isNode ) { - } else { + this.addSlot( 'fragment', new SlotNode( { + node: material.specularColorNode, + nodeType: 'vec3', + source: 'vec3 specularColorFactor = specularColor;', + target: 'vec3 specularColorFactor = %RESULT%;' + } ) ); - delete material.defines.USE_IRIDESCENCE; + } - } + if ( material.specularIntensityNode && material.specularIntensityNode.isNode ) { - } + this.addSlot( 'fragment', new SlotNode( { + node: material.specularIntensityNode, + nodeType: 'float', + source: 'float specularIntensityFactor = specularIntensity;', + target: 'float specularIntensityFactor = %RESULT%;' + } ) ); + + } + + if ( material.transmissionNode && material.transmissionNode.isNode ) { + + this.addSlot( 'fragment', new SlotNode( { + node: material.transmissionNode, + nodeType: 'float', + source: 'material.transmission = transmission;', + target: 'material.transmission = %RESULT%;' + } ) ); + + if ( material.thicknessNode && material.thicknessNode.isNode ) { + + this.addSlot( 'fragment', new SlotNode( { + node: material.thicknessNode, + nodeType: 'float', + source: 'material.thickness = thickness;', + target: 'material.thickness = %RESULT%;' + } ) ); + + } + + if ( material.thicknessNode && material.thicknessNode.isNode ) { + + this.addSlot( 'fragment', new SlotNode( { + node: material.thicknessNode, + nodeType: 'float', + source: 'material.thickness = thickness;', + target: 'material.thickness = %RESULT%;' + } ) ); + + } + + if ( material.attenuationDistanceNode && material.attenuationDistanceNode.isNode ) { + + this.addSlot( 'fragment', new SlotNode( { + node: material.attenuationDistanceNode, + nodeType: 'float', + source: 'material.attenuationDistance = attenuationDistance;', + target: 'material.attenuationDistance = %RESULT%;' + } ) ); + + } + + if ( material.attenuationColorNode && material.attenuationColorNode.isNode ) { + + this.addSlot( 'fragment', new SlotNode( { + node: material.attenuationColorNode, + nodeType: 'vec3', + source: 'material.attenuationColor = attenuationColor;', + target: 'material.attenuationColor = %RESULT%;' + } ) ); + + } + + material.transmission = 1; + material.defines.USE_TRANSMISSION = ''; + + } else { - if ( material.envNode && material.envNode.isNode ) { + material.transmission = 0; + delete material.defines.USE_TRANSMISSION; - const envRadianceNode = new WebGLPhysicalContextNode( WebGLPhysicalContextNode.RADIANCE, material.envNode ); - const envIrradianceNode = new WebGLPhysicalContextNode( WebGLPhysicalContextNode.IRRADIANCE, material.envNode ); + } - this.addSlot( 'fragment', new SlotNode( envRadianceNode, 'RADIANCE', 'vec3' ) ); - this.addSlot( 'fragment', new SlotNode( envIrradianceNode, 'IRRADIANCE', 'vec3' ) ); + } } + // + if ( material.positionNode && material.positionNode.isNode ) { - this.addSlot( 'vertex', new SlotNode( material.positionNode, 'POSITION', 'vec3' ) ); + this.addSlot( 'vertex', new SlotNode( { + node: material.positionNode, + nodeType: 'vec3', + source: getIncludeSnippet( 'begin_vertex' ), + target: 'transformed = %RESULT%;', + inclusionType: 'append' + } ) ); } if ( material.sizeNode && material.sizeNode.isNode ) { - this.addSlot( 'vertex', new SlotNode( material.sizeNode, 'SIZE', 'float' ) ); + this.addSlot( 'vertex', new SlotNode( { + node: material.sizeNode, + nodeType: 'float', + source: 'gl_PointSize = size;', + target: 'gl_PointSize = %RESULT%;' + } ) ); } @@ -324,7 +507,7 @@ class WebGLNodeBuilder extends NodeBuilder { } - addCodeAfterSnippet( shaderStage, snippet, code ) { + addCodeAfterCode( shaderStage, snippet, code ) { const shaderProperty = getShaderStageProperty( shaderStage ); @@ -345,14 +528,6 @@ class WebGLNodeBuilder extends NodeBuilder { } - addCodeAfterInclude( shaderStage, includeName, code ) { - - const includeSnippet = getIncludeSnippet( includeName ); - - this.addCodeAfterSnippet( shaderStage, includeSnippet, code ); - - } - replaceCode( shaderStage, source, target ) { const shaderProperty = getShaderStageProperty( shaderStage ); @@ -361,19 +536,6 @@ class WebGLNodeBuilder extends NodeBuilder { } - parseInclude( shaderStage, ...includes ) { - - for ( const name of includes ) { - - const includeSnippet = getIncludeSnippet( name ); - const code = ShaderChunk[ name ]; - - this.replaceCode( shaderStage, includeSnippet, code ); - - } - - } - getTextureEncodingFromMap( map ) { const isWebGL2 = this.renderer.capabilities.isWebGL2; @@ -452,208 +614,77 @@ ${this.shader[ getShaderStageProperty( shaderStage ) ]} } - getSlot( shaderStage, name ) { - - const slots = this.slots[ shaderStage ]; + _parseInclude( shaderStage, ...includes ) { - for ( const node of slots ) { + for ( const name of includes ) { - if ( node.name === name ) { + const includeSnippet = getIncludeSnippet( name ); + const code = ShaderChunk[ name ]; - return this.getFlowData( node/*, shaderStage*/ ); + const shaderProperty = getShaderStageProperty( shaderStage ); - } + this.shader[ shaderProperty ] = this.shader[ shaderProperty ].replaceAll( includeSnippet, code ); } } - _addSnippets() { - - this.parseInclude( 'fragment', 'lights_physical_fragment' ); - this.parseInclude( 'fragment', 'clearcoat_normal_fragment_begin' ); - - const colorSlot = this.getSlot( 'fragment', 'COLOR' ); - const opacityNode = this.getSlot( 'fragment', 'OPACITY' ); - const normalSlot = this.getSlot( 'fragment', 'NORMAL' ); - const emissiveNode = this.getSlot( 'fragment', 'EMISSIVE' ); - const roughnessNode = this.getSlot( 'fragment', 'ROUGHNESS' ); - const metalnessNode = this.getSlot( 'fragment', 'METALNESS' ); - const clearcoatNode = this.getSlot( 'fragment', 'CLEARCOAT' ); - const clearcoatRoughnessNode = this.getSlot( 'fragment', 'CLEARCOAT_ROUGHNESS' ); - const clearcoatNormalNode = this.getSlot( 'fragment', 'CLEARCOAT_NORMAL' ); - const sheenNode = this.getSlot( 'fragment', 'SHEEN' ); - const sheenRoughnessNode = this.getSlot( 'fragment', 'SHEEN_ROUGHNESS' ); - const iridescenceNode = this.getSlot( 'fragment', 'IRIDESCENCE' ); - const iridescenceIORNode = this.getSlot( 'fragment', 'IRIDESCENCE_IOR' ); - const iridescenceThicknessNode = this.getSlot( 'fragment', 'IRIDESCENCE_THICKNESS' ); - - const positionNode = this.getSlot( 'vertex', 'POSITION' ); - const sizeNode = this.getSlot( 'vertex', 'SIZE' ); - - if ( colorSlot !== undefined ) { - - this.addCodeAfterInclude( - 'fragment', - 'color_fragment', - `${colorSlot.code}\n\tdiffuseColor = ${colorSlot.result};` - ); - - } - - if ( opacityNode !== undefined ) { - - this.addCodeAfterInclude( - 'fragment', - 'alphatest_fragment', - `${opacityNode.code}\n\tdiffuseColor.a = ${opacityNode.result};` - ); - - } - - if ( normalSlot !== undefined ) { - - this.addCodeAfterInclude( - 'fragment', - 'normal_fragment_begin', - `${normalSlot.code}\n\tnormal = ${normalSlot.result};` - ); - - } + _sortSlotsToFlow() { - if ( emissiveNode !== undefined ) { - - this.addCodeAfterInclude( - 'fragment', - 'emissivemap_fragment', - `${emissiveNode.code}\n\ttotalEmissiveRadiance = ${emissiveNode.result};` - ); - - } - - if ( roughnessNode !== undefined ) { - - this.addCodeAfterInclude( - 'fragment', - 'roughnessmap_fragment', - `${roughnessNode.code}\n\troughnessFactor = ${roughnessNode.result};` - ); - - } - - if ( metalnessNode !== undefined ) { - - this.addCodeAfterInclude( - 'fragment', - 'metalnessmap_fragment', - `${metalnessNode.code}\n\tmetalnessFactor = ${metalnessNode.result};` - ); - - } - - if ( clearcoatNode !== undefined ) { - - this.addCodeAfterSnippet( - 'fragment', - 'material.clearcoat = clearcoat;', - `${clearcoatNode.code}\n\tmaterial.clearcoat = ${clearcoatNode.result};` - ); - - if ( clearcoatRoughnessNode !== undefined ) { - - this.addCodeAfterSnippet( - 'fragment', - 'material.clearcoatRoughness = clearcoatRoughness;', - `${clearcoatRoughnessNode.code}\n\tmaterial.clearcoatRoughness = ${clearcoatRoughnessNode.result};` - ); - - } - - if ( clearcoatNormalNode !== undefined ) { + for ( const shaderStage of defaultShaderStages ) { - this.addCodeAfterSnippet( - 'fragment', - 'vec3 clearcoatNormal = geometryNormal;', - `${clearcoatNormalNode.code}\n\tclearcoatNormal = ${clearcoatNormalNode.result};` - ); + const sourceCode = this.shader[ getShaderStageProperty( shaderStage ) ]; - } + const slots = this.slots[ shaderStage ].sort( ( slotA, slotB ) => { - } + if ( sourceCode.indexOf( slotA.source ) == - 1 ) { + //console.log( slotA, sourceCode.indexOf( slotA.source ), sourceCode.indexOf( slotB.source ) ); + //console.log(sourceCode); + } - if ( sheenNode !== undefined ) { + return sourceCode.indexOf( slotA.source ) > sourceCode.indexOf( slotB.source ) ? 1 : - 1; - this.addCodeAfterSnippet( - 'fragment', - 'material.sheenColor = sheenColor;', - `${sheenNode.code}\n\tmaterial.sheenColor = ${sheenNode.result};` - ); + } ); - if ( sheenRoughnessNode !== undefined ) { + for ( const slotNode of slots ) { - this.replaceCode( - 'fragment', - 'material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );', - `${sheenRoughnessNode.code}\n\tmaterial.sheenRoughness = clamp( ${sheenRoughnessNode.result}, 0.07, 1.0 );` - ); + this.addFlow( shaderStage, slotNode ); } } - if ( iridescenceNode !== undefined ) { - - this.addCodeAfterSnippet( - 'fragment', - 'material.iridescence = iridescence;', - `${iridescenceNode.code}\n\tmaterial.iridescence = ${iridescenceNode.result};` - ); - - } + } - if ( iridescenceIORNode !== undefined ) { + _addSnippets() { - this.addCodeAfterSnippet( - 'fragment', - 'material.iridescenceIOR = iridescenceIOR;', - `${iridescenceIORNode.code}\n\tmaterial.iridescenceIOR = ${iridescenceIORNode.result};` - ); + for ( const shaderStage of defaultShaderStages ) { - } + for ( const slotNode of this.slots[ shaderStage ] ) { - if ( iridescenceThicknessNode !== undefined ) { + const flowData = this.getFlowData( slotNode/*, shaderStage*/ ); - this.addCodeAfterSnippet( - 'fragment', - 'material.iridescenceThickness = iridescenceThicknessMaximum;', - `${iridescenceThicknessNode.code}\n\tmaterial.iridescenceThickness = ${iridescenceThicknessNode.result};` - ); + const inclusionType = slotNode.inclusionType; + const source = slotNode.source; + const target = flowData.code + '\n\t' + slotNode.target.replace( '%RESULT%', flowData.result ); - } + if ( inclusionType === 'append' ) { - if ( positionNode !== undefined ) { + this.addCodeAfterCode( shaderStage, source, target ); - this.addCodeAfterInclude( - 'vertex', - 'begin_vertex', - `${positionNode.code}\n\ttransformed = ${positionNode.result};` - ); + } else if ( inclusionType === 'replace' ) { - } + this.replaceCode( shaderStage, source, target ); - if ( sizeNode !== undefined ) { + } else { - this.addCodeAfterSnippet( - 'vertex', - 'gl_PointSize = size;', - `${sizeNode.code}\n\tgl_PointSize = ${sizeNode.result};` - ); + console.warn( `Inclusion type "${ inclusionType }" not compatible.` ); - } + } - for ( const shaderStage of defaultShaderStages ) { + } - this.addCodeAfterSnippet( + this.addCodeAfterCode( shaderStage, 'main() {', this.flowCode[ shaderStage ] diff --git a/examples/jsm/renderers/webgl/nodes/WebGLNodes.js b/examples/jsm/renderers/webgl/nodes/WebGLNodes.js index 830173b24a4e0a..92b65ae84523ea 100644 --- a/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +++ b/examples/jsm/renderers/webgl/nodes/WebGLNodes.js @@ -8,7 +8,11 @@ export const nodeFrame = new NodeFrame(); Material.prototype.onBuild = function ( object, parameters, renderer ) { - builders.set( this, new WebGLNodeBuilder( object, renderer, parameters ).build() ); + if ( object.material.isNodeMaterial === true ) { + + builders.set( this, new WebGLNodeBuilder( object, renderer, parameters ).build() ); + + } }; diff --git a/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js b/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js deleted file mode 100644 index 635be8db420f98..00000000000000 --- a/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +++ /dev/null @@ -1,45 +0,0 @@ -import ContextNode from 'three-nodes/core/ContextNode.js'; -import NormalNode from 'three-nodes/accessors/NormalNode.js'; -import ExpressionNode from 'three-nodes/core/ExpressionNode.js'; -import ConstNode from 'three-nodes/core/ConstNode.js'; - -class WebGLPhysicalContextNode extends ContextNode { - - static RADIANCE = 'radiance'; - static IRRADIANCE = 'irradiance'; - - constructor( scope, node ) { - - super( node, 'vec3' ); - - this.scope = scope; - - } - - generate( builder, output ) { - - const scope = this.scope; - - let roughness = null; - - if ( scope === WebGLPhysicalContextNode.RADIANCE ) { - - roughness = new ExpressionNode( 'roughnessFactor', 'float' ); - - } else if ( scope === WebGLPhysicalContextNode.IRRADIANCE ) { - - roughness = new ConstNode( 1 ); - - this.context.uv = new NormalNode( NormalNode.WORLD ); - - } - - this.context.roughness = roughness; - - return super.generate( builder, output ); - - } - -} - -export default WebGLPhysicalContextNode; From a7d20ed579dbfa4acc92c677c86b36aebda803aa Mon Sep 17 00:00:00 2001 From: sunag Date: Fri, 5 Aug 2022 02:09:19 -0300 Subject: [PATCH 3/7] update example --- .../webgl_nodes_materials_instance_uniform.html | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/examples/webgl_nodes_materials_instance_uniform.html b/examples/webgl_nodes_materials_instance_uniform.html index 9f9d58438c4fb0..97ff1118302448 100644 --- a/examples/webgl_nodes_materials_instance_uniform.html +++ b/examples/webgl_nodes_materials_instance_uniform.html @@ -27,8 +27,8 @@ + + + + + + + From 9fc552605b6d83d3b298e6138e6e7f20297d0d70 Mon Sep 17 00:00:00 2001 From: sunag Date: Tue, 9 Aug 2022 15:18:12 -0300 Subject: [PATCH 5/7] update transmission --- .../webgl_nodes_loader_gltf_transmission.jpg | Bin 44186 -> 45528 bytes .../webgl_nodes_loader_gltf_transmission.html | 9 ++++----- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/examples/screenshots/webgl_nodes_loader_gltf_transmission.jpg b/examples/screenshots/webgl_nodes_loader_gltf_transmission.jpg index 3ee64c430ab687fa0e8302a1d9132a14119f514c..14730af000618b2d83065bbf949f4a8201ae96f1 100644 GIT binary patch delta 38094 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 delta 36748 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 diff --git a/examples/webgl_nodes_loader_gltf_transmission.html b/examples/webgl_nodes_loader_gltf_transmission.html index 77b42596606147..6aa4f7e1944a18 100644 --- a/examples/webgl_nodes_loader_gltf_transmission.html +++ b/examples/webgl_nodes_loader_gltf_transmission.html @@ -31,7 +31,7 @@ import * as THREE from 'three'; - import { NodeMaterial, normalWorld, texture, uv, add, mul, vec2, checker, timerLocal } from 'three-nodes/Nodes.js'; + import { NodeMaterial, float, texture, uv, add, mul, vec2, checker, timerLocal } from 'three-nodes/Nodes.js'; import { nodeFrame } from './jsm/renderers/webgl/nodes/WebGLNodes.js'; @@ -82,12 +82,11 @@ if ( material && material.transmission > 0 ) { - const checkerNode = checker( mul( add( uv(), vec2( 0, timerLocal( - .05 ) ) ), 20 ) ); + const checkerNode = checker( mul( add( uv(), vec2( 0, timerLocal( - .05 ) ) ), 7 ) ); const nodeMaterial = NodeMaterial.fromMaterial( material ); - nodeMaterial.colorNode = normalWorld; - nodeMaterial.transmissionNode = normalWorld.y; - nodeMaterial.iorNode = add( .7, mul( normalWorld.y, .4 ) ); + nodeMaterial.transmissionNode = float( 1 ); + nodeMaterial.iorNode = float( 1.5 ); nodeMaterial.thicknessNode = mul( texture( material.thicknessMap ).g, checkerNode ); //nodeMaterial.attenuationDistanceNode; //nodeMaterial.attenuationColorNode; From 2c2a011819dae8c9a80b5e374b7aca2e0b2c4052 Mon Sep 17 00:00:00 2001 From: sunag Date: Wed, 10 Aug 2022 11:41:43 -0300 Subject: [PATCH 6/7] update transmission (2) --- examples/webgl_nodes_loader_gltf_transmission.html | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/examples/webgl_nodes_loader_gltf_transmission.html b/examples/webgl_nodes_loader_gltf_transmission.html index 6aa4f7e1944a18..4531ec3011bd57 100644 --- a/examples/webgl_nodes_loader_gltf_transmission.html +++ b/examples/webgl_nodes_loader_gltf_transmission.html @@ -31,7 +31,7 @@ import * as THREE from 'three'; - import { NodeMaterial, float, texture, uv, add, mul, vec2, checker, timerLocal } from 'three-nodes/Nodes.js'; + import { NodeMaterial, float, texture, mul } from 'three-nodes/Nodes.js'; import { nodeFrame } from './jsm/renderers/webgl/nodes/WebGLNodes.js'; @@ -82,12 +82,10 @@ if ( material && material.transmission > 0 ) { - const checkerNode = checker( mul( add( uv(), vec2( 0, timerLocal( - .05 ) ) ), 7 ) ); - const nodeMaterial = NodeMaterial.fromMaterial( material ); nodeMaterial.transmissionNode = float( 1 ); nodeMaterial.iorNode = float( 1.5 ); - nodeMaterial.thicknessNode = mul( texture( material.thicknessMap ).g, checkerNode ); + nodeMaterial.thicknessNode = mul( texture( material.thicknessMap ).g, 0.1 ); //nodeMaterial.attenuationDistanceNode; //nodeMaterial.attenuationColorNode; From 6aace82b26853f69861ed77cdde93179a96ca750 Mon Sep 17 00:00:00 2001 From: sunag Date: Wed, 10 Aug 2022 11:43:59 -0300 Subject: [PATCH 7/7] update screenshot --- .../webgl_nodes_loader_gltf_transmission.jpg | Bin 45528 -> 43837 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/examples/screenshots/webgl_nodes_loader_gltf_transmission.jpg b/examples/screenshots/webgl_nodes_loader_gltf_transmission.jpg index 14730af000618b2d83065bbf949f4a8201ae96f1..be97b2955bb8abc643e07aa32aaee70716c03dbc 100644 GIT binary patch delta 35740 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