super-three 0.173.5 → 0.175.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
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { sub, mul, div, add } from './OperatorNode.js';
|
|
2
2
|
import { PI, pow, sin } from './MathNode.js';
|
|
3
3
|
|
|
4
|
-
/** @module MathUtils **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* A function that remaps the `[0,1]` interval into the `[0,1]` interval.
|
|
8
6
|
* The corners are mapped to `0` and the center to `1`.
|
|
9
7
|
* Reference: {@link https://iquilezles.org/articles/functions/}.
|
|
10
8
|
*
|
|
11
|
-
* @
|
|
9
|
+
* @tsl
|
|
10
|
+
* @function
|
|
12
11
|
* @param {Node<float>} x - The value to remap.
|
|
13
12
|
* @param {Node<float>} k - Allows to control the remapping functions shape by rising the parabola to a power `k`.
|
|
14
13
|
* @return {Node<float>} The remapped value.
|
|
@@ -20,7 +19,8 @@ export const parabola = ( x, k ) => pow( mul( 4.0, x.mul( sub( 1.0, x ) ) ), k )
|
|
|
20
19
|
* Expands the sides and compresses the center, and keeps `0.5` mapped to `0.5`.
|
|
21
20
|
* Reference: {@link https://iquilezles.org/articles/functions/}.
|
|
22
21
|
*
|
|
23
|
-
* @
|
|
22
|
+
* @tsl
|
|
23
|
+
* @function
|
|
24
24
|
* @param {Node<float>} x - The value to remap.
|
|
25
25
|
* @param {Node<float>} k - `k=1` is the identity curve,`k<1` produces the classic `gain()` shape, and `k>1` produces "s" shaped curves.
|
|
26
26
|
* @return {Node<float>} The remapped value.
|
|
@@ -32,7 +32,8 @@ export const gain = ( x, k ) => x.lessThan( 0.5 ) ? parabola( x.mul( 2.0 ), k ).
|
|
|
32
32
|
* A generalization of the `parabola()`. Keeps the corners mapped to 0 but allows the control of the shape one either side of the curve.
|
|
33
33
|
* Reference: {@link https://iquilezles.org/articles/functions/}.
|
|
34
34
|
*
|
|
35
|
-
* @
|
|
35
|
+
* @tsl
|
|
36
|
+
* @function
|
|
36
37
|
* @param {Node<float>} x - The value to remap.
|
|
37
38
|
* @param {Node<float>} a - First control parameter.
|
|
38
39
|
* @param {Node<float>} b - Second control parameter.
|
|
@@ -44,7 +45,8 @@ export const pcurve = ( x, a, b ) => pow( div( pow( x, a ), add( pow( x, a ), po
|
|
|
44
45
|
* A phase shifted sinus curve that starts at zero and ends at zero, with bouncing behavior.
|
|
45
46
|
* Reference: {@link https://iquilezles.org/articles/functions/}.
|
|
46
47
|
*
|
|
47
|
-
* @
|
|
48
|
+
* @tsl
|
|
49
|
+
* @function
|
|
48
50
|
* @param {Node<float>} x - The value to compute the sin for.
|
|
49
51
|
* @param {Node<float>} k - Controls the amount of bounces.
|
|
50
52
|
* @return {Node<float>} The result value.
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
+
import { WebGLCoordinateSystem } from '../../constants.js';
|
|
1
2
|
import TempNode from '../core/TempNode.js';
|
|
2
|
-
import { addMethodChaining, nodeProxy } from '../tsl/TSLCore.js';
|
|
3
|
-
|
|
4
|
-
/** @module OperatorNode **/
|
|
3
|
+
import { addMethodChaining, int, nodeProxy } from '../tsl/TSLCore.js';
|
|
5
4
|
|
|
6
5
|
/**
|
|
7
6
|
* This node represents basic mathematical and logical operations like addition,
|
|
@@ -20,7 +19,7 @@ class OperatorNode extends TempNode {
|
|
|
20
19
|
/**
|
|
21
20
|
* Constructs a new operator node.
|
|
22
21
|
*
|
|
23
|
-
* @param {
|
|
22
|
+
* @param {string} op - The operator.
|
|
24
23
|
* @param {Node} aNode - The first input.
|
|
25
24
|
* @param {Node} bNode - The second input.
|
|
26
25
|
* @param {...Node} params - Additional input parameters.
|
|
@@ -47,7 +46,7 @@ class OperatorNode extends TempNode {
|
|
|
47
46
|
/**
|
|
48
47
|
* The operator.
|
|
49
48
|
*
|
|
50
|
-
* @type {
|
|
49
|
+
* @type {string}
|
|
51
50
|
*/
|
|
52
51
|
this.op = op;
|
|
53
52
|
|
|
@@ -68,7 +67,7 @@ class OperatorNode extends TempNode {
|
|
|
68
67
|
/**
|
|
69
68
|
* This flag can be used for type testing.
|
|
70
69
|
*
|
|
71
|
-
* @type {
|
|
70
|
+
* @type {boolean}
|
|
72
71
|
* @readonly
|
|
73
72
|
* @default true
|
|
74
73
|
*/
|
|
@@ -81,8 +80,8 @@ class OperatorNode extends TempNode {
|
|
|
81
80
|
* and the input node types.
|
|
82
81
|
*
|
|
83
82
|
* @param {NodeBuilder} builder - The current node builder.
|
|
84
|
-
* @param {
|
|
85
|
-
* @return {
|
|
83
|
+
* @param {string} output - The current output string.
|
|
84
|
+
* @return {string} The node type.
|
|
86
85
|
*/
|
|
87
86
|
getNodeType( builder, output ) {
|
|
88
87
|
|
|
@@ -106,7 +105,7 @@ class OperatorNode extends TempNode {
|
|
|
106
105
|
|
|
107
106
|
return builder.getIntegerType( typeA );
|
|
108
107
|
|
|
109
|
-
} else if ( op === '!' || op === '==' || op === '&&' || op === '||' || op === '^^' ) {
|
|
108
|
+
} else if ( op === '!' || op === '==' || op === '!=' || op === '&&' || op === '||' || op === '^^' ) {
|
|
110
109
|
|
|
111
110
|
return 'bool';
|
|
112
111
|
|
|
@@ -119,6 +118,7 @@ class OperatorNode extends TempNode {
|
|
|
119
118
|
} else {
|
|
120
119
|
|
|
121
120
|
// Handle matrix operations
|
|
121
|
+
|
|
122
122
|
if ( builder.isMatrix( typeA ) ) {
|
|
123
123
|
|
|
124
124
|
if ( typeB === 'float' ) {
|
|
@@ -150,6 +150,7 @@ class OperatorNode extends TempNode {
|
|
|
150
150
|
}
|
|
151
151
|
|
|
152
152
|
// Handle non-matrix cases
|
|
153
|
+
|
|
153
154
|
if ( builder.getTypeLength( typeB ) > builder.getTypeLength( typeA ) ) {
|
|
154
155
|
|
|
155
156
|
// anytype x anytype: use the greater length vector
|
|
@@ -181,7 +182,7 @@ class OperatorNode extends TempNode {
|
|
|
181
182
|
typeA = aNode.getNodeType( builder );
|
|
182
183
|
typeB = typeof bNode !== 'undefined' ? bNode.getNodeType( builder ) : null;
|
|
183
184
|
|
|
184
|
-
if ( op === '<' || op === '>' || op === '<=' || op === '>=' || op === '==' ) {
|
|
185
|
+
if ( op === '<' || op === '>' || op === '<=' || op === '>=' || op === '==' || op === '!=' ) {
|
|
185
186
|
|
|
186
187
|
if ( builder.isVector( typeA ) ) {
|
|
187
188
|
|
|
@@ -198,11 +199,17 @@ class OperatorNode extends TempNode {
|
|
|
198
199
|
typeA = type;
|
|
199
200
|
typeB = builder.changeComponentType( typeB, 'uint' );
|
|
200
201
|
|
|
202
|
+
} else if ( op === '%' ) {
|
|
203
|
+
|
|
204
|
+
typeA = type;
|
|
205
|
+
typeB = builder.isInteger( typeA ) && builder.isInteger( typeB ) ? typeB : typeA;
|
|
206
|
+
|
|
201
207
|
} else if ( builder.isMatrix( typeA ) ) {
|
|
202
208
|
|
|
203
209
|
if ( typeB === 'float' ) {
|
|
204
210
|
|
|
205
211
|
// Keep matrix type for typeA, but ensure typeB stays float
|
|
212
|
+
|
|
206
213
|
typeB = 'float';
|
|
207
214
|
|
|
208
215
|
} else if ( builder.isVector( typeB ) ) {
|
|
@@ -211,7 +218,9 @@ class OperatorNode extends TempNode {
|
|
|
211
218
|
typeB = builder.getVectorFromMatrix( typeA );
|
|
212
219
|
|
|
213
220
|
} else if ( builder.isMatrix( typeB ) ) {
|
|
221
|
+
|
|
214
222
|
// matrix x matrix - keep both types
|
|
223
|
+
|
|
215
224
|
} else {
|
|
216
225
|
|
|
217
226
|
typeA = typeB = type;
|
|
@@ -223,11 +232,13 @@ class OperatorNode extends TempNode {
|
|
|
223
232
|
if ( typeA === 'float' ) {
|
|
224
233
|
|
|
225
234
|
// Keep matrix type for typeB, but ensure typeA stays float
|
|
235
|
+
|
|
226
236
|
typeA = 'float';
|
|
227
237
|
|
|
228
238
|
} else if ( builder.isVector( typeA ) ) {
|
|
229
239
|
|
|
230
240
|
// vector x matrix
|
|
241
|
+
|
|
231
242
|
typeA = builder.getVectorFromMatrix( typeB );
|
|
232
243
|
|
|
233
244
|
} else {
|
|
@@ -258,54 +269,106 @@ class OperatorNode extends TempNode {
|
|
|
258
269
|
|
|
259
270
|
if ( output !== 'void' ) {
|
|
260
271
|
|
|
261
|
-
|
|
272
|
+
const isGLSL = builder.renderer.coordinateSystem === WebGLCoordinateSystem;
|
|
273
|
+
|
|
274
|
+
if ( op === '==' ) {
|
|
275
|
+
|
|
276
|
+
if ( isGLSL ) {
|
|
277
|
+
|
|
278
|
+
if ( outputLength > 1 ) {
|
|
279
|
+
|
|
280
|
+
return builder.format( `${ builder.getMethod( 'equal', output ) }( ${ a }, ${ b } )`, type, output );
|
|
281
|
+
|
|
282
|
+
} else {
|
|
283
|
+
|
|
284
|
+
return builder.format( `( ${ a } ${ op } ${ b } )`, type, output );
|
|
285
|
+
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
} else {
|
|
289
|
+
|
|
290
|
+
// WGSL
|
|
291
|
+
|
|
292
|
+
if ( outputLength > 1 || ! builder.isVector( typeA ) ) {
|
|
293
|
+
|
|
294
|
+
return builder.format( `( ${ a } == ${ b } )`, type, output );
|
|
295
|
+
|
|
296
|
+
} else {
|
|
297
|
+
|
|
298
|
+
return builder.format( `all( ${ a } == ${ b } )`, type, output );
|
|
299
|
+
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
} else if ( op === '<' && outputLength > 1 ) {
|
|
262
305
|
|
|
263
|
-
if (
|
|
306
|
+
if ( isGLSL ) {
|
|
264
307
|
|
|
265
308
|
return builder.format( `${ builder.getMethod( 'lessThan', output ) }( ${ a }, ${ b } )`, type, output );
|
|
266
309
|
|
|
267
310
|
} else {
|
|
268
311
|
|
|
312
|
+
// WGSL
|
|
313
|
+
|
|
269
314
|
return builder.format( `( ${ a } < ${ b } )`, type, output );
|
|
270
315
|
|
|
271
316
|
}
|
|
272
317
|
|
|
273
318
|
} else if ( op === '<=' && outputLength > 1 ) {
|
|
274
319
|
|
|
275
|
-
if (
|
|
320
|
+
if ( isGLSL ) {
|
|
276
321
|
|
|
277
322
|
return builder.format( `${ builder.getMethod( 'lessThanEqual', output ) }( ${ a }, ${ b } )`, type, output );
|
|
278
323
|
|
|
279
324
|
} else {
|
|
280
325
|
|
|
326
|
+
// WGSL
|
|
327
|
+
|
|
281
328
|
return builder.format( `( ${ a } <= ${ b } )`, type, output );
|
|
282
329
|
|
|
283
330
|
}
|
|
284
331
|
|
|
285
332
|
} else if ( op === '>' && outputLength > 1 ) {
|
|
286
333
|
|
|
287
|
-
if (
|
|
334
|
+
if ( isGLSL ) {
|
|
288
335
|
|
|
289
336
|
return builder.format( `${ builder.getMethod( 'greaterThan', output ) }( ${ a }, ${ b } )`, type, output );
|
|
290
337
|
|
|
291
338
|
} else {
|
|
292
339
|
|
|
340
|
+
// WGSL
|
|
341
|
+
|
|
293
342
|
return builder.format( `( ${ a } > ${ b } )`, type, output );
|
|
294
343
|
|
|
295
344
|
}
|
|
296
345
|
|
|
297
346
|
} else if ( op === '>=' && outputLength > 1 ) {
|
|
298
347
|
|
|
299
|
-
if (
|
|
348
|
+
if ( isGLSL ) {
|
|
300
349
|
|
|
301
350
|
return builder.format( `${ builder.getMethod( 'greaterThanEqual', output ) }( ${ a }, ${ b } )`, type, output );
|
|
302
351
|
|
|
303
352
|
} else {
|
|
304
353
|
|
|
354
|
+
// WGSL
|
|
355
|
+
|
|
305
356
|
return builder.format( `( ${ a } >= ${ b } )`, type, output );
|
|
306
357
|
|
|
307
358
|
}
|
|
308
359
|
|
|
360
|
+
} else if ( op === '%' ) {
|
|
361
|
+
|
|
362
|
+
if ( builder.isInteger( typeB ) ) {
|
|
363
|
+
|
|
364
|
+
return builder.format( `( ${ a } % ${ b } )`, type, output );
|
|
365
|
+
|
|
366
|
+
} else {
|
|
367
|
+
|
|
368
|
+
return builder.format( `${ builder.getMethod( 'mod', type ) }( ${ a }, ${ b } )`, type, output );
|
|
369
|
+
|
|
370
|
+
}
|
|
371
|
+
|
|
309
372
|
} else if ( op === '!' || op === '~' ) {
|
|
310
373
|
|
|
311
374
|
return builder.format( `(${op}${a})`, typeA, output );
|
|
@@ -317,6 +380,7 @@ class OperatorNode extends TempNode {
|
|
|
317
380
|
} else {
|
|
318
381
|
|
|
319
382
|
// Handle matrix operations
|
|
383
|
+
|
|
320
384
|
if ( builder.isMatrix( typeA ) && typeB === 'float' ) {
|
|
321
385
|
|
|
322
386
|
return builder.format( `( ${ b } ${ op } ${ a } )`, type, output );
|
|
@@ -327,7 +391,15 @@ class OperatorNode extends TempNode {
|
|
|
327
391
|
|
|
328
392
|
} else {
|
|
329
393
|
|
|
330
|
-
|
|
394
|
+
let snippet = `( ${ a } ${ op } ${ b } )`;
|
|
395
|
+
|
|
396
|
+
if ( ! isGLSL && type === 'bool' && builder.isVector( typeA ) && builder.isVector( typeB ) ) {
|
|
397
|
+
|
|
398
|
+
snippet = `all${ snippet }`;
|
|
399
|
+
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
return builder.format( snippet, type, output );
|
|
331
403
|
|
|
332
404
|
}
|
|
333
405
|
|
|
@@ -380,222 +452,240 @@ export default OperatorNode;
|
|
|
380
452
|
/**
|
|
381
453
|
* Returns the addition of two or more value.
|
|
382
454
|
*
|
|
455
|
+
* @tsl
|
|
383
456
|
* @function
|
|
384
|
-
* @param {Node}
|
|
385
|
-
* @param {Node}
|
|
457
|
+
* @param {Node} a - The first input.
|
|
458
|
+
* @param {Node} b - The second input.
|
|
386
459
|
* @param {...Node} params - Additional input parameters.
|
|
387
460
|
* @returns {OperatorNode}
|
|
388
461
|
*/
|
|
389
|
-
export const add = /*@__PURE__*/ nodeProxy( OperatorNode, '+' );
|
|
462
|
+
export const add = /*@__PURE__*/ nodeProxy( OperatorNode, '+' ).setParameterLength( 2, Infinity ).setName( 'add' );
|
|
390
463
|
|
|
391
464
|
/**
|
|
392
465
|
* Returns the subtraction of two or more value.
|
|
393
466
|
*
|
|
467
|
+
* @tsl
|
|
394
468
|
* @function
|
|
395
|
-
* @param {Node}
|
|
396
|
-
* @param {Node}
|
|
469
|
+
* @param {Node} a - The first input.
|
|
470
|
+
* @param {Node} b - The second input.
|
|
397
471
|
* @param {...Node} params - Additional input parameters.
|
|
398
472
|
* @returns {OperatorNode}
|
|
399
473
|
*/
|
|
400
|
-
export const sub = /*@__PURE__*/ nodeProxy( OperatorNode, '-' );
|
|
474
|
+
export const sub = /*@__PURE__*/ nodeProxy( OperatorNode, '-' ).setParameterLength( 2, Infinity ).setName( 'sub' );
|
|
401
475
|
|
|
402
476
|
/**
|
|
403
477
|
* Returns the multiplication of two or more value.
|
|
404
478
|
*
|
|
479
|
+
* @tsl
|
|
405
480
|
* @function
|
|
406
|
-
* @param {Node}
|
|
407
|
-
* @param {Node}
|
|
481
|
+
* @param {Node} a - The first input.
|
|
482
|
+
* @param {Node} b - The second input.
|
|
408
483
|
* @param {...Node} params - Additional input parameters.
|
|
409
484
|
* @returns {OperatorNode}
|
|
410
485
|
*/
|
|
411
|
-
export const mul = /*@__PURE__*/ nodeProxy( OperatorNode, '*' );
|
|
486
|
+
export const mul = /*@__PURE__*/ nodeProxy( OperatorNode, '*' ).setParameterLength( 2, Infinity ).setName( 'mul' );
|
|
412
487
|
|
|
413
488
|
/**
|
|
414
489
|
* Returns the division of two or more value.
|
|
415
490
|
*
|
|
491
|
+
* @tsl
|
|
416
492
|
* @function
|
|
417
|
-
* @param {Node}
|
|
418
|
-
* @param {Node}
|
|
493
|
+
* @param {Node} a - The first input.
|
|
494
|
+
* @param {Node} b - The second input.
|
|
419
495
|
* @param {...Node} params - Additional input parameters.
|
|
420
496
|
* @returns {OperatorNode}
|
|
421
497
|
*/
|
|
422
|
-
export const div = /*@__PURE__*/ nodeProxy( OperatorNode, '/' );
|
|
498
|
+
export const div = /*@__PURE__*/ nodeProxy( OperatorNode, '/' ).setParameterLength( 2, Infinity ).setName( 'div' );
|
|
423
499
|
|
|
424
500
|
/**
|
|
425
|
-
* Computes the remainder of dividing the first node by the second
|
|
501
|
+
* Computes the remainder of dividing the first node by the second one.
|
|
426
502
|
*
|
|
503
|
+
* @tsl
|
|
427
504
|
* @function
|
|
428
|
-
* @param {Node}
|
|
429
|
-
* @param {Node}
|
|
505
|
+
* @param {Node} a - The first input.
|
|
506
|
+
* @param {Node} b - The second input.
|
|
430
507
|
* @returns {OperatorNode}
|
|
431
508
|
*/
|
|
432
|
-
export const
|
|
509
|
+
export const mod = /*@__PURE__*/ nodeProxy( OperatorNode, '%' ).setParameterLength( 2 ).setName( 'mod' );
|
|
433
510
|
|
|
434
511
|
/**
|
|
435
512
|
* Checks if two nodes are equal.
|
|
436
513
|
*
|
|
514
|
+
* @tsl
|
|
437
515
|
* @function
|
|
438
|
-
* @param {Node}
|
|
439
|
-
* @param {Node}
|
|
516
|
+
* @param {Node} a - The first input.
|
|
517
|
+
* @param {Node} b - The second input.
|
|
440
518
|
* @returns {OperatorNode}
|
|
441
519
|
*/
|
|
442
|
-
export const equal = /*@__PURE__*/ nodeProxy( OperatorNode, '==' );
|
|
520
|
+
export const equal = /*@__PURE__*/ nodeProxy( OperatorNode, '==' ).setParameterLength( 2 ).setName( 'equal' );
|
|
443
521
|
|
|
444
522
|
/**
|
|
445
523
|
* Checks if two nodes are not equal.
|
|
446
524
|
*
|
|
525
|
+
* @tsl
|
|
447
526
|
* @function
|
|
448
|
-
* @param {Node}
|
|
449
|
-
* @param {Node}
|
|
527
|
+
* @param {Node} a - The first input.
|
|
528
|
+
* @param {Node} b - The second input.
|
|
450
529
|
* @returns {OperatorNode}
|
|
451
530
|
*/
|
|
452
|
-
export const notEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '!=' );
|
|
531
|
+
export const notEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '!=' ).setParameterLength( 2 ).setName( 'notEqual' );
|
|
453
532
|
|
|
454
533
|
/**
|
|
455
534
|
* Checks if the first node is less than the second.
|
|
456
535
|
*
|
|
536
|
+
* @tsl
|
|
457
537
|
* @function
|
|
458
|
-
* @param {Node}
|
|
459
|
-
* @param {Node}
|
|
538
|
+
* @param {Node} a - The first input.
|
|
539
|
+
* @param {Node} b - The second input.
|
|
460
540
|
* @returns {OperatorNode}
|
|
461
541
|
*/
|
|
462
|
-
export const lessThan = /*@__PURE__*/ nodeProxy( OperatorNode, '<' );
|
|
542
|
+
export const lessThan = /*@__PURE__*/ nodeProxy( OperatorNode, '<' ).setParameterLength( 2 ).setName( 'lessThan' );
|
|
463
543
|
|
|
464
544
|
/**
|
|
465
545
|
* Checks if the first node is greater than the second.
|
|
466
546
|
*
|
|
547
|
+
* @tsl
|
|
467
548
|
* @function
|
|
468
|
-
* @param {Node}
|
|
469
|
-
* @param {Node}
|
|
549
|
+
* @param {Node} a - The first input.
|
|
550
|
+
* @param {Node} b - The second input.
|
|
470
551
|
* @returns {OperatorNode}
|
|
471
552
|
*/
|
|
472
|
-
export const greaterThan = /*@__PURE__*/ nodeProxy( OperatorNode, '>' );
|
|
553
|
+
export const greaterThan = /*@__PURE__*/ nodeProxy( OperatorNode, '>' ).setParameterLength( 2 ).setName( 'greaterThan' );
|
|
473
554
|
|
|
474
555
|
/**
|
|
475
556
|
* Checks if the first node is less than or equal to the second.
|
|
476
557
|
*
|
|
558
|
+
* @tsl
|
|
477
559
|
* @function
|
|
478
|
-
* @param {Node}
|
|
479
|
-
* @param {Node}
|
|
560
|
+
* @param {Node} a - The first input.
|
|
561
|
+
* @param {Node} b - The second input.
|
|
480
562
|
* @returns {OperatorNode}
|
|
481
563
|
*/
|
|
482
|
-
export const lessThanEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '<=' );
|
|
564
|
+
export const lessThanEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '<=' ).setParameterLength( 2 ).setName( 'lessThanEqual' );
|
|
483
565
|
|
|
484
566
|
/**
|
|
485
567
|
* Checks if the first node is greater than or equal to the second.
|
|
486
568
|
*
|
|
569
|
+
* @tsl
|
|
487
570
|
* @function
|
|
488
|
-
* @param {Node}
|
|
489
|
-
* @param {Node}
|
|
571
|
+
* @param {Node} a - The first input.
|
|
572
|
+
* @param {Node} b - The second input.
|
|
490
573
|
* @returns {OperatorNode}
|
|
491
574
|
*/
|
|
492
|
-
export const greaterThanEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '>=' );
|
|
575
|
+
export const greaterThanEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '>=' ).setParameterLength( 2 ).setName( 'greaterThanEqual' );
|
|
493
576
|
|
|
494
577
|
/**
|
|
495
|
-
* Performs logical AND on
|
|
578
|
+
* Performs a logical AND operation on multiple nodes.
|
|
496
579
|
*
|
|
580
|
+
* @tsl
|
|
497
581
|
* @function
|
|
498
|
-
* @param {Node}
|
|
499
|
-
* @param {Node} bNode - The second input.
|
|
582
|
+
* @param {...Node} nodes - The input nodes to be combined using AND.
|
|
500
583
|
* @returns {OperatorNode}
|
|
501
584
|
*/
|
|
502
|
-
export const and = /*@__PURE__*/ nodeProxy( OperatorNode, '&&' );
|
|
585
|
+
export const and = /*@__PURE__*/ nodeProxy( OperatorNode, '&&' ).setParameterLength( 2, Infinity ).setName( 'and' );
|
|
503
586
|
|
|
504
587
|
/**
|
|
505
|
-
* Performs logical OR on
|
|
588
|
+
* Performs a logical OR operation on multiple nodes.
|
|
506
589
|
*
|
|
590
|
+
* @tsl
|
|
507
591
|
* @function
|
|
508
|
-
* @param {Node}
|
|
509
|
-
* @param {Node} bNode - The second input.
|
|
592
|
+
* @param {...Node} nodes - The input nodes to be combined using OR.
|
|
510
593
|
* @returns {OperatorNode}
|
|
511
594
|
*/
|
|
512
|
-
export const or = /*@__PURE__*/ nodeProxy( OperatorNode, '||' );
|
|
595
|
+
export const or = /*@__PURE__*/ nodeProxy( OperatorNode, '||' ).setParameterLength( 2, Infinity ).setName( 'or' );
|
|
513
596
|
|
|
514
597
|
/**
|
|
515
598
|
* Performs logical NOT on a node.
|
|
516
599
|
*
|
|
600
|
+
* @tsl
|
|
517
601
|
* @function
|
|
518
|
-
* @param {Node}
|
|
519
|
-
* @param {Node} bNode - The second input.
|
|
602
|
+
* @param {Node} value - The value.
|
|
520
603
|
* @returns {OperatorNode}
|
|
521
604
|
*/
|
|
522
|
-
export const not = /*@__PURE__*/ nodeProxy( OperatorNode, '!' );
|
|
605
|
+
export const not = /*@__PURE__*/ nodeProxy( OperatorNode, '!' ).setParameterLength( 1 ).setName( 'not' );
|
|
523
606
|
|
|
524
607
|
/**
|
|
525
608
|
* Performs logical XOR on two nodes.
|
|
526
609
|
*
|
|
610
|
+
* @tsl
|
|
527
611
|
* @function
|
|
528
|
-
* @param {Node}
|
|
529
|
-
* @param {Node}
|
|
612
|
+
* @param {Node} a - The first input.
|
|
613
|
+
* @param {Node} b - The second input.
|
|
530
614
|
* @returns {OperatorNode}
|
|
531
615
|
*/
|
|
532
|
-
export const xor = /*@__PURE__*/ nodeProxy( OperatorNode, '^^' );
|
|
616
|
+
export const xor = /*@__PURE__*/ nodeProxy( OperatorNode, '^^' ).setParameterLength( 2 ).setName( 'xor' );
|
|
533
617
|
|
|
534
618
|
/**
|
|
535
619
|
* Performs bitwise AND on two nodes.
|
|
536
620
|
*
|
|
621
|
+
* @tsl
|
|
537
622
|
* @function
|
|
538
|
-
* @param {Node}
|
|
539
|
-
* @param {Node}
|
|
623
|
+
* @param {Node} a - The first input.
|
|
624
|
+
* @param {Node} b - The second input.
|
|
540
625
|
* @returns {OperatorNode}
|
|
541
626
|
*/
|
|
542
|
-
export const bitAnd = /*@__PURE__*/ nodeProxy( OperatorNode, '&' );
|
|
627
|
+
export const bitAnd = /*@__PURE__*/ nodeProxy( OperatorNode, '&' ).setParameterLength( 2 ).setName( 'bitAnd' );
|
|
543
628
|
|
|
544
629
|
/**
|
|
545
630
|
* Performs bitwise NOT on a node.
|
|
546
631
|
*
|
|
632
|
+
* @tsl
|
|
547
633
|
* @function
|
|
548
|
-
* @param {Node}
|
|
549
|
-
* @param {Node}
|
|
634
|
+
* @param {Node} a - The first input.
|
|
635
|
+
* @param {Node} b - The second input.
|
|
550
636
|
* @returns {OperatorNode}
|
|
551
637
|
*/
|
|
552
|
-
export const bitNot = /*@__PURE__*/ nodeProxy( OperatorNode, '~' );
|
|
638
|
+
export const bitNot = /*@__PURE__*/ nodeProxy( OperatorNode, '~' ).setParameterLength( 2 ).setName( 'bitNot' );
|
|
553
639
|
|
|
554
640
|
/**
|
|
555
641
|
* Performs bitwise OR on two nodes.
|
|
556
642
|
*
|
|
643
|
+
* @tsl
|
|
557
644
|
* @function
|
|
558
|
-
* @param {Node}
|
|
559
|
-
* @param {Node}
|
|
645
|
+
* @param {Node} a - The first input.
|
|
646
|
+
* @param {Node} b - The second input.
|
|
560
647
|
* @returns {OperatorNode}
|
|
561
648
|
*/
|
|
562
|
-
export const bitOr = /*@__PURE__*/ nodeProxy( OperatorNode, '|' );
|
|
649
|
+
export const bitOr = /*@__PURE__*/ nodeProxy( OperatorNode, '|' ).setParameterLength( 2 ).setName( 'bitOr' );
|
|
563
650
|
|
|
564
651
|
/**
|
|
565
652
|
* Performs bitwise XOR on two nodes.
|
|
566
653
|
*
|
|
654
|
+
* @tsl
|
|
567
655
|
* @function
|
|
568
|
-
* @param {Node}
|
|
569
|
-
* @param {Node}
|
|
656
|
+
* @param {Node} a - The first input.
|
|
657
|
+
* @param {Node} b - The second input.
|
|
570
658
|
* @returns {OperatorNode}
|
|
571
659
|
*/
|
|
572
|
-
export const bitXor = /*@__PURE__*/ nodeProxy( OperatorNode, '^' );
|
|
660
|
+
export const bitXor = /*@__PURE__*/ nodeProxy( OperatorNode, '^' ).setParameterLength( 2 ).setName( 'bitXor' );
|
|
573
661
|
|
|
574
662
|
/**
|
|
575
663
|
* Shifts a node to the left.
|
|
576
664
|
*
|
|
665
|
+
* @tsl
|
|
577
666
|
* @function
|
|
578
|
-
* @param {Node}
|
|
579
|
-
* @param {Node}
|
|
667
|
+
* @param {Node} a - The node to shift.
|
|
668
|
+
* @param {Node} b - The value to shift.
|
|
580
669
|
* @returns {OperatorNode}
|
|
581
670
|
*/
|
|
582
|
-
export const shiftLeft = /*@__PURE__*/ nodeProxy( OperatorNode, '<<' );
|
|
671
|
+
export const shiftLeft = /*@__PURE__*/ nodeProxy( OperatorNode, '<<' ).setParameterLength( 2 ).setName( 'shiftLeft' );
|
|
583
672
|
|
|
584
673
|
/**
|
|
585
674
|
* Shifts a node to the right.
|
|
586
675
|
*
|
|
676
|
+
* @tsl
|
|
587
677
|
* @function
|
|
588
|
-
* @param {Node}
|
|
589
|
-
* @param {Node}
|
|
678
|
+
* @param {Node} a - The node to shift.
|
|
679
|
+
* @param {Node} b - The value to shift.
|
|
590
680
|
* @returns {OperatorNode}
|
|
591
681
|
*/
|
|
592
|
-
export const shiftRight = /*@__PURE__*/ nodeProxy( OperatorNode, '>>' );
|
|
682
|
+
export const shiftRight = /*@__PURE__*/ nodeProxy( OperatorNode, '>>' ).setParameterLength( 2 ).setName( 'shiftRight' );
|
|
593
683
|
|
|
594
684
|
addMethodChaining( 'add', add );
|
|
595
685
|
addMethodChaining( 'sub', sub );
|
|
596
686
|
addMethodChaining( 'mul', mul );
|
|
597
687
|
addMethodChaining( 'div', div );
|
|
598
|
-
addMethodChaining( '
|
|
688
|
+
addMethodChaining( 'mod', mod );
|
|
599
689
|
addMethodChaining( 'equal', equal );
|
|
600
690
|
addMethodChaining( 'notEqual', notEqual );
|
|
601
691
|
addMethodChaining( 'lessThan', lessThan );
|
|
@@ -614,17 +704,36 @@ addMethodChaining( 'shiftLeft', shiftLeft );
|
|
|
614
704
|
addMethodChaining( 'shiftRight', shiftRight );
|
|
615
705
|
|
|
616
706
|
/**
|
|
707
|
+
* @tsl
|
|
708
|
+
* @function
|
|
709
|
+
* @deprecated since r168. Use {@link mod} instead.
|
|
710
|
+
*
|
|
711
|
+
* @param {Node} a - The first input.
|
|
712
|
+
* @param {Node} b - The second input.
|
|
713
|
+
* @returns {OperatorNode}
|
|
714
|
+
*/
|
|
715
|
+
export const remainder = ( a, b ) => { // @deprecated, r168
|
|
716
|
+
|
|
717
|
+
console.warn( 'THREE.TSL: "remainder()" is deprecated. Use "mod( int( ... ) )" instead.' );
|
|
718
|
+
return mod( a, b );
|
|
719
|
+
|
|
720
|
+
};
|
|
721
|
+
|
|
722
|
+
/**
|
|
723
|
+
* @tsl
|
|
617
724
|
* @function
|
|
618
|
-
* @deprecated since
|
|
725
|
+
* @deprecated since r175. Use {@link mod} instead.
|
|
619
726
|
*
|
|
620
|
-
* @param
|
|
621
|
-
* @
|
|
727
|
+
* @param {Node} a - The first input.
|
|
728
|
+
* @param {Node} b - The second input.
|
|
729
|
+
* @returns {OperatorNode}
|
|
622
730
|
*/
|
|
623
|
-
export const
|
|
731
|
+
export const modInt = ( a, b ) => { // @deprecated, r175
|
|
624
732
|
|
|
625
|
-
console.warn( 'TSL
|
|
626
|
-
return
|
|
733
|
+
console.warn( 'THREE.TSL: "modInt()" is deprecated. Use "mod( int( ... ) )" instead.' );
|
|
734
|
+
return mod( int( a ), int( b ) );
|
|
627
735
|
|
|
628
736
|
};
|
|
629
737
|
|
|
630
738
|
addMethodChaining( 'remainder', remainder );
|
|
739
|
+
addMethodChaining( 'modInt', modInt );
|
|
@@ -3,8 +3,6 @@
|
|
|
3
3
|
import { Loop } from '../utils/LoopNode.js';
|
|
4
4
|
import { float, vec3, Fn } from '../tsl/TSLBase.js';
|
|
5
5
|
|
|
6
|
-
/** @module TriNoise3D **/
|
|
7
|
-
|
|
8
6
|
const tri = /*@__PURE__*/ Fn( ( [ x ] ) => {
|
|
9
7
|
|
|
10
8
|
return x.fract().sub( .5 ).abs();
|
|
@@ -32,7 +30,8 @@ const tri3 = /*@__PURE__*/ Fn( ( [ p ] ) => {
|
|
|
32
30
|
/**
|
|
33
31
|
* Generates a noise value from the given position, speed and time parameters.
|
|
34
32
|
*
|
|
35
|
-
* @
|
|
33
|
+
* @tsl
|
|
34
|
+
* @function
|
|
36
35
|
* @param {Node<vec3>} position - The position.
|
|
37
36
|
* @param {Node<float>} speed - The speed.
|
|
38
37
|
* @param {Node<float>} time - The time.
|