super-three 0.173.5 → 0.176.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/build/three.cjs +21993 -1359
- package/build/three.core.js +21129 -1188
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +835 -142
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +8 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +19493 -17617
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +19477 -17617
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +144 -42
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +194 -71
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +74 -30
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +51 -5
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +36 -1
- package/examples/jsm/loaders/DDSLoader.js +25 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +71 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +222 -9
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +87 -19
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +56 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +90 -70
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +105 -13
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +109 -73
- package/examples/jsm/misc/VolumeSlice.js +91 -48
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +75 -2
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +134 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +268 -134
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/AST.js +10 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +17 -3
- package/examples/jsm/transpiler/TSLEncoder.js +83 -15
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +24 -25
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +2 -3
- package/examples/jsm/tsl/display/AnamorphicNode.js +8 -9
- package/examples/jsm/tsl/display/BleachBypass.js +1 -2
- package/examples/jsm/tsl/display/BloomNode.js +15 -16
- package/examples/jsm/tsl/display/DenoiseNode.js +9 -10
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +5 -6
- package/examples/jsm/tsl/display/DotScreenNode.js +5 -6
- package/examples/jsm/tsl/display/FXAANode.js +2 -3
- package/examples/jsm/tsl/display/FilmNode.js +9 -8
- package/examples/jsm/tsl/display/GTAONode.js +11 -12
- package/examples/jsm/tsl/display/GaussianBlurNode.js +14 -14
- package/examples/jsm/tsl/display/LensflareNode.js +15 -16
- package/examples/jsm/tsl/display/Lut3DNode.js +4 -5
- package/examples/jsm/tsl/display/MotionBlur.js +1 -2
- package/examples/jsm/tsl/display/OutlineNode.js +7 -8
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -3
- package/examples/jsm/tsl/display/PixelationPassNode.js +14 -15
- package/examples/jsm/tsl/display/RGBShiftNode.js +5 -6
- package/examples/jsm/tsl/display/SMAANode.js +13 -7
- package/examples/jsm/tsl/display/SSAAPassNode.js +7 -7
- package/examples/jsm/tsl/display/SSRNode.js +6 -7
- package/examples/jsm/tsl/display/Sepia.js +1 -2
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -3
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +4 -4
- package/examples/jsm/tsl/display/StereoPassNode.js +2 -3
- package/examples/jsm/tsl/display/TRAAPassNode.js +11 -10
- package/examples/jsm/tsl/display/TransitionNode.js +4 -5
- package/examples/jsm/tsl/display/hashBlur.js +1 -2
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +33 -7
- package/examples/jsm/tsl/math/Bayer.js +31 -0
- package/examples/jsm/tsl/utils/Raymarching.js +67 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +3 -4
- package/src/Three.TSL.js +7 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +169 -19
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/Audio.js +339 -0
- 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 +28 -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 +163 -40
- package/src/cameras/StereoCamera.js +46 -0
- package/src/constants.js +1429 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/EventDispatcher.js +44 -2
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +593 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +170 -11
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +88 -1
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +13 -780
- package/src/extras/ImageUtils.js +20 -2
- package/src/extras/PMREMGenerator.js +41 -25
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +95 -15
- package/src/extras/core/Curve.js +150 -50
- 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 +63 -0
- 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/extras/lib/earcut.js +685 -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 +39 -0
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +28 -0
- package/src/geometries/ExtrudeGeometry.js +112 -28
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +40 -0
- 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 +45 -5
- 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 +22 -0
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +130 -0
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +53 -0
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +13 -9
- package/src/loaders/nodes/NodeMaterialLoader.js +6 -6
- package/src/loaders/nodes/NodeObjectLoader.js +12 -12
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +481 -4
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +14 -14
- package/src/materials/nodes/LineBasicNodeMaterial.js +3 -3
- package/src/materials/nodes/LineDashedNodeMaterial.js +12 -12
- package/src/materials/nodes/MeshBasicNodeMaterial.js +7 -7
- package/src/materials/nodes/MeshLambertNodeMaterial.js +5 -5
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +3 -3
- package/src/materials/nodes/MeshNormalNodeMaterial.js +8 -4
- package/src/materials/nodes/MeshPhongNodeMaterial.js +9 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +43 -43
- package/src/materials/nodes/MeshSSSNodeMaterial.js +18 -21
- package/src/materials/nodes/MeshStandardNodeMaterial.js +11 -11
- package/src/materials/nodes/MeshToonNodeMaterial.js +4 -4
- package/src/materials/nodes/NodeMaterial.js +66 -47
- package/src/materials/nodes/PointsNodeMaterial.js +6 -6
- package/src/materials/nodes/ShadowNodeMaterial.js +13 -4
- package/src/materials/nodes/SpriteNodeMaterial.js +17 -9
- package/src/materials/nodes/VolumeNodeMaterial.js +25 -128
- package/src/materials/nodes/manager/NodeMaterialObserver.js +8 -8
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- 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 +94 -0
- package/src/math/MathUtils.js +405 -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 +262 -6
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +70 -8
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +206 -2
- package/src/math/Vector2.js +388 -2
- package/src/math/Vector3.js +541 -4
- package/src/math/Vector4.js +393 -0
- 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 +1 -0
- package/src/nodes/TSL.js +1 -0
- package/src/nodes/accessors/AccessorsUtils.js +4 -2
- package/src/nodes/accessors/Arrays.js +6 -6
- package/src/nodes/accessors/BatchNode.js +10 -11
- package/src/nodes/accessors/Bitangent.js +6 -2
- package/src/nodes/accessors/BufferAttributeNode.js +33 -31
- package/src/nodes/accessors/BufferNode.js +12 -13
- package/src/nodes/accessors/BuiltinNode.js +7 -8
- package/src/nodes/accessors/Camera.js +9 -2
- package/src/nodes/accessors/ClippingNode.js +4 -4
- package/src/nodes/accessors/CubeTextureNode.js +17 -19
- package/src/nodes/accessors/InstanceNode.js +10 -11
- package/src/nodes/accessors/InstancedMeshNode.js +3 -4
- package/src/nodes/accessors/Lights.js +12 -15
- package/src/nodes/accessors/MaterialNode.js +45 -9
- package/src/nodes/accessors/MaterialProperties.js +51 -2
- package/src/nodes/accessors/MaterialReferenceNode.js +11 -12
- package/src/nodes/accessors/ModelNode.js +20 -3
- package/src/nodes/accessors/ModelViewProjectionNode.js +1 -2
- package/src/nodes/accessors/MorphNode.js +29 -26
- package/src/nodes/accessors/Normal.js +11 -3
- package/src/nodes/accessors/Object3DNode.js +51 -16
- package/src/nodes/accessors/PointUVNode.js +2 -3
- package/src/nodes/accessors/Position.js +8 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +29 -29
- package/src/nodes/accessors/ReferenceNode.js +31 -31
- package/src/nodes/accessors/ReflectVector.js +4 -2
- package/src/nodes/accessors/RendererReferenceNode.js +9 -10
- package/src/nodes/accessors/SceneNode.js +5 -4
- package/src/nodes/accessors/SkinningNode.js +53 -44
- package/src/nodes/accessors/StorageBufferNode.js +24 -24
- package/src/nodes/accessors/StorageTextureNode.js +17 -17
- package/src/nodes/accessors/Tangent.js +6 -2
- package/src/nodes/accessors/Texture3DNode.js +11 -12
- package/src/nodes/accessors/TextureBicubic.js +2 -3
- package/src/nodes/accessors/TextureNode.js +68 -47
- package/src/nodes/accessors/TextureSizeNode.js +5 -6
- package/src/nodes/accessors/UV.js +2 -3
- package/src/nodes/accessors/UniformArrayNode.js +24 -24
- package/src/nodes/accessors/UserDataNode.js +11 -12
- package/src/nodes/accessors/VelocityNode.js +4 -5
- package/src/nodes/accessors/VertexColorNode.js +7 -8
- package/src/nodes/code/CodeNode.js +15 -13
- package/src/nodes/code/ExpressionNode.js +8 -9
- package/src/nodes/code/FunctionCallNode.js +29 -9
- package/src/nodes/code/FunctionNode.js +1 -1
- package/src/nodes/code/ScriptableNode.js +27 -28
- package/src/nodes/code/ScriptableValueNode.js +11 -12
- package/src/nodes/core/ArrayNode.js +29 -12
- package/src/nodes/core/AssignNode.js +4 -5
- package/src/nodes/core/AttributeNode.js +8 -9
- package/src/nodes/core/BypassNode.js +3 -4
- package/src/nodes/core/CacheNode.js +5 -6
- package/src/nodes/core/ConstNode.js +4 -4
- package/src/nodes/core/ContextNode.js +9 -9
- package/src/nodes/core/IndexNode.js +8 -4
- package/src/nodes/core/InputNode.js +7 -7
- package/src/nodes/core/LightingModel.js +17 -17
- package/src/nodes/core/MRTNode.js +9 -10
- package/src/nodes/core/Node.js +49 -37
- package/src/nodes/core/NodeAttribute.js +7 -7
- package/src/nodes/core/NodeBuilder.js +248 -175
- package/src/nodes/core/NodeCache.js +4 -4
- package/src/nodes/core/NodeCode.js +6 -6
- package/src/nodes/core/NodeFrame.js +10 -10
- package/src/nodes/core/NodeFunction.js +8 -8
- package/src/nodes/core/NodeFunctionInput.js +8 -8
- package/src/nodes/core/NodeParser.js +1 -1
- package/src/nodes/core/NodeUniform.js +7 -7
- package/src/nodes/core/NodeUtils.js +22 -24
- package/src/nodes/core/NodeVar.js +9 -9
- package/src/nodes/core/NodeVarying.js +4 -4
- package/src/nodes/core/OutputStructNode.js +2 -3
- package/src/nodes/core/ParameterNode.js +6 -7
- package/src/nodes/core/PropertyNode.js +41 -13
- package/src/nodes/core/StackNode.js +11 -12
- package/src/nodes/core/StructNode.js +2 -3
- package/src/nodes/core/StructTypeNode.js +10 -6
- package/src/nodes/core/TempNode.js +3 -3
- package/src/nodes/core/UniformGroupNode.js +15 -12
- package/src/nodes/core/UniformNode.js +9 -10
- package/src/nodes/core/VarNode.js +14 -18
- package/src/nodes/core/VaryingNode.js +10 -10
- package/src/nodes/core/constants.js +0 -2
- package/src/nodes/display/BlendModes.js +21 -14
- package/src/nodes/display/BumpMapNode.js +5 -6
- package/src/nodes/display/ColorAdjustment.js +13 -9
- package/src/nodes/display/ColorSpaceFunctions.js +4 -4
- package/src/nodes/display/ColorSpaceNode.js +15 -12
- package/src/nodes/display/FrontFacingNode.js +3 -3
- package/src/nodes/display/NormalMapNode.js +5 -6
- package/src/nodes/display/PassNode.js +122 -35
- package/src/nodes/display/PosterizeNode.js +2 -3
- package/src/nodes/display/RenderOutputNode.js +8 -9
- package/src/nodes/display/ScreenNode.js +16 -7
- package/src/nodes/display/ToneMappingFunctions.js +12 -8
- package/src/nodes/display/ToneMappingNode.js +8 -8
- package/src/nodes/display/ToonOutlinePassNode.js +3 -4
- package/src/nodes/display/ViewportDepthNode.js +15 -7
- package/src/nodes/display/ViewportDepthTextureNode.js +6 -7
- package/src/nodes/display/ViewportSharedTextureNode.js +6 -7
- package/src/nodes/display/ViewportTextureNode.js +16 -16
- package/src/nodes/fog/Fog.js +5 -2
- package/src/nodes/functions/BSDF/LTC.js +45 -1
- package/src/nodes/functions/BasicLightingModel.js +5 -8
- package/src/nodes/functions/PhongLightingModel.js +6 -8
- package/src/nodes/functions/PhysicalLightingModel.js +40 -42
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/ToonLightingModel.js +5 -6
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +8 -8
- package/src/nodes/geometry/RangeNode.js +4 -5
- package/src/nodes/gpgpu/AtomicFunctionNode.js +33 -48
- package/src/nodes/gpgpu/BarrierNode.js +6 -4
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +26 -31
- package/src/nodes/gpgpu/ComputeNode.js +43 -16
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +16 -17
- package/src/nodes/lighting/AONode.js +2 -2
- package/src/nodes/lighting/AmbientLightNode.js +1 -1
- package/src/nodes/lighting/AnalyticLightNode.js +50 -9
- package/src/nodes/lighting/BasicLightMapNode.js +2 -2
- package/src/nodes/lighting/DirectionalLightNode.js +3 -12
- package/src/nodes/lighting/EnvironmentNode.js +5 -8
- package/src/nodes/lighting/HemisphereLightNode.js +1 -1
- package/src/nodes/lighting/LightProbeNode.js +1 -1
- package/src/nodes/lighting/LightUtils.js +1 -5
- package/src/nodes/lighting/LightingContextNode.js +10 -10
- package/src/nodes/lighting/LightingNode.js +1 -1
- package/src/nodes/lighting/LightsNode.js +68 -25
- package/src/nodes/lighting/PointLightNode.js +12 -27
- package/src/nodes/lighting/PointShadowNode.js +5 -6
- package/src/nodes/lighting/RectAreaLightNode.js +5 -10
- package/src/nodes/lighting/ShadowBaseNode.js +8 -9
- package/src/nodes/lighting/ShadowNode.js +28 -15
- package/src/nodes/lighting/SpotLightNode.js +8 -19
- package/src/nodes/math/ConditionalNode.js +26 -9
- package/src/nodes/math/Hash.js +2 -3
- package/src/nodes/math/MathNode.js +217 -150
- package/src/nodes/math/MathUtils.js +8 -6
- package/src/nodes/math/OperatorNode.js +198 -89
- package/src/nodes/math/TriNoise3D.js +2 -3
- package/src/nodes/parsers/GLSLNodeFunction.js +3 -3
- package/src/nodes/parsers/GLSLNodeParser.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +61 -37
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/procedural/Checker.js +2 -3
- package/src/nodes/shapes/Shapes.js +2 -3
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +117 -19
- package/src/nodes/utils/ArrayElementNode.js +5 -3
- package/src/nodes/utils/ConvertNode.js +3 -3
- package/src/nodes/utils/CubeMapNode.js +7 -8
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/Discard.js +5 -5
- package/src/nodes/utils/EquirectUVNode.js +3 -4
- package/src/nodes/utils/FlipNode.js +3 -3
- package/src/nodes/utils/FunctionOverloadingNode.js +3 -4
- package/src/nodes/utils/JoinNode.js +29 -4
- package/src/nodes/utils/LoopNode.js +67 -35
- package/src/nodes/utils/MatcapUVNode.js +1 -2
- package/src/nodes/utils/MaxMipLevelNode.js +4 -5
- package/src/nodes/utils/MemberNode.js +2 -2
- package/src/nodes/utils/Oscillators.js +8 -6
- package/src/nodes/utils/Packing.js +4 -4
- package/src/nodes/utils/PostProcessingUtils.js +6 -5
- package/src/nodes/utils/RTTNode.js +19 -19
- package/src/nodes/utils/ReflectorNode.js +35 -25
- package/src/nodes/utils/RemapNode.js +9 -9
- package/src/nodes/utils/RotateNode.js +3 -4
- package/src/nodes/utils/SetNode.js +3 -3
- package/src/nodes/utils/SplitNode.js +5 -5
- package/src/nodes/utils/SpriteSheetUVNode.js +4 -5
- package/src/nodes/utils/SpriteUtils.js +5 -6
- package/src/nodes/utils/StorageArrayElementNode.js +3 -4
- package/src/nodes/utils/Timer.js +9 -5
- package/src/nodes/utils/TriplanarTexturesNode.js +20 -20
- package/src/nodes/utils/UVUtils.js +4 -4
- package/src/nodes/utils/ViewportUtils.js +3 -4
- package/src/objects/BatchedMesh.js +319 -32
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +4 -4
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +99 -5
- package/src/objects/Line.js +82 -0
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +75 -0
- package/src/objects/Points.js +60 -0
- package/src/objects/Skeleton.js +105 -0
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +622 -83
- package/src/renderers/common/Animation.js +6 -6
- package/src/renderers/common/Attributes.js +3 -3
- package/src/renderers/common/Backend.js +40 -31
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/BindGroup.js +5 -5
- package/src/renderers/common/Binding.js +4 -4
- package/src/renderers/common/Bindings.js +10 -0
- package/src/renderers/common/Buffer.js +5 -5
- package/src/renderers/common/BufferUtils.js +7 -9
- package/src/renderers/common/BundleGroup.js +6 -6
- package/src/renderers/common/ChainMap.js +3 -3
- package/src/renderers/common/ClippingContext.js +8 -8
- package/src/renderers/common/Color4.js +8 -8
- package/src/renderers/common/ComputePipeline.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/DataMap.js +2 -2
- package/src/renderers/common/Geometries.js +6 -6
- package/src/renderers/common/IndirectStorageBufferAttribute.js +3 -3
- package/src/renderers/common/Info.js +17 -17
- package/src/renderers/common/Pipeline.js +3 -3
- package/src/renderers/common/Pipelines.js +12 -12
- package/src/renderers/common/PostProcessing.js +13 -1
- package/src/renderers/common/ProgrammableStage.js +11 -11
- package/src/renderers/common/QuadMesh.js +5 -3
- package/src/renderers/common/RenderContext.js +24 -24
- package/src/renderers/common/RenderContexts.js +4 -4
- package/src/renderers/common/RenderList.js +16 -16
- package/src/renderers/common/RenderObject.js +27 -27
- package/src/renderers/common/RenderObjects.js +4 -4
- package/src/renderers/common/RenderPipeline.js +1 -1
- package/src/renderers/common/Renderer.js +272 -200
- package/src/renderers/common/RendererUtils.js +0 -2
- package/src/renderers/common/SampledTexture.js +20 -20
- package/src/renderers/common/Sampler.js +5 -5
- package/src/renderers/common/StorageBuffer.js +2 -2
- package/src/renderers/common/StorageBufferAttribute.js +4 -4
- package/src/renderers/common/StorageInstancedBufferAttribute.js +4 -4
- package/src/renderers/common/StorageTexture.js +6 -6
- package/src/renderers/common/Textures.js +6 -6
- package/src/renderers/common/TimestampQueryPool.js +66 -7
- package/src/renderers/common/Uniform.js +26 -26
- package/src/renderers/common/UniformBuffer.js +2 -2
- package/src/renderers/common/UniformsGroup.js +18 -18
- package/src/renderers/common/XRManager.js +369 -54
- package/src/renderers/common/XRRenderTarget.js +5 -5
- package/src/renderers/common/extras/PMREMGenerator.js +62 -37
- package/src/renderers/common/nodes/NodeBuilderState.js +7 -7
- package/src/renderers/common/nodes/NodeLibrary.js +13 -13
- package/src/renderers/common/nodes/NodeSampledTexture.js +12 -12
- package/src/renderers/common/nodes/NodeSampler.js +1 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
- package/src/renderers/common/nodes/NodeUniform.js +9 -9
- package/src/renderers/common/nodes/NodeUniformsGroup.js +3 -3
- package/src/renderers/common/nodes/Nodes.js +13 -13
- package/src/renderers/shaders/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLState.js +19 -19
- package/src/renderers/webgl-fallback/WebGLBackend.js +163 -146
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +4 -4
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +89 -99
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +5 -5
- package/src/renderers/webgl-fallback/utils/WebGLState.js +97 -47
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +79 -31
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +37 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -3
- package/src/renderers/webgpu/WebGPUBackend.js +200 -119
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +3 -13
- package/src/renderers/webgpu/WebGPURenderer.js +19 -13
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +171 -178
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -3
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +43 -9
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +2 -2
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +18 -10
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +9 -9
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +37 -37
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +31 -18
- package/src/renderers/webgpu/utils/WebGPUUtils.js +9 -9
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +185 -9
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +88 -0
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +61 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +362 -3
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -2,12 +2,10 @@ import AttributeNode from '../core/AttributeNode.js';
|
|
|
2
2
|
import { nodeObject } from '../tsl/TSLBase.js';
|
|
3
3
|
import { Vector4 } from '../../math/Vector4.js';
|
|
4
4
|
|
|
5
|
-
/** @module VertexColorNode **/
|
|
6
|
-
|
|
7
5
|
/**
|
|
8
6
|
* An attribute node for representing vertex colors.
|
|
9
7
|
*
|
|
10
|
-
* @augments
|
|
8
|
+
* @augments AttributeNode
|
|
11
9
|
*/
|
|
12
10
|
class VertexColorNode extends AttributeNode {
|
|
13
11
|
|
|
@@ -20,7 +18,7 @@ class VertexColorNode extends AttributeNode {
|
|
|
20
18
|
/**
|
|
21
19
|
* Constructs a new vertex color node.
|
|
22
20
|
*
|
|
23
|
-
* @param {
|
|
21
|
+
* @param {number} [index=0] - The attribute index.
|
|
24
22
|
*/
|
|
25
23
|
constructor( index = 0 ) {
|
|
26
24
|
|
|
@@ -29,7 +27,7 @@ class VertexColorNode extends AttributeNode {
|
|
|
29
27
|
/**
|
|
30
28
|
* This flag can be used for type testing.
|
|
31
29
|
*
|
|
32
|
-
* @type {
|
|
30
|
+
* @type {boolean}
|
|
33
31
|
* @readonly
|
|
34
32
|
* @default true
|
|
35
33
|
*/
|
|
@@ -38,7 +36,7 @@ class VertexColorNode extends AttributeNode {
|
|
|
38
36
|
/**
|
|
39
37
|
* The attribute index to enable more than one sets of vertex colors.
|
|
40
38
|
*
|
|
41
|
-
* @type {
|
|
39
|
+
* @type {number}
|
|
42
40
|
* @default 0
|
|
43
41
|
*/
|
|
44
42
|
this.index = index;
|
|
@@ -49,7 +47,7 @@ class VertexColorNode extends AttributeNode {
|
|
|
49
47
|
* Overwrites the default implementation by honoring the attribute index.
|
|
50
48
|
*
|
|
51
49
|
* @param {NodeBuilder} builder - The current node builder.
|
|
52
|
-
* @return {
|
|
50
|
+
* @return {string} The attribute name.
|
|
53
51
|
*/
|
|
54
52
|
getAttributeName( /*builder*/ ) {
|
|
55
53
|
|
|
@@ -104,8 +102,9 @@ export default VertexColorNode;
|
|
|
104
102
|
/**
|
|
105
103
|
* TSL function for creating a reference node.
|
|
106
104
|
*
|
|
105
|
+
* @tsl
|
|
107
106
|
* @function
|
|
108
|
-
* @param {
|
|
107
|
+
* @param {number} index - The attribute index.
|
|
109
108
|
* @returns {VertexColorNode}
|
|
110
109
|
*/
|
|
111
110
|
export const vertexColor = ( index ) => nodeObject( new VertexColorNode( index ) );
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import Node from '../core/Node.js';
|
|
2
2
|
import { nodeProxy } from '../tsl/TSLBase.js';
|
|
3
3
|
|
|
4
|
-
/** @module CodeNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* This class represents native code sections. It is the base
|
|
8
6
|
* class for modules like {@link FunctionNode} which allows to implement
|
|
@@ -21,7 +19,7 @@ class CodeNode extends Node {
|
|
|
21
19
|
/**
|
|
22
20
|
* Constructs a new code node.
|
|
23
21
|
*
|
|
24
|
-
* @param {
|
|
22
|
+
* @param {string} [code=''] - The native code.
|
|
25
23
|
* @param {Array<Node>} [includes=[]] - An array of includes.
|
|
26
24
|
* @param {('js'|'wgsl'|'glsl')} [language=''] - The used language.
|
|
27
25
|
*/
|
|
@@ -32,7 +30,7 @@ class CodeNode extends Node {
|
|
|
32
30
|
/**
|
|
33
31
|
* This flag can be used for type testing.
|
|
34
32
|
*
|
|
35
|
-
* @type {
|
|
33
|
+
* @type {boolean}
|
|
36
34
|
* @readonly
|
|
37
35
|
* @default true
|
|
38
36
|
*/
|
|
@@ -41,7 +39,7 @@ class CodeNode extends Node {
|
|
|
41
39
|
/**
|
|
42
40
|
* The native code.
|
|
43
41
|
*
|
|
44
|
-
* @type {
|
|
42
|
+
* @type {string}
|
|
45
43
|
* @default ''
|
|
46
44
|
*/
|
|
47
45
|
this.code = code;
|
|
@@ -67,7 +65,7 @@ class CodeNode extends Node {
|
|
|
67
65
|
/**
|
|
68
66
|
* The method is overwritten so it always returns `true`.
|
|
69
67
|
*
|
|
70
|
-
* @return {
|
|
68
|
+
* @return {boolean} Whether this node is global or not.
|
|
71
69
|
*/
|
|
72
70
|
isGlobal() {
|
|
73
71
|
|
|
@@ -143,19 +141,21 @@ export default CodeNode;
|
|
|
143
141
|
/**
|
|
144
142
|
* TSL function for creating a code node.
|
|
145
143
|
*
|
|
144
|
+
* @tsl
|
|
146
145
|
* @function
|
|
147
|
-
* @param {
|
|
148
|
-
* @param {Array<Node>} [includes=[]] - An array of includes.
|
|
149
|
-
* @param {('js'|'wgsl'|'glsl')} [language=''] - The used language.
|
|
146
|
+
* @param {string} [code] - The native code.
|
|
147
|
+
* @param {?Array<Node>} [includes=[]] - An array of includes.
|
|
148
|
+
* @param {?('js'|'wgsl'|'glsl')} [language=''] - The used language.
|
|
150
149
|
* @returns {CodeNode}
|
|
151
150
|
*/
|
|
152
|
-
export const code = /*@__PURE__*/ nodeProxy( CodeNode );
|
|
151
|
+
export const code = /*@__PURE__*/ nodeProxy( CodeNode ).setParameterLength( 1, 3 );
|
|
153
152
|
|
|
154
153
|
/**
|
|
155
154
|
* TSL function for creating a JS code node.
|
|
156
155
|
*
|
|
156
|
+
* @tsl
|
|
157
157
|
* @function
|
|
158
|
-
* @param {
|
|
158
|
+
* @param {string} src - The native code.
|
|
159
159
|
* @param {Array<Node>} includes - An array of includes.
|
|
160
160
|
* @returns {CodeNode}
|
|
161
161
|
*/
|
|
@@ -164,8 +164,9 @@ export const js = ( src, includes ) => code( src, includes, 'js' );
|
|
|
164
164
|
/**
|
|
165
165
|
* TSL function for creating a WGSL code node.
|
|
166
166
|
*
|
|
167
|
+
* @tsl
|
|
167
168
|
* @function
|
|
168
|
-
* @param {
|
|
169
|
+
* @param {string} src - The native code.
|
|
169
170
|
* @param {Array<Node>} includes - An array of includes.
|
|
170
171
|
* @returns {CodeNode}
|
|
171
172
|
*/
|
|
@@ -174,8 +175,9 @@ export const wgsl = ( src, includes ) => code( src, includes, 'wgsl' );
|
|
|
174
175
|
/**
|
|
175
176
|
* TSL function for creating a GLSL code node.
|
|
176
177
|
*
|
|
178
|
+
* @tsl
|
|
177
179
|
* @function
|
|
178
|
-
* @param {
|
|
180
|
+
* @param {string} src - The native code.
|
|
179
181
|
* @param {Array<Node>} includes - An array of includes.
|
|
180
182
|
* @returns {CodeNode}
|
|
181
183
|
*/
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import Node from '../core/Node.js';
|
|
2
2
|
import { nodeProxy } from '../tsl/TSLCore.js';
|
|
3
3
|
|
|
4
|
-
/** @module ExpressionNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* This class can be used to implement basic expressions in shader code.
|
|
8
6
|
* Basic examples for that are `return`, `continue` or `discard` statements.
|
|
@@ -20,8 +18,8 @@ class ExpressionNode extends Node {
|
|
|
20
18
|
/**
|
|
21
19
|
* Constructs a new expression node.
|
|
22
20
|
*
|
|
23
|
-
* @param {
|
|
24
|
-
* @param {
|
|
21
|
+
* @param {string} [snippet=''] - The native code snippet.
|
|
22
|
+
* @param {string} [nodeType='void'] - The node type.
|
|
25
23
|
*/
|
|
26
24
|
constructor( snippet = '', nodeType = 'void' ) {
|
|
27
25
|
|
|
@@ -30,7 +28,7 @@ class ExpressionNode extends Node {
|
|
|
30
28
|
/**
|
|
31
29
|
* The native code snippet.
|
|
32
30
|
*
|
|
33
|
-
* @type {
|
|
31
|
+
* @type {string}
|
|
34
32
|
* @default ''
|
|
35
33
|
*/
|
|
36
34
|
this.snippet = snippet;
|
|
@@ -48,7 +46,7 @@ class ExpressionNode extends Node {
|
|
|
48
46
|
|
|
49
47
|
} else {
|
|
50
48
|
|
|
51
|
-
return builder.format(
|
|
49
|
+
return builder.format( snippet, type, output );
|
|
52
50
|
|
|
53
51
|
}
|
|
54
52
|
|
|
@@ -61,9 +59,10 @@ export default ExpressionNode;
|
|
|
61
59
|
/**
|
|
62
60
|
* TSL function for creating an expression node.
|
|
63
61
|
*
|
|
62
|
+
* @tsl
|
|
64
63
|
* @function
|
|
65
|
-
* @param {
|
|
66
|
-
* @param {
|
|
64
|
+
* @param {string} [snippet] - The native code snippet.
|
|
65
|
+
* @param {?string} [nodeType='void'] - The node type.
|
|
67
66
|
* @returns {ExpressionNode}
|
|
68
67
|
*/
|
|
69
|
-
export const expression = /*@__PURE__*/ nodeProxy( ExpressionNode );
|
|
68
|
+
export const expression = /*@__PURE__*/ nodeProxy( ExpressionNode ).setParameterLength( 1, 2 );
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import TempNode from '../core/TempNode.js';
|
|
2
|
-
import { addMethodChaining, nodeArray, nodeObject, nodeObjects } from '../tsl/TSLCore.js';
|
|
2
|
+
import { addMethodChaining, nodeArray, nodeObject, nodeObjects, float } from '../tsl/TSLCore.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* This module represents the call of a {@link FunctionNode}. Developers are usually not confronted
|
|
@@ -19,8 +19,8 @@ class FunctionCallNode extends TempNode {
|
|
|
19
19
|
/**
|
|
20
20
|
* Constructs a new function call node.
|
|
21
21
|
*
|
|
22
|
-
* @param {FunctionNode
|
|
23
|
-
* @param {Object<
|
|
22
|
+
* @param {?FunctionNode} functionNode - The function node.
|
|
23
|
+
* @param {Object<string, Node>} [parameters={}] - The parameters for the function call.
|
|
24
24
|
*/
|
|
25
25
|
constructor( functionNode = null, parameters = {} ) {
|
|
26
26
|
|
|
@@ -29,7 +29,7 @@ class FunctionCallNode extends TempNode {
|
|
|
29
29
|
/**
|
|
30
30
|
* The function node.
|
|
31
31
|
*
|
|
32
|
-
* @type {FunctionNode}
|
|
32
|
+
* @type {?FunctionNode}
|
|
33
33
|
* @default null
|
|
34
34
|
*/
|
|
35
35
|
this.functionNode = functionNode;
|
|
@@ -37,7 +37,7 @@ class FunctionCallNode extends TempNode {
|
|
|
37
37
|
/**
|
|
38
38
|
* The parameters of the function call.
|
|
39
39
|
*
|
|
40
|
-
* @type {Object<
|
|
40
|
+
* @type {Object<string, Node>}
|
|
41
41
|
* @default {}
|
|
42
42
|
*/
|
|
43
43
|
this.parameters = parameters;
|
|
@@ -47,7 +47,7 @@ class FunctionCallNode extends TempNode {
|
|
|
47
47
|
/**
|
|
48
48
|
* Sets the parameters of the function call node.
|
|
49
49
|
*
|
|
50
|
-
* @param {Object<
|
|
50
|
+
* @param {Object<string, Node>} parameters - The parameters to set.
|
|
51
51
|
* @return {FunctionCallNode} A reference to this node.
|
|
52
52
|
*/
|
|
53
53
|
setParameters( parameters ) {
|
|
@@ -61,7 +61,7 @@ class FunctionCallNode extends TempNode {
|
|
|
61
61
|
/**
|
|
62
62
|
* Returns the parameters of the function call node.
|
|
63
63
|
*
|
|
64
|
-
* @return {Object<
|
|
64
|
+
* @return {Object<string, Node>} The parameters of this node.
|
|
65
65
|
*/
|
|
66
66
|
getParameters() {
|
|
67
67
|
|
|
@@ -100,6 +100,24 @@ class FunctionCallNode extends TempNode {
|
|
|
100
100
|
|
|
101
101
|
if ( Array.isArray( parameters ) ) {
|
|
102
102
|
|
|
103
|
+
if ( parameters.length > inputs.length ) {
|
|
104
|
+
|
|
105
|
+
console.error( 'THREE.TSL: The number of provided parameters exceeds the expected number of inputs in \'Fn()\'.' );
|
|
106
|
+
|
|
107
|
+
parameters.length = inputs.length;
|
|
108
|
+
|
|
109
|
+
} else if ( parameters.length < inputs.length ) {
|
|
110
|
+
|
|
111
|
+
console.error( 'THREE.TSL: The number of provided parameters is less than the expected number of inputs in \'Fn()\'.' );
|
|
112
|
+
|
|
113
|
+
while ( parameters.length < inputs.length ) {
|
|
114
|
+
|
|
115
|
+
parameters.push( float( 0 ) );
|
|
116
|
+
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
}
|
|
120
|
+
|
|
103
121
|
for ( let i = 0; i < parameters.length; i ++ ) {
|
|
104
122
|
|
|
105
123
|
params.push( generateInput( parameters[ i ], inputs[ i ] ) );
|
|
@@ -118,7 +136,9 @@ class FunctionCallNode extends TempNode {
|
|
|
118
136
|
|
|
119
137
|
} else {
|
|
120
138
|
|
|
121
|
-
|
|
139
|
+
console.error( `THREE.TSL: Input '${ inputNode.name }' not found in \'Fn()\'.` );
|
|
140
|
+
|
|
141
|
+
params.push( generateInput( float( 0 ), inputNode ) );
|
|
122
142
|
|
|
123
143
|
}
|
|
124
144
|
|
|
@@ -128,7 +148,7 @@ class FunctionCallNode extends TempNode {
|
|
|
128
148
|
|
|
129
149
|
const functionName = functionNode.build( builder, 'property' );
|
|
130
150
|
|
|
131
|
-
return `${functionName}( ${params.join( ', ' )} )`;
|
|
151
|
+
return `${ functionName }( ${ params.join( ', ' ) } )`;
|
|
132
152
|
|
|
133
153
|
}
|
|
134
154
|
|
|
@@ -38,7 +38,7 @@ class FunctionNode extends CodeNode {
|
|
|
38
38
|
/**
|
|
39
39
|
* Constructs a new function node.
|
|
40
40
|
*
|
|
41
|
-
* @param {
|
|
41
|
+
* @param {string} [code=''] - The native code.
|
|
42
42
|
* @param {Array<Node>} [includes=[]] - An array of includes.
|
|
43
43
|
* @param {('js'|'wgsl'|'glsl')} [language=''] - The used language.
|
|
44
44
|
*/
|
|
@@ -3,8 +3,6 @@ import { scriptableValue } from './ScriptableValueNode.js';
|
|
|
3
3
|
import { nodeProxy, float } from '../tsl/TSLBase.js';
|
|
4
4
|
import { hashArray, hashString } from '../core/NodeUtils.js';
|
|
5
5
|
|
|
6
|
-
/** @module ScriptableNode **/
|
|
7
|
-
|
|
8
6
|
/**
|
|
9
7
|
* A Map-like data structure for managing resources of scriptable nodes.
|
|
10
8
|
*
|
|
@@ -119,7 +117,7 @@ class ScriptableNode extends Node {
|
|
|
119
117
|
/**
|
|
120
118
|
* Constructs a new scriptable node.
|
|
121
119
|
*
|
|
122
|
-
* @param {CodeNode
|
|
120
|
+
* @param {?CodeNode} [codeNode=null] - The code node.
|
|
123
121
|
* @param {Object} [parameters={}] - The parameters definition.
|
|
124
122
|
*/
|
|
125
123
|
constructor( codeNode = null, parameters = {} ) {
|
|
@@ -129,7 +127,7 @@ class ScriptableNode extends Node {
|
|
|
129
127
|
/**
|
|
130
128
|
* The code node.
|
|
131
129
|
*
|
|
132
|
-
* @type {CodeNode
|
|
130
|
+
* @type {?CodeNode}
|
|
133
131
|
* @default null
|
|
134
132
|
*/
|
|
135
133
|
this.codeNode = codeNode;
|
|
@@ -143,7 +141,7 @@ class ScriptableNode extends Node {
|
|
|
143
141
|
this.parameters = parameters;
|
|
144
142
|
|
|
145
143
|
this._local = new Resources();
|
|
146
|
-
this._output = scriptableValue();
|
|
144
|
+
this._output = scriptableValue( null );
|
|
147
145
|
this._outputs = {};
|
|
148
146
|
this._source = this.source;
|
|
149
147
|
this._method = null;
|
|
@@ -156,7 +154,7 @@ class ScriptableNode extends Node {
|
|
|
156
154
|
/**
|
|
157
155
|
* This flag can be used for type testing.
|
|
158
156
|
*
|
|
159
|
-
* @type {
|
|
157
|
+
* @type {boolean}
|
|
160
158
|
* @readonly
|
|
161
159
|
* @default true
|
|
162
160
|
*/
|
|
@@ -167,7 +165,7 @@ class ScriptableNode extends Node {
|
|
|
167
165
|
/**
|
|
168
166
|
* The source code of the scriptable node.
|
|
169
167
|
*
|
|
170
|
-
* @type {
|
|
168
|
+
* @type {string}
|
|
171
169
|
*/
|
|
172
170
|
get source() {
|
|
173
171
|
|
|
@@ -178,7 +176,7 @@ class ScriptableNode extends Node {
|
|
|
178
176
|
/**
|
|
179
177
|
* Sets the reference of a local script variable.
|
|
180
178
|
*
|
|
181
|
-
* @param {
|
|
179
|
+
* @param {string} name - The variable name.
|
|
182
180
|
* @param {Object} value - The reference to set.
|
|
183
181
|
* @return {Resources} The resource map
|
|
184
182
|
*/
|
|
@@ -191,7 +189,7 @@ class ScriptableNode extends Node {
|
|
|
191
189
|
/**
|
|
192
190
|
* Gets the value of a local script variable.
|
|
193
191
|
*
|
|
194
|
-
* @param {
|
|
192
|
+
* @param {string} name - The variable name.
|
|
195
193
|
* @return {Object} The value.
|
|
196
194
|
*/
|
|
197
195
|
getLocal( name ) {
|
|
@@ -212,7 +210,7 @@ class ScriptableNode extends Node {
|
|
|
212
210
|
/**
|
|
213
211
|
* Returns an input from the layout with the given id/name.
|
|
214
212
|
*
|
|
215
|
-
* @param {
|
|
213
|
+
* @param {string} id - The id/name of the input.
|
|
216
214
|
* @return {Object} The element entry.
|
|
217
215
|
*/
|
|
218
216
|
getInputLayout( id ) {
|
|
@@ -232,7 +230,7 @@ class ScriptableNode extends Node {
|
|
|
232
230
|
/**
|
|
233
231
|
* Returns an output from the layout with the given id/name.
|
|
234
232
|
*
|
|
235
|
-
* @param {
|
|
233
|
+
* @param {string} id - The id/name of the output.
|
|
236
234
|
* @return {Object} The element entry.
|
|
237
235
|
*/
|
|
238
236
|
getOutputLayout( id ) {
|
|
@@ -252,7 +250,7 @@ class ScriptableNode extends Node {
|
|
|
252
250
|
/**
|
|
253
251
|
* Defines a script output for the given name and value.
|
|
254
252
|
*
|
|
255
|
-
* @param {
|
|
253
|
+
* @param {string} name - The name of the output.
|
|
256
254
|
* @param {Node} value - The node value.
|
|
257
255
|
* @return {ScriptableNode} A reference to this node.
|
|
258
256
|
*/
|
|
@@ -277,7 +275,7 @@ class ScriptableNode extends Node {
|
|
|
277
275
|
/**
|
|
278
276
|
* Returns a script output for the given name.
|
|
279
277
|
*
|
|
280
|
-
* @param {
|
|
278
|
+
* @param {string} name - The name of the output.
|
|
281
279
|
* @return {ScriptableValueNode} The node value.
|
|
282
280
|
*/
|
|
283
281
|
getOutput( name ) {
|
|
@@ -289,7 +287,7 @@ class ScriptableNode extends Node {
|
|
|
289
287
|
/**
|
|
290
288
|
* Returns a parameter for the given name
|
|
291
289
|
*
|
|
292
|
-
* @param {
|
|
290
|
+
* @param {string} name - The name of the parameter.
|
|
293
291
|
* @return {ScriptableValueNode} The node value.
|
|
294
292
|
*/
|
|
295
293
|
getParameter( name ) {
|
|
@@ -301,8 +299,8 @@ class ScriptableNode extends Node {
|
|
|
301
299
|
/**
|
|
302
300
|
* Sets a value for the given parameter name.
|
|
303
301
|
*
|
|
304
|
-
* @param {
|
|
305
|
-
* @param {
|
|
302
|
+
* @param {string} name - The parameter name.
|
|
303
|
+
* @param {any} value - The parameter value.
|
|
306
304
|
* @return {ScriptableNode} A reference to this node.
|
|
307
305
|
*/
|
|
308
306
|
setParameter( name, value ) {
|
|
@@ -353,7 +351,7 @@ class ScriptableNode extends Node {
|
|
|
353
351
|
/**
|
|
354
352
|
* Deletes a parameter from the script.
|
|
355
353
|
*
|
|
356
|
-
* @param {
|
|
354
|
+
* @param {string} name - The parameter to remove.
|
|
357
355
|
* @return {ScriptableNode} A reference to this node.
|
|
358
356
|
*/
|
|
359
357
|
deleteParameter( name ) {
|
|
@@ -394,9 +392,9 @@ class ScriptableNode extends Node {
|
|
|
394
392
|
/**
|
|
395
393
|
* Calls a function from the script.
|
|
396
394
|
*
|
|
397
|
-
* @param {
|
|
398
|
-
* @param {...
|
|
399
|
-
* @return {
|
|
395
|
+
* @param {string} name - The function name.
|
|
396
|
+
* @param {...any} params - A list of parameters.
|
|
397
|
+
* @return {any} The result of the function call.
|
|
400
398
|
*/
|
|
401
399
|
call( name, ...params ) {
|
|
402
400
|
|
|
@@ -414,9 +412,9 @@ class ScriptableNode extends Node {
|
|
|
414
412
|
/**
|
|
415
413
|
* Asynchronously calls a function from the script.
|
|
416
414
|
*
|
|
417
|
-
* @param {
|
|
418
|
-
* @param {...
|
|
419
|
-
* @return {Promise<
|
|
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.
|
|
420
418
|
*/
|
|
421
419
|
async callAsync( name, ...params ) {
|
|
422
420
|
|
|
@@ -435,7 +433,7 @@ class ScriptableNode extends Node {
|
|
|
435
433
|
* Overwritten since the node types is inferred from the script's output.
|
|
436
434
|
*
|
|
437
435
|
* @param {NodeBuilder} builder - The current node builder
|
|
438
|
-
* @return {
|
|
436
|
+
* @return {string} The node type.
|
|
439
437
|
*/
|
|
440
438
|
getNodeType( builder ) {
|
|
441
439
|
|
|
@@ -446,7 +444,7 @@ class ScriptableNode extends Node {
|
|
|
446
444
|
/**
|
|
447
445
|
* Refreshes the script node.
|
|
448
446
|
*
|
|
449
|
-
* @param {
|
|
447
|
+
* @param {?string} [output=null] - An optional output.
|
|
450
448
|
*/
|
|
451
449
|
refresh( output = null ) {
|
|
452
450
|
|
|
@@ -719,9 +717,10 @@ export default ScriptableNode;
|
|
|
719
717
|
/**
|
|
720
718
|
* TSL function for creating a scriptable node.
|
|
721
719
|
*
|
|
720
|
+
* @tsl
|
|
722
721
|
* @function
|
|
723
|
-
* @param {CodeNode
|
|
724
|
-
* @param {Object} [parameters={}] - The parameters definition.
|
|
722
|
+
* @param {CodeNode} [codeNode] - The code node.
|
|
723
|
+
* @param {?Object} [parameters={}] - The parameters definition.
|
|
725
724
|
* @returns {ScriptableNode}
|
|
726
725
|
*/
|
|
727
|
-
export const scriptable = /*@__PURE__*/ nodeProxy( ScriptableNode );
|
|
726
|
+
export const scriptable = /*@__PURE__*/ nodeProxy( ScriptableNode ).setParameterLength( 1, 2 );
|
|
@@ -4,8 +4,6 @@ import { nodeProxy, float } from '../tsl/TSLBase.js';
|
|
|
4
4
|
|
|
5
5
|
import { EventDispatcher } from '../../core/EventDispatcher.js';
|
|
6
6
|
|
|
7
|
-
/** @module ScriptableValueNode **/
|
|
8
|
-
|
|
9
7
|
/**
|
|
10
8
|
* `ScriptableNode` uses this class to manage script inputs and outputs.
|
|
11
9
|
*
|
|
@@ -22,7 +20,7 @@ class ScriptableValueNode extends Node {
|
|
|
22
20
|
/**
|
|
23
21
|
* Constructs a new scriptable node.
|
|
24
22
|
*
|
|
25
|
-
* @param {
|
|
23
|
+
* @param {any} [value=null] - The value.
|
|
26
24
|
*/
|
|
27
25
|
constructor( value = null ) {
|
|
28
26
|
|
|
@@ -47,7 +45,7 @@ class ScriptableValueNode extends Node {
|
|
|
47
45
|
/**
|
|
48
46
|
* If this node represents an input, this property represents the input type.
|
|
49
47
|
*
|
|
50
|
-
* @type {
|
|
48
|
+
* @type {?string}
|
|
51
49
|
* @default null
|
|
52
50
|
*/
|
|
53
51
|
this.inputType = null;
|
|
@@ -55,7 +53,7 @@ class ScriptableValueNode extends Node {
|
|
|
55
53
|
/**
|
|
56
54
|
* If this node represents an output, this property represents the output type.
|
|
57
55
|
*
|
|
58
|
-
* @type {
|
|
56
|
+
* @type {?string}
|
|
59
57
|
* @default null
|
|
60
58
|
*/
|
|
61
59
|
this.outputType = null;
|
|
@@ -70,7 +68,7 @@ class ScriptableValueNode extends Node {
|
|
|
70
68
|
/**
|
|
71
69
|
* This flag can be used for type testing.
|
|
72
70
|
*
|
|
73
|
-
* @type {
|
|
71
|
+
* @type {boolean}
|
|
74
72
|
* @readonly
|
|
75
73
|
* @default true
|
|
76
74
|
*/
|
|
@@ -81,7 +79,7 @@ class ScriptableValueNode extends Node {
|
|
|
81
79
|
/**
|
|
82
80
|
* Whether this node represents an output or not.
|
|
83
81
|
*
|
|
84
|
-
* @type {
|
|
82
|
+
* @type {boolean}
|
|
85
83
|
* @readonly
|
|
86
84
|
* @default true
|
|
87
85
|
*/
|
|
@@ -114,7 +112,7 @@ class ScriptableValueNode extends Node {
|
|
|
114
112
|
/**
|
|
115
113
|
* The node's value.
|
|
116
114
|
*
|
|
117
|
-
* @type {
|
|
115
|
+
* @type {any}
|
|
118
116
|
*/
|
|
119
117
|
get value() {
|
|
120
118
|
|
|
@@ -135,7 +133,7 @@ class ScriptableValueNode extends Node {
|
|
|
135
133
|
* The `value` property usually represents a node or even binary data in form of array buffers.
|
|
136
134
|
* In this case, this method tries to return the actual value behind the complex type.
|
|
137
135
|
*
|
|
138
|
-
* @return {
|
|
136
|
+
* @return {any} The value.
|
|
139
137
|
*/
|
|
140
138
|
getValue() {
|
|
141
139
|
|
|
@@ -168,7 +166,7 @@ class ScriptableValueNode extends Node {
|
|
|
168
166
|
* Overwritten since the node type is inferred from the value.
|
|
169
167
|
*
|
|
170
168
|
* @param {NodeBuilder} builder - The current node builder.
|
|
171
|
-
* @return {
|
|
169
|
+
* @return {string} The node type.
|
|
172
170
|
*/
|
|
173
171
|
getNodeType( builder ) {
|
|
174
172
|
|
|
@@ -247,8 +245,9 @@ export default ScriptableValueNode;
|
|
|
247
245
|
/**
|
|
248
246
|
* TSL function for creating a scriptable value node.
|
|
249
247
|
*
|
|
248
|
+
* @tsl
|
|
250
249
|
* @function
|
|
251
|
-
* @param {
|
|
250
|
+
* @param {any} [value] - The value.
|
|
252
251
|
* @returns {ScriptableValueNode}
|
|
253
252
|
*/
|
|
254
|
-
export const scriptableValue = /*@__PURE__*/ nodeProxy( ScriptableValueNode );
|
|
253
|
+
export const scriptableValue = /*@__PURE__*/ nodeProxy( ScriptableValueNode ).setParameterLength( 1 );
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import TempNode from './TempNode.js';
|
|
2
2
|
import { addMethodChaining, nodeObject } from '../tsl/TSLCore.js';
|
|
3
3
|
|
|
4
|
-
/** @module ArrayNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
|
-
* ArrayNode represents a collection of nodes, typically created using the {@link
|
|
5
|
+
* ArrayNode represents a collection of nodes, typically created using the {@link array} function.
|
|
8
6
|
* ```js
|
|
9
7
|
* const colors = array( [
|
|
10
8
|
* vec3( 1, 0, 0 ),
|
|
@@ -14,7 +12,7 @@ import { addMethodChaining, nodeObject } from '../tsl/TSLCore.js';
|
|
|
14
12
|
*
|
|
15
13
|
* const redColor = tintColors.element( 0 );
|
|
16
14
|
*
|
|
17
|
-
* @augments
|
|
15
|
+
* @augments TempNode
|
|
18
16
|
*/
|
|
19
17
|
class ArrayNode extends TempNode {
|
|
20
18
|
|
|
@@ -27,9 +25,9 @@ class ArrayNode extends TempNode {
|
|
|
27
25
|
/**
|
|
28
26
|
* Constructs a new array node.
|
|
29
27
|
*
|
|
30
|
-
* @param {
|
|
31
|
-
* @param {
|
|
32
|
-
* @param {Array<Node
|
|
28
|
+
* @param {?string} nodeType - The data type of the elements.
|
|
29
|
+
* @param {number} count - Size of the array.
|
|
30
|
+
* @param {?Array<Node>} [values=null] - Array default values.
|
|
33
31
|
*/
|
|
34
32
|
constructor( nodeType, count, values = null ) {
|
|
35
33
|
|
|
@@ -38,21 +36,21 @@ class ArrayNode extends TempNode {
|
|
|
38
36
|
/**
|
|
39
37
|
* Array size.
|
|
40
38
|
*
|
|
41
|
-
* @type {
|
|
39
|
+
* @type {number}
|
|
42
40
|
*/
|
|
43
41
|
this.count = count;
|
|
44
42
|
|
|
45
43
|
/**
|
|
46
44
|
* Array default values.
|
|
47
45
|
*
|
|
48
|
-
* @type {Array<Node>}
|
|
46
|
+
* @type {?Array<Node>}
|
|
49
47
|
*/
|
|
50
48
|
this.values = values;
|
|
51
49
|
|
|
52
50
|
/**
|
|
53
51
|
* This flag can be used for type testing.
|
|
54
52
|
*
|
|
55
|
-
* @type {
|
|
53
|
+
* @type {boolean}
|
|
56
54
|
* @readonly
|
|
57
55
|
* @default true
|
|
58
56
|
*/
|
|
@@ -60,6 +58,12 @@ class ArrayNode extends TempNode {
|
|
|
60
58
|
|
|
61
59
|
}
|
|
62
60
|
|
|
61
|
+
/**
|
|
62
|
+
* Returns the node's type.
|
|
63
|
+
*
|
|
64
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
65
|
+
* @return {string} The type of the node.
|
|
66
|
+
*/
|
|
63
67
|
getNodeType( builder ) {
|
|
64
68
|
|
|
65
69
|
if ( this.nodeType === null ) {
|
|
@@ -72,12 +76,24 @@ class ArrayNode extends TempNode {
|
|
|
72
76
|
|
|
73
77
|
}
|
|
74
78
|
|
|
79
|
+
/**
|
|
80
|
+
* Returns the node's type.
|
|
81
|
+
*
|
|
82
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
83
|
+
* @return {string} The type of the node.
|
|
84
|
+
*/
|
|
75
85
|
getElementType( builder ) {
|
|
76
86
|
|
|
77
87
|
return this.getNodeType( builder );
|
|
78
88
|
|
|
79
89
|
}
|
|
80
90
|
|
|
91
|
+
/**
|
|
92
|
+
* This method builds the output node and returns the resulting array as a shader string.
|
|
93
|
+
*
|
|
94
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
95
|
+
* @return {string} The generated shader string.
|
|
96
|
+
*/
|
|
81
97
|
generate( builder ) {
|
|
82
98
|
|
|
83
99
|
const type = this.getNodeType( builder );
|
|
@@ -93,10 +109,11 @@ export default ArrayNode;
|
|
|
93
109
|
/**
|
|
94
110
|
* TSL function for creating an array node.
|
|
95
111
|
*
|
|
112
|
+
* @tsl
|
|
96
113
|
* @function
|
|
97
|
-
* @param {
|
|
114
|
+
* @param {string|Array<Node>} nodeTypeOrValues - A string representing the element type (e.g., 'vec3')
|
|
98
115
|
* or an array containing the default values (e.g., [ vec3() ]).
|
|
99
|
-
* @param {
|
|
116
|
+
* @param {?number} [count] - Size of the array.
|
|
100
117
|
* @returns {ArrayNode}
|
|
101
118
|
*/
|
|
102
119
|
export const array = ( ...params ) => {
|