@plastic-software/three 0.167.3 → 0.174.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +1 -1
- package/build/three.cjs +36277 -24023
- package/build/three.core.js +48830 -0
- package/build/three.core.min.js +6 -0
- package/build/three.module.js +10175 -46743
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +550 -0
- package/build/three.tsl.min.js +6 -0
- package/build/three.webgpu.js +44348 -50670
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +70301 -0
- package/build/three.webgpu.nodes.min.js +6 -0
- package/examples/jsm/Addons.js +3 -15
- package/examples/jsm/animation/AnimationClipCreator.js +1 -1
- package/examples/jsm/animation/CCDIKSolver.js +61 -11
- package/examples/jsm/capabilities/WebGL.js +27 -21
- package/examples/jsm/capabilities/WebGPU.js +1 -10
- package/examples/jsm/controls/ArcballControls.js +262 -231
- package/examples/jsm/controls/DragControls.js +1 -1
- package/examples/jsm/controls/FirstPersonControls.js +175 -163
- package/examples/jsm/controls/FlyControls.js +194 -188
- package/examples/jsm/controls/OrbitControls.js +801 -777
- package/examples/jsm/controls/PointerLockControls.js +26 -20
- package/examples/jsm/controls/TrackballControls.js +469 -448
- package/examples/jsm/controls/TransformControls.js +119 -68
- package/examples/jsm/csm/CSM.js +2 -2
- package/examples/jsm/csm/CSMFrustum.js +7 -4
- package/examples/jsm/csm/CSMHelper.js +2 -0
- package/examples/jsm/csm/CSMShadowNode.js +442 -0
- package/examples/jsm/curves/NURBSCurve.js +33 -2
- package/examples/jsm/curves/NURBSUtils.js +3 -0
- package/examples/jsm/effects/AnaglyphEffect.js +6 -13
- package/examples/jsm/effects/OutlineEffect.js +1 -1
- package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
- package/examples/jsm/effects/StereoEffect.js +6 -1
- package/examples/jsm/exporters/DRACOExporter.js +4 -2
- package/examples/jsm/exporters/EXRExporter.js +19 -11
- package/examples/jsm/exporters/GLTFExporter.js +181 -109
- package/examples/jsm/exporters/KTX2Exporter.js +54 -23
- package/examples/jsm/exporters/OBJExporter.js +5 -1
- package/examples/jsm/exporters/PLYExporter.js +11 -9
- package/examples/jsm/exporters/USDZExporter.js +50 -11
- package/examples/jsm/geometries/DecalGeometry.js +73 -21
- package/examples/jsm/geometries/TextGeometry.js +1 -12
- package/examples/jsm/helpers/LightProbeHelper.js +43 -44
- package/examples/jsm/helpers/LightProbeHelperGPU.js +65 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +185 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
- package/examples/jsm/interactive/HTMLMesh.js +1 -0
- package/examples/jsm/interactive/InteractiveGroup.js +108 -51
- package/examples/jsm/interactive/SelectionHelper.js +3 -1
- package/examples/jsm/libs/basis/basis_transcoder.js +8 -10
- package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
- package/examples/jsm/libs/demuxer_mp4.js +109 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +18 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -12
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/lines/LineGeometry.js +25 -0
- package/examples/jsm/lines/LineMaterial.js +0 -1
- package/examples/jsm/lines/LineSegmentsGeometry.js +2 -0
- package/examples/jsm/lines/webgpu/Line2.js +2 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +16 -21
- package/examples/jsm/lines/webgpu/Wireframe.js +57 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -0
- package/examples/jsm/loaders/3MFLoader.js +104 -2
- package/examples/jsm/loaders/BVHLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +15 -12
- package/examples/jsm/loaders/DDSLoader.js +42 -0
- package/examples/jsm/loaders/DRACOLoader.js +3 -1
- package/examples/jsm/loaders/FBXLoader.js +71 -22
- package/examples/jsm/loaders/GCodeLoader.js +4 -2
- package/examples/jsm/loaders/GLTFLoader.js +29 -14
- package/examples/jsm/loaders/KTX2Loader.js +160 -58
- package/examples/jsm/loaders/KTXLoader.js +4 -4
- package/examples/jsm/loaders/LDrawLoader.js +22 -136
- package/examples/jsm/loaders/LottieLoader.js +2 -1
- package/examples/jsm/loaders/MTLLoader.js +27 -7
- package/examples/jsm/loaders/MaterialXLoader.js +40 -14
- package/examples/jsm/loaders/NRRDLoader.js +1 -1
- package/examples/jsm/loaders/OBJLoader.js +5 -3
- package/examples/jsm/loaders/PCDLoader.js +14 -13
- package/examples/jsm/loaders/PDBLoader.js +3 -2
- package/examples/jsm/loaders/PLYLoader.js +15 -12
- package/examples/jsm/loaders/PVRLoader.js +1 -1
- package/examples/jsm/loaders/STLLoader.js +3 -2
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TDSLoader.js +17 -18
- package/examples/jsm/loaders/VRMLLoader.js +17 -17
- package/examples/jsm/loaders/VTKLoader.js +4 -3
- package/examples/jsm/loaders/XYZLoader.js +3 -2
- package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +143 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +114 -0
- package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
- package/examples/jsm/math/ColorSpaces.js +76 -0
- package/examples/jsm/math/ConvexHull.js +1 -1
- package/examples/jsm/math/OBB.js +17 -0
- package/examples/jsm/misc/GPUComputationRenderer.js +6 -7
- package/examples/jsm/misc/ProgressiveLightMap.js +54 -41
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +294 -0
- package/examples/jsm/misc/Timer.js +27 -12
- package/examples/jsm/misc/Volume.js +28 -18
- package/examples/jsm/misc/VolumeSlice.js +19 -16
- package/examples/jsm/modifiers/CurveModifier.js +10 -8
- package/examples/jsm/modifiers/CurveModifierGPU.js +235 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
- package/examples/jsm/objects/GroundedSkybox.js +4 -4
- package/examples/jsm/objects/LensflareMesh.js +324 -0
- package/examples/jsm/objects/Reflector.js +5 -2
- package/examples/jsm/objects/Sky.js +2 -2
- package/examples/jsm/objects/SkyMesh.js +14 -14
- package/examples/jsm/objects/Water2.js +1 -1
- package/examples/jsm/objects/Water2Mesh.js +11 -9
- package/examples/jsm/objects/WaterMesh.js +38 -33
- package/examples/jsm/physics/JoltPhysics.js +8 -8
- package/examples/jsm/physics/RapierPhysics.js +5 -5
- package/examples/jsm/postprocessing/AfterimagePass.js +14 -3
- package/examples/jsm/postprocessing/BloomPass.js +2 -2
- package/examples/jsm/postprocessing/EffectComposer.js +1 -2
- package/examples/jsm/postprocessing/OutlinePass.js +37 -51
- package/examples/jsm/postprocessing/OutputPass.js +2 -0
- package/examples/jsm/postprocessing/SAOPass.js +1 -2
- package/examples/jsm/postprocessing/SMAAPass.js +1 -3
- package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
- package/examples/jsm/postprocessing/SSAOPass.js +2 -4
- package/examples/jsm/postprocessing/SSRPass.js +8 -4
- package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
- package/examples/jsm/renderers/CSS2DRenderer.js +6 -3
- package/examples/jsm/renderers/CSS3DRenderer.js +7 -4
- package/examples/jsm/renderers/SVGRenderer.js +6 -4
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/FXAAShader.js +225 -224
- package/examples/jsm/shaders/GodRaysShader.js +3 -3
- package/examples/jsm/shaders/OutputShader.js +6 -2
- package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +12 -2
- package/examples/jsm/transpiler/GLSLDecoder.js +77 -31
- package/examples/jsm/transpiler/ShaderToyDecoder.js +3 -3
- package/examples/jsm/transpiler/TSLEncoder.js +96 -21
- package/examples/jsm/tsl/display/AfterImageNode.js +243 -0
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +106 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +257 -0
- package/{src/nodes/display/BleachBypassNode.js → examples/jsm/tsl/display/BleachBypass.js} +11 -6
- package/{src/nodes → examples/jsm/tsl}/display/BloomNode.js +252 -67
- package/examples/jsm/tsl/display/DenoiseNode.js +332 -0
- package/{src/nodes → examples/jsm/tsl}/display/DepthOfFieldNode.js +92 -14
- package/examples/jsm/tsl/display/DotScreenNode.js +103 -0
- package/examples/jsm/tsl/display/FXAANode.js +364 -0
- package/examples/jsm/tsl/display/FilmNode.js +100 -0
- package/examples/jsm/tsl/display/GTAONode.js +521 -0
- package/examples/jsm/tsl/display/GaussianBlurNode.js +393 -0
- package/examples/jsm/tsl/display/LensflareNode.js +278 -0
- package/examples/jsm/tsl/display/Lut3DNode.js +108 -0
- package/examples/jsm/tsl/display/MotionBlur.js +33 -0
- package/examples/jsm/tsl/display/OutlineNode.js +750 -0
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +88 -0
- package/{src/nodes → examples/jsm/tsl}/display/PixelationPassNode.js +160 -28
- package/examples/jsm/tsl/display/RGBShiftNode.js +95 -0
- package/examples/jsm/tsl/display/SMAANode.js +767 -0
- package/examples/jsm/tsl/display/SSAAPassNode.js +357 -0
- package/examples/jsm/tsl/display/SSRNode.js +538 -0
- package/examples/jsm/tsl/display/Sepia.js +24 -0
- package/{src/nodes → examples/jsm/tsl}/display/SobelOperatorNode.js +66 -20
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +184 -0
- package/examples/jsm/tsl/display/StereoPassNode.js +119 -0
- package/examples/jsm/tsl/display/TRAAPassNode.js +451 -0
- package/examples/jsm/tsl/display/TransitionNode.js +140 -0
- package/examples/jsm/tsl/display/hashBlur.js +34 -0
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +395 -0
- package/examples/jsm/tsl/math/Bayer.js +18 -0
- package/examples/jsm/tsl/utils/Raymarching.js +65 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +2 -2
- package/examples/jsm/utils/CameraUtils.js +4 -1
- package/examples/jsm/utils/GeometryCompressionUtils.js +38 -123
- package/examples/jsm/utils/GeometryUtils.js +22 -19
- package/examples/jsm/utils/SceneOptimizer.js +410 -0
- package/examples/jsm/utils/SceneUtils.js +2 -2
- package/examples/jsm/utils/ShadowMapViewer.js +3 -8
- package/examples/jsm/utils/ShadowMapViewerGPU.js +201 -0
- package/examples/jsm/utils/SkeletonUtils.js +84 -66
- package/examples/jsm/utils/UVsDebug.js +1 -1
- package/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +1 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +64 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +21 -21
- package/examples/jsm/webxr/Text2D.js +6 -6
- package/examples/jsm/webxr/XRControllerModelFactory.js +7 -2
- package/examples/jsm/webxr/XREstimatedLight.js +1 -1
- package/package.json +14 -9
- package/src/Three.Core.js +182 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +543 -0
- package/src/Three.WebGPU.Nodes.js +23 -0
- package/src/Three.WebGPU.js +13 -184
- package/src/Three.js +1 -176
- package/src/animation/AnimationClip.js +2 -2
- package/src/animation/AnimationObjectGroup.js +2 -2
- package/src/animation/AnimationUtils.js +1 -1
- package/src/animation/PropertyBinding.js +2 -2
- package/src/audio/Audio.js +379 -2
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +76 -0
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +29 -0
- package/src/cameras/Camera.js +47 -0
- package/src/cameras/CubeCamera.js +66 -0
- package/src/cameras/OrthographicCamera.js +109 -0
- package/src/cameras/PerspectiveCamera.js +173 -34
- package/src/cameras/StereoCamera.js +48 -2
- package/src/constants.js +6 -6
- package/src/core/BufferAttribute.js +4 -9
- package/src/core/BufferGeometry.js +48 -8
- package/src/core/Clock.js +1 -1
- package/src/core/EventDispatcher.js +52 -8
- package/src/core/InterleavedBuffer.js +4 -13
- package/src/core/Object3D.js +573 -3
- package/src/core/RenderTarget.js +22 -4
- package/src/core/RenderTarget3D.js +22 -0
- package/src/core/RenderTargetArray.js +22 -0
- package/src/extras/Controls.js +104 -0
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +18 -7
- package/src/extras/ImageUtils.js +18 -11
- package/src/extras/PMREMGenerator.js +40 -9
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +96 -10
- package/src/extras/core/Curve.js +153 -53
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +29 -3
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +66 -3
- package/src/extras/core/ShapePath.js +76 -0
- package/src/extras/curves/ArcCurve.js +22 -0
- package/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/src/extras/curves/CubicBezierCurve.js +67 -0
- package/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/src/extras/curves/EllipseCurve.js +102 -0
- package/src/extras/curves/LineCurve.js +36 -0
- package/src/extras/curves/LineCurve3.js +36 -0
- package/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/src/extras/curves/SplineCurve.js +48 -0
- package/src/geometries/BoxGeometry.js +38 -0
- package/src/geometries/CapsuleGeometry.js +34 -0
- package/src/geometries/CircleGeometry.js +40 -0
- package/src/geometries/ConeGeometry.js +38 -0
- package/src/geometries/CylinderGeometry.js +50 -4
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +30 -2
- package/src/geometries/ExtrudeGeometry.js +52 -0
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +43 -3
- package/src/geometries/OctahedronGeometry.js +32 -0
- package/src/geometries/PlaneGeometry.js +34 -0
- package/src/geometries/PolyhedronGeometry.js +29 -0
- package/src/geometries/RingGeometry.js +36 -0
- package/src/geometries/ShapeGeometry.js +37 -0
- package/src/geometries/SphereGeometry.js +37 -0
- package/src/geometries/TetrahedronGeometry.js +32 -0
- package/src/geometries/TorusGeometry.js +35 -0
- package/src/geometries/TorusKnotGeometry.js +38 -0
- package/src/geometries/TubeGeometry.js +49 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +60 -3
- package/src/helpers/AxesHelper.js +28 -0
- package/src/helpers/Box3Helper.js +28 -0
- package/src/helpers/BoxHelper.js +43 -7
- package/src/helpers/CameraHelper.js +61 -18
- package/src/helpers/DirectionalLightHelper.js +52 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +39 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -0
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +39 -2
- package/src/helpers/SpotLightHelper.js +40 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +57 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +32 -0
- package/src/lights/Light.js +36 -0
- package/src/lights/LightProbe.js +43 -0
- package/src/lights/LightShadow.js +159 -0
- package/src/lights/PointLight.js +59 -0
- package/src/lights/PointLightShadow.js +21 -0
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +102 -0
- package/src/lights/SpotLightShadow.js +24 -2
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/Loader.js +132 -0
- package/src/loaders/MaterialLoader.js +7 -1
- package/src/loaders/nodes/NodeLoader.js +189 -0
- package/src/loaders/nodes/NodeMaterialLoader.js +108 -0
- package/src/loaders/nodes/NodeObjectLoader.js +151 -0
- package/src/materials/LineDashedMaterial.js +0 -1
- package/src/materials/Material.js +469 -7
- package/src/materials/MeshPhongMaterial.js +1 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -2
- package/src/materials/MeshStandardMaterial.js +2 -2
- package/src/{nodes/materials → materials/nodes}/Line2NodeMaterial.js +192 -82
- package/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
- package/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
- package/src/materials/nodes/MeshBasicNodeMaterial.js +133 -0
- package/src/materials/nodes/MeshLambertNodeMaterial.js +82 -0
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
- package/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
- package/src/materials/nodes/MeshPhongNodeMaterial.js +141 -0
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +517 -0
- package/src/materials/nodes/MeshSSSNodeMaterial.js +175 -0
- package/src/materials/nodes/MeshStandardNodeMaterial.js +186 -0
- package/src/materials/nodes/MeshToonNodeMaterial.js +66 -0
- package/src/materials/nodes/NodeMaterial.js +1180 -0
- package/src/{nodes/materials/Materials.js → materials/nodes/NodeMaterials.js} +3 -2
- package/src/materials/nodes/PointsNodeMaterial.js +153 -0
- package/src/materials/nodes/ShadowNodeMaterial.js +67 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +198 -0
- package/src/materials/nodes/VolumeNodeMaterial.js +72 -0
- package/src/materials/nodes/manager/NodeMaterialObserver.js +509 -0
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- package/src/math/ColorManagement.js +143 -102
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +137 -4
- package/src/math/Frustum.js +83 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +96 -2
- package/src/math/MathUtils.js +182 -19
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +368 -3
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +265 -9
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +73 -11
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +230 -2
- package/src/math/Vector2.js +396 -10
- package/src/math/Vector3.js +550 -13
- package/src/math/Vector4.js +415 -9
- package/src/math/interpolants/CubicInterpolant.js +10 -1
- package/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/src/math/interpolants/LinearInterpolant.js +13 -0
- package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/src/nodes/Nodes.js +84 -166
- package/src/nodes/TSL.js +167 -0
- package/src/nodes/accessors/AccessorsUtils.js +39 -10
- package/src/nodes/accessors/Arrays.js +68 -0
- package/src/nodes/accessors/BatchNode.js +93 -26
- package/src/nodes/accessors/Bitangent.js +54 -0
- package/src/nodes/accessors/BufferAttributeNode.js +189 -11
- package/src/nodes/accessors/BufferNode.js +70 -5
- package/src/nodes/accessors/BuiltinNode.js +63 -0
- package/src/nodes/accessors/Camera.js +129 -0
- package/src/nodes/accessors/ClippingNode.js +152 -43
- package/src/nodes/accessors/CubeTextureNode.js +76 -13
- package/src/nodes/accessors/InstanceNode.js +118 -35
- package/src/nodes/accessors/InstancedMeshNode.js +50 -0
- package/src/nodes/accessors/Lights.js +129 -0
- package/src/nodes/accessors/MaterialNode.js +394 -58
- package/src/nodes/accessors/MaterialProperties.js +57 -1
- package/src/nodes/accessors/MaterialReferenceNode.js +60 -18
- package/src/nodes/accessors/ModelNode.js +159 -12
- package/src/nodes/accessors/ModelViewProjectionNode.js +10 -36
- package/src/nodes/accessors/MorphNode.js +60 -13
- package/src/nodes/accessors/Normal.js +156 -0
- package/src/nodes/accessors/Object3DNode.js +154 -35
- package/src/nodes/accessors/PointUVNode.js +35 -6
- package/src/nodes/accessors/Position.js +64 -0
- package/src/nodes/accessors/ReferenceBaseNode.js +357 -0
- package/src/nodes/accessors/ReferenceNode.js +243 -6
- package/src/nodes/accessors/ReflectVector.js +36 -0
- package/src/nodes/accessors/RendererReferenceNode.js +57 -7
- package/src/nodes/accessors/SceneNode.js +98 -6
- package/src/nodes/accessors/SkinningNode.js +214 -21
- package/src/nodes/accessors/StorageBufferNode.js +288 -28
- package/src/nodes/accessors/StorageTextureNode.js +139 -12
- package/src/nodes/accessors/Tangent.js +62 -0
- package/src/nodes/accessors/Texture3DNode.js +98 -12
- package/src/nodes/accessors/{TextureBicubicNode.js → TextureBicubic.js} +14 -34
- package/src/nodes/accessors/TextureNode.js +347 -34
- package/src/nodes/accessors/TextureSizeNode.js +51 -9
- package/src/nodes/accessors/UV.js +11 -0
- package/src/nodes/accessors/UniformArrayNode.js +241 -32
- package/src/nodes/accessors/UserDataNode.js +55 -7
- package/src/nodes/accessors/VelocityNode.js +223 -0
- package/src/nodes/accessors/VertexColorNode.js +45 -6
- package/src/nodes/code/CodeNode.js +108 -8
- package/src/nodes/code/ExpressionNode.js +38 -7
- package/src/nodes/code/FunctionCallNode.js +62 -11
- package/src/nodes/code/FunctionNode.js +54 -24
- package/src/nodes/code/ScriptableNode.js +241 -17
- package/src/nodes/code/ScriptableValueNode.js +93 -8
- package/src/nodes/core/ArrayNode.js +142 -0
- package/src/nodes/core/AssignNode.js +60 -12
- package/src/nodes/core/AttributeNode.js +55 -22
- package/src/nodes/core/BypassNode.js +59 -11
- package/src/nodes/core/CacheNode.js +64 -10
- package/src/nodes/core/ConstNode.js +38 -3
- package/src/nodes/core/ContextNode.js +87 -12
- package/src/nodes/core/IndexNode.js +102 -10
- package/src/nodes/core/InputNode.js +55 -3
- package/src/nodes/core/LightingModel.js +65 -5
- package/src/nodes/core/MRTNode.js +81 -7
- package/src/nodes/core/Node.js +368 -50
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +1317 -83
- package/src/nodes/core/NodeCache.js +41 -2
- package/src/nodes/core/NodeCode.js +31 -0
- package/src/nodes/core/NodeFrame.js +123 -2
- package/src/nodes/core/NodeFunction.js +46 -0
- package/src/nodes/core/NodeFunctionInput.js +44 -0
- package/src/nodes/core/NodeParser.js +11 -0
- package/src/nodes/core/NodeUniform.js +52 -0
- package/src/nodes/core/NodeUtils.js +226 -6
- package/src/nodes/core/NodeVar.js +47 -1
- package/src/nodes/core/NodeVarying.js +28 -0
- package/src/nodes/core/OutputStructNode.js +61 -17
- package/src/nodes/core/ParameterNode.js +34 -4
- package/src/nodes/core/PropertyNode.js +296 -32
- package/src/nodes/core/StackNode.js +108 -8
- package/src/nodes/core/StructNode.js +120 -0
- package/src/nodes/core/StructType.js +13 -0
- package/src/nodes/core/StructTypeNode.js +116 -9
- package/src/nodes/core/TempNode.js +37 -7
- package/src/nodes/core/UniformGroupNode.js +98 -17
- package/src/nodes/core/UniformNode.js +72 -4
- package/src/nodes/core/VarNode.js +170 -13
- package/src/nodes/core/VaryingNode.js +109 -8
- package/src/nodes/core/constants.js +40 -0
- package/src/nodes/display/BlendModes.js +193 -0
- package/src/nodes/display/BumpMapNode.js +47 -10
- package/src/nodes/display/ColorAdjustment.js +141 -0
- package/src/nodes/display/ColorSpaceFunctions.js +54 -0
- package/src/nodes/display/ColorSpaceNode.js +147 -68
- package/src/nodes/display/FrontFacingNode.js +39 -6
- package/src/nodes/display/NormalMapNode.js +55 -13
- package/src/nodes/display/PassNode.js +420 -19
- package/src/nodes/display/PosterizeNode.js +40 -7
- package/src/nodes/display/RenderOutputNode.js +81 -13
- package/src/nodes/display/ScreenNode.js +286 -0
- package/src/nodes/display/ToneMappingFunctions.js +242 -0
- package/src/nodes/display/ToneMappingNode.js +68 -175
- package/src/nodes/display/ToonOutlinePassNode.js +183 -0
- package/src/nodes/display/ViewportDepthNode.js +210 -36
- package/src/nodes/display/ViewportDepthTextureNode.js +32 -9
- package/src/nodes/display/ViewportSharedTextureNode.js +32 -9
- package/src/nodes/display/ViewportTextureNode.js +68 -11
- package/src/nodes/fog/Fog.js +113 -0
- package/src/nodes/functions/BSDF/BRDF_GGX.js +4 -4
- package/src/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
- package/src/nodes/functions/BSDF/DFGApprox.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +3 -3
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/F_Schlick.js +2 -2
- package/src/nodes/functions/BSDF/LTC.js +50 -6
- package/src/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/BasicLightingModel.js +27 -6
- package/src/nodes/functions/PhongLightingModel.js +38 -8
- package/src/nodes/functions/PhysicalLightingModel.js +215 -51
- package/src/nodes/functions/ShadowMaskModel.js +24 -1
- package/src/nodes/functions/ToonLightingModel.js +24 -5
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
- package/src/nodes/functions/material/getGeometryRoughness.js +10 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
- package/src/nodes/functions/material/getRoughness.js +2 -2
- package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
- package/src/nodes/geometry/RangeNode.js +62 -7
- package/src/nodes/gpgpu/AtomicFunctionNode.js +280 -0
- package/src/nodes/gpgpu/BarrierNode.js +89 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +227 -0
- package/src/nodes/gpgpu/ComputeNode.js +124 -9
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +208 -0
- package/src/nodes/lighting/AONode.js +24 -3
- package/src/nodes/lighting/AmbientLightNode.js +16 -8
- package/src/nodes/lighting/AnalyticLightNode.js +151 -231
- package/src/nodes/lighting/BasicEnvironmentNode.js +25 -3
- package/src/nodes/lighting/BasicLightMapNode.js +25 -5
- package/src/nodes/lighting/DirectionalLightNode.js +19 -20
- package/src/nodes/lighting/EnvironmentNode.js +34 -17
- package/src/nodes/lighting/HemisphereLightNode.js +42 -11
- package/src/nodes/lighting/IESSpotLightNode.js +18 -9
- package/src/nodes/lighting/IrradianceNode.js +23 -3
- package/src/nodes/lighting/LightProbeNode.js +29 -36
- package/src/nodes/lighting/LightUtils.js +12 -4
- package/src/nodes/lighting/LightingContextNode.js +70 -21
- package/src/nodes/lighting/LightingNode.js +22 -9
- package/src/nodes/lighting/LightsNode.js +309 -86
- package/src/nodes/lighting/PointLightNode.js +66 -32
- package/src/nodes/lighting/PointShadowNode.js +306 -0
- package/src/nodes/lighting/RectAreaLightNode.js +61 -25
- package/src/nodes/lighting/ShadowBaseNode.js +92 -0
- package/src/nodes/lighting/ShadowNode.js +812 -0
- package/src/nodes/lighting/SpotLightNode.js +73 -31
- package/src/nodes/materialx/MaterialXNodes.js +2 -2
- package/src/nodes/materialx/lib/mx_hsv.js +27 -22
- package/src/nodes/materialx/lib/mx_noise.js +70 -70
- package/src/nodes/materialx/lib/mx_transform_color.js +2 -2
- package/src/nodes/math/ConditionalNode.js +230 -0
- package/src/nodes/math/Hash.js +21 -0
- package/src/nodes/math/MathNode.js +812 -131
- package/src/nodes/math/MathUtils.js +47 -8
- package/src/nodes/math/OperatorNode.js +410 -66
- package/src/nodes/math/TriNoise3D.js +32 -32
- package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
- package/src/nodes/parsers/GLSLNodeParser.js +11 -0
- package/src/nodes/pmrem/PMREMNode.js +188 -28
- package/src/nodes/pmrem/PMREMUtils.js +24 -24
- package/src/nodes/procedural/Checker.js +22 -0
- package/src/nodes/shapes/Shapes.js +32 -0
- package/src/nodes/tsl/TSLBase.js +31 -0
- package/src/nodes/{shadernode/ShaderNode.js → tsl/TSLCore.js} +114 -98
- package/src/nodes/utils/ArrayElementNode.js +45 -5
- package/src/nodes/utils/ConvertNode.js +39 -4
- package/src/nodes/utils/CubeMapNode.js +88 -8
- package/src/nodes/utils/Discard.js +24 -0
- package/src/nodes/utils/EquirectUVNode.js +39 -7
- package/src/nodes/utils/FlipNode.js +106 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +61 -6
- package/src/nodes/utils/JoinNode.js +31 -3
- package/src/nodes/utils/LoopNode.js +95 -9
- package/src/nodes/utils/MatcapUVNode.js +27 -8
- package/src/nodes/utils/MaxMipLevelNode.js +57 -6
- package/src/nodes/utils/MemberNode.js +68 -0
- package/src/nodes/utils/Oscillators.js +41 -0
- package/src/nodes/utils/Packing.js +21 -0
- package/src/nodes/utils/PostProcessingUtils.js +95 -0
- package/src/nodes/utils/RTTNode.js +141 -9
- package/src/nodes/utils/ReflectorNode.js +295 -21
- package/src/nodes/utils/RemapNode.js +93 -10
- package/src/nodes/utils/RotateNode.js +48 -13
- package/src/nodes/utils/SetNode.js +50 -4
- package/src/nodes/utils/SplitNode.js +62 -6
- package/src/nodes/utils/SpriteSheetUVNode.js +56 -7
- package/src/nodes/utils/SpriteUtils.js +21 -5
- package/src/nodes/utils/StorageArrayElementNode.js +64 -12
- package/src/nodes/utils/Timer.js +73 -0
- package/src/nodes/utils/TriplanarTexturesNode.js +96 -10
- package/src/nodes/utils/UVUtils.js +27 -9
- package/src/nodes/utils/ViewportUtils.js +16 -4
- package/src/objects/BatchedMesh.js +808 -281
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +68 -0
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +120 -5
- package/src/objects/Line.js +89 -6
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +82 -23
- package/src/objects/Points.js +62 -0
- package/src/objects/Skeleton.js +107 -2
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGLRenderer.js +274 -157
- package/src/renderers/common/Animation.js +109 -12
- package/src/renderers/common/Attributes.js +40 -0
- package/src/renderers/common/Backend.js +504 -44
- package/src/renderers/common/Background.js +67 -9
- package/src/renderers/common/BindGroup.js +45 -1
- package/src/renderers/common/Binding.js +35 -0
- package/src/renderers/common/Bindings.js +136 -19
- package/src/renderers/common/Buffer.js +49 -0
- package/src/renderers/common/BufferUtils.js +25 -0
- package/src/renderers/common/BundleGroup.js +83 -0
- package/src/renderers/common/ChainMap.js +45 -6
- package/src/renderers/common/ClippingContext.js +175 -80
- package/src/renderers/common/Color4.js +40 -0
- package/src/renderers/common/ComputePipeline.js +24 -0
- package/src/renderers/common/Constants.js +2 -1
- package/src/renderers/common/CubeRenderTarget.js +22 -3
- package/src/renderers/common/DataMap.js +37 -1
- package/src/renderers/common/Geometries.js +111 -14
- package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
- package/src/renderers/common/Info.js +78 -35
- package/src/renderers/common/Lighting.js +73 -0
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +148 -5
- package/src/renderers/common/PostProcessing.js +112 -11
- package/src/renderers/common/ProgrammableStage.js +60 -2
- package/src/renderers/common/QuadMesh.js +56 -5
- package/src/renderers/common/RenderBundle.js +14 -8
- package/src/renderers/common/RenderBundles.js +39 -10
- package/src/renderers/common/RenderContext.js +205 -7
- package/src/renderers/common/RenderContexts.js +59 -6
- package/src/renderers/common/RenderList.js +230 -21
- package/src/renderers/common/RenderLists.js +45 -6
- package/src/renderers/common/RenderObject.js +552 -41
- package/src/renderers/common/RenderObjects.js +118 -9
- package/src/renderers/common/RenderPipeline.js +24 -0
- package/src/renderers/common/Renderer.js +1537 -239
- package/src/renderers/common/RendererUtils.js +191 -0
- package/src/renderers/common/SampledTexture.js +132 -3
- package/src/renderers/common/Sampler.js +30 -0
- package/src/renderers/common/StorageBuffer.js +24 -0
- package/src/renderers/common/StorageBufferAttribute.js +31 -2
- package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
- package/src/renderers/common/StorageTexture.js +38 -0
- package/src/renderers/common/Textures.js +142 -32
- package/src/renderers/common/TimestampQueryPool.js +98 -0
- package/src/renderers/common/Uniform.js +225 -3
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +157 -6
- package/src/renderers/common/XRManager.js +1185 -0
- package/src/renderers/common/XRRenderTarget.js +74 -0
- package/src/renderers/common/extras/PMREMGenerator.js +211 -53
- package/src/renderers/common/nodes/NodeBuilderState.js +100 -6
- package/src/renderers/common/nodes/NodeLibrary.js +194 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +92 -4
- package/src/renderers/common/nodes/NodeSampler.js +28 -0
- package/src/renderers/common/nodes/NodeStorageBuffer.js +37 -3
- package/src/renderers/common/nodes/NodeUniform.js +285 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
- package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
- package/src/renderers/common/nodes/Nodes.js +390 -70
- package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -24
- package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
- package/src/renderers/shaders/ShaderLib/points.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
- package/src/renderers/webgl/WebGLAttributes.js +45 -14
- package/src/renderers/webgl/WebGLBackground.js +24 -1
- package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLCapabilities.js +2 -0
- package/src/renderers/webgl/WebGLGeometries.js +0 -28
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLProgram.js +27 -29
- package/src/renderers/webgl/WebGLPrograms.js +24 -16
- package/src/renderers/webgl/WebGLState.js +68 -11
- package/src/renderers/webgl/WebGLTextures.js +49 -10
- package/src/renderers/webgl-fallback/WebGLBackend.js +1055 -238
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +5 -10
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +425 -48
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +64 -1
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +419 -14
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +281 -59
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +367 -0
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
- package/src/renderers/webgpu/WebGPUBackend.js +816 -236
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +78 -0
- package/src/renderers/webgpu/WebGPURenderer.js +45 -6
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +63 -0
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +97 -0
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +954 -147
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +29 -4
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +147 -31
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +213 -31
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +146 -28
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +161 -7
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +333 -50
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +287 -0
- package/src/renderers/webgpu/utils/WebGPUUtils.js +131 -3
- package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
- package/src/renderers/webxr/WebXRManager.js +54 -32
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +87 -0
- package/src/textures/Data3DTexture.js +2 -2
- package/src/textures/DepthTexture.js +2 -0
- package/src/textures/Source.js +2 -2
- package/src/textures/Texture.js +368 -5
- package/src/textures/VideoFrameTexture.js +35 -0
- package/src/utils.js +33 -1
- package/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
- package/examples/jsm/animation/MMDPhysics.js +0 -1406
- package/examples/jsm/cameras/CinematicCamera.js +0 -208
- package/examples/jsm/controls/Controls.js +0 -32
- package/examples/jsm/exporters/MMDExporter.js +0 -217
- package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
- package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
- package/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/LogLuvLoader.js +0 -606
- package/examples/jsm/loaders/MMDLoader.js +0 -2295
- package/examples/jsm/loaders/TiltLoader.js +0 -520
- package/examples/jsm/objects/InstancedPoints.js +0 -21
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/examples/jsm/utils/GPUStatsPanel.js +0 -95
- package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
- package/src/nodes/accessors/BitangentNode.js +0 -13
- package/src/nodes/accessors/CameraNode.js +0 -19
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
- package/src/nodes/accessors/NormalNode.js +0 -14
- package/src/nodes/accessors/PositionNode.js +0 -10
- package/src/nodes/accessors/ReflectVectorNode.js +0 -10
- package/src/nodes/accessors/TangentNode.js +0 -23
- package/src/nodes/accessors/UVNode.js +0 -3
- package/src/nodes/core/NodeKeywords.js +0 -80
- package/src/nodes/core/UniformGroup.js +0 -13
- package/src/nodes/display/AfterImageNode.js +0 -152
- package/src/nodes/display/AnamorphicNode.js +0 -145
- package/src/nodes/display/BlendModeNode.js +0 -128
- package/src/nodes/display/ColorAdjustmentNode.js +0 -104
- package/src/nodes/display/DenoiseNode.js +0 -198
- package/src/nodes/display/DotScreenNode.js +0 -75
- package/src/nodes/display/FXAANode.js +0 -327
- package/src/nodes/display/FilmNode.js +0 -52
- package/src/nodes/display/GTAONode.js +0 -324
- package/src/nodes/display/GaussianBlurNode.js +0 -207
- package/src/nodes/display/Lut3DNode.js +0 -53
- package/src/nodes/display/RGBShiftNode.js +0 -49
- package/src/nodes/display/SepiaNode.js +0 -18
- package/src/nodes/display/TransitionNode.js +0 -76
- package/src/nodes/display/ViewportNode.js +0 -137
- package/src/nodes/fog/FogExp2Node.js +0 -34
- package/src/nodes/fog/FogNode.js +0 -48
- package/src/nodes/fog/FogRangeNode.js +0 -35
- package/src/nodes/lighting/LightNode.js +0 -57
- package/src/nodes/loaders/NodeLoader.js +0 -110
- package/src/nodes/loaders/NodeMaterialLoader.js +0 -60
- package/src/nodes/loaders/NodeObjectLoader.js +0 -71
- package/src/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
- package/src/nodes/materials/LineBasicNodeMaterial.js +0 -28
- package/src/nodes/materials/LineDashedNodeMaterial.js +0 -55
- package/src/nodes/materials/MeshBasicNodeMaterial.js +0 -73
- package/src/nodes/materials/MeshLambertNodeMaterial.js +0 -43
- package/src/nodes/materials/MeshMatcapNodeMaterial.js +0 -53
- package/src/nodes/materials/MeshNormalNodeMaterial.js +0 -40
- package/src/nodes/materials/MeshPhongNodeMaterial.js +0 -74
- package/src/nodes/materials/MeshPhysicalNodeMaterial.js +0 -244
- package/src/nodes/materials/MeshSSSNodeMaterial.js +0 -84
- package/src/nodes/materials/MeshStandardNodeMaterial.js +0 -104
- package/src/nodes/materials/MeshToonNodeMaterial.js +0 -34
- package/src/nodes/materials/NodeMaterial.js +0 -680
- package/src/nodes/materials/PointsNodeMaterial.js +0 -39
- package/src/nodes/materials/ShadowNodeMaterial.js +0 -34
- package/src/nodes/materials/SpriteNodeMaterial.js +0 -90
- package/src/nodes/materials/VolumeNodeMaterial.js +0 -106
- package/src/nodes/math/CondNode.js +0 -139
- package/src/nodes/math/HashNode.js +0 -34
- package/src/nodes/procedural/CheckerNode.js +0 -42
- package/src/nodes/utils/DiscardNode.js +0 -28
- package/src/nodes/utils/OscNode.js +0 -81
- package/src/nodes/utils/PackingNode.js +0 -55
- package/src/nodes/utils/TimerNode.js +0 -94
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
import Node
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
2
|
import { scriptableValue } from './ScriptableValueNode.js';
|
|
3
|
-
import {
|
|
4
|
-
|
|
3
|
+
import { nodeProxy, float } from '../tsl/TSLBase.js';
|
|
4
|
+
import { hashArray, hashString } from '../core/NodeUtils.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* A Map-like data structure for managing resources of scriptable nodes.
|
|
8
|
+
*
|
|
9
|
+
* @augments Map
|
|
10
|
+
*/
|
|
5
11
|
class Resources extends Map {
|
|
6
12
|
|
|
7
13
|
get( key, callback = null, ...params ) {
|
|
@@ -57,15 +63,81 @@ class Parameters {
|
|
|
57
63
|
|
|
58
64
|
}
|
|
59
65
|
|
|
60
|
-
|
|
61
|
-
|
|
66
|
+
/**
|
|
67
|
+
* Defines the resources (e.g. namespaces) of scriptable nodes.
|
|
68
|
+
*
|
|
69
|
+
* @type {Resources}
|
|
70
|
+
*/
|
|
71
|
+
export const ScriptableNodeResources = new Resources();
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* This type of node allows to implement nodes with custom scripts. The script
|
|
75
|
+
* section is represented as an instance of `CodeNode` written with JavaScript.
|
|
76
|
+
* The script itself must adhere to a specific structure.
|
|
77
|
+
*
|
|
78
|
+
* - main(): Executed once by default and every time `node.needsUpdate` is set.
|
|
79
|
+
* - layout: The layout object defines the script's interface (inputs and outputs).
|
|
80
|
+
*
|
|
81
|
+
* ```js
|
|
82
|
+
* ScriptableNodeResources.set( 'TSL', TSL );
|
|
83
|
+
*
|
|
84
|
+
* const scriptableNode = scriptable( js( `
|
|
85
|
+
* layout = {
|
|
86
|
+
* outputType: 'node',
|
|
87
|
+
* elements: [
|
|
88
|
+
* { name: 'source', inputType: 'node' },
|
|
89
|
+
* ]
|
|
90
|
+
* };
|
|
91
|
+
*
|
|
92
|
+
* const { mul, oscSine } = TSL;
|
|
93
|
+
*
|
|
94
|
+
* function main() {
|
|
95
|
+
* const source = parameters.get( 'source' ) || float();
|
|
96
|
+
* return mul( source, oscSine() ) );
|
|
97
|
+
* }
|
|
98
|
+
*
|
|
99
|
+
* ` ) );
|
|
100
|
+
*
|
|
101
|
+
* scriptableNode.setParameter( 'source', color( 1, 0, 0 ) );
|
|
102
|
+
*
|
|
103
|
+
* const material = new THREE.MeshBasicNodeMaterial();
|
|
104
|
+
* material.colorNode = scriptableNode;
|
|
105
|
+
* ```
|
|
106
|
+
*
|
|
107
|
+
* @augments Node
|
|
108
|
+
*/
|
|
62
109
|
class ScriptableNode extends Node {
|
|
63
110
|
|
|
111
|
+
static get type() {
|
|
112
|
+
|
|
113
|
+
return 'ScriptableNode';
|
|
114
|
+
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Constructs a new scriptable node.
|
|
119
|
+
*
|
|
120
|
+
* @param {?CodeNode} [codeNode=null] - The code node.
|
|
121
|
+
* @param {Object} [parameters={}] - The parameters definition.
|
|
122
|
+
*/
|
|
64
123
|
constructor( codeNode = null, parameters = {} ) {
|
|
65
124
|
|
|
66
125
|
super();
|
|
67
126
|
|
|
127
|
+
/**
|
|
128
|
+
* The code node.
|
|
129
|
+
*
|
|
130
|
+
* @type {?CodeNode}
|
|
131
|
+
* @default null
|
|
132
|
+
*/
|
|
68
133
|
this.codeNode = codeNode;
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* The parameters definition.
|
|
137
|
+
*
|
|
138
|
+
* @type {Object}
|
|
139
|
+
* @default {}
|
|
140
|
+
*/
|
|
69
141
|
this.parameters = parameters;
|
|
70
142
|
|
|
71
143
|
this._local = new Resources();
|
|
@@ -79,34 +151,68 @@ class ScriptableNode extends Node {
|
|
|
79
151
|
|
|
80
152
|
this.onRefresh = this.onRefresh.bind( this );
|
|
81
153
|
|
|
154
|
+
/**
|
|
155
|
+
* This flag can be used for type testing.
|
|
156
|
+
*
|
|
157
|
+
* @type {boolean}
|
|
158
|
+
* @readonly
|
|
159
|
+
* @default true
|
|
160
|
+
*/
|
|
82
161
|
this.isScriptableNode = true;
|
|
83
162
|
|
|
84
163
|
}
|
|
85
164
|
|
|
165
|
+
/**
|
|
166
|
+
* The source code of the scriptable node.
|
|
167
|
+
*
|
|
168
|
+
* @type {string}
|
|
169
|
+
*/
|
|
86
170
|
get source() {
|
|
87
171
|
|
|
88
172
|
return this.codeNode ? this.codeNode.code : '';
|
|
89
173
|
|
|
90
174
|
}
|
|
91
175
|
|
|
176
|
+
/**
|
|
177
|
+
* Sets the reference of a local script variable.
|
|
178
|
+
*
|
|
179
|
+
* @param {string} name - The variable name.
|
|
180
|
+
* @param {Object} value - The reference to set.
|
|
181
|
+
* @return {Resources} The resource map
|
|
182
|
+
*/
|
|
92
183
|
setLocal( name, value ) {
|
|
93
184
|
|
|
94
185
|
return this._local.set( name, value );
|
|
95
186
|
|
|
96
187
|
}
|
|
97
188
|
|
|
189
|
+
/**
|
|
190
|
+
* Gets the value of a local script variable.
|
|
191
|
+
*
|
|
192
|
+
* @param {string} name - The variable name.
|
|
193
|
+
* @return {Object} The value.
|
|
194
|
+
*/
|
|
98
195
|
getLocal( name ) {
|
|
99
196
|
|
|
100
197
|
return this._local.get( name );
|
|
101
198
|
|
|
102
199
|
}
|
|
103
200
|
|
|
201
|
+
/**
|
|
202
|
+
* Event listener for the `refresh` event.
|
|
203
|
+
*/
|
|
104
204
|
onRefresh() {
|
|
105
205
|
|
|
106
206
|
this._refresh();
|
|
107
207
|
|
|
108
208
|
}
|
|
109
209
|
|
|
210
|
+
/**
|
|
211
|
+
* Returns an input from the layout with the given id/name.
|
|
212
|
+
*
|
|
213
|
+
* @param {string} id - The id/name of the input.
|
|
214
|
+
* @return {Object} The element entry.
|
|
215
|
+
*/
|
|
110
216
|
getInputLayout( id ) {
|
|
111
217
|
|
|
112
218
|
for ( const element of this.getLayout() ) {
|
|
@@ -121,6 +227,12 @@ class ScriptableNode extends Node {
|
|
|
121
227
|
|
|
122
228
|
}
|
|
123
229
|
|
|
230
|
+
/**
|
|
231
|
+
* Returns an output from the layout with the given id/name.
|
|
232
|
+
*
|
|
233
|
+
* @param {string} id - The id/name of the output.
|
|
234
|
+
* @return {Object} The element entry.
|
|
235
|
+
*/
|
|
124
236
|
getOutputLayout( id ) {
|
|
125
237
|
|
|
126
238
|
for ( const element of this.getLayout() ) {
|
|
@@ -135,6 +247,13 @@ class ScriptableNode extends Node {
|
|
|
135
247
|
|
|
136
248
|
}
|
|
137
249
|
|
|
250
|
+
/**
|
|
251
|
+
* Defines a script output for the given name and value.
|
|
252
|
+
*
|
|
253
|
+
* @param {string} name - The name of the output.
|
|
254
|
+
* @param {Node} value - The node value.
|
|
255
|
+
* @return {ScriptableNode} A reference to this node.
|
|
256
|
+
*/
|
|
138
257
|
setOutput( name, value ) {
|
|
139
258
|
|
|
140
259
|
const outputs = this._outputs;
|
|
@@ -153,18 +272,37 @@ class ScriptableNode extends Node {
|
|
|
153
272
|
|
|
154
273
|
}
|
|
155
274
|
|
|
275
|
+
/**
|
|
276
|
+
* Returns a script output for the given name.
|
|
277
|
+
*
|
|
278
|
+
* @param {string} name - The name of the output.
|
|
279
|
+
* @return {ScriptableValueNode} The node value.
|
|
280
|
+
*/
|
|
156
281
|
getOutput( name ) {
|
|
157
282
|
|
|
158
283
|
return this._outputs[ name ];
|
|
159
284
|
|
|
160
285
|
}
|
|
161
286
|
|
|
287
|
+
/**
|
|
288
|
+
* Returns a parameter for the given name
|
|
289
|
+
*
|
|
290
|
+
* @param {string} name - The name of the parameter.
|
|
291
|
+
* @return {ScriptableValueNode} The node value.
|
|
292
|
+
*/
|
|
162
293
|
getParameter( name ) {
|
|
163
294
|
|
|
164
295
|
return this.parameters[ name ];
|
|
165
296
|
|
|
166
297
|
}
|
|
167
298
|
|
|
299
|
+
/**
|
|
300
|
+
* Sets a value for the given parameter name.
|
|
301
|
+
*
|
|
302
|
+
* @param {string} name - The parameter name.
|
|
303
|
+
* @param {any} value - The parameter value.
|
|
304
|
+
* @return {ScriptableNode} A reference to this node.
|
|
305
|
+
*/
|
|
168
306
|
setParameter( name, value ) {
|
|
169
307
|
|
|
170
308
|
const parameters = this.parameters;
|
|
@@ -198,12 +336,24 @@ class ScriptableNode extends Node {
|
|
|
198
336
|
|
|
199
337
|
}
|
|
200
338
|
|
|
339
|
+
/**
|
|
340
|
+
* Returns the value of this node which is the value of
|
|
341
|
+
* the default output.
|
|
342
|
+
*
|
|
343
|
+
* @return {Node} The value.
|
|
344
|
+
*/
|
|
201
345
|
getValue() {
|
|
202
346
|
|
|
203
347
|
return this.getDefaultOutput().getValue();
|
|
204
348
|
|
|
205
349
|
}
|
|
206
350
|
|
|
351
|
+
/**
|
|
352
|
+
* Deletes a parameter from the script.
|
|
353
|
+
*
|
|
354
|
+
* @param {string} name - The parameter to remove.
|
|
355
|
+
* @return {ScriptableNode} A reference to this node.
|
|
356
|
+
*/
|
|
207
357
|
deleteParameter( name ) {
|
|
208
358
|
|
|
209
359
|
let valueNode = this.parameters[ name ];
|
|
@@ -220,6 +370,11 @@ class ScriptableNode extends Node {
|
|
|
220
370
|
|
|
221
371
|
}
|
|
222
372
|
|
|
373
|
+
/**
|
|
374
|
+
* Deletes all parameters from the script.
|
|
375
|
+
*
|
|
376
|
+
* @return {ScriptableNode} A reference to this node.
|
|
377
|
+
*/
|
|
223
378
|
clearParameters() {
|
|
224
379
|
|
|
225
380
|
for ( const name of Object.keys( this.parameters ) ) {
|
|
@@ -234,6 +389,13 @@ class ScriptableNode extends Node {
|
|
|
234
389
|
|
|
235
390
|
}
|
|
236
391
|
|
|
392
|
+
/**
|
|
393
|
+
* Calls a function from the script.
|
|
394
|
+
*
|
|
395
|
+
* @param {string} name - The function name.
|
|
396
|
+
* @param {...any} params - A list of parameters.
|
|
397
|
+
* @return {any} The result of the function call.
|
|
398
|
+
*/
|
|
237
399
|
call( name, ...params ) {
|
|
238
400
|
|
|
239
401
|
const object = this.getObject();
|
|
@@ -247,6 +409,13 @@ class ScriptableNode extends Node {
|
|
|
247
409
|
|
|
248
410
|
}
|
|
249
411
|
|
|
412
|
+
/**
|
|
413
|
+
* Asynchronously calls a function from the script.
|
|
414
|
+
*
|
|
415
|
+
* @param {string} name - The function name.
|
|
416
|
+
* @param {...any} params - A list of parameters.
|
|
417
|
+
* @return {Promise<any>} The result of the function call.
|
|
418
|
+
*/
|
|
250
419
|
async callAsync( name, ...params ) {
|
|
251
420
|
|
|
252
421
|
const object = this.getObject();
|
|
@@ -260,12 +429,23 @@ class ScriptableNode extends Node {
|
|
|
260
429
|
|
|
261
430
|
}
|
|
262
431
|
|
|
432
|
+
/**
|
|
433
|
+
* Overwritten since the node types is inferred from the script's output.
|
|
434
|
+
*
|
|
435
|
+
* @param {NodeBuilder} builder - The current node builder
|
|
436
|
+
* @return {string} The node type.
|
|
437
|
+
*/
|
|
263
438
|
getNodeType( builder ) {
|
|
264
439
|
|
|
265
440
|
return this.getDefaultOutputNode().getNodeType( builder );
|
|
266
441
|
|
|
267
442
|
}
|
|
268
443
|
|
|
444
|
+
/**
|
|
445
|
+
* Refreshes the script node.
|
|
446
|
+
*
|
|
447
|
+
* @param {?string} [output=null] - An optional output.
|
|
448
|
+
*/
|
|
269
449
|
refresh( output = null ) {
|
|
270
450
|
|
|
271
451
|
if ( output !== null ) {
|
|
@@ -280,6 +460,11 @@ class ScriptableNode extends Node {
|
|
|
280
460
|
|
|
281
461
|
}
|
|
282
462
|
|
|
463
|
+
/**
|
|
464
|
+
* Returns an object representation of the script.
|
|
465
|
+
*
|
|
466
|
+
* @return {Object} The result object.
|
|
467
|
+
*/
|
|
283
468
|
getObject() {
|
|
284
469
|
|
|
285
470
|
if ( this.needsUpdate ) this.dispose();
|
|
@@ -292,11 +477,11 @@ class ScriptableNode extends Node {
|
|
|
292
477
|
|
|
293
478
|
const parameters = new Parameters( this );
|
|
294
479
|
|
|
295
|
-
const THREE =
|
|
296
|
-
const TSL =
|
|
480
|
+
const THREE = ScriptableNodeResources.get( 'THREE' );
|
|
481
|
+
const TSL = ScriptableNodeResources.get( 'TSL' );
|
|
297
482
|
|
|
298
|
-
const method = this.getMethod(
|
|
299
|
-
const params = [ parameters, this._local,
|
|
483
|
+
const method = this.getMethod();
|
|
484
|
+
const params = [ parameters, this._local, ScriptableNodeResources, refresh, setOutput, THREE, TSL ];
|
|
300
485
|
|
|
301
486
|
this._object = method( ...params );
|
|
302
487
|
|
|
@@ -361,12 +546,22 @@ class ScriptableNode extends Node {
|
|
|
361
546
|
|
|
362
547
|
}
|
|
363
548
|
|
|
549
|
+
/**
|
|
550
|
+
* Returns the layout of the script.
|
|
551
|
+
*
|
|
552
|
+
* @return {Object} The script's layout.
|
|
553
|
+
*/
|
|
364
554
|
getLayout() {
|
|
365
555
|
|
|
366
556
|
return this.getObject().layout;
|
|
367
557
|
|
|
368
558
|
}
|
|
369
559
|
|
|
560
|
+
/**
|
|
561
|
+
* Returns default node output of the script.
|
|
562
|
+
*
|
|
563
|
+
* @return {Node} The default node output.
|
|
564
|
+
*/
|
|
370
565
|
getDefaultOutputNode() {
|
|
371
566
|
|
|
372
567
|
const output = this.getDefaultOutput().value;
|
|
@@ -381,12 +576,22 @@ class ScriptableNode extends Node {
|
|
|
381
576
|
|
|
382
577
|
}
|
|
383
578
|
|
|
579
|
+
/**
|
|
580
|
+
* Returns default output of the script.
|
|
581
|
+
*
|
|
582
|
+
* @return {ScriptableValueNode} The default output.
|
|
583
|
+
*/
|
|
384
584
|
getDefaultOutput() {
|
|
385
585
|
|
|
386
586
|
return this._exec()._output;
|
|
387
587
|
|
|
388
588
|
}
|
|
389
589
|
|
|
590
|
+
/**
|
|
591
|
+
* Returns a function created from the node's script.
|
|
592
|
+
*
|
|
593
|
+
* @return {Function} The function representing the node's code.
|
|
594
|
+
*/
|
|
390
595
|
getMethod() {
|
|
391
596
|
|
|
392
597
|
if ( this.needsUpdate ) this.dispose();
|
|
@@ -411,6 +616,9 @@ class ScriptableNode extends Node {
|
|
|
411
616
|
|
|
412
617
|
}
|
|
413
618
|
|
|
619
|
+
/**
|
|
620
|
+
* Frees all internal resources.
|
|
621
|
+
*/
|
|
414
622
|
dispose() {
|
|
415
623
|
|
|
416
624
|
if ( this._method === null ) return;
|
|
@@ -439,15 +647,15 @@ class ScriptableNode extends Node {
|
|
|
439
647
|
|
|
440
648
|
getCacheKey( force ) {
|
|
441
649
|
|
|
442
|
-
const
|
|
650
|
+
const values = [ hashString( this.source ), this.getDefaultOutputNode().getCacheKey( force ) ];
|
|
443
651
|
|
|
444
652
|
for ( const param in this.parameters ) {
|
|
445
653
|
|
|
446
|
-
|
|
654
|
+
values.push( this.parameters[ param ].getCacheKey( force ) );
|
|
447
655
|
|
|
448
656
|
}
|
|
449
657
|
|
|
450
|
-
return
|
|
658
|
+
return hashArray( values );
|
|
451
659
|
|
|
452
660
|
}
|
|
453
661
|
|
|
@@ -463,6 +671,12 @@ class ScriptableNode extends Node {
|
|
|
463
671
|
|
|
464
672
|
}
|
|
465
673
|
|
|
674
|
+
/**
|
|
675
|
+
* Executes the `main` function of the script.
|
|
676
|
+
*
|
|
677
|
+
* @private
|
|
678
|
+
* @return {ScriptableNode} A reference to this node.
|
|
679
|
+
*/
|
|
466
680
|
_exec() {
|
|
467
681
|
|
|
468
682
|
if ( this.codeNode === null ) return this;
|
|
@@ -481,6 +695,11 @@ class ScriptableNode extends Node {
|
|
|
481
695
|
|
|
482
696
|
}
|
|
483
697
|
|
|
698
|
+
/**
|
|
699
|
+
* Executes the refresh.
|
|
700
|
+
*
|
|
701
|
+
* @private
|
|
702
|
+
*/
|
|
484
703
|
_refresh() {
|
|
485
704
|
|
|
486
705
|
this.needsUpdate = true;
|
|
@@ -495,8 +714,13 @@ class ScriptableNode extends Node {
|
|
|
495
714
|
|
|
496
715
|
export default ScriptableNode;
|
|
497
716
|
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
717
|
+
/**
|
|
718
|
+
* TSL function for creating a scriptable node.
|
|
719
|
+
*
|
|
720
|
+
* @tsl
|
|
721
|
+
* @function
|
|
722
|
+
* @param {?CodeNode} [codeNode=null] - The code node.
|
|
723
|
+
* @param {Object} [parameters={}] - The parameters definition.
|
|
724
|
+
* @returns {ScriptableNode}
|
|
725
|
+
*/
|
|
726
|
+
export const scriptable = /*@__PURE__*/ nodeProxy( ScriptableNode );
|
|
@@ -1,27 +1,88 @@
|
|
|
1
|
-
import Node
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
2
|
import { arrayBufferToBase64, base64ToArrayBuffer } from '../core/NodeUtils.js';
|
|
3
|
-
import {
|
|
3
|
+
import { nodeProxy, float } from '../tsl/TSLBase.js';
|
|
4
4
|
|
|
5
5
|
import { EventDispatcher } from '../../core/EventDispatcher.js';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* `ScriptableNode` uses this class to manage script inputs and outputs.
|
|
9
|
+
*
|
|
10
|
+
* @augments Node
|
|
11
|
+
*/
|
|
7
12
|
class ScriptableValueNode extends Node {
|
|
8
13
|
|
|
14
|
+
static get type() {
|
|
15
|
+
|
|
16
|
+
return 'ScriptableValueNode';
|
|
17
|
+
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new scriptable node.
|
|
22
|
+
*
|
|
23
|
+
* @param {any} [value=null] - The value.
|
|
24
|
+
*/
|
|
9
25
|
constructor( value = null ) {
|
|
10
26
|
|
|
11
27
|
super();
|
|
12
28
|
|
|
29
|
+
/**
|
|
30
|
+
* A reference to the value.
|
|
31
|
+
*
|
|
32
|
+
* @private
|
|
33
|
+
* @default null
|
|
34
|
+
*/
|
|
13
35
|
this._value = value;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Depending on the type of `_value`, this property might cache parsed data.
|
|
39
|
+
*
|
|
40
|
+
* @private
|
|
41
|
+
* @default null
|
|
42
|
+
*/
|
|
14
43
|
this._cache = null;
|
|
15
44
|
|
|
45
|
+
/**
|
|
46
|
+
* If this node represents an input, this property represents the input type.
|
|
47
|
+
*
|
|
48
|
+
* @type {?string}
|
|
49
|
+
* @default null
|
|
50
|
+
*/
|
|
16
51
|
this.inputType = null;
|
|
17
|
-
this.outpuType = null;
|
|
18
52
|
|
|
53
|
+
/**
|
|
54
|
+
* If this node represents an output, this property represents the output type.
|
|
55
|
+
*
|
|
56
|
+
* @type {?string}
|
|
57
|
+
* @default null
|
|
58
|
+
*/
|
|
59
|
+
this.outputType = null;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* An event dispatcher for managing events.
|
|
63
|
+
*
|
|
64
|
+
* @type {EventDispatcher}
|
|
65
|
+
*/
|
|
19
66
|
this.events = new EventDispatcher();
|
|
20
67
|
|
|
68
|
+
/**
|
|
69
|
+
* This flag can be used for type testing.
|
|
70
|
+
*
|
|
71
|
+
* @type {boolean}
|
|
72
|
+
* @readonly
|
|
73
|
+
* @default true
|
|
74
|
+
*/
|
|
21
75
|
this.isScriptableValueNode = true;
|
|
22
76
|
|
|
23
77
|
}
|
|
24
78
|
|
|
79
|
+
/**
|
|
80
|
+
* Whether this node represents an output or not.
|
|
81
|
+
*
|
|
82
|
+
* @type {boolean}
|
|
83
|
+
* @readonly
|
|
84
|
+
* @default true
|
|
85
|
+
*/
|
|
25
86
|
get isScriptableOutputNode() {
|
|
26
87
|
|
|
27
88
|
return this.outputType !== null;
|
|
@@ -48,18 +109,32 @@ class ScriptableValueNode extends Node {
|
|
|
48
109
|
|
|
49
110
|
}
|
|
50
111
|
|
|
112
|
+
/**
|
|
113
|
+
* The node's value.
|
|
114
|
+
*
|
|
115
|
+
* @type {any}
|
|
116
|
+
*/
|
|
51
117
|
get value() {
|
|
52
118
|
|
|
53
119
|
return this._value;
|
|
54
120
|
|
|
55
121
|
}
|
|
56
122
|
|
|
123
|
+
/**
|
|
124
|
+
* Dispatches the `refresh` event.
|
|
125
|
+
*/
|
|
57
126
|
refresh() {
|
|
58
127
|
|
|
59
128
|
this.events.dispatchEvent( { type: 'refresh' } );
|
|
60
129
|
|
|
61
130
|
}
|
|
62
131
|
|
|
132
|
+
/**
|
|
133
|
+
* The `value` property usually represents a node or even binary data in form of array buffers.
|
|
134
|
+
* In this case, this method tries to return the actual value behind the complex type.
|
|
135
|
+
*
|
|
136
|
+
* @return {any} The value.
|
|
137
|
+
*/
|
|
63
138
|
getValue() {
|
|
64
139
|
|
|
65
140
|
const value = this.value;
|
|
@@ -87,6 +162,12 @@ class ScriptableValueNode extends Node {
|
|
|
87
162
|
|
|
88
163
|
}
|
|
89
164
|
|
|
165
|
+
/**
|
|
166
|
+
* Overwritten since the node type is inferred from the value.
|
|
167
|
+
*
|
|
168
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
169
|
+
* @return {string} The node type.
|
|
170
|
+
*/
|
|
90
171
|
getNodeType( builder ) {
|
|
91
172
|
|
|
92
173
|
return this.value && this.value.isNode ? this.value.getNodeType( builder ) : 'float';
|
|
@@ -161,8 +242,12 @@ class ScriptableValueNode extends Node {
|
|
|
161
242
|
|
|
162
243
|
export default ScriptableValueNode;
|
|
163
244
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
245
|
+
/**
|
|
246
|
+
* TSL function for creating a scriptable value node.
|
|
247
|
+
*
|
|
248
|
+
* @tsl
|
|
249
|
+
* @function
|
|
250
|
+
* @param {any} [value=null] - The value.
|
|
251
|
+
* @returns {ScriptableValueNode}
|
|
252
|
+
*/
|
|
253
|
+
export const scriptableValue = /*@__PURE__*/ nodeProxy( ScriptableValueNode );
|