diff --git a/examples/jsm/nodes/Nodes.js b/examples/jsm/nodes/Nodes.js index 299f5ebc2005e0..b4bde9440f7b27 100644 --- a/examples/jsm/nodes/Nodes.js +++ b/examples/jsm/nodes/Nodes.js @@ -39,7 +39,7 @@ import * as NodeUtils from './core/NodeUtils.js'; export { NodeUtils }; // math -export { default as MathNode, EPSILON, INFINITY, radians, degrees, exp, exp2, log, log2, sqrt, inverseSqrt, floor, ceil, normalize, fract, sin, cos, tan, asin, acos, atan, abs, sign, length, negate, oneMinus, dFdx, dFdy, round, reciprocal, trunc, fwidth, bitcast, atan2, min, max, mod, step, reflect, distance, difference, dot, cross, pow, pow2, pow3, pow4, transformDirection, mix, clamp, saturate, refract, smoothstep, faceForward } from './math/MathNode.js'; +export { default as MathNode, EPSILON, INFINITY, radians, degrees, exp, exp2, log, log2, sqrt, inverseSqrt, floor, ceil, normalize, fract, sin, cos, tan, asin, acos, atan, abs, sign, length, negate, oneMinus, dFdx, dFdy, round, reciprocal, trunc, fwidth, bitcast, atan2, min, max, mod, step, reflect, distance, difference, dot, cross, pow, pow2, pow3, pow4, transformDirection, mix, clamp, saturate, refract, smoothstep, faceForward, cbrt } from './math/MathNode.js'; export { default as OperatorNode, add, sub, mul, div, remainder, equal, lessThan, greaterThan, lessThanEqual, greaterThanEqual, and, or, xor, bitAnd, bitOr, bitXor, shiftLeft, shiftRight } from './math/OperatorNode.js'; export { default as CondNode, cond } from './math/CondNode.js'; export { default as HashNode, hash } from './math/HashNode.js'; diff --git a/examples/jsm/nodes/math/MathNode.js b/examples/jsm/nodes/math/MathNode.js index 894d3a5ae71a2a..8faf13ebcd26be 100644 --- a/examples/jsm/nodes/math/MathNode.js +++ b/examples/jsm/nodes/math/MathNode.js @@ -297,6 +297,7 @@ export const pow3 = nodeProxy( MathNode, MathNode.POW, 3 ); export const pow4 = nodeProxy( MathNode, MathNode.POW, 4 ); export const transformDirection = nodeProxy( MathNode, MathNode.TRANSFORM_DIRECTION ); +export const cbrt = ( a ) => mul( sign( a ), pow( abs( a ), 1.0 / 3.0 ) ); export const mix = nodeProxy( MathNode, MathNode.MIX ); export const clamp = ( value, low = 0, high = 1 ) => nodeObject( new MathNode( MathNode.CLAMP, nodeObject( value ), nodeObject( low ), nodeObject( high ) ) ); export const saturate = ( value ) => clamp( value ); @@ -357,5 +358,6 @@ addNodeElement( 'smoothstep', smoothstepElement ); addNodeElement( 'faceForward', faceForward ); addNodeElement( 'difference', difference ); addNodeElement( 'saturate', saturate ); +addNodeElement( 'cbrt', cbrt ); addNodeClass( 'MathNode', MathNode );