super-three 0.173.5 → 0.176.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +21993 -1359
- package/build/three.core.js +21129 -1188
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +835 -142
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +8 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +19493 -17617
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +19477 -17617
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +144 -42
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +194 -71
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +74 -30
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +51 -5
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +36 -1
- package/examples/jsm/loaders/DDSLoader.js +25 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +71 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +222 -9
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +87 -19
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +56 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +90 -70
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +105 -13
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +109 -73
- package/examples/jsm/misc/VolumeSlice.js +91 -48
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +75 -2
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +134 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +268 -134
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/AST.js +10 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +17 -3
- package/examples/jsm/transpiler/TSLEncoder.js +83 -15
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +24 -25
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +2 -3
- package/examples/jsm/tsl/display/AnamorphicNode.js +8 -9
- package/examples/jsm/tsl/display/BleachBypass.js +1 -2
- package/examples/jsm/tsl/display/BloomNode.js +15 -16
- package/examples/jsm/tsl/display/DenoiseNode.js +9 -10
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +5 -6
- package/examples/jsm/tsl/display/DotScreenNode.js +5 -6
- package/examples/jsm/tsl/display/FXAANode.js +2 -3
- package/examples/jsm/tsl/display/FilmNode.js +9 -8
- package/examples/jsm/tsl/display/GTAONode.js +11 -12
- package/examples/jsm/tsl/display/GaussianBlurNode.js +14 -14
- package/examples/jsm/tsl/display/LensflareNode.js +15 -16
- package/examples/jsm/tsl/display/Lut3DNode.js +4 -5
- package/examples/jsm/tsl/display/MotionBlur.js +1 -2
- package/examples/jsm/tsl/display/OutlineNode.js +7 -8
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -3
- package/examples/jsm/tsl/display/PixelationPassNode.js +14 -15
- package/examples/jsm/tsl/display/RGBShiftNode.js +5 -6
- package/examples/jsm/tsl/display/SMAANode.js +13 -7
- package/examples/jsm/tsl/display/SSAAPassNode.js +7 -7
- package/examples/jsm/tsl/display/SSRNode.js +6 -7
- package/examples/jsm/tsl/display/Sepia.js +1 -2
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -3
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +4 -4
- package/examples/jsm/tsl/display/StereoPassNode.js +2 -3
- package/examples/jsm/tsl/display/TRAAPassNode.js +11 -10
- package/examples/jsm/tsl/display/TransitionNode.js +4 -5
- package/examples/jsm/tsl/display/hashBlur.js +1 -2
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +33 -7
- package/examples/jsm/tsl/math/Bayer.js +31 -0
- package/examples/jsm/tsl/utils/Raymarching.js +67 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +3 -4
- package/src/Three.TSL.js +7 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +169 -19
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/Audio.js +339 -0
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +76 -0
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +28 -0
- package/src/cameras/Camera.js +47 -0
- package/src/cameras/CubeCamera.js +66 -0
- package/src/cameras/OrthographicCamera.js +109 -0
- package/src/cameras/PerspectiveCamera.js +163 -40
- package/src/cameras/StereoCamera.js +46 -0
- package/src/constants.js +1429 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/EventDispatcher.js +44 -2
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +593 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +170 -11
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +88 -1
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +13 -780
- package/src/extras/ImageUtils.js +20 -2
- package/src/extras/PMREMGenerator.js +41 -25
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +95 -15
- package/src/extras/core/Curve.js +150 -50
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +29 -3
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +63 -0
- package/src/extras/core/ShapePath.js +76 -0
- package/src/extras/curves/ArcCurve.js +22 -0
- package/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/src/extras/curves/CubicBezierCurve.js +67 -0
- package/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/src/extras/curves/EllipseCurve.js +102 -0
- package/src/extras/curves/LineCurve.js +36 -0
- package/src/extras/curves/LineCurve3.js +36 -0
- package/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/src/extras/curves/SplineCurve.js +48 -0
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/BoxGeometry.js +38 -0
- package/src/geometries/CapsuleGeometry.js +34 -0
- package/src/geometries/CircleGeometry.js +40 -0
- package/src/geometries/ConeGeometry.js +38 -0
- package/src/geometries/CylinderGeometry.js +39 -0
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +28 -0
- package/src/geometries/ExtrudeGeometry.js +112 -28
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +40 -0
- package/src/geometries/OctahedronGeometry.js +32 -0
- package/src/geometries/PlaneGeometry.js +34 -0
- package/src/geometries/PolyhedronGeometry.js +29 -0
- package/src/geometries/RingGeometry.js +36 -0
- package/src/geometries/ShapeGeometry.js +37 -0
- package/src/geometries/SphereGeometry.js +37 -0
- package/src/geometries/TetrahedronGeometry.js +32 -0
- package/src/geometries/TorusGeometry.js +35 -0
- package/src/geometries/TorusKnotGeometry.js +38 -0
- package/src/geometries/TubeGeometry.js +49 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +60 -3
- package/src/helpers/AxesHelper.js +28 -0
- package/src/helpers/Box3Helper.js +28 -0
- package/src/helpers/BoxHelper.js +43 -7
- package/src/helpers/CameraHelper.js +45 -5
- package/src/helpers/DirectionalLightHelper.js +52 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +39 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -0
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +39 -2
- package/src/helpers/SpotLightHelper.js +40 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +57 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +32 -0
- package/src/lights/Light.js +36 -0
- package/src/lights/LightProbe.js +43 -0
- package/src/lights/LightShadow.js +159 -0
- package/src/lights/PointLight.js +59 -0
- package/src/lights/PointLightShadow.js +21 -0
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +102 -0
- package/src/lights/SpotLightShadow.js +22 -0
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +130 -0
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +53 -0
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +13 -9
- package/src/loaders/nodes/NodeMaterialLoader.js +6 -6
- package/src/loaders/nodes/NodeObjectLoader.js +12 -12
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +481 -4
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +14 -14
- package/src/materials/nodes/LineBasicNodeMaterial.js +3 -3
- package/src/materials/nodes/LineDashedNodeMaterial.js +12 -12
- package/src/materials/nodes/MeshBasicNodeMaterial.js +7 -7
- package/src/materials/nodes/MeshLambertNodeMaterial.js +5 -5
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +3 -3
- package/src/materials/nodes/MeshNormalNodeMaterial.js +8 -4
- package/src/materials/nodes/MeshPhongNodeMaterial.js +9 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +43 -43
- package/src/materials/nodes/MeshSSSNodeMaterial.js +18 -21
- package/src/materials/nodes/MeshStandardNodeMaterial.js +11 -11
- package/src/materials/nodes/MeshToonNodeMaterial.js +4 -4
- package/src/materials/nodes/NodeMaterial.js +66 -47
- package/src/materials/nodes/PointsNodeMaterial.js +6 -6
- package/src/materials/nodes/ShadowNodeMaterial.js +13 -4
- package/src/materials/nodes/SpriteNodeMaterial.js +17 -9
- package/src/materials/nodes/VolumeNodeMaterial.js +25 -128
- package/src/materials/nodes/manager/NodeMaterialObserver.js +8 -8
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +137 -4
- package/src/math/Frustum.js +83 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +94 -0
- package/src/math/MathUtils.js +405 -19
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +368 -3
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +262 -6
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +70 -8
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +206 -2
- package/src/math/Vector2.js +388 -2
- package/src/math/Vector3.js +541 -4
- package/src/math/Vector4.js +393 -0
- package/src/math/interpolants/CubicInterpolant.js +10 -1
- package/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/src/math/interpolants/LinearInterpolant.js +13 -0
- package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/TSL.js +1 -0
- package/src/nodes/accessors/AccessorsUtils.js +4 -2
- package/src/nodes/accessors/Arrays.js +6 -6
- package/src/nodes/accessors/BatchNode.js +10 -11
- package/src/nodes/accessors/Bitangent.js +6 -2
- package/src/nodes/accessors/BufferAttributeNode.js +33 -31
- package/src/nodes/accessors/BufferNode.js +12 -13
- package/src/nodes/accessors/BuiltinNode.js +7 -8
- package/src/nodes/accessors/Camera.js +9 -2
- package/src/nodes/accessors/ClippingNode.js +4 -4
- package/src/nodes/accessors/CubeTextureNode.js +17 -19
- package/src/nodes/accessors/InstanceNode.js +10 -11
- package/src/nodes/accessors/InstancedMeshNode.js +3 -4
- package/src/nodes/accessors/Lights.js +12 -15
- package/src/nodes/accessors/MaterialNode.js +45 -9
- package/src/nodes/accessors/MaterialProperties.js +51 -2
- package/src/nodes/accessors/MaterialReferenceNode.js +11 -12
- package/src/nodes/accessors/ModelNode.js +20 -3
- package/src/nodes/accessors/ModelViewProjectionNode.js +1 -2
- package/src/nodes/accessors/MorphNode.js +29 -26
- package/src/nodes/accessors/Normal.js +11 -3
- package/src/nodes/accessors/Object3DNode.js +51 -16
- package/src/nodes/accessors/PointUVNode.js +2 -3
- package/src/nodes/accessors/Position.js +8 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +29 -29
- package/src/nodes/accessors/ReferenceNode.js +31 -31
- package/src/nodes/accessors/ReflectVector.js +4 -2
- package/src/nodes/accessors/RendererReferenceNode.js +9 -10
- package/src/nodes/accessors/SceneNode.js +5 -4
- package/src/nodes/accessors/SkinningNode.js +53 -44
- package/src/nodes/accessors/StorageBufferNode.js +24 -24
- package/src/nodes/accessors/StorageTextureNode.js +17 -17
- package/src/nodes/accessors/Tangent.js +6 -2
- package/src/nodes/accessors/Texture3DNode.js +11 -12
- package/src/nodes/accessors/TextureBicubic.js +2 -3
- package/src/nodes/accessors/TextureNode.js +68 -47
- package/src/nodes/accessors/TextureSizeNode.js +5 -6
- package/src/nodes/accessors/UV.js +2 -3
- package/src/nodes/accessors/UniformArrayNode.js +24 -24
- package/src/nodes/accessors/UserDataNode.js +11 -12
- package/src/nodes/accessors/VelocityNode.js +4 -5
- package/src/nodes/accessors/VertexColorNode.js +7 -8
- package/src/nodes/code/CodeNode.js +15 -13
- package/src/nodes/code/ExpressionNode.js +8 -9
- package/src/nodes/code/FunctionCallNode.js +29 -9
- package/src/nodes/code/FunctionNode.js +1 -1
- package/src/nodes/code/ScriptableNode.js +27 -28
- package/src/nodes/code/ScriptableValueNode.js +11 -12
- package/src/nodes/core/ArrayNode.js +29 -12
- package/src/nodes/core/AssignNode.js +4 -5
- package/src/nodes/core/AttributeNode.js +8 -9
- package/src/nodes/core/BypassNode.js +3 -4
- package/src/nodes/core/CacheNode.js +5 -6
- package/src/nodes/core/ConstNode.js +4 -4
- package/src/nodes/core/ContextNode.js +9 -9
- package/src/nodes/core/IndexNode.js +8 -4
- package/src/nodes/core/InputNode.js +7 -7
- package/src/nodes/core/LightingModel.js +17 -17
- package/src/nodes/core/MRTNode.js +9 -10
- package/src/nodes/core/Node.js +49 -37
- package/src/nodes/core/NodeAttribute.js +7 -7
- package/src/nodes/core/NodeBuilder.js +248 -175
- package/src/nodes/core/NodeCache.js +4 -4
- package/src/nodes/core/NodeCode.js +6 -6
- package/src/nodes/core/NodeFrame.js +10 -10
- package/src/nodes/core/NodeFunction.js +8 -8
- package/src/nodes/core/NodeFunctionInput.js +8 -8
- package/src/nodes/core/NodeParser.js +1 -1
- package/src/nodes/core/NodeUniform.js +7 -7
- package/src/nodes/core/NodeUtils.js +22 -24
- package/src/nodes/core/NodeVar.js +9 -9
- package/src/nodes/core/NodeVarying.js +4 -4
- package/src/nodes/core/OutputStructNode.js +2 -3
- package/src/nodes/core/ParameterNode.js +6 -7
- package/src/nodes/core/PropertyNode.js +41 -13
- package/src/nodes/core/StackNode.js +11 -12
- package/src/nodes/core/StructNode.js +2 -3
- package/src/nodes/core/StructTypeNode.js +10 -6
- package/src/nodes/core/TempNode.js +3 -3
- package/src/nodes/core/UniformGroupNode.js +15 -12
- package/src/nodes/core/UniformNode.js +9 -10
- package/src/nodes/core/VarNode.js +14 -18
- package/src/nodes/core/VaryingNode.js +10 -10
- package/src/nodes/core/constants.js +0 -2
- package/src/nodes/display/BlendModes.js +21 -14
- package/src/nodes/display/BumpMapNode.js +5 -6
- package/src/nodes/display/ColorAdjustment.js +13 -9
- package/src/nodes/display/ColorSpaceFunctions.js +4 -4
- package/src/nodes/display/ColorSpaceNode.js +15 -12
- package/src/nodes/display/FrontFacingNode.js +3 -3
- package/src/nodes/display/NormalMapNode.js +5 -6
- package/src/nodes/display/PassNode.js +122 -35
- package/src/nodes/display/PosterizeNode.js +2 -3
- package/src/nodes/display/RenderOutputNode.js +8 -9
- package/src/nodes/display/ScreenNode.js +16 -7
- package/src/nodes/display/ToneMappingFunctions.js +12 -8
- package/src/nodes/display/ToneMappingNode.js +8 -8
- package/src/nodes/display/ToonOutlinePassNode.js +3 -4
- package/src/nodes/display/ViewportDepthNode.js +15 -7
- package/src/nodes/display/ViewportDepthTextureNode.js +6 -7
- package/src/nodes/display/ViewportSharedTextureNode.js +6 -7
- package/src/nodes/display/ViewportTextureNode.js +16 -16
- package/src/nodes/fog/Fog.js +5 -2
- package/src/nodes/functions/BSDF/LTC.js +45 -1
- package/src/nodes/functions/BasicLightingModel.js +5 -8
- package/src/nodes/functions/PhongLightingModel.js +6 -8
- package/src/nodes/functions/PhysicalLightingModel.js +40 -42
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/ToonLightingModel.js +5 -6
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +8 -8
- package/src/nodes/geometry/RangeNode.js +4 -5
- package/src/nodes/gpgpu/AtomicFunctionNode.js +33 -48
- package/src/nodes/gpgpu/BarrierNode.js +6 -4
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +26 -31
- package/src/nodes/gpgpu/ComputeNode.js +43 -16
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +16 -17
- package/src/nodes/lighting/AONode.js +2 -2
- package/src/nodes/lighting/AmbientLightNode.js +1 -1
- package/src/nodes/lighting/AnalyticLightNode.js +50 -9
- package/src/nodes/lighting/BasicLightMapNode.js +2 -2
- package/src/nodes/lighting/DirectionalLightNode.js +3 -12
- package/src/nodes/lighting/EnvironmentNode.js +5 -8
- package/src/nodes/lighting/HemisphereLightNode.js +1 -1
- package/src/nodes/lighting/LightProbeNode.js +1 -1
- package/src/nodes/lighting/LightUtils.js +1 -5
- package/src/nodes/lighting/LightingContextNode.js +10 -10
- package/src/nodes/lighting/LightingNode.js +1 -1
- package/src/nodes/lighting/LightsNode.js +68 -25
- package/src/nodes/lighting/PointLightNode.js +12 -27
- package/src/nodes/lighting/PointShadowNode.js +5 -6
- package/src/nodes/lighting/RectAreaLightNode.js +5 -10
- package/src/nodes/lighting/ShadowBaseNode.js +8 -9
- package/src/nodes/lighting/ShadowNode.js +28 -15
- package/src/nodes/lighting/SpotLightNode.js +8 -19
- package/src/nodes/math/ConditionalNode.js +26 -9
- package/src/nodes/math/Hash.js +2 -3
- package/src/nodes/math/MathNode.js +217 -150
- package/src/nodes/math/MathUtils.js +8 -6
- package/src/nodes/math/OperatorNode.js +198 -89
- package/src/nodes/math/TriNoise3D.js +2 -3
- package/src/nodes/parsers/GLSLNodeFunction.js +3 -3
- package/src/nodes/parsers/GLSLNodeParser.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +61 -37
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/procedural/Checker.js +2 -3
- package/src/nodes/shapes/Shapes.js +2 -3
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +117 -19
- package/src/nodes/utils/ArrayElementNode.js +5 -3
- package/src/nodes/utils/ConvertNode.js +3 -3
- package/src/nodes/utils/CubeMapNode.js +7 -8
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/Discard.js +5 -5
- package/src/nodes/utils/EquirectUVNode.js +3 -4
- package/src/nodes/utils/FlipNode.js +3 -3
- package/src/nodes/utils/FunctionOverloadingNode.js +3 -4
- package/src/nodes/utils/JoinNode.js +29 -4
- package/src/nodes/utils/LoopNode.js +67 -35
- package/src/nodes/utils/MatcapUVNode.js +1 -2
- package/src/nodes/utils/MaxMipLevelNode.js +4 -5
- package/src/nodes/utils/MemberNode.js +2 -2
- package/src/nodes/utils/Oscillators.js +8 -6
- package/src/nodes/utils/Packing.js +4 -4
- package/src/nodes/utils/PostProcessingUtils.js +6 -5
- package/src/nodes/utils/RTTNode.js +19 -19
- package/src/nodes/utils/ReflectorNode.js +35 -25
- package/src/nodes/utils/RemapNode.js +9 -9
- package/src/nodes/utils/RotateNode.js +3 -4
- package/src/nodes/utils/SetNode.js +3 -3
- package/src/nodes/utils/SplitNode.js +5 -5
- package/src/nodes/utils/SpriteSheetUVNode.js +4 -5
- package/src/nodes/utils/SpriteUtils.js +5 -6
- package/src/nodes/utils/StorageArrayElementNode.js +3 -4
- package/src/nodes/utils/Timer.js +9 -5
- package/src/nodes/utils/TriplanarTexturesNode.js +20 -20
- package/src/nodes/utils/UVUtils.js +4 -4
- package/src/nodes/utils/ViewportUtils.js +3 -4
- package/src/objects/BatchedMesh.js +319 -32
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +4 -4
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +99 -5
- package/src/objects/Line.js +82 -0
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +75 -0
- package/src/objects/Points.js +60 -0
- package/src/objects/Skeleton.js +105 -0
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +622 -83
- package/src/renderers/common/Animation.js +6 -6
- package/src/renderers/common/Attributes.js +3 -3
- package/src/renderers/common/Backend.js +40 -31
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/BindGroup.js +5 -5
- package/src/renderers/common/Binding.js +4 -4
- package/src/renderers/common/Bindings.js +10 -0
- package/src/renderers/common/Buffer.js +5 -5
- package/src/renderers/common/BufferUtils.js +7 -9
- package/src/renderers/common/BundleGroup.js +6 -6
- package/src/renderers/common/ChainMap.js +3 -3
- package/src/renderers/common/ClippingContext.js +8 -8
- package/src/renderers/common/Color4.js +8 -8
- package/src/renderers/common/ComputePipeline.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/DataMap.js +2 -2
- package/src/renderers/common/Geometries.js +6 -6
- package/src/renderers/common/IndirectStorageBufferAttribute.js +3 -3
- package/src/renderers/common/Info.js +17 -17
- package/src/renderers/common/Pipeline.js +3 -3
- package/src/renderers/common/Pipelines.js +12 -12
- package/src/renderers/common/PostProcessing.js +13 -1
- package/src/renderers/common/ProgrammableStage.js +11 -11
- package/src/renderers/common/QuadMesh.js +5 -3
- package/src/renderers/common/RenderContext.js +24 -24
- package/src/renderers/common/RenderContexts.js +4 -4
- package/src/renderers/common/RenderList.js +16 -16
- package/src/renderers/common/RenderObject.js +27 -27
- package/src/renderers/common/RenderObjects.js +4 -4
- package/src/renderers/common/RenderPipeline.js +1 -1
- package/src/renderers/common/Renderer.js +272 -200
- package/src/renderers/common/RendererUtils.js +0 -2
- package/src/renderers/common/SampledTexture.js +20 -20
- package/src/renderers/common/Sampler.js +5 -5
- package/src/renderers/common/StorageBuffer.js +2 -2
- package/src/renderers/common/StorageBufferAttribute.js +4 -4
- package/src/renderers/common/StorageInstancedBufferAttribute.js +4 -4
- package/src/renderers/common/StorageTexture.js +6 -6
- package/src/renderers/common/Textures.js +6 -6
- package/src/renderers/common/TimestampQueryPool.js +66 -7
- package/src/renderers/common/Uniform.js +26 -26
- package/src/renderers/common/UniformBuffer.js +2 -2
- package/src/renderers/common/UniformsGroup.js +18 -18
- package/src/renderers/common/XRManager.js +369 -54
- package/src/renderers/common/XRRenderTarget.js +5 -5
- package/src/renderers/common/extras/PMREMGenerator.js +62 -37
- package/src/renderers/common/nodes/NodeBuilderState.js +7 -7
- package/src/renderers/common/nodes/NodeLibrary.js +13 -13
- package/src/renderers/common/nodes/NodeSampledTexture.js +12 -12
- package/src/renderers/common/nodes/NodeSampler.js +1 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
- package/src/renderers/common/nodes/NodeUniform.js +9 -9
- package/src/renderers/common/nodes/NodeUniformsGroup.js +3 -3
- package/src/renderers/common/nodes/Nodes.js +13 -13
- package/src/renderers/shaders/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLState.js +19 -19
- package/src/renderers/webgl-fallback/WebGLBackend.js +163 -146
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +4 -4
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +89 -99
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +5 -5
- package/src/renderers/webgl-fallback/utils/WebGLState.js +97 -47
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +79 -31
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +37 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -3
- package/src/renderers/webgpu/WebGPUBackend.js +200 -119
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +3 -13
- package/src/renderers/webgpu/WebGPURenderer.js +19 -13
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +171 -178
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -3
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +43 -9
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +2 -2
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +18 -10
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +9 -9
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +37 -37
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +31 -18
- package/src/renderers/webgpu/utils/WebGPUUtils.js +9 -9
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +185 -9
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +88 -0
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +61 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +362 -3
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -4,40 +4,113 @@ import { denormalize, normalize } from '../math/MathUtils.js';
|
|
|
4
4
|
|
|
5
5
|
const _vector = /*@__PURE__*/ new Vector3();
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* An alternative version of a buffer attribute with interleaved data. Interleaved
|
|
9
|
+
* attributes share a common interleaved data storage ({@link InterleavedBuffer}) and refer with
|
|
10
|
+
* different offsets into the buffer.
|
|
11
|
+
*/
|
|
7
12
|
class InterleavedBufferAttribute {
|
|
8
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Constructs a new interleaved buffer attribute.
|
|
16
|
+
*
|
|
17
|
+
* @param {InterleavedBuffer} interleavedBuffer - The buffer holding the interleaved data.
|
|
18
|
+
* @param {number} itemSize - The item size.
|
|
19
|
+
* @param {number} offset - The attribute offset into the buffer.
|
|
20
|
+
* @param {boolean} [normalized=false] - Whether the data are normalized or not.
|
|
21
|
+
*/
|
|
9
22
|
constructor( interleavedBuffer, itemSize, offset, normalized = false ) {
|
|
10
23
|
|
|
24
|
+
/**
|
|
25
|
+
* This flag can be used for type testing.
|
|
26
|
+
*
|
|
27
|
+
* @type {boolean}
|
|
28
|
+
* @readonly
|
|
29
|
+
* @default true
|
|
30
|
+
*/
|
|
11
31
|
this.isInterleavedBufferAttribute = true;
|
|
12
32
|
|
|
33
|
+
/**
|
|
34
|
+
* The name of the buffer attribute.
|
|
35
|
+
*
|
|
36
|
+
* @type {string}
|
|
37
|
+
*/
|
|
13
38
|
this.name = '';
|
|
14
39
|
|
|
40
|
+
/**
|
|
41
|
+
* The buffer holding the interleaved data.
|
|
42
|
+
*
|
|
43
|
+
* @type {InterleavedBuffer}
|
|
44
|
+
*/
|
|
15
45
|
this.data = interleavedBuffer;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* The item size, see {@link BufferAttribute#itemSize}.
|
|
49
|
+
*
|
|
50
|
+
* @type {number}
|
|
51
|
+
*/
|
|
16
52
|
this.itemSize = itemSize;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* The attribute offset into the buffer.
|
|
56
|
+
*
|
|
57
|
+
* @type {number}
|
|
58
|
+
*/
|
|
17
59
|
this.offset = offset;
|
|
18
60
|
|
|
61
|
+
/**
|
|
62
|
+
* Whether the data are normalized or not, see {@link BufferAttribute#normalized}
|
|
63
|
+
*
|
|
64
|
+
* @type {InterleavedBuffer}
|
|
65
|
+
*/
|
|
19
66
|
this.normalized = normalized;
|
|
20
67
|
|
|
21
68
|
}
|
|
22
69
|
|
|
70
|
+
/**
|
|
71
|
+
* The item count of this buffer attribute.
|
|
72
|
+
*
|
|
73
|
+
* @type {number}
|
|
74
|
+
* @readonly
|
|
75
|
+
*/
|
|
23
76
|
get count() {
|
|
24
77
|
|
|
25
78
|
return this.data.count;
|
|
26
79
|
|
|
27
80
|
}
|
|
28
81
|
|
|
82
|
+
/**
|
|
83
|
+
* The array holding the interleaved buffer attribute data.
|
|
84
|
+
*
|
|
85
|
+
* @type {TypedArray}
|
|
86
|
+
*/
|
|
29
87
|
get array() {
|
|
30
88
|
|
|
31
89
|
return this.data.array;
|
|
32
90
|
|
|
33
91
|
}
|
|
34
92
|
|
|
93
|
+
/**
|
|
94
|
+
* Flag to indicate that this attribute has changed and should be re-sent to
|
|
95
|
+
* the GPU. Set this to `true` when you modify the value of the array.
|
|
96
|
+
*
|
|
97
|
+
* @type {number}
|
|
98
|
+
* @default false
|
|
99
|
+
* @param {boolean} value
|
|
100
|
+
*/
|
|
35
101
|
set needsUpdate( value ) {
|
|
36
102
|
|
|
37
103
|
this.data.needsUpdate = value;
|
|
38
104
|
|
|
39
105
|
}
|
|
40
106
|
|
|
107
|
+
/**
|
|
108
|
+
* Applies the given 4x4 matrix to the given attribute. Only works with
|
|
109
|
+
* item size `3`.
|
|
110
|
+
*
|
|
111
|
+
* @param {Matrix4} m - The matrix to apply.
|
|
112
|
+
* @return {InterleavedBufferAttribute} A reference to this instance.
|
|
113
|
+
*/
|
|
41
114
|
applyMatrix4( m ) {
|
|
42
115
|
|
|
43
116
|
for ( let i = 0, l = this.data.count; i < l; i ++ ) {
|
|
@@ -54,6 +127,13 @@ class InterleavedBufferAttribute {
|
|
|
54
127
|
|
|
55
128
|
}
|
|
56
129
|
|
|
130
|
+
/**
|
|
131
|
+
* Applies the given 3x3 normal matrix to the given attribute. Only works with
|
|
132
|
+
* item size `3`.
|
|
133
|
+
*
|
|
134
|
+
* @param {Matrix3} m - The normal matrix to apply.
|
|
135
|
+
* @return {InterleavedBufferAttribute} A reference to this instance.
|
|
136
|
+
*/
|
|
57
137
|
applyNormalMatrix( m ) {
|
|
58
138
|
|
|
59
139
|
for ( let i = 0, l = this.count; i < l; i ++ ) {
|
|
@@ -70,6 +150,13 @@ class InterleavedBufferAttribute {
|
|
|
70
150
|
|
|
71
151
|
}
|
|
72
152
|
|
|
153
|
+
/**
|
|
154
|
+
* Applies the given 4x4 matrix to the given attribute. Only works with
|
|
155
|
+
* item size `3` and with direction vectors.
|
|
156
|
+
*
|
|
157
|
+
* @param {Matrix4} m - The matrix to apply.
|
|
158
|
+
* @return {InterleavedBufferAttribute} A reference to this instance.
|
|
159
|
+
*/
|
|
73
160
|
transformDirection( m ) {
|
|
74
161
|
|
|
75
162
|
for ( let i = 0, l = this.count; i < l; i ++ ) {
|
|
@@ -86,6 +173,13 @@ class InterleavedBufferAttribute {
|
|
|
86
173
|
|
|
87
174
|
}
|
|
88
175
|
|
|
176
|
+
/**
|
|
177
|
+
* Returns the given component of the vector at the given index.
|
|
178
|
+
*
|
|
179
|
+
* @param {number} index - The index into the buffer attribute.
|
|
180
|
+
* @param {number} component - The component index.
|
|
181
|
+
* @return {number} The returned value.
|
|
182
|
+
*/
|
|
89
183
|
getComponent( index, component ) {
|
|
90
184
|
|
|
91
185
|
let value = this.array[ index * this.data.stride + this.offset + component ];
|
|
@@ -96,6 +190,14 @@ class InterleavedBufferAttribute {
|
|
|
96
190
|
|
|
97
191
|
}
|
|
98
192
|
|
|
193
|
+
/**
|
|
194
|
+
* Sets the given value to the given component of the vector at the given index.
|
|
195
|
+
*
|
|
196
|
+
* @param {number} index - The index into the buffer attribute.
|
|
197
|
+
* @param {number} component - The component index.
|
|
198
|
+
* @param {number} value - The value to set.
|
|
199
|
+
* @return {InterleavedBufferAttribute} A reference to this instance.
|
|
200
|
+
*/
|
|
99
201
|
setComponent( index, component, value ) {
|
|
100
202
|
|
|
101
203
|
if ( this.normalized ) value = normalize( value, this.array );
|
|
@@ -106,6 +208,13 @@ class InterleavedBufferAttribute {
|
|
|
106
208
|
|
|
107
209
|
}
|
|
108
210
|
|
|
211
|
+
/**
|
|
212
|
+
* Sets the x component of the vector at the given index.
|
|
213
|
+
*
|
|
214
|
+
* @param {number} index - The index into the buffer attribute.
|
|
215
|
+
* @param {number} x - The value to set.
|
|
216
|
+
* @return {InterleavedBufferAttribute} A reference to this instance.
|
|
217
|
+
*/
|
|
109
218
|
setX( index, x ) {
|
|
110
219
|
|
|
111
220
|
if ( this.normalized ) x = normalize( x, this.array );
|
|
@@ -116,6 +225,13 @@ class InterleavedBufferAttribute {
|
|
|
116
225
|
|
|
117
226
|
}
|
|
118
227
|
|
|
228
|
+
/**
|
|
229
|
+
* Sets the y component of the vector at the given index.
|
|
230
|
+
*
|
|
231
|
+
* @param {number} index - The index into the buffer attribute.
|
|
232
|
+
* @param {number} y - The value to set.
|
|
233
|
+
* @return {InterleavedBufferAttribute} A reference to this instance.
|
|
234
|
+
*/
|
|
119
235
|
setY( index, y ) {
|
|
120
236
|
|
|
121
237
|
if ( this.normalized ) y = normalize( y, this.array );
|
|
@@ -126,6 +242,13 @@ class InterleavedBufferAttribute {
|
|
|
126
242
|
|
|
127
243
|
}
|
|
128
244
|
|
|
245
|
+
/**
|
|
246
|
+
* Sets the z component of the vector at the given index.
|
|
247
|
+
*
|
|
248
|
+
* @param {number} index - The index into the buffer attribute.
|
|
249
|
+
* @param {number} z - The value to set.
|
|
250
|
+
* @return {InterleavedBufferAttribute} A reference to this instance.
|
|
251
|
+
*/
|
|
129
252
|
setZ( index, z ) {
|
|
130
253
|
|
|
131
254
|
if ( this.normalized ) z = normalize( z, this.array );
|
|
@@ -136,6 +259,13 @@ class InterleavedBufferAttribute {
|
|
|
136
259
|
|
|
137
260
|
}
|
|
138
261
|
|
|
262
|
+
/**
|
|
263
|
+
* Sets the w component of the vector at the given index.
|
|
264
|
+
*
|
|
265
|
+
* @param {number} index - The index into the buffer attribute.
|
|
266
|
+
* @param {number} w - The value to set.
|
|
267
|
+
* @return {InterleavedBufferAttribute} A reference to this instance.
|
|
268
|
+
*/
|
|
139
269
|
setW( index, w ) {
|
|
140
270
|
|
|
141
271
|
if ( this.normalized ) w = normalize( w, this.array );
|
|
@@ -146,6 +276,12 @@ class InterleavedBufferAttribute {
|
|
|
146
276
|
|
|
147
277
|
}
|
|
148
278
|
|
|
279
|
+
/**
|
|
280
|
+
* Returns the x component of the vector at the given index.
|
|
281
|
+
*
|
|
282
|
+
* @param {number} index - The index into the buffer attribute.
|
|
283
|
+
* @return {number} The x component.
|
|
284
|
+
*/
|
|
149
285
|
getX( index ) {
|
|
150
286
|
|
|
151
287
|
let x = this.data.array[ index * this.data.stride + this.offset ];
|
|
@@ -156,6 +292,12 @@ class InterleavedBufferAttribute {
|
|
|
156
292
|
|
|
157
293
|
}
|
|
158
294
|
|
|
295
|
+
/**
|
|
296
|
+
* Returns the y component of the vector at the given index.
|
|
297
|
+
*
|
|
298
|
+
* @param {number} index - The index into the buffer attribute.
|
|
299
|
+
* @return {number} The y component.
|
|
300
|
+
*/
|
|
159
301
|
getY( index ) {
|
|
160
302
|
|
|
161
303
|
let y = this.data.array[ index * this.data.stride + this.offset + 1 ];
|
|
@@ -166,6 +308,12 @@ class InterleavedBufferAttribute {
|
|
|
166
308
|
|
|
167
309
|
}
|
|
168
310
|
|
|
311
|
+
/**
|
|
312
|
+
* Returns the z component of the vector at the given index.
|
|
313
|
+
*
|
|
314
|
+
* @param {number} index - The index into the buffer attribute.
|
|
315
|
+
* @return {number} The z component.
|
|
316
|
+
*/
|
|
169
317
|
getZ( index ) {
|
|
170
318
|
|
|
171
319
|
let z = this.data.array[ index * this.data.stride + this.offset + 2 ];
|
|
@@ -176,6 +324,12 @@ class InterleavedBufferAttribute {
|
|
|
176
324
|
|
|
177
325
|
}
|
|
178
326
|
|
|
327
|
+
/**
|
|
328
|
+
* Returns the w component of the vector at the given index.
|
|
329
|
+
*
|
|
330
|
+
* @param {number} index - The index into the buffer attribute.
|
|
331
|
+
* @return {number} The w component.
|
|
332
|
+
*/
|
|
179
333
|
getW( index ) {
|
|
180
334
|
|
|
181
335
|
let w = this.data.array[ index * this.data.stride + this.offset + 3 ];
|
|
@@ -186,6 +340,14 @@ class InterleavedBufferAttribute {
|
|
|
186
340
|
|
|
187
341
|
}
|
|
188
342
|
|
|
343
|
+
/**
|
|
344
|
+
* Sets the x and y component of the vector at the given index.
|
|
345
|
+
*
|
|
346
|
+
* @param {number} index - The index into the buffer attribute.
|
|
347
|
+
* @param {number} x - The value for the x component to set.
|
|
348
|
+
* @param {number} y - The value for the y component to set.
|
|
349
|
+
* @return {InterleavedBufferAttribute} A reference to this instance.
|
|
350
|
+
*/
|
|
189
351
|
setXY( index, x, y ) {
|
|
190
352
|
|
|
191
353
|
index = index * this.data.stride + this.offset;
|
|
@@ -204,6 +366,15 @@ class InterleavedBufferAttribute {
|
|
|
204
366
|
|
|
205
367
|
}
|
|
206
368
|
|
|
369
|
+
/**
|
|
370
|
+
* Sets the x, y and z component of the vector at the given index.
|
|
371
|
+
*
|
|
372
|
+
* @param {number} index - The index into the buffer attribute.
|
|
373
|
+
* @param {number} x - The value for the x component to set.
|
|
374
|
+
* @param {number} y - The value for the y component to set.
|
|
375
|
+
* @param {number} z - The value for the z component to set.
|
|
376
|
+
* @return {InterleavedBufferAttribute} A reference to this instance.
|
|
377
|
+
*/
|
|
207
378
|
setXYZ( index, x, y, z ) {
|
|
208
379
|
|
|
209
380
|
index = index * this.data.stride + this.offset;
|
|
@@ -224,6 +395,16 @@ class InterleavedBufferAttribute {
|
|
|
224
395
|
|
|
225
396
|
}
|
|
226
397
|
|
|
398
|
+
/**
|
|
399
|
+
* Sets the x, y, z and w component of the vector at the given index.
|
|
400
|
+
*
|
|
401
|
+
* @param {number} index - The index into the buffer attribute.
|
|
402
|
+
* @param {number} x - The value for the x component to set.
|
|
403
|
+
* @param {number} y - The value for the y component to set.
|
|
404
|
+
* @param {number} z - The value for the z component to set.
|
|
405
|
+
* @param {number} w - The value for the w component to set.
|
|
406
|
+
* @return {InterleavedBufferAttribute} A reference to this instance.
|
|
407
|
+
*/
|
|
227
408
|
setXYZW( index, x, y, z, w ) {
|
|
228
409
|
|
|
229
410
|
index = index * this.data.stride + this.offset;
|
|
@@ -246,6 +427,14 @@ class InterleavedBufferAttribute {
|
|
|
246
427
|
|
|
247
428
|
}
|
|
248
429
|
|
|
430
|
+
/**
|
|
431
|
+
* Returns a new buffer attribute with copied values from this instance.
|
|
432
|
+
*
|
|
433
|
+
* If no parameter is provided, cloning an interleaved buffer attribute will de-interleave buffer data.
|
|
434
|
+
*
|
|
435
|
+
* @param {Object} [data] - An object with interleaved buffers that allows to retain the interleaved property.
|
|
436
|
+
* @return {BufferAttribute|InterleavedBufferAttribute} A clone of this instance.
|
|
437
|
+
*/
|
|
249
438
|
clone( data ) {
|
|
250
439
|
|
|
251
440
|
if ( data === undefined ) {
|
|
@@ -288,6 +477,14 @@ class InterleavedBufferAttribute {
|
|
|
288
477
|
|
|
289
478
|
}
|
|
290
479
|
|
|
480
|
+
/**
|
|
481
|
+
* Serializes the buffer attribute into JSON.
|
|
482
|
+
*
|
|
483
|
+
* If no parameter is provided, cloning an interleaved buffer attribute will de-interleave buffer data.
|
|
484
|
+
*
|
|
485
|
+
* @param {Object} [data] - An optional value holding meta information about the serialization.
|
|
486
|
+
* @return {Object} A JSON object representing the serialized buffer attribute.
|
|
487
|
+
*/
|
|
291
488
|
toJSON( data ) {
|
|
292
489
|
|
|
293
490
|
if ( data === undefined ) {
|
package/src/core/Layers.js
CHANGED
|
@@ -1,56 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A layers object assigns an 3D object to 1 or more of 32
|
|
3
|
+
* layers numbered `0` to `31` - internally the layers are stored as a
|
|
4
|
+
* bit mask], and by default all 3D objects are a member of layer `0`.
|
|
5
|
+
*
|
|
6
|
+
* This can be used to control visibility - an object must share a layer with
|
|
7
|
+
* a camera to be visible when that camera's view is
|
|
8
|
+
* rendered.
|
|
9
|
+
*
|
|
10
|
+
* All classes that inherit from {@link Object3D} have an `layers` property which
|
|
11
|
+
* is an instance of this class.
|
|
12
|
+
*/
|
|
1
13
|
class Layers {
|
|
2
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Constructs a new layers instance, with membership
|
|
17
|
+
* initially set to layer `0`.
|
|
18
|
+
*/
|
|
3
19
|
constructor() {
|
|
4
20
|
|
|
21
|
+
/**
|
|
22
|
+
* A bit mask storing which of the 32 layers this layers object is currently
|
|
23
|
+
* a member of.
|
|
24
|
+
*
|
|
25
|
+
* @type {number}
|
|
26
|
+
*/
|
|
5
27
|
this.mask = 1 | 0;
|
|
6
28
|
|
|
7
29
|
}
|
|
8
30
|
|
|
9
|
-
|
|
31
|
+
/**
|
|
32
|
+
* Sets membership to the given layer, and remove membership all other layers.
|
|
33
|
+
*
|
|
34
|
+
* @param {number} layer - The layer to set.
|
|
35
|
+
*/
|
|
36
|
+
set( layer ) {
|
|
10
37
|
|
|
11
|
-
this.mask = ( 1 <<
|
|
38
|
+
this.mask = ( 1 << layer | 0 ) >>> 0;
|
|
12
39
|
|
|
13
40
|
}
|
|
14
41
|
|
|
15
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Adds membership of the given layer.
|
|
44
|
+
*
|
|
45
|
+
* @param {number} layer - The layer to enable.
|
|
46
|
+
*/
|
|
47
|
+
enable( layer ) {
|
|
16
48
|
|
|
17
|
-
this.mask |= 1 <<
|
|
49
|
+
this.mask |= 1 << layer | 0;
|
|
18
50
|
|
|
19
51
|
}
|
|
20
52
|
|
|
53
|
+
/**
|
|
54
|
+
* Adds membership to all layers.
|
|
55
|
+
*/
|
|
21
56
|
enableAll() {
|
|
22
57
|
|
|
23
58
|
this.mask = 0xffffffff | 0;
|
|
24
59
|
|
|
25
60
|
}
|
|
26
61
|
|
|
27
|
-
|
|
62
|
+
/**
|
|
63
|
+
* Toggles the membership of the given layer.
|
|
64
|
+
*
|
|
65
|
+
* @param {number} layer - The layer to toggle.
|
|
66
|
+
*/
|
|
67
|
+
toggle( layer ) {
|
|
28
68
|
|
|
29
|
-
this.mask ^= 1 <<
|
|
69
|
+
this.mask ^= 1 << layer | 0;
|
|
30
70
|
|
|
31
71
|
}
|
|
32
72
|
|
|
33
|
-
|
|
73
|
+
/**
|
|
74
|
+
* Removes membership of the given layer.
|
|
75
|
+
*
|
|
76
|
+
* @param {number} layer - The layer to enable.
|
|
77
|
+
*/
|
|
78
|
+
disable( layer ) {
|
|
34
79
|
|
|
35
|
-
this.mask &= ~ ( 1 <<
|
|
80
|
+
this.mask &= ~ ( 1 << layer | 0 );
|
|
36
81
|
|
|
37
82
|
}
|
|
38
83
|
|
|
84
|
+
/**
|
|
85
|
+
* Removes the membership from all layers.
|
|
86
|
+
*/
|
|
39
87
|
disableAll() {
|
|
40
88
|
|
|
41
89
|
this.mask = 0;
|
|
42
90
|
|
|
43
91
|
}
|
|
44
92
|
|
|
93
|
+
/**
|
|
94
|
+
* Returns `true` if this and the given layers object have at least one
|
|
95
|
+
* layer in common.
|
|
96
|
+
*
|
|
97
|
+
* @param {Layers} layers - The layers to test.
|
|
98
|
+
* @return {boolean } Whether this and the given layers object have at least one layer in common or not.
|
|
99
|
+
*/
|
|
45
100
|
test( layers ) {
|
|
46
101
|
|
|
47
102
|
return ( this.mask & layers.mask ) !== 0;
|
|
48
103
|
|
|
49
104
|
}
|
|
50
105
|
|
|
51
|
-
|
|
106
|
+
/**
|
|
107
|
+
* Returns `true` if the given layer is enabled.
|
|
108
|
+
*
|
|
109
|
+
* @param {number} layer - The layer to test.
|
|
110
|
+
* @return {boolean } Whether the given layer is enabled or not.
|
|
111
|
+
*/
|
|
112
|
+
isEnabled( layer ) {
|
|
52
113
|
|
|
53
|
-
return ( this.mask & ( 1 <<
|
|
114
|
+
return ( this.mask & ( 1 << layer | 0 ) ) !== 0;
|
|
54
115
|
|
|
55
116
|
}
|
|
56
117
|
|