From a27f53adeb788ecc6e966a2c2206b596c97b80c2 Mon Sep 17 00:00:00 2001 From: Renaud Rohlinger Date: Tue, 27 Aug 2024 17:03:27 +0900 Subject: [PATCH 1/2] WebGPURenderer: Tree-Shaking 1/2 cleanup --- src/nodes/Nodes.js | 2 +- src/nodes/accessors/TextureBicubic.js | 4 +++- src/nodes/accessors/TextureSizeNode.js | 4 +++- src/nodes/display/BumpMapNode.js | 4 +++- src/nodes/display/FilmNode.js | 4 +++- src/nodes/display/NormalMapNode.js | 4 +++- src/nodes/display/PosterizeNode.js | 4 +++- src/nodes/math/Hash.js | 4 +++- src/nodes/utils/Discard.js | 1 + src/nodes/utils/LoopNode.js | 5 ++++- src/nodes/utils/OscNode.js | 7 ++++++- src/nodes/utils/RotateNode.js | 4 +++- src/nodes/utils/TriplanarTexturesNode.js | 4 +++- 13 files changed, 39 insertions(+), 12 deletions(-) diff --git a/src/nodes/Nodes.js b/src/nodes/Nodes.js index 33ac34bd796175..288c7e0860cd78 100644 --- a/src/nodes/Nodes.js +++ b/src/nodes/Nodes.js @@ -10,7 +10,7 @@ export { default as ConstNode } from './core/ConstNode.js'; export { default as ContextNode } from './core/ContextNode.js'; export { default as IndexNode } from './core/IndexNode.js'; export { default as LightingModel } from './core/LightingModel.js'; -export { default as Node } from './core/Node.js'; +export { default as Node, registerNodeClass } from './core/Node.js'; export { default as VarNode } from './core/VarNode.js'; export { default as NodeAttribute } from './core/NodeAttribute.js'; export { default as NodeBuilder } from './core/NodeBuilder.js'; diff --git a/src/nodes/accessors/TextureBicubic.js b/src/nodes/accessors/TextureBicubic.js index 1fe7752f3edd69..326008752cc1d3 100644 --- a/src/nodes/accessors/TextureBicubic.js +++ b/src/nodes/accessors/TextureBicubic.js @@ -1,6 +1,6 @@ import { add, mul, div } from '../math/OperatorNode.js'; import { floor, ceil, fract, pow } from '../math/MathNode.js'; -import { Fn, float, vec2, vec4, int } from '../tsl/TSLBase.js'; +import { Fn, float, vec2, vec4, int, addMethodChaining } from '../tsl/TSLBase.js'; // Mipped Bicubic Texture Filtering by N8 // https://www.shadertoy.com/view/Dl2SDW @@ -63,3 +63,5 @@ export const textureBicubic = Fn( ( [ textureNode, lodNode = float( 3 ) ] ) => { return fract( lodNode ).mix( fSample, cSample ); } ); + +addMethodChaining( 'bicubic', bicubic ); diff --git a/src/nodes/accessors/TextureSizeNode.js b/src/nodes/accessors/TextureSizeNode.js index bd078641fe38ae..f96310911dd102 100644 --- a/src/nodes/accessors/TextureSizeNode.js +++ b/src/nodes/accessors/TextureSizeNode.js @@ -1,6 +1,6 @@ import { registerNodeClass } from '../core/Node.js'; import Node from '../core/Node.js'; -import { nodeProxy } from '../tsl/TSLBase.js'; +import { addMethodChaining, nodeProxy } from '../tsl/TSLBase.js'; class TextureSizeNode extends Node { @@ -31,3 +31,5 @@ export default TextureSizeNode; registerNodeClass( 'TextureSize', TextureSizeNode ); export const textureSize = nodeProxy( TextureSizeNode ); + +addMethodChaining( 'textureSize', textureSize ); diff --git a/src/nodes/display/BumpMapNode.js b/src/nodes/display/BumpMapNode.js index 1729cd87d59cfe..eab915ce19465e 100644 --- a/src/nodes/display/BumpMapNode.js +++ b/src/nodes/display/BumpMapNode.js @@ -3,7 +3,7 @@ import { uv } from '../accessors/UV.js'; import { normalView } from '../accessors/Normal.js'; import { positionView } from '../accessors/Position.js'; import { faceDirection } from './FrontFacingNode.js'; -import { Fn, nodeProxy, float, vec2 } from '../tsl/TSLBase.js'; +import { Fn, nodeProxy, float, vec2, addMethodChaining } from '../tsl/TSLBase.js'; // Bump Mapping Unparametrized Surfaces on the GPU by Morten S. Mikkelsen // https://mmikk.github.io/papers3d/mm_sfgrad_bump.pdf @@ -73,3 +73,5 @@ class BumpMapNode extends TempNode { export default BumpMapNode; export const bumpMap = nodeProxy( BumpMapNode ); + +addMethodChaining( 'bumpMap', bumpMap ); diff --git a/src/nodes/display/FilmNode.js b/src/nodes/display/FilmNode.js index 983e5ec07a61fc..cfe4c56013b2d9 100644 --- a/src/nodes/display/FilmNode.js +++ b/src/nodes/display/FilmNode.js @@ -1,7 +1,7 @@ import { registerNodeClass } from '../core/Node.js'; import TempNode from '../core/TempNode.js'; import { uv } from '../accessors/UV.js'; -import { Fn, nodeProxy, vec4 } from '../tsl/TSLBase.js'; +import { addMethodChaining, Fn, nodeProxy, vec4 } from '../tsl/TSLBase.js'; import { mix, fract, clamp, rand } from '../math/MathNode.js'; import { timerLocal } from '../utils/TimerNode.js'; @@ -51,3 +51,5 @@ export default FilmNode; registerNodeClass( 'Film', FilmNode ); export const film = nodeProxy( FilmNode ); + +addMethodChaining( 'film', film ); \ No newline at end of file diff --git a/src/nodes/display/NormalMapNode.js b/src/nodes/display/NormalMapNode.js index d56475698b12de..3f20f1f19f9f9e 100644 --- a/src/nodes/display/NormalMapNode.js +++ b/src/nodes/display/NormalMapNode.js @@ -8,7 +8,7 @@ import { positionView } from '../accessors/Position.js'; import { TBNViewMatrix } from '../accessors/AccessorsUtils.js'; import { uv } from '../accessors/UV.js'; import { faceDirection } from './FrontFacingNode.js'; -import { Fn, nodeProxy, vec3 } from '../tsl/TSLBase.js'; +import { addMethodChaining, Fn, nodeProxy, vec3 } from '../tsl/TSLBase.js'; import { TangentSpaceNormalMap, ObjectSpaceNormalMap } from '../../constants.js'; @@ -102,3 +102,5 @@ export default NormalMapNode; registerNodeClass( 'NormalMap', NormalMapNode ); export const normalMap = nodeProxy( NormalMapNode ); + +addMethodChaining( 'normalMap', normalMap ); diff --git a/src/nodes/display/PosterizeNode.js b/src/nodes/display/PosterizeNode.js index bece19f69aca5e..b35e617ca2b187 100644 --- a/src/nodes/display/PosterizeNode.js +++ b/src/nodes/display/PosterizeNode.js @@ -1,6 +1,6 @@ import { registerNodeClass } from '../core/Node.js'; import TempNode from '../core/TempNode.js'; -import { nodeProxy } from '../tsl/TSLBase.js'; +import { addMethodChaining, nodeProxy } from '../tsl/TSLBase.js'; class PosterizeNode extends TempNode { @@ -28,3 +28,5 @@ export default PosterizeNode; registerNodeClass( 'Posterize', PosterizeNode ); export const posterize = nodeProxy( PosterizeNode ); + +addMethodChaining( 'posterize', posterize ); diff --git a/src/nodes/math/Hash.js b/src/nodes/math/Hash.js index 14a6c17284670b..0f1271aa14824a 100644 --- a/src/nodes/math/Hash.js +++ b/src/nodes/math/Hash.js @@ -1,4 +1,4 @@ -import { Fn } from '../tsl/TSLBase.js'; +import { addMethodChaining, Fn } from '../tsl/TSLBase.js'; export const hash = Fn( ( [ seed ] ) => { @@ -11,3 +11,5 @@ export const hash = Fn( ( [ seed ] ) => { return result.toFloat().mul( 1 / 2 ** 32 ); // Convert to range [0, 1) } ); + +addMethodChaining( 'hash', hash ); diff --git a/src/nodes/utils/Discard.js b/src/nodes/utils/Discard.js index 83af22d7ee481c..ef299cf5c9063f 100644 --- a/src/nodes/utils/Discard.js +++ b/src/nodes/utils/Discard.js @@ -6,3 +6,4 @@ export const Discard = ( conditional ) => ( conditional ? select( conditional, e export const Return = () => expression( 'return' ).append(); addMethodChaining( 'discard', Discard ); +addMethodChaining( 'return', Return ); diff --git a/src/nodes/utils/LoopNode.js b/src/nodes/utils/LoopNode.js index f6af56026dec44..0d878147a1dbb4 100644 --- a/src/nodes/utils/LoopNode.js +++ b/src/nodes/utils/LoopNode.js @@ -1,6 +1,6 @@ import Node, { registerNodeClass } from '../core/Node.js'; import { expression } from '../code/ExpressionNode.js'; -import { nodeObject, nodeArray } from '../tsl/TSLBase.js'; +import { nodeObject, nodeArray, addMethodChaining } from '../tsl/TSLBase.js'; class LoopNode extends Node { @@ -197,6 +197,9 @@ export const Loop = ( ...params ) => nodeObject( new LoopNode( nodeArray( params export const Continue = () => expression( 'continue' ).append(); export const Break = () => expression( 'break' ).append(); +addMethodChaining( 'continue', Continue ); +addMethodChaining( 'break', Break ); + // export const loop = ( ...params ) => { // @deprecated, r168 diff --git a/src/nodes/utils/OscNode.js b/src/nodes/utils/OscNode.js index 5852878a3c7953..9021a330b6132d 100644 --- a/src/nodes/utils/OscNode.js +++ b/src/nodes/utils/OscNode.js @@ -1,6 +1,6 @@ import Node, { registerNodeClass } from '../core/Node.js'; import { timerLocal } from './TimerNode.js'; -import { nodeObject, nodeProxy } from '../tsl/TSLBase.js'; +import { addMethodChaining, nodeObject, nodeProxy } from '../tsl/TSLBase.js'; class OscNode extends Node { @@ -79,3 +79,8 @@ export const oscSine = nodeProxy( OscNode, OscNode.SINE ); export const oscSquare = nodeProxy( OscNode, OscNode.SQUARE ); export const oscTriangle = nodeProxy( OscNode, OscNode.TRIANGLE ); export const oscSawtooth = nodeProxy( OscNode, OscNode.SAWTOOTH ); + +addMethodChaining( 'oscSine', oscSine ); +addMethodChaining( 'oscSquare', oscSquare ); +addMethodChaining( 'oscTriangle', oscTriangle ); +addMethodChaining( 'oscSawtooth', oscSawtooth ); diff --git a/src/nodes/utils/RotateNode.js b/src/nodes/utils/RotateNode.js index 907369fcf37d31..714ad3d74ce503 100644 --- a/src/nodes/utils/RotateNode.js +++ b/src/nodes/utils/RotateNode.js @@ -1,6 +1,6 @@ import { registerNodeClass } from '../core/Node.js'; import TempNode from '../core/TempNode.js'; -import { nodeProxy, vec4, mat2, mat4 } from '../tsl/TSLBase.js'; +import { nodeProxy, vec4, mat2, mat4, addMethodChaining } from '../tsl/TSLBase.js'; import { cos, sin } from '../math/MathNode.js'; class RotateNode extends TempNode { @@ -58,3 +58,5 @@ export default RotateNode; registerNodeClass( 'Rotate', RotateNode ); export const rotate = nodeProxy( RotateNode ); + +addMethodChaining( 'rotate', rotate ); diff --git a/src/nodes/utils/TriplanarTexturesNode.js b/src/nodes/utils/TriplanarTexturesNode.js index d3b89bec652876..8f9a424888291b 100644 --- a/src/nodes/utils/TriplanarTexturesNode.js +++ b/src/nodes/utils/TriplanarTexturesNode.js @@ -3,7 +3,7 @@ import { add } from '../math/OperatorNode.js'; import { normalLocal } from '../accessors/Normal.js'; import { positionLocal } from '../accessors/Position.js'; import { texture } from '../accessors/TextureNode.js'; -import { nodeProxy, float, vec3 } from '../tsl/TSLBase.js'; +import { nodeProxy, float, vec3, addMethodChaining } from '../tsl/TSLBase.js'; class TriplanarTexturesNode extends Node { @@ -58,3 +58,5 @@ registerNodeClass( 'TriplanarTextures', TriplanarTexturesNode ); export const triplanarTextures = nodeProxy( TriplanarTexturesNode ); export const triplanarTexture = ( ...params ) => triplanarTextures( ...params ); + +addMethodChaining( 'triplanarTexture', triplanarTexture ); From 37b5d5a12e04051970b3e9347cf674278b94d1e9 Mon Sep 17 00:00:00 2001 From: Renaud Rohlinger Date: Tue, 27 Aug 2024 17:19:06 +0900 Subject: [PATCH 2/2] fix CI --- src/nodes/display/FilmNode.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nodes/display/FilmNode.js b/src/nodes/display/FilmNode.js index cfe4c56013b2d9..b3007d9574ce52 100644 --- a/src/nodes/display/FilmNode.js +++ b/src/nodes/display/FilmNode.js @@ -52,4 +52,4 @@ registerNodeClass( 'Film', FilmNode ); export const film = nodeProxy( FilmNode ); -addMethodChaining( 'film', film ); \ No newline at end of file +addMethodChaining( 'film', film );