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
|
@@ -16,30 +16,25 @@ import { texture } from 'three/tsl';
|
|
|
16
16
|
* It works for shadow casting lights: DirectionalLight and SpotLight.
|
|
17
17
|
* It renders out the shadow map and displays it on a HUD.
|
|
18
18
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
19
|
+
* This module can only be used with {@link WebGPURenderer}. When using {@link WebGLRenderer},
|
|
20
|
+
* import the class from `ShadowMapViewer.js`.
|
|
21
21
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* shadowMapViewer.position.set( 10, 10 ); //x, y in pixel default: 0, 0 (top left corner)
|
|
31
|
-
*
|
|
32
|
-
* 4) Render the shadow map viewer in your render loop:
|
|
33
|
-
* shadowMapViewer.render( renderer );
|
|
34
|
-
*
|
|
35
|
-
* 5) Optionally: Update the shadow map viewer on window resize:
|
|
36
|
-
* shadowMapViewer.updateForWindowResize();
|
|
37
|
-
*
|
|
38
|
-
* 6) If you set the position or size members directly, you need to call shadowMapViewer.update();
|
|
22
|
+
* ```js
|
|
23
|
+
* const lightShadowMapViewer = new ShadowMapViewer( light );
|
|
24
|
+
* lightShadowMapViewer.position.x = 10;
|
|
25
|
+
* lightShadowMapViewer.position.y = SCREEN_HEIGHT - ( SHADOW_MAP_HEIGHT / 4 ) - 10;
|
|
26
|
+
* lightShadowMapViewer.size.width = SHADOW_MAP_WIDTH / 4;
|
|
27
|
+
* lightShadowMapViewer.size.height = SHADOW_MAP_HEIGHT / 4;
|
|
28
|
+
* lightShadowMapViewer.update();
|
|
29
|
+
* ```
|
|
39
30
|
*/
|
|
40
|
-
|
|
41
31
|
class ShadowMapViewer {
|
|
42
32
|
|
|
33
|
+
/**
|
|
34
|
+
* Constructs a new shadow map viewer.
|
|
35
|
+
*
|
|
36
|
+
* @param {Light} light - The shadow casting light.
|
|
37
|
+
*/
|
|
43
38
|
constructor( light ) {
|
|
44
39
|
|
|
45
40
|
//- Internals
|
|
@@ -106,11 +101,21 @@ class ShadowMapViewer {
|
|
|
106
101
|
|
|
107
102
|
}
|
|
108
103
|
|
|
109
|
-
|
|
110
|
-
|
|
104
|
+
/**
|
|
105
|
+
* Whether to display the shadow map viewer or not.
|
|
106
|
+
*
|
|
107
|
+
* @type {boolean}
|
|
108
|
+
* @default true
|
|
109
|
+
*/
|
|
111
110
|
this.enabled = true;
|
|
112
111
|
|
|
113
|
-
|
|
112
|
+
/**
|
|
113
|
+
* The size of the viewer. When changing this property, make sure
|
|
114
|
+
* to call {@link ShadowMapViewer#update}.
|
|
115
|
+
*
|
|
116
|
+
* @type {{width:number,height:number}}
|
|
117
|
+
* @default true
|
|
118
|
+
*/
|
|
114
119
|
this.size = {
|
|
115
120
|
width: frame.width,
|
|
116
121
|
height: frame.height,
|
|
@@ -127,7 +132,13 @@ class ShadowMapViewer {
|
|
|
127
132
|
}
|
|
128
133
|
};
|
|
129
134
|
|
|
130
|
-
|
|
135
|
+
/**
|
|
136
|
+
* The position of the viewer. When changing this property, make sure
|
|
137
|
+
* to call {@link ShadowMapViewer#update}.
|
|
138
|
+
*
|
|
139
|
+
* @type {{width:number,height:number}}
|
|
140
|
+
* @default true
|
|
141
|
+
*/
|
|
131
142
|
this.position = {
|
|
132
143
|
x: frame.x,
|
|
133
144
|
y: frame.y,
|
|
@@ -146,6 +157,11 @@ class ShadowMapViewer {
|
|
|
146
157
|
}
|
|
147
158
|
};
|
|
148
159
|
|
|
160
|
+
/**
|
|
161
|
+
* Renders the viewer. This method must be called in the app's animation loop.
|
|
162
|
+
*
|
|
163
|
+
* @param {WebGPURenderer} renderer - The renderer.
|
|
164
|
+
*/
|
|
149
165
|
this.render = function ( renderer ) {
|
|
150
166
|
|
|
151
167
|
if ( this.enabled ) {
|
|
@@ -167,6 +183,10 @@ class ShadowMapViewer {
|
|
|
167
183
|
|
|
168
184
|
};
|
|
169
185
|
|
|
186
|
+
/**
|
|
187
|
+
* Resizes the viewer. This method should be called whenever the app's
|
|
188
|
+
* window is resized.
|
|
189
|
+
*/
|
|
170
190
|
this.updateForWindowResize = function () {
|
|
171
191
|
|
|
172
192
|
if ( this.enabled ) {
|
|
@@ -183,6 +203,9 @@ class ShadowMapViewer {
|
|
|
183
203
|
|
|
184
204
|
};
|
|
185
205
|
|
|
206
|
+
/**
|
|
207
|
+
* Updates the viewer.
|
|
208
|
+
*/
|
|
186
209
|
this.update = function () {
|
|
187
210
|
|
|
188
211
|
this.position.set( this.position.x, this.position.y );
|
|
@@ -9,6 +9,8 @@ import {
|
|
|
9
9
|
VectorKeyframeTrack
|
|
10
10
|
} from 'three';
|
|
11
11
|
|
|
12
|
+
/** @module SkeletonUtils */
|
|
13
|
+
|
|
12
14
|
function getBoneName( bone, options ) {
|
|
13
15
|
|
|
14
16
|
if ( options.getBoneName !== undefined ) {
|
|
@@ -21,6 +23,14 @@ function getBoneName( bone, options ) {
|
|
|
21
23
|
|
|
22
24
|
}
|
|
23
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Retargets the skeleton from the given source 3D object to the
|
|
28
|
+
* target 3D object.
|
|
29
|
+
*
|
|
30
|
+
* @param {Object3D} target - The target 3D object.
|
|
31
|
+
* @param {Object3D} source - The source 3D object.
|
|
32
|
+
* @param {module:SkeletonUtils~RetargetOptions} options - The options.
|
|
33
|
+
*/
|
|
24
34
|
function retarget( target, source, options = {} ) {
|
|
25
35
|
|
|
26
36
|
const quat = new Quaternion(),
|
|
@@ -196,6 +206,16 @@ function retarget( target, source, options = {} ) {
|
|
|
196
206
|
|
|
197
207
|
}
|
|
198
208
|
|
|
209
|
+
/**
|
|
210
|
+
* Retargets the animation clip of the source object to the
|
|
211
|
+
* target 3D object.
|
|
212
|
+
*
|
|
213
|
+
* @param {Object3D} target - The target 3D object.
|
|
214
|
+
* @param {Object3D} source - The source 3D object.
|
|
215
|
+
* @param {AnimationClip} clip - The animation clip.
|
|
216
|
+
* @param {module:SkeletonUtils~RetargetOptions} options - The options.
|
|
217
|
+
* @return {AnimationClip} The retargeted animation clip.
|
|
218
|
+
*/
|
|
199
219
|
function retargetClip( target, source, clip, options = {} ) {
|
|
200
220
|
|
|
201
221
|
options.useFirstFramePosition = options.useFirstFramePosition !== undefined ? options.useFirstFramePosition : false;
|
|
@@ -354,6 +374,14 @@ function retargetClip( target, source, clip, options = {} ) {
|
|
|
354
374
|
|
|
355
375
|
}
|
|
356
376
|
|
|
377
|
+
/**
|
|
378
|
+
* Clones the given 3D object and its descendants, ensuring that any `SkinnedMesh` instances are
|
|
379
|
+
* correctly associated with their bones. Bones are also cloned, and must be descendants of the
|
|
380
|
+
* object passed to this method. Other data, like geometries and materials, are reused by reference.
|
|
381
|
+
*
|
|
382
|
+
* @param {Object3D} source - The 3D object to clone.
|
|
383
|
+
* @return {Object3D} The cloned 3D object.
|
|
384
|
+
*/
|
|
357
385
|
function clone( source ) {
|
|
358
386
|
|
|
359
387
|
const sourceLookup = new Map();
|
|
@@ -435,6 +463,23 @@ function parallelTraverse( a, b, callback ) {
|
|
|
435
463
|
|
|
436
464
|
}
|
|
437
465
|
|
|
466
|
+
/**
|
|
467
|
+
* Retarget options of `SkeletonUtils`.
|
|
468
|
+
*
|
|
469
|
+
* @typedef {Object} module:SkeletonUtils~RetargetOptions
|
|
470
|
+
* @property {boolean} [useFirstFramePosition=false] - Whether to use the position of the first frame or not.
|
|
471
|
+
* @property {number} [fps] - The FPS of the clip.
|
|
472
|
+
* @property {Object<string,string>} [names] - A dictionary for mapping target to source bone names.
|
|
473
|
+
* @property {function(string):string} [getBoneName] - A function for mapping bone names. Alternative to `names`.
|
|
474
|
+
* @property {Array<number>} [trim] - Whether to trim the clip or not. If set the array should hold two values for the start and end.
|
|
475
|
+
* @property {boolean} [preserveBoneMatrix=true] - Whether to preserve bone matrices or not.
|
|
476
|
+
* @property {boolean} [preserveBonePositions=true] - Whether to preserve bone positions or not.
|
|
477
|
+
* @property {boolean} [useTargetMatrix=false] - Whether to use the target matrix or not.
|
|
478
|
+
* @property {string} [hip='hip'] - The name of the source's hip bone.
|
|
479
|
+
* @property {Vector3} [hipInfluence=(1,1,1)] - The hip influence.
|
|
480
|
+
* @property {number} [scale=1] - The scale.
|
|
481
|
+
**/
|
|
482
|
+
|
|
438
483
|
export {
|
|
439
484
|
retarget,
|
|
440
485
|
retargetClip,
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
// - https://github.com/mrdoob/three.js/pull/27202#issuecomment-1817640271
|
|
4
|
-
//
|
|
5
|
-
// expects unsigned 32b integer values
|
|
1
|
+
|
|
2
|
+
/** @module SortUtils */
|
|
6
3
|
|
|
7
4
|
const POWER = 3;
|
|
8
5
|
const BIT_MAX = 32;
|
|
@@ -24,6 +21,18 @@ for ( let i = 0; i < ( ITERATIONS + 1 ); i ++ ) {
|
|
|
24
21
|
|
|
25
22
|
const defaultGet = ( el ) => el;
|
|
26
23
|
|
|
24
|
+
/**
|
|
25
|
+
* Hybrid radix sort from.
|
|
26
|
+
*
|
|
27
|
+
* - {@link https://gist.github.com/sciecode/93ed864dd77c5c8803c6a86698d68dab}
|
|
28
|
+
* - {@link https://github.com/mrdoob/three.js/pull/27202#issuecomment-1817640271}
|
|
29
|
+
*
|
|
30
|
+
* Expects unsigned 32b integer values.
|
|
31
|
+
*
|
|
32
|
+
* @function
|
|
33
|
+
* @param {Array<Object>} arr - The array to sort.
|
|
34
|
+
* @param {Object} opt - The options
|
|
35
|
+
*/
|
|
27
36
|
export const radixSort = ( arr, opt ) => {
|
|
28
37
|
|
|
29
38
|
const len = arr.length;
|
|
@@ -2,14 +2,19 @@ import {
|
|
|
2
2
|
Vector2
|
|
3
3
|
} from 'three';
|
|
4
4
|
|
|
5
|
+
/** @module UVsDebug */
|
|
6
|
+
|
|
5
7
|
/**
|
|
6
|
-
*
|
|
8
|
+
* Function for "unwrapping" and debugging three.js geometries UV mapping.
|
|
7
9
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
+
* ```js
|
|
11
|
+
* document.body.appendChild( UVsDebug( new THREE.SphereGeometry() ) );
|
|
12
|
+
* ```
|
|
10
13
|
*
|
|
14
|
+
* @param {BufferGeometry} geometry - The geometry whose uv coordinates should be inspected.
|
|
15
|
+
* @param {number} [size=1024] - The size of the debug canvas.
|
|
16
|
+
* @return {HTMLCanvasElement} A canvas element with visualized uv coordinates.
|
|
11
17
|
*/
|
|
12
|
-
|
|
13
18
|
function UVsDebug( geometry, size = 1024 ) {
|
|
14
19
|
|
|
15
20
|
// handles wrapping of uv.x > 1 only
|
|
@@ -10,11 +10,24 @@ import {
|
|
|
10
10
|
SRGBColorSpace
|
|
11
11
|
} from 'three';
|
|
12
12
|
|
|
13
|
+
/** @module WebGLTextureUtils */
|
|
14
|
+
|
|
13
15
|
let _renderer;
|
|
14
16
|
let fullscreenQuadGeometry;
|
|
15
17
|
let fullscreenQuadMaterial;
|
|
16
18
|
let fullscreenQuad;
|
|
17
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Returns an uncompressed version of the given compressed texture.
|
|
22
|
+
*
|
|
23
|
+
* This module can only be used with {@link WebGLRenderer}. When using {@link WebGPURenderer},
|
|
24
|
+
* import the function from {@link WebGPUTextureUtils}.
|
|
25
|
+
*
|
|
26
|
+
* @param {CompressedTexture} texture - The compressed texture.
|
|
27
|
+
* @param {number} [maxTextureSize=Infinity] - The maximum size of the uncompressed texture.
|
|
28
|
+
* @param {?WebGLRenderer} [renderer=null] - A reference to a renderer.
|
|
29
|
+
* @return {CanvasTexture} The uncompressed texture.
|
|
30
|
+
*/
|
|
18
31
|
export function decompress( texture, maxTextureSize = Infinity, renderer = null ) {
|
|
19
32
|
|
|
20
33
|
if ( ! fullscreenQuadGeometry ) fullscreenQuadGeometry = new PlaneGeometry( 2, 2, 1, 1 );
|
|
@@ -6,9 +6,23 @@ import {
|
|
|
6
6
|
} from 'three';
|
|
7
7
|
import { texture, uv } from 'three/tsl';
|
|
8
8
|
|
|
9
|
+
/** @module WebGPUTextureUtils */
|
|
10
|
+
|
|
9
11
|
let _renderer;
|
|
10
12
|
const _quadMesh = /*@__PURE__*/ new QuadMesh();
|
|
11
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Returns an uncompressed version of the given compressed texture.
|
|
16
|
+
*
|
|
17
|
+
* This module can only be used with {@link WebGPURenderer}. When using {@link WebGLRenderer},
|
|
18
|
+
* import the function from {@link WebGLTextureUtils}.
|
|
19
|
+
*
|
|
20
|
+
* @async
|
|
21
|
+
* @param {CompressedTexture} blitTexture - The compressed texture.
|
|
22
|
+
* @param {number} [maxTextureSize=Infinity] - The maximum size of the uncompressed texture.
|
|
23
|
+
* @param {?WebGPURenderer} [renderer=null] - A reference to a renderer.
|
|
24
|
+
* @return {Promise<CanvasTexture>} A Promise that resolved with the uncompressed texture.
|
|
25
|
+
*/
|
|
12
26
|
export async function decompress( blitTexture, maxTextureSize = Infinity, renderer = null ) {
|
|
13
27
|
|
|
14
28
|
if ( renderer === null ) {
|
|
@@ -1,17 +1,58 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* A simple pool for managing Web Workers.
|
|
3
3
|
*/
|
|
4
|
-
|
|
5
4
|
export class WorkerPool {
|
|
6
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Constructs a new Worker pool.
|
|
8
|
+
*
|
|
9
|
+
* @param {number} [pool=4] - The size of the pool.
|
|
10
|
+
*/
|
|
7
11
|
constructor( pool = 4 ) {
|
|
8
12
|
|
|
13
|
+
/**
|
|
14
|
+
* The size of the pool.
|
|
15
|
+
*
|
|
16
|
+
* @type {number}
|
|
17
|
+
* @default 4
|
|
18
|
+
*/
|
|
9
19
|
this.pool = pool;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* A message queue.
|
|
23
|
+
*
|
|
24
|
+
* @type {Array<Object>}
|
|
25
|
+
*/
|
|
10
26
|
this.queue = [];
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* An array of Workers.
|
|
30
|
+
*
|
|
31
|
+
* @type {Array<Worker>}
|
|
32
|
+
*/
|
|
11
33
|
this.workers = [];
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* An array with resolve functions for messages.
|
|
37
|
+
*
|
|
38
|
+
* @type {Array<Function>}
|
|
39
|
+
*/
|
|
12
40
|
this.workersResolve = [];
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* The current worker status.
|
|
44
|
+
*
|
|
45
|
+
* @type {number}
|
|
46
|
+
*/
|
|
13
47
|
this.workerStatus = 0;
|
|
14
48
|
|
|
49
|
+
/**
|
|
50
|
+
* A factory function for creating workers.
|
|
51
|
+
*
|
|
52
|
+
* @type {?Function}
|
|
53
|
+
*/
|
|
54
|
+
this.workerCreator = null;
|
|
55
|
+
|
|
15
56
|
}
|
|
16
57
|
|
|
17
58
|
_initWorker( workerId ) {
|
|
@@ -54,18 +95,36 @@ export class WorkerPool {
|
|
|
54
95
|
|
|
55
96
|
}
|
|
56
97
|
|
|
98
|
+
/**
|
|
99
|
+
* Sets a function that is responsible for creating Workers.
|
|
100
|
+
*
|
|
101
|
+
* @param {Function} workerCreator - The worker creator function.
|
|
102
|
+
*/
|
|
57
103
|
setWorkerCreator( workerCreator ) {
|
|
58
104
|
|
|
59
105
|
this.workerCreator = workerCreator;
|
|
60
106
|
|
|
61
107
|
}
|
|
62
108
|
|
|
109
|
+
/**
|
|
110
|
+
* Sets the Worker limit
|
|
111
|
+
*
|
|
112
|
+
* @param {number} pool - The size of the pool.
|
|
113
|
+
*/
|
|
63
114
|
setWorkerLimit( pool ) {
|
|
64
115
|
|
|
65
116
|
this.pool = pool;
|
|
66
117
|
|
|
67
118
|
}
|
|
68
119
|
|
|
120
|
+
/**
|
|
121
|
+
* Post a message to an idle Worker. If no Worker is available,
|
|
122
|
+
* the message is pushed into a message queue for later processing.
|
|
123
|
+
*
|
|
124
|
+
* @param {Object} msg - The message.
|
|
125
|
+
* @param {Array<ArrayBuffer>} transfer - An array with array buffers for data transfer.
|
|
126
|
+
* @return {Promise} A Promise that resolves when the message has been processed.
|
|
127
|
+
*/
|
|
69
128
|
postMessage( msg, transfer ) {
|
|
70
129
|
|
|
71
130
|
return new Promise( ( resolve ) => {
|
|
@@ -89,6 +148,10 @@ export class WorkerPool {
|
|
|
89
148
|
|
|
90
149
|
}
|
|
91
150
|
|
|
151
|
+
/**
|
|
152
|
+
* Terminates all Workers of this pool. Call this method whenever this
|
|
153
|
+
* Worker pool is no longer used in your app.
|
|
154
|
+
*/
|
|
92
155
|
dispose() {
|
|
93
156
|
|
|
94
157
|
this.workers.forEach( ( worker ) => worker.terminate() );
|
|
@@ -1,5 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A utility class for creating a button that allows to initiate
|
|
3
|
+
* immersive AR sessions based on WebXR. The button can be created
|
|
4
|
+
* with a factory method and then appended ot the website's DOM.
|
|
5
|
+
*
|
|
6
|
+
* ```js
|
|
7
|
+
* document.body.appendChild( ARButton.createButton( renderer ) );
|
|
8
|
+
* ```
|
|
9
|
+
*
|
|
10
|
+
* @hideconstructor
|
|
11
|
+
*/
|
|
1
12
|
class ARButton {
|
|
2
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Constructs a new AR button.
|
|
16
|
+
*
|
|
17
|
+
* @param {WebGLRenderer|WebGPURenderer} renderer - The renderer.
|
|
18
|
+
* @param {XRSessionInit} [sessionInit] - The a configuration object for the AR session.
|
|
19
|
+
* @return {HTMLElement} The button or an error message if `immersive-ar` isn't supported.
|
|
20
|
+
*/
|
|
3
21
|
static createButton( renderer, sessionInit = {} ) {
|
|
4
22
|
|
|
5
23
|
const button = document.createElement( 'button' );
|
|
@@ -4,18 +4,77 @@ import { XRHandMeshModel } from './XRHandMeshModel.js';
|
|
|
4
4
|
const TOUCH_RADIUS = 0.01;
|
|
5
5
|
const POINTING_JOINT = 'index-finger-tip';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Represents an Oculus hand model.
|
|
9
|
+
*
|
|
10
|
+
* @augments Object3D
|
|
11
|
+
*/
|
|
7
12
|
class OculusHandModel extends Object3D {
|
|
8
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Constructs a new Oculus hand model.
|
|
16
|
+
*
|
|
17
|
+
* @param {Group} controller - The hand controller.
|
|
18
|
+
* @param {?Loader} [loader=null] - A loader that is used to load hand models.
|
|
19
|
+
* @param {?Function} [onLoad=null] - A callback that is executed when a hand model has been loaded.
|
|
20
|
+
*/
|
|
9
21
|
constructor( controller, loader = null, onLoad = null ) {
|
|
10
22
|
|
|
11
23
|
super();
|
|
12
24
|
|
|
25
|
+
/**
|
|
26
|
+
* The hand controller.
|
|
27
|
+
*
|
|
28
|
+
* @type {Group}
|
|
29
|
+
*/
|
|
13
30
|
this.controller = controller;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* The motion controller.
|
|
34
|
+
*
|
|
35
|
+
* @type {?MotionController}
|
|
36
|
+
* @default null
|
|
37
|
+
*/
|
|
14
38
|
this.motionController = null;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The model's environment map.
|
|
42
|
+
*
|
|
43
|
+
* @type {?Texture}
|
|
44
|
+
* @default null
|
|
45
|
+
*/
|
|
15
46
|
this.envMap = null;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* A loader that is used to load hand models.
|
|
50
|
+
*
|
|
51
|
+
* @type {?Loader}
|
|
52
|
+
* @default null
|
|
53
|
+
*/
|
|
16
54
|
this.loader = loader;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* A callback that is executed when a hand model has been loaded.
|
|
58
|
+
*
|
|
59
|
+
* @type {?Function}
|
|
60
|
+
* @default null
|
|
61
|
+
*/
|
|
17
62
|
this.onLoad = onLoad;
|
|
18
63
|
|
|
64
|
+
/**
|
|
65
|
+
* The path to the model repository.
|
|
66
|
+
*
|
|
67
|
+
* @type {?string}
|
|
68
|
+
* @default null
|
|
69
|
+
*/
|
|
70
|
+
this.path = null;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* The model mesh.
|
|
74
|
+
*
|
|
75
|
+
* @type {Mesh}
|
|
76
|
+
* @default null
|
|
77
|
+
*/
|
|
19
78
|
this.mesh = null;
|
|
20
79
|
|
|
21
80
|
controller.addEventListener( 'connected', ( event ) => {
|
|
@@ -41,6 +100,12 @@ class OculusHandModel extends Object3D {
|
|
|
41
100
|
|
|
42
101
|
}
|
|
43
102
|
|
|
103
|
+
/**
|
|
104
|
+
* Overwritten with a custom implementation. Makes sure the motion controller updates the mesh.
|
|
105
|
+
*
|
|
106
|
+
* @param {boolean} [force=false] - When set to `true`, a recomputation of world matrices is forced even
|
|
107
|
+
* when {@link Object3D#matrixWorldAutoUpdate} is set to `false`.
|
|
108
|
+
*/
|
|
44
109
|
updateMatrixWorld( force ) {
|
|
45
110
|
|
|
46
111
|
super.updateMatrixWorld( force );
|
|
@@ -53,6 +118,11 @@ class OculusHandModel extends Object3D {
|
|
|
53
118
|
|
|
54
119
|
}
|
|
55
120
|
|
|
121
|
+
/**
|
|
122
|
+
* Returns the pointer position which is the position of the index finger tip.
|
|
123
|
+
*
|
|
124
|
+
* @return {Vector3|null} The pointer position. Returns `null` if not index finger tip joint was found.
|
|
125
|
+
*/
|
|
56
126
|
getPointerPosition() {
|
|
57
127
|
|
|
58
128
|
const indexFingerTip = this.controller.joints[ POINTING_JOINT ];
|
|
@@ -68,6 +138,13 @@ class OculusHandModel extends Object3D {
|
|
|
68
138
|
|
|
69
139
|
}
|
|
70
140
|
|
|
141
|
+
/**
|
|
142
|
+
* Returns `true` if the current pointer position (the index finger tip) intersections
|
|
143
|
+
* with the given box object.
|
|
144
|
+
*
|
|
145
|
+
* @param {Mesh} boxObject - The box object.
|
|
146
|
+
* @return {boolean} Whether an intersection was found or not.
|
|
147
|
+
*/
|
|
71
148
|
intersectBoxObject( boxObject ) {
|
|
72
149
|
|
|
73
150
|
const pointerPosition = this.getPointerPosition();
|
|
@@ -85,6 +162,12 @@ class OculusHandModel extends Object3D {
|
|
|
85
162
|
|
|
86
163
|
}
|
|
87
164
|
|
|
165
|
+
/**
|
|
166
|
+
* Executed actions depending on the interaction state with
|
|
167
|
+
* the given button.
|
|
168
|
+
*
|
|
169
|
+
* @param {Object} button - The button.
|
|
170
|
+
*/
|
|
88
171
|
checkButton( button ) {
|
|
89
172
|
|
|
90
173
|
if ( this.intersectBoxObject( button ) ) {
|