@plastic-software/three 0.174.0 → 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 +10655 -1446
- package/build/three.core.js +9626 -1094
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +834 -157
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +4 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +2658 -1697
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +2654 -1709
- 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 +93 -39
- 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 +171 -48
- 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 +71 -29
- 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 +41 -3
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +35 -0
- package/examples/jsm/loaders/DDSLoader.js +24 -0
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +42 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +218 -5
- 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 +86 -18
- 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 +38 -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 +81 -61
- 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 +79 -2
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +108 -72
- package/examples/jsm/misc/VolumeSlice.js +88 -45
- 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 +70 -0
- 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 +131 -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 +266 -133
- 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/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
- package/examples/jsm/tsl/display/BloomNode.js +1 -1
- package/examples/jsm/tsl/display/PixelationPassNode.js +4 -4
- package/examples/jsm/tsl/display/SSRNode.js +1 -1
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +29 -3
- package/examples/jsm/tsl/math/Bayer.js +14 -1
- package/examples/jsm/tsl/utils/Raymarching.js +4 -2
- 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 +1 -1
- package/src/Three.TSL.js +3 -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 +168 -18
- 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/AudioAnalyser.js +1 -1
- package/src/audio/AudioListener.js +2 -2
- package/src/audio/PositionalAudio.js +5 -5
- 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/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 +23 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +166 -7
- 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 +16 -1
- package/src/extras/Earcut.js +3 -781
- package/src/extras/ImageUtils.js +3 -2
- package/src/extras/PMREMGenerator.js +22 -17
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/core/Path.js +1 -1
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/ConeGeometry.js +2 -2
- package/src/geometries/CylinderGeometry.js +2 -2
- package/src/geometries/ExtrudeGeometry.js +71 -39
- package/src/geometries/LatheGeometry.js +1 -1
- package/src/lights/LightShadow.js +1 -1
- package/src/lights/webgpu/IESSpotLight.js +1 -1
- 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 +4 -6
- 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 +6 -2
- package/src/loaders/nodes/NodeMaterialLoader.js +1 -1
- package/src/loaders/nodes/NodeObjectLoader.js +3 -3
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +18 -3
- 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 +1 -1
- package/src/materials/nodes/LineBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshLambertNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshStandardNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshToonNodeMaterial.js +2 -2
- package/src/materials/nodes/NodeMaterial.js +7 -3
- package/src/materials/nodes/PointsNodeMaterial.js +1 -1
- package/src/materials/nodes/ShadowNodeMaterial.js +11 -2
- package/src/materials/nodes/SpriteNodeMaterial.js +1 -1
- package/src/materials/nodes/VolumeNodeMaterial.js +10 -1
- package/src/math/Color.js +1 -1
- package/src/math/MathUtils.js +223 -0
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/accessors/BatchNode.js +8 -8
- package/src/nodes/accessors/BuiltinNode.js +1 -1
- package/src/nodes/accessors/CubeTextureNode.js +1 -1
- package/src/nodes/accessors/InstanceNode.js +5 -5
- package/src/nodes/accessors/InstancedMeshNode.js +1 -1
- package/src/nodes/accessors/MorphNode.js +27 -23
- package/src/nodes/accessors/Normal.js +1 -1
- package/src/nodes/accessors/Object3DNode.js +12 -12
- package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
- package/src/nodes/accessors/ReferenceNode.js +1 -1
- package/src/nodes/accessors/SkinningNode.js +46 -37
- package/src/nodes/accessors/StorageBufferNode.js +1 -1
- package/src/nodes/accessors/StorageTextureNode.js +3 -3
- package/src/nodes/accessors/Texture3DNode.js +1 -1
- package/src/nodes/accessors/TextureNode.js +25 -5
- package/src/nodes/accessors/TextureSizeNode.js +1 -1
- package/src/nodes/accessors/UniformArrayNode.js +2 -2
- package/src/nodes/code/CodeNode.js +4 -4
- package/src/nodes/code/ExpressionNode.js +4 -4
- package/src/nodes/code/FunctionCallNode.js +23 -3
- package/src/nodes/code/ScriptableNode.js +4 -4
- package/src/nodes/code/ScriptableValueNode.js +2 -2
- package/src/nodes/core/AssignNode.js +1 -1
- package/src/nodes/core/AttributeNode.js +1 -1
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/CacheNode.js +1 -1
- package/src/nodes/core/ContextNode.js +1 -1
- package/src/nodes/core/InputNode.js +2 -2
- package/src/nodes/core/Node.js +14 -2
- package/src/nodes/core/NodeBuilder.js +86 -14
- package/src/nodes/core/StackNode.js +5 -5
- package/src/nodes/core/StructNode.js +1 -1
- package/src/nodes/core/StructTypeNode.js +2 -2
- package/src/nodes/core/VarNode.js +2 -8
- package/src/nodes/core/VaryingNode.js +3 -3
- package/src/nodes/display/BlendModes.js +4 -4
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/NormalMapNode.js +1 -1
- package/src/nodes/display/PosterizeNode.js +1 -1
- package/src/nodes/display/ScreenNode.js +3 -3
- package/src/nodes/display/ViewportDepthNode.js +2 -2
- package/src/nodes/display/ViewportDepthTextureNode.js +2 -2
- package/src/nodes/display/ViewportSharedTextureNode.js +2 -2
- package/src/nodes/display/ViewportTextureNode.js +4 -4
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +6 -6
- package/src/nodes/geometry/RangeNode.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +16 -40
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
- package/src/nodes/gpgpu/ComputeNode.js +30 -2
- package/src/nodes/lighting/AnalyticLightNode.js +9 -1
- package/src/nodes/lighting/LightsNode.js +3 -3
- package/src/nodes/lighting/ShadowNode.js +1 -1
- package/src/nodes/math/ConditionalNode.js +20 -3
- package/src/nodes/math/MathNode.js +83 -78
- package/src/nodes/math/OperatorNode.js +171 -82
- package/src/nodes/pmrem/PMREMNode.js +4 -4
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +115 -12
- package/src/nodes/utils/ArrayElementNode.js +3 -1
- package/src/nodes/utils/CubeMapNode.js +3 -3
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/EquirectUVNode.js +2 -2
- package/src/nodes/utils/JoinNode.js +27 -2
- package/src/nodes/utils/LoopNode.js +58 -28
- package/src/nodes/utils/MaxMipLevelNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +2 -2
- package/src/nodes/utils/RemapNode.js +6 -6
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUVNode.js +3 -3
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/nodes/utils/TriplanarTexturesNode.js +3 -3
- package/src/objects/BatchedMesh.js +4 -4
- package/src/objects/InstancedMesh.js +2 -2
- package/src/objects/LOD.js +1 -1
- package/src/objects/Skeleton.js +1 -1
- 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 +617 -79
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Attributes.js +2 -2
- package/src/renderers/common/Backend.js +12 -3
- package/src/renderers/common/Background.js +1 -0
- package/src/renderers/common/Color4.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/PostProcessing.js +2 -0
- package/src/renderers/common/QuadMesh.js +2 -0
- package/src/renderers/common/RenderList.js +2 -2
- package/src/renderers/common/RenderObject.js +1 -1
- package/src/renderers/common/RenderObjects.js +2 -2
- package/src/renderers/common/Renderer.js +52 -31
- package/src/renderers/common/XRManager.js +333 -10
- package/src/renderers/common/extras/PMREMGenerator.js +6 -0
- package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
- 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 +9 -9
- package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
- package/src/renderers/webgpu/WebGPUBackend.js +128 -87
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
- package/src/renderers/webgpu/WebGPURenderer.js +17 -11
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +173 -1
- package/src/scenes/Scene.js +2 -1
- 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 +59 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +5 -5
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -10,7 +10,7 @@ import { MeshMatcapMaterial } from '../MeshMatcapMaterial.js';
|
|
|
10
10
|
const _defaultValues = /*@__PURE__*/ new MeshMatcapMaterial();
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
|
-
* Node material version of
|
|
13
|
+
* Node material version of {@link MeshMatcapMaterial}.
|
|
14
14
|
*
|
|
15
15
|
* @augments NodeMaterial
|
|
16
16
|
*/
|
|
@@ -25,7 +25,7 @@ class MeshMatcapNodeMaterial extends NodeMaterial {
|
|
|
25
25
|
/**
|
|
26
26
|
* Constructs a new mesh normal node material.
|
|
27
27
|
*
|
|
28
|
-
* @param {
|
|
28
|
+
* @param {Object} [parameters] - The configuration parameter.
|
|
29
29
|
*/
|
|
30
30
|
constructor( parameters ) {
|
|
31
31
|
|
|
@@ -12,7 +12,7 @@ import { MeshNormalMaterial } from '../MeshNormalMaterial.js';
|
|
|
12
12
|
const _defaultValues = /*@__PURE__*/ new MeshNormalMaterial();
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
|
-
* Node material version of
|
|
15
|
+
* Node material version of {@link MeshNormalMaterial}.
|
|
16
16
|
*
|
|
17
17
|
* @augments NodeMaterial
|
|
18
18
|
*/
|
|
@@ -27,7 +27,7 @@ class MeshNormalNodeMaterial extends NodeMaterial {
|
|
|
27
27
|
/**
|
|
28
28
|
* Constructs a new mesh normal node material.
|
|
29
29
|
*
|
|
30
|
-
* @param {
|
|
30
|
+
* @param {Object} [parameters] - The configuration parameter.
|
|
31
31
|
*/
|
|
32
32
|
constructor( parameters ) {
|
|
33
33
|
|
|
@@ -10,7 +10,7 @@ import { MeshPhongMaterial } from '../MeshPhongMaterial.js';
|
|
|
10
10
|
const _defaultValues = /*@__PURE__*/ new MeshPhongMaterial();
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
|
-
* Node material version of
|
|
13
|
+
* Node material version of {@link MeshPhongMaterial}.
|
|
14
14
|
*
|
|
15
15
|
* @augments NodeMaterial
|
|
16
16
|
*/
|
|
@@ -25,7 +25,7 @@ class MeshPhongNodeMaterial extends NodeMaterial {
|
|
|
25
25
|
/**
|
|
26
26
|
* Constructs a new mesh lambert node material.
|
|
27
27
|
*
|
|
28
|
-
* @param {
|
|
28
|
+
* @param {Object} [parameters] - The configuration parameter.
|
|
29
29
|
*/
|
|
30
30
|
constructor( parameters ) {
|
|
31
31
|
|
|
@@ -12,7 +12,7 @@ import { MeshPhysicalMaterial } from '../MeshPhysicalMaterial.js';
|
|
|
12
12
|
const _defaultValues = /*@__PURE__*/ new MeshPhysicalMaterial();
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
|
-
* Node material version of
|
|
15
|
+
* Node material version of {@link MeshPhysicalMaterial}.
|
|
16
16
|
*
|
|
17
17
|
* @augments MeshStandardNodeMaterial
|
|
18
18
|
*/
|
|
@@ -27,7 +27,7 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
|
|
|
27
27
|
/**
|
|
28
28
|
* Constructs a new mesh physical node material.
|
|
29
29
|
*
|
|
30
|
-
* @param {
|
|
30
|
+
* @param {Object} [parameters] - The configuration parameter.
|
|
31
31
|
*/
|
|
32
32
|
constructor( parameters ) {
|
|
33
33
|
|
|
@@ -83,7 +83,7 @@ class MeshSSSNodeMaterial extends MeshPhysicalNodeMaterial {
|
|
|
83
83
|
/**
|
|
84
84
|
* Constructs a new mesh SSS node material.
|
|
85
85
|
*
|
|
86
|
-
* @param {
|
|
86
|
+
* @param {Object} [parameters] - The configuration parameter.
|
|
87
87
|
*/
|
|
88
88
|
constructor( parameters ) {
|
|
89
89
|
|
|
@@ -12,7 +12,7 @@ import { MeshStandardMaterial } from '../MeshStandardMaterial.js';
|
|
|
12
12
|
const _defaultValues = /*@__PURE__*/ new MeshStandardMaterial();
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
|
-
* Node material version of
|
|
15
|
+
* Node material version of {@link MeshStandardMaterial}.
|
|
16
16
|
*
|
|
17
17
|
* @augments NodeMaterial
|
|
18
18
|
*/
|
|
@@ -27,7 +27,7 @@ class MeshStandardNodeMaterial extends NodeMaterial {
|
|
|
27
27
|
/**
|
|
28
28
|
* Constructs a new mesh standard node material.
|
|
29
29
|
*
|
|
30
|
-
* @param {
|
|
30
|
+
* @param {Object} [parameters] - The configuration parameter.
|
|
31
31
|
*/
|
|
32
32
|
constructor( parameters ) {
|
|
33
33
|
|
|
@@ -6,7 +6,7 @@ import { MeshToonMaterial } from '../MeshToonMaterial.js';
|
|
|
6
6
|
const _defaultValues = /*@__PURE__*/ new MeshToonMaterial();
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
-
* Node material version of
|
|
9
|
+
* Node material version of {@link MeshToonMaterial}.
|
|
10
10
|
*
|
|
11
11
|
* @augments NodeMaterial
|
|
12
12
|
*/
|
|
@@ -21,7 +21,7 @@ class MeshToonNodeMaterial extends NodeMaterial {
|
|
|
21
21
|
/**
|
|
22
22
|
* Constructs a new mesh toon node material.
|
|
23
23
|
*
|
|
24
|
-
* @param {
|
|
24
|
+
* @param {Object} [parameters] - The configuration parameter.
|
|
25
25
|
*/
|
|
26
26
|
constructor( parameters ) {
|
|
27
27
|
|
|
@@ -11,7 +11,7 @@ import { instancedMesh } from '../../nodes/accessors/InstancedMeshNode.js';
|
|
|
11
11
|
import { batch } from '../../nodes/accessors/BatchNode.js';
|
|
12
12
|
import { materialReference } from '../../nodes/accessors/MaterialReferenceNode.js';
|
|
13
13
|
import { positionLocal, positionView } from '../../nodes/accessors/Position.js';
|
|
14
|
-
import {
|
|
14
|
+
import { skinning } from '../../nodes/accessors/SkinningNode.js';
|
|
15
15
|
import { morphReference } from '../../nodes/accessors/MorphNode.js';
|
|
16
16
|
import { mix } from '../../nodes/math/MathNode.js';
|
|
17
17
|
import { float, vec3, vec4 } from '../../nodes/tsl/TSLBase.js';
|
|
@@ -476,7 +476,9 @@ class NodeMaterial extends Material {
|
|
|
476
476
|
|
|
477
477
|
//
|
|
478
478
|
|
|
479
|
-
|
|
479
|
+
const isCustomOutput = this.outputNode !== null;
|
|
480
|
+
|
|
481
|
+
if ( isCustomOutput ) resultNode = this.outputNode;
|
|
480
482
|
|
|
481
483
|
// MRT
|
|
482
484
|
|
|
@@ -487,6 +489,8 @@ class NodeMaterial extends Material {
|
|
|
487
489
|
|
|
488
490
|
if ( mrt !== null ) {
|
|
489
491
|
|
|
492
|
+
if ( isCustomOutput ) output.assign( resultNode );
|
|
493
|
+
|
|
490
494
|
resultNode = mrt;
|
|
491
495
|
|
|
492
496
|
if ( materialMRT !== null ) {
|
|
@@ -695,7 +699,7 @@ class NodeMaterial extends Material {
|
|
|
695
699
|
|
|
696
700
|
if ( object.isSkinnedMesh === true ) {
|
|
697
701
|
|
|
698
|
-
|
|
702
|
+
skinning( object ).append();
|
|
699
703
|
|
|
700
704
|
}
|
|
701
705
|
|
|
@@ -11,7 +11,7 @@ import { PointsMaterial } from '../PointsMaterial.js';
|
|
|
11
11
|
const _defaultValues = /*@__PURE__*/ new PointsMaterial();
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
|
-
* Node material version of
|
|
14
|
+
* Node material version of {@link PointsMaterial}.
|
|
15
15
|
*
|
|
16
16
|
* @augments SpriteNodeMaterial
|
|
17
17
|
*/
|
|
@@ -6,7 +6,7 @@ import { ShadowMaterial } from '../ShadowMaterial.js';
|
|
|
6
6
|
const _defaultValues = /*@__PURE__*/ new ShadowMaterial();
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
-
* Node material version of
|
|
9
|
+
* Node material version of {@link ShadowMaterial}.
|
|
10
10
|
*
|
|
11
11
|
* @augments NodeMaterial
|
|
12
12
|
*/
|
|
@@ -21,7 +21,7 @@ class ShadowNodeMaterial extends NodeMaterial {
|
|
|
21
21
|
/**
|
|
22
22
|
* Constructs a new shadow node material.
|
|
23
23
|
*
|
|
24
|
-
* @param {
|
|
24
|
+
* @param {Object} [parameters] - The configuration parameter.
|
|
25
25
|
*/
|
|
26
26
|
constructor( parameters ) {
|
|
27
27
|
|
|
@@ -45,6 +45,15 @@ class ShadowNodeMaterial extends NodeMaterial {
|
|
|
45
45
|
*/
|
|
46
46
|
this.lights = true;
|
|
47
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Overwritten since shadow materials are transparent
|
|
50
|
+
* by default.
|
|
51
|
+
*
|
|
52
|
+
* @type {boolean}
|
|
53
|
+
* @default true
|
|
54
|
+
*/
|
|
55
|
+
this.transparent = true;
|
|
56
|
+
|
|
48
57
|
this.setDefaultValues( _defaultValues );
|
|
49
58
|
|
|
50
59
|
this.setValues( parameters );
|
|
@@ -12,7 +12,7 @@ import { reference } from '../../nodes/accessors/ReferenceBaseNode.js';
|
|
|
12
12
|
const _defaultValues = /*@__PURE__*/ new SpriteMaterial();
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
|
-
* Node material version of
|
|
15
|
+
* Node material version of {@link SpriteMaterial}.
|
|
16
16
|
*
|
|
17
17
|
* @augments NodeMaterial
|
|
18
18
|
*/
|
|
@@ -18,7 +18,7 @@ class VolumeNodeMaterial extends NodeMaterial {
|
|
|
18
18
|
/**
|
|
19
19
|
* Constructs a new volume node material.
|
|
20
20
|
*
|
|
21
|
-
* @param {
|
|
21
|
+
* @param {Object} [parameters] - The configuration parameter.
|
|
22
22
|
*/
|
|
23
23
|
constructor( parameters ) {
|
|
24
24
|
|
|
@@ -41,6 +41,15 @@ class VolumeNodeMaterial extends NodeMaterial {
|
|
|
41
41
|
*/
|
|
42
42
|
this.steps = 25;
|
|
43
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Offsets the distance a ray has been traveled through a volume.
|
|
46
|
+
* Can be used to implement dithering to reduce banding.
|
|
47
|
+
*
|
|
48
|
+
* @type {Node<float>}
|
|
49
|
+
* @default null
|
|
50
|
+
*/
|
|
51
|
+
this.offsetNode = null;
|
|
52
|
+
|
|
44
53
|
/**
|
|
45
54
|
* Node used for scattering calculations.
|
|
46
55
|
*
|
package/src/math/Color.js
CHANGED
|
@@ -559,7 +559,7 @@ class Color {
|
|
|
559
559
|
* Converts the colors RGB values into the HSL format and stores them into the
|
|
560
560
|
* given target object.
|
|
561
561
|
*
|
|
562
|
-
* @param {{h:
|
|
562
|
+
* @param {{h:number,s:number,l:number}} target - The target object that is used to store the method's result.
|
|
563
563
|
* @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.
|
|
564
564
|
* @return {{h:number,s:number,l:number}} The HSL representation of this color.
|
|
565
565
|
*/
|
package/src/math/MathUtils.js
CHANGED
|
@@ -470,30 +470,253 @@ function normalize( value, array ) {
|
|
|
470
470
|
|
|
471
471
|
}
|
|
472
472
|
|
|
473
|
+
/**
|
|
474
|
+
* @class
|
|
475
|
+
* @classdesc A collection of math utility functions.
|
|
476
|
+
* @hideconstructor
|
|
477
|
+
*/
|
|
473
478
|
const MathUtils = {
|
|
474
479
|
DEG2RAD: DEG2RAD,
|
|
475
480
|
RAD2DEG: RAD2DEG,
|
|
481
|
+
/**
|
|
482
|
+
* Generate a [UUID]{@link https://en.wikipedia.org/wiki/Universally_unique_identifier}
|
|
483
|
+
* (universally unique identifier).
|
|
484
|
+
*
|
|
485
|
+
* @static
|
|
486
|
+
* @method
|
|
487
|
+
* @return {string} The UUID.
|
|
488
|
+
*/
|
|
476
489
|
generateUUID: generateUUID,
|
|
490
|
+
/**
|
|
491
|
+
* Clamps the given value between min and max.
|
|
492
|
+
*
|
|
493
|
+
* @static
|
|
494
|
+
* @method
|
|
495
|
+
* @param {number} value - The value to clamp.
|
|
496
|
+
* @param {number} min - The min value.
|
|
497
|
+
* @param {number} max - The max value.
|
|
498
|
+
* @return {number} The clamped value.
|
|
499
|
+
*/
|
|
477
500
|
clamp: clamp,
|
|
501
|
+
/**
|
|
502
|
+
* Computes the Euclidean modulo of the given parameters that
|
|
503
|
+
* is `( ( n % m ) + m ) % m`.
|
|
504
|
+
*
|
|
505
|
+
* @static
|
|
506
|
+
* @method
|
|
507
|
+
* @param {number} n - The first parameter.
|
|
508
|
+
* @param {number} m - The second parameter.
|
|
509
|
+
* @return {number} The Euclidean modulo.
|
|
510
|
+
*/
|
|
478
511
|
euclideanModulo: euclideanModulo,
|
|
512
|
+
/**
|
|
513
|
+
* Performs a linear mapping from range `<a1, a2>` to range `<b1, b2>`
|
|
514
|
+
* for the given value.
|
|
515
|
+
*
|
|
516
|
+
* @static
|
|
517
|
+
* @method
|
|
518
|
+
* @param {number} x - The value to be mapped.
|
|
519
|
+
* @param {number} a1 - Minimum value for range A.
|
|
520
|
+
* @param {number} a2 - Maximum value for range A.
|
|
521
|
+
* @param {number} b1 - Minimum value for range B.
|
|
522
|
+
* @param {number} b2 - Maximum value for range B.
|
|
523
|
+
* @return {number} The mapped value.
|
|
524
|
+
*/
|
|
479
525
|
mapLinear: mapLinear,
|
|
526
|
+
/**
|
|
527
|
+
* Returns the percentage in the closed interval `[0, 1]` of the given value
|
|
528
|
+
* between the start and end point.
|
|
529
|
+
*
|
|
530
|
+
* @static
|
|
531
|
+
* @method
|
|
532
|
+
* @param {number} x - The start point
|
|
533
|
+
* @param {number} y - The end point.
|
|
534
|
+
* @param {number} value - A value between start and end.
|
|
535
|
+
* @return {number} The interpolation factor.
|
|
536
|
+
*/
|
|
480
537
|
inverseLerp: inverseLerp,
|
|
538
|
+
/**
|
|
539
|
+
* Returns a value linearly interpolated from two known points based on the given interval -
|
|
540
|
+
* `t = 0` will return `x` and `t = 1` will return `y`.
|
|
541
|
+
*
|
|
542
|
+
* @static
|
|
543
|
+
* @method
|
|
544
|
+
* @param {number} x - The start point
|
|
545
|
+
* @param {number} y - The end point.
|
|
546
|
+
* @param {number} t - The interpolation factor in the closed interval `[0, 1]`.
|
|
547
|
+
* @return {number} The interpolated value.
|
|
548
|
+
*/
|
|
481
549
|
lerp: lerp,
|
|
550
|
+
/**
|
|
551
|
+
* Smoothly interpolate a number from `x` to `y` in a spring-like manner using a delta
|
|
552
|
+
* time to maintain frame rate independent movement. For details, see
|
|
553
|
+
* [Frame rate independent damping using lerp]{@link http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/}.
|
|
554
|
+
*
|
|
555
|
+
* @static
|
|
556
|
+
* @method
|
|
557
|
+
* @param {number} x - The current point.
|
|
558
|
+
* @param {number} y - The target point.
|
|
559
|
+
* @param {number} lambda - A higher lambda value will make the movement more sudden,
|
|
560
|
+
* and a lower value will make the movement more gradual.
|
|
561
|
+
* @param {number} dt - Delta time in seconds.
|
|
562
|
+
* @return {number} The interpolated value.
|
|
563
|
+
*/
|
|
482
564
|
damp: damp,
|
|
565
|
+
/**
|
|
566
|
+
* Returns a value that alternates between `0` and the given `length` parameter.
|
|
567
|
+
*
|
|
568
|
+
* @static
|
|
569
|
+
* @method
|
|
570
|
+
* @param {number} x - The value to pingpong.
|
|
571
|
+
* @param {number} [length=1] - The positive value the function will pingpong to.
|
|
572
|
+
* @return {number} The alternated value.
|
|
573
|
+
*/
|
|
483
574
|
pingpong: pingpong,
|
|
575
|
+
/**
|
|
576
|
+
* Returns a value in the range `[0,1]` that represents the percentage that `x` has
|
|
577
|
+
* moved between `min` and `max`, but smoothed or slowed down the closer `x` is to
|
|
578
|
+
* the `min` and `max`.
|
|
579
|
+
*
|
|
580
|
+
* See [Smoothstep]{@link http://en.wikipedia.org/wiki/Smoothstep} for more details.
|
|
581
|
+
*
|
|
582
|
+
* @static
|
|
583
|
+
* @method
|
|
584
|
+
* @param {number} x - The value to evaluate based on its position between min and max.
|
|
585
|
+
* @param {number} min - The min value. Any x value below min will be `0`.
|
|
586
|
+
* @param {number} max - The max value. Any x value above max will be `1`.
|
|
587
|
+
* @return {number} The alternated value.
|
|
588
|
+
*/
|
|
484
589
|
smoothstep: smoothstep,
|
|
590
|
+
/**
|
|
591
|
+
* A [variation on smoothstep]{@link https://en.wikipedia.org/wiki/Smoothstep#Variations}
|
|
592
|
+
* that has zero 1st and 2nd order derivatives at x=0 and x=1.
|
|
593
|
+
*
|
|
594
|
+
* @static
|
|
595
|
+
* @method
|
|
596
|
+
* @param {number} x - The value to evaluate based on its position between min and max.
|
|
597
|
+
* @param {number} min - The min value. Any x value below min will be `0`.
|
|
598
|
+
* @param {number} max - The max value. Any x value above max will be `1`.
|
|
599
|
+
* @return {number} The alternated value.
|
|
600
|
+
*/
|
|
485
601
|
smootherstep: smootherstep,
|
|
602
|
+
/**
|
|
603
|
+
* Returns a random integer from `<low, high>` interval.
|
|
604
|
+
*
|
|
605
|
+
* @static
|
|
606
|
+
* @method
|
|
607
|
+
* @param {number} low - The lower value boundary.
|
|
608
|
+
* @param {number} high - The upper value boundary
|
|
609
|
+
* @return {number} A random integer.
|
|
610
|
+
*/
|
|
486
611
|
randInt: randInt,
|
|
612
|
+
/**
|
|
613
|
+
* Returns a random float from `<low, high>` interval.
|
|
614
|
+
*
|
|
615
|
+
* @static
|
|
616
|
+
* @method
|
|
617
|
+
* @param {number} low - The lower value boundary.
|
|
618
|
+
* @param {number} high - The upper value boundary
|
|
619
|
+
* @return {number} A random float.
|
|
620
|
+
*/
|
|
487
621
|
randFloat: randFloat,
|
|
622
|
+
/**
|
|
623
|
+
* Returns a random integer from `<-range/2, range/2>` interval.
|
|
624
|
+
*
|
|
625
|
+
* @static
|
|
626
|
+
* @method
|
|
627
|
+
* @param {number} range - Defines the value range.
|
|
628
|
+
* @return {number} A random float.
|
|
629
|
+
*/
|
|
488
630
|
randFloatSpread: randFloatSpread,
|
|
631
|
+
/**
|
|
632
|
+
* Returns a deterministic pseudo-random float in the interval `[0, 1]`.
|
|
633
|
+
*
|
|
634
|
+
* @static
|
|
635
|
+
* @method
|
|
636
|
+
* @param {number} [s] - The integer seed.
|
|
637
|
+
* @return {number} A random float.
|
|
638
|
+
*/
|
|
489
639
|
seededRandom: seededRandom,
|
|
640
|
+
/**
|
|
641
|
+
* Converts degrees to radians.
|
|
642
|
+
*
|
|
643
|
+
* @static
|
|
644
|
+
* @method
|
|
645
|
+
* @param {number} degrees - A value in degrees.
|
|
646
|
+
* @return {number} The converted value in radians.
|
|
647
|
+
*/
|
|
490
648
|
degToRad: degToRad,
|
|
649
|
+
/**
|
|
650
|
+
* Converts radians to degrees.
|
|
651
|
+
*
|
|
652
|
+
* @static
|
|
653
|
+
* @method
|
|
654
|
+
* @param {number} radians - A value in radians.
|
|
655
|
+
* @return {number} The converted value in degrees.
|
|
656
|
+
*/
|
|
491
657
|
radToDeg: radToDeg,
|
|
658
|
+
/**
|
|
659
|
+
* Returns `true` if the given number is a power of two.
|
|
660
|
+
*
|
|
661
|
+
* @static
|
|
662
|
+
* @method
|
|
663
|
+
* @param {number} value - The value to check.
|
|
664
|
+
* @return {boolean} Whether the given number is a power of two or not.
|
|
665
|
+
*/
|
|
492
666
|
isPowerOfTwo: isPowerOfTwo,
|
|
667
|
+
/**
|
|
668
|
+
* Returns the smallest power of two that is greater than or equal to the given number.
|
|
669
|
+
*
|
|
670
|
+
* @static
|
|
671
|
+
* @method
|
|
672
|
+
* @param {number} value - The value to find a POT for.
|
|
673
|
+
* @return {number} The smallest power of two that is greater than or equal to the given number.
|
|
674
|
+
*/
|
|
493
675
|
ceilPowerOfTwo: ceilPowerOfTwo,
|
|
676
|
+
/**
|
|
677
|
+
* Returns the largest power of two that is less than or equal to the given number.
|
|
678
|
+
*
|
|
679
|
+
* @static
|
|
680
|
+
* @method
|
|
681
|
+
* @param {number} value - The value to find a POT for.
|
|
682
|
+
* @return {number} The largest power of two that is less than or equal to the given number.
|
|
683
|
+
*/
|
|
494
684
|
floorPowerOfTwo: floorPowerOfTwo,
|
|
685
|
+
/**
|
|
686
|
+
* Sets the given quaternion from the [Intrinsic Proper Euler Angles]{@link https://en.wikipedia.org/wiki/Euler_angles}
|
|
687
|
+
* defined by the given angles and order.
|
|
688
|
+
*
|
|
689
|
+
* Rotations are applied to the axes in the order specified by order:
|
|
690
|
+
* rotation by angle `a` is applied first, then by angle `b`, then by angle `c`.
|
|
691
|
+
*
|
|
692
|
+
* @static
|
|
693
|
+
* @method
|
|
694
|
+
* @param {Quaternion} q - The quaternion to set.
|
|
695
|
+
* @param {number} a - The rotation applied to the first axis, in radians.
|
|
696
|
+
* @param {number} b - The rotation applied to the second axis, in radians.
|
|
697
|
+
* @param {number} c - The rotation applied to the third axis, in radians.
|
|
698
|
+
* @param {('XYX'|'XZX'|'YXY'|'YZY'|'ZXZ'|'ZYZ')} order - A string specifying the axes order.
|
|
699
|
+
*/
|
|
495
700
|
setQuaternionFromProperEuler: setQuaternionFromProperEuler,
|
|
701
|
+
/**
|
|
702
|
+
* Normalizes the given value according to the given typed array.
|
|
703
|
+
*
|
|
704
|
+
* @static
|
|
705
|
+
* @method
|
|
706
|
+
* @param {number} value - The float value in the range `[0,1]` to normalize.
|
|
707
|
+
* @param {TypedArray} array - The typed array that defines the data type of the value.
|
|
708
|
+
* @return {number} The normalize value.
|
|
709
|
+
*/
|
|
496
710
|
normalize: normalize,
|
|
711
|
+
/**
|
|
712
|
+
* Denormalizes the given value according to the given typed array.
|
|
713
|
+
*
|
|
714
|
+
* @static
|
|
715
|
+
* @method
|
|
716
|
+
* @param {number} value - The value to denormalize.
|
|
717
|
+
* @param {TypedArray} array - The typed array that defines the data type of the value.
|
|
718
|
+
* @return {number} The denormalize (float) value in the range `[0,1]`.
|
|
719
|
+
*/
|
|
497
720
|
denormalize: denormalize
|
|
498
721
|
};
|
|
499
722
|
|
package/src/nodes/Nodes.js
CHANGED
|
@@ -56,6 +56,7 @@ export { default as TriplanarTexturesNode } from './utils/TriplanarTexturesNode.
|
|
|
56
56
|
export { default as ReflectorNode } from './utils/ReflectorNode.js';
|
|
57
57
|
export { default as RTTNode } from './utils/RTTNode.js';
|
|
58
58
|
export { default as MemberNode } from './utils/MemberNode.js';
|
|
59
|
+
export { default as DebugNode } from './utils/DebugNode.js';
|
|
59
60
|
|
|
60
61
|
// accessors
|
|
61
62
|
export { default as UniformArrayNode } from './accessors/UniformArrayNode.js';
|
|
@@ -74,8 +74,8 @@ class BatchNode extends Node {
|
|
|
74
74
|
|
|
75
75
|
const getIndirectIndex = Fn( ( [ id ] ) => {
|
|
76
76
|
|
|
77
|
-
const size = int( textureSize( textureLoad( this.batchMesh._indirectTexture ), 0 ) );
|
|
78
|
-
const x = int( id ).
|
|
77
|
+
const size = int( textureSize( textureLoad( this.batchMesh._indirectTexture ), 0 ).x );
|
|
78
|
+
const x = int( id ).mod( size );
|
|
79
79
|
const y = int( id ).div( size );
|
|
80
80
|
return textureLoad( this.batchMesh._indirectTexture, ivec2( x, y ) ).x;
|
|
81
81
|
|
|
@@ -91,11 +91,11 @@ class BatchNode extends Node {
|
|
|
91
91
|
|
|
92
92
|
const matricesTexture = this.batchMesh._matricesTexture;
|
|
93
93
|
|
|
94
|
-
const size = textureSize( textureLoad( matricesTexture ), 0 );
|
|
94
|
+
const size = int( textureSize( textureLoad( matricesTexture ), 0 ).x );
|
|
95
95
|
const j = float( indirectId ).mul( 4 ).toInt().toVar();
|
|
96
96
|
|
|
97
|
-
const x = j.
|
|
98
|
-
const y = j.div(
|
|
97
|
+
const x = j.mod( size );
|
|
98
|
+
const y = j.div( size );
|
|
99
99
|
const batchingMatrix = mat4(
|
|
100
100
|
textureLoad( matricesTexture, ivec2( x, y ) ),
|
|
101
101
|
textureLoad( matricesTexture, ivec2( x.add( 1 ), y ) ),
|
|
@@ -110,9 +110,9 @@ class BatchNode extends Node {
|
|
|
110
110
|
|
|
111
111
|
const getBatchingColor = Fn( ( [ id ] ) => {
|
|
112
112
|
|
|
113
|
-
const size = textureSize( textureLoad( colorsTexture ), 0 ).x;
|
|
113
|
+
const size = int( textureSize( textureLoad( colorsTexture ), 0 ).x );
|
|
114
114
|
const j = id;
|
|
115
|
-
const x = j.
|
|
115
|
+
const x = j.mod( size );
|
|
116
116
|
const y = j.div( size );
|
|
117
117
|
return textureLoad( colorsTexture, ivec2( x, y ) ).rgb;
|
|
118
118
|
|
|
@@ -160,4 +160,4 @@ export default BatchNode;
|
|
|
160
160
|
* @param {BatchedMesh} batchMesh - A reference to batched mesh.
|
|
161
161
|
* @returns {BatchNode}
|
|
162
162
|
*/
|
|
163
|
-
export const batch = /*@__PURE__*/ nodeProxy( BatchNode );
|
|
163
|
+
export const batch = /*@__PURE__*/ nodeProxy( BatchNode ).setParameterLength( 1 );
|
|
@@ -138,4 +138,4 @@ export default CubeTextureNode;
|
|
|
138
138
|
* @param {?Node<float>} [biasNode=null] - The bias node.
|
|
139
139
|
* @returns {CubeTextureNode}
|
|
140
140
|
*/
|
|
141
|
-
export const cubeTexture = /*@__PURE__*/ nodeProxy( CubeTextureNode );
|
|
141
|
+
export const cubeTexture = /*@__PURE__*/ nodeProxy( CubeTextureNode ).setParameterLength( 1, 4 ).setName( 'cubeTexture' );
|
|
@@ -63,14 +63,14 @@ class InstanceNode extends Node {
|
|
|
63
63
|
/**
|
|
64
64
|
* The node that represents the instance matrix data.
|
|
65
65
|
*
|
|
66
|
-
* @type {Node}
|
|
66
|
+
* @type {?Node}
|
|
67
67
|
*/
|
|
68
68
|
this.instanceMatrixNode = null;
|
|
69
69
|
|
|
70
70
|
/**
|
|
71
71
|
* The node that represents the instance color data.
|
|
72
72
|
*
|
|
73
|
-
* @type {Node}
|
|
73
|
+
* @type {?Node}
|
|
74
74
|
*/
|
|
75
75
|
this.instanceColorNode = null;
|
|
76
76
|
|
|
@@ -86,14 +86,14 @@ class InstanceNode extends Node {
|
|
|
86
86
|
/**
|
|
87
87
|
* A reference to a buffer that is used by `instanceMatrixNode`.
|
|
88
88
|
*
|
|
89
|
-
* @type {InstancedInterleavedBuffer}
|
|
89
|
+
* @type {?InstancedInterleavedBuffer}
|
|
90
90
|
*/
|
|
91
91
|
this.buffer = null;
|
|
92
92
|
|
|
93
93
|
/**
|
|
94
94
|
* A reference to a buffer that is used by `instanceColorNode`.
|
|
95
95
|
*
|
|
96
|
-
* @type {InstancedBufferAttribute}
|
|
96
|
+
* @type {?InstancedBufferAttribute}
|
|
97
97
|
*/
|
|
98
98
|
this.bufferColor = null;
|
|
99
99
|
|
|
@@ -220,4 +220,4 @@ export default InstanceNode;
|
|
|
220
220
|
* @param {InstancedBufferAttribute} instanceColor - Instanced buffer attribute representing the instance colors.
|
|
221
221
|
* @returns {InstanceNode}
|
|
222
222
|
*/
|
|
223
|
-
export const instance = /*@__PURE__*/ nodeProxy( InstanceNode );
|
|
223
|
+
export const instance = /*@__PURE__*/ nodeProxy( InstanceNode ).setParameterLength( 3 );
|
|
@@ -47,4 +47,4 @@ export default InstancedMeshNode;
|
|
|
47
47
|
* @param {InstancedMesh} instancedMesh - The instancedMesh.
|
|
48
48
|
* @returns {InstancedMeshNode}
|
|
49
49
|
*/
|
|
50
|
-
export const instancedMesh = /*@__PURE__*/ nodeProxy( InstancedMeshNode );
|
|
50
|
+
export const instancedMesh = /*@__PURE__*/ nodeProxy( InstancedMeshNode ).setParameterLength( 1 );
|