@needle-tools/three 0.169.20 → 0.183.2-canary.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/LICENSE +1 -1
- package/README.md +5 -6
- package/build/three.cjs +54178 -56709
- package/build/three.core.js +59506 -0
- package/build/three.core.min.js +6 -0
- package/build/three.module.js +11645 -73012
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +648 -0
- package/build/three.tsl.min.js +6 -0
- package/build/three.webgpu.js +53905 -51657
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +53884 -51814
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
- package/examples/jsm/Addons.js +5 -15
- package/examples/jsm/animation/AnimationClipCreator.js +58 -6
- package/examples/jsm/animation/CCDIKSolver.js +152 -45
- package/examples/jsm/capabilities/WebGL.js +28 -29
- package/examples/jsm/capabilities/WebGPU.js +19 -17
- package/examples/jsm/controls/ArcballControls.js +474 -178
- package/examples/jsm/controls/DragControls.js +100 -58
- package/examples/jsm/controls/FirstPersonControls.js +116 -6
- package/examples/jsm/controls/FlyControls.js +50 -2
- package/examples/jsm/controls/MapControls.js +96 -8
- package/examples/jsm/controls/OrbitControls.js +496 -57
- package/examples/jsm/controls/PointerLockControls.js +115 -22
- package/examples/jsm/controls/TrackballControls.js +166 -14
- package/examples/jsm/controls/TransformControls.js +336 -26
- package/examples/jsm/csm/CSM.js +232 -18
- package/examples/jsm/csm/CSMFrustum.js +61 -4
- package/examples/jsm/csm/CSMHelper.js +50 -0
- package/examples/jsm/csm/CSMShader.js +13 -1
- package/examples/jsm/csm/CSMShadowNode.js +599 -0
- package/examples/jsm/curves/CurveExtras.js +303 -31
- package/examples/jsm/curves/NURBSCurve.js +91 -16
- package/examples/jsm/curves/NURBSSurface.js +52 -6
- package/examples/jsm/curves/NURBSUtils.js +102 -112
- package/examples/jsm/curves/NURBSVolume.js +24 -4
- package/examples/jsm/effects/AnaglyphEffect.js +134 -7
- package/examples/jsm/effects/AsciiEffect.js +69 -22
- package/examples/jsm/effects/OutlineEffect.js +61 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +30 -0
- package/examples/jsm/effects/StereoEffect.js +31 -0
- package/examples/jsm/environments/ColorEnvironment.js +59 -0
- package/examples/jsm/environments/DebugEnvironment.js +50 -0
- package/examples/jsm/environments/RoomEnvironment.js +83 -42
- package/examples/jsm/exporters/DRACOExporter.js +56 -14
- package/examples/jsm/exporters/EXRExporter.js +40 -9
- package/examples/jsm/exporters/GLTFExporter.js +502 -169
- package/examples/jsm/exporters/OBJExporter.js +21 -1
- package/examples/jsm/exporters/PLYExporter.js +44 -12
- package/examples/jsm/exporters/STLExporter.js +27 -5
- package/examples/jsm/exporters/USDZExporter.js +781 -291
- package/examples/jsm/geometries/BoxLineGeometry.js +23 -0
- package/examples/jsm/geometries/ConvexGeometry.js +19 -0
- package/examples/jsm/geometries/DecalGeometry.js +91 -30
- package/examples/jsm/geometries/ParametricFunctions.js +100 -0
- package/examples/jsm/geometries/ParametricGeometry.js +38 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +68 -7
- package/examples/jsm/geometries/TeapotGeometry.js +23 -38
- package/examples/jsm/geometries/TextGeometry.js +48 -29
- package/examples/jsm/gpgpu/BitonicSort.js +715 -0
- package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
- package/examples/jsm/helpers/LightProbeHelper.js +36 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +38 -1
- package/examples/jsm/helpers/OctreeHelper.js +36 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +60 -0
- package/examples/jsm/helpers/RapierHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +36 -3
- package/examples/jsm/helpers/TextureHelper.js +28 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +214 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +61 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +47 -2
- package/examples/jsm/helpers/ViewHelper.js +181 -9
- package/examples/jsm/inspector/Inspector.js +487 -0
- package/examples/jsm/inspector/RendererInspector.js +425 -0
- package/examples/jsm/inspector/tabs/Console.js +238 -0
- package/examples/jsm/inspector/tabs/Parameters.js +348 -0
- package/examples/jsm/inspector/tabs/Performance.js +268 -0
- package/examples/jsm/inspector/tabs/Viewer.js +166 -0
- package/examples/jsm/inspector/ui/Graph.js +95 -0
- package/examples/jsm/inspector/ui/Item.js +170 -0
- package/examples/jsm/inspector/ui/List.js +75 -0
- package/examples/jsm/inspector/ui/Profiler.js +1975 -0
- package/examples/jsm/inspector/ui/Style.js +1613 -0
- package/examples/jsm/inspector/ui/Tab.js +233 -0
- package/examples/jsm/inspector/ui/Values.js +439 -0
- package/examples/jsm/inspector/ui/utils.js +56 -0
- package/examples/jsm/interactive/HTMLMesh.js +43 -12
- package/examples/jsm/interactive/InteractiveGroup.js +170 -52
- package/examples/jsm/interactive/SelectionBox.js +106 -9
- package/examples/jsm/interactive/SelectionHelper.js +76 -30
- package/examples/jsm/libs/demuxer_mp4.js +109 -0
- package/examples/jsm/libs/meshopt_decoder.module.js +76 -58
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +42 -0
- package/examples/jsm/lights/LightProbeGenerator.js +44 -7
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +50 -14
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +16 -0
- package/examples/jsm/lines/Line2.js +41 -4
- package/examples/jsm/lines/LineGeometry.js +80 -2
- package/examples/jsm/lines/LineMaterial.js +105 -5
- package/examples/jsm/lines/LineSegments2.js +54 -4
- package/examples/jsm/lines/LineSegmentsGeometry.js +65 -8
- package/examples/jsm/lines/Wireframe.js +41 -4
- package/examples/jsm/lines/WireframeGeometry2.js +27 -2
- package/examples/jsm/lines/webgpu/Line2.js +28 -2
- package/examples/jsm/lines/webgpu/LineSegments2.js +59 -24
- package/examples/jsm/lines/webgpu/Wireframe.js +86 -0
- package/examples/jsm/loaders/3DMLoader.js +78 -6
- package/examples/jsm/loaders/3MFLoader.js +148 -7
- package/examples/jsm/loaders/AMFLoader.js +34 -14
- package/examples/jsm/loaders/BVHLoader.js +59 -12
- package/examples/jsm/loaders/ColladaLoader.js +61 -4027
- package/examples/jsm/loaders/DDSLoader.js +68 -1
- package/examples/jsm/loaders/DRACOLoader.js +146 -22
- package/examples/jsm/loaders/EXRLoader.js +255 -34
- package/examples/jsm/loaders/FBXLoader.js +80 -42
- package/examples/jsm/loaders/FontLoader.js +83 -6
- package/examples/jsm/loaders/GCodeLoader.js +71 -14
- package/examples/jsm/loaders/GLTFLoader.js +381 -263
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +52 -3
- package/examples/jsm/loaders/HDRLoader.js +485 -0
- package/examples/jsm/loaders/IESLoader.js +42 -0
- package/examples/jsm/loaders/KMZLoader.js +39 -6
- package/examples/jsm/loaders/KTX2Loader.js +124 -48
- package/examples/jsm/loaders/KTXLoader.js +31 -10
- package/examples/jsm/loaders/LDrawLoader.js +192 -145
- package/examples/jsm/loaders/LUT3dlLoader.js +47 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +46 -9
- package/examples/jsm/loaders/LUTImageLoader.js +79 -38
- package/examples/jsm/loaders/LWOLoader.js +54 -59
- package/examples/jsm/loaders/LottieLoader.js +54 -1
- package/examples/jsm/loaders/MD2Loader.js +37 -1
- package/examples/jsm/loaders/MDDLoader.js +57 -12
- package/examples/jsm/loaders/MTLLoader.js +60 -35
- package/examples/jsm/loaders/MaterialXLoader.js +268 -34
- package/examples/jsm/loaders/NRRDLoader.js +40 -8
- package/examples/jsm/loaders/OBJLoader.js +51 -2
- package/examples/jsm/loaders/PCDLoader.js +173 -21
- package/examples/jsm/loaders/PDBLoader.js +41 -2
- package/examples/jsm/loaders/PLYLoader.js +70 -39
- package/examples/jsm/loaders/PVRLoader.js +25 -6
- package/examples/jsm/loaders/RGBELoader.js +6 -438
- package/examples/jsm/loaders/STLLoader.js +48 -38
- package/examples/jsm/loaders/SVGLoader.js +119 -25
- package/examples/jsm/loaders/TDSLoader.js +92 -74
- package/examples/jsm/loaders/TGALoader.js +23 -2
- package/examples/jsm/loaders/TIFFLoader.js +23 -0
- package/examples/jsm/loaders/TTFLoader.js +50 -3
- package/examples/jsm/loaders/USDLoader.js +279 -0
- package/examples/jsm/loaders/USDZLoader.js +4 -858
- package/examples/jsm/loaders/UltraHDRLoader.js +338 -166
- package/examples/jsm/loaders/VOXLoader.js +688 -87
- package/examples/jsm/loaders/VRMLLoader.js +121 -12
- package/examples/jsm/loaders/VTKLoader.js +77 -25
- package/examples/jsm/loaders/XYZLoader.js +36 -0
- package/examples/jsm/loaders/collada/ColladaComposer.js +2950 -0
- package/examples/jsm/loaders/collada/ColladaParser.js +1962 -0
- package/examples/jsm/loaders/lwo/IFFParser.js +77 -77
- package/examples/jsm/loaders/usd/USDAParser.js +822 -0
- package/examples/jsm/loaders/usd/USDCParser.js +1852 -0
- package/examples/jsm/loaders/usd/USDComposer.js +4041 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +183 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +154 -0
- package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
- package/examples/jsm/math/Capsule.js +91 -14
- package/examples/jsm/math/ColorConverter.js +22 -0
- package/examples/jsm/math/ColorSpaces.js +74 -2
- package/examples/jsm/math/ConvexHull.js +517 -93
- package/examples/jsm/math/ImprovedNoise.js +32 -15
- package/examples/jsm/math/Lut.js +113 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +78 -13
- package/examples/jsm/math/OBB.js +141 -29
- package/examples/jsm/math/Octree.js +283 -7
- package/examples/jsm/math/SimplexNoise.js +68 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +45 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +96 -20
- package/examples/jsm/misc/Gyroscope.js +12 -0
- package/examples/jsm/misc/MD2Character.js +117 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +175 -11
- package/examples/jsm/misc/MorphAnimMesh.js +44 -0
- package/examples/jsm/misc/MorphBlendMesh.js +103 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +100 -54
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +322 -0
- package/examples/jsm/misc/RollerCoaster.js +57 -0
- package/examples/jsm/misc/TubePainter.js +437 -40
- package/examples/jsm/misc/Volume.js +123 -76
- package/examples/jsm/misc/VolumeSlice.js +95 -49
- package/examples/jsm/modifiers/CurveModifier.js +66 -38
- package/examples/jsm/modifiers/CurveModifierGPU.js +42 -19
- package/examples/jsm/modifiers/EdgeSplitModifier.js +20 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +24 -10
- package/examples/jsm/modifiers/TessellateModifier.js +35 -2
- package/examples/jsm/objects/GroundedSkybox.js +25 -6
- package/examples/jsm/objects/Lensflare.js +94 -2
- package/examples/jsm/objects/LensflareMesh.js +64 -10
- package/examples/jsm/objects/MarchingCubes.js +90 -5
- package/examples/jsm/objects/Reflector.js +76 -2
- package/examples/jsm/objects/ReflectorForSSRPass.js +41 -0
- package/examples/jsm/objects/Refractor.js +62 -0
- package/examples/jsm/objects/ShadowMesh.js +54 -4
- package/examples/jsm/objects/Sky.js +106 -16
- package/examples/jsm/objects/SkyMesh.js +211 -38
- package/examples/jsm/objects/Water.js +49 -8
- package/examples/jsm/objects/Water2.js +49 -7
- package/examples/jsm/objects/Water2Mesh.js +50 -9
- package/examples/jsm/objects/WaterMesh.js +136 -43
- package/examples/jsm/physics/AmmoPhysics.js +60 -7
- package/examples/jsm/physics/JoltPhysics.js +65 -12
- package/examples/jsm/physics/RapierPhysics.js +217 -21
- package/examples/jsm/postprocessing/AfterimagePass.js +110 -29
- package/examples/jsm/postprocessing/BloomPass.js +128 -26
- package/examples/jsm/postprocessing/BokehPass.js +99 -22
- package/examples/jsm/postprocessing/ClearPass.js +54 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +82 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +59 -10
- package/examples/jsm/postprocessing/EffectComposer.js +140 -6
- package/examples/jsm/postprocessing/FXAAPass.js +40 -0
- package/examples/jsm/postprocessing/FilmPass.js +54 -5
- package/examples/jsm/postprocessing/GTAOPass.js +202 -57
- package/examples/jsm/postprocessing/GlitchPass.js +86 -34
- package/examples/jsm/postprocessing/HalftonePass.js +65 -10
- package/examples/jsm/postprocessing/LUTPass.js +38 -8
- package/examples/jsm/postprocessing/MaskPass.js +91 -0
- package/examples/jsm/postprocessing/OutlinePass.js +272 -135
- package/examples/jsm/postprocessing/OutputPass.js +65 -14
- package/examples/jsm/postprocessing/Pass.js +100 -4
- package/examples/jsm/postprocessing/RenderPass.js +94 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +124 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +120 -21
- package/examples/jsm/postprocessing/SAOPass.js +128 -55
- package/examples/jsm/postprocessing/SMAAPass.js +106 -75
- package/examples/jsm/postprocessing/SSAARenderPass.js +118 -35
- package/examples/jsm/postprocessing/SSAOPass.js +173 -60
- package/examples/jsm/postprocessing/SSRPass.js +268 -53
- package/examples/jsm/postprocessing/SavePass.js +69 -16
- package/examples/jsm/postprocessing/ShaderPass.js +65 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +79 -24
- package/examples/jsm/postprocessing/TexturePass.js +72 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +168 -59
- package/examples/jsm/renderers/CSS2DRenderer.js +98 -5
- package/examples/jsm/renderers/CSS3DRenderer.js +111 -7
- package/examples/jsm/renderers/Projector.js +288 -32
- package/examples/jsm/renderers/SVGRenderer.js +323 -61
- package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +3 -1
- package/examples/jsm/renderers/webgl-legacy/nodes/SlotNode.js +1 -1
- package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +5 -1
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +12 -5
- package/examples/jsm/shaders/AfterimageShader.js +8 -3
- package/examples/jsm/shaders/BasicShader.js +8 -1
- package/examples/jsm/shaders/BleachBypassShader.js +10 -3
- package/examples/jsm/shaders/BlendShader.js +8 -1
- package/examples/jsm/shaders/BokehShader.js +9 -3
- package/examples/jsm/shaders/BokehShader2.js +11 -4
- package/examples/jsm/shaders/BrightnessContrastShader.js +10 -4
- package/examples/jsm/shaders/ColorCorrectionShader.js +8 -1
- package/examples/jsm/shaders/ColorifyShader.js +8 -1
- package/examples/jsm/shaders/ConvolutionShader.js +9 -38
- package/examples/jsm/shaders/CopyShader.js +8 -1
- package/examples/jsm/shaders/DOFMipMapShader.js +10 -3
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +10 -1
- package/examples/jsm/shaders/DigitalGlitch.js +10 -7
- package/examples/jsm/shaders/DotScreenShader.js +8 -3
- package/examples/jsm/shaders/ExposureShader.js +8 -1
- package/examples/jsm/shaders/FXAAShader.js +233 -221
- package/examples/jsm/shaders/FilmShader.js +13 -0
- package/examples/jsm/shaders/FocusShader.js +8 -3
- package/examples/jsm/shaders/FreiChenShader.js +10 -3
- package/examples/jsm/shaders/GTAOShader.js +55 -45
- package/examples/jsm/shaders/GammaCorrectionShader.js +11 -2
- package/examples/jsm/shaders/HalftoneShader.js +24 -4
- package/examples/jsm/shaders/HorizontalBlurShader.js +12 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +9 -2
- package/examples/jsm/shaders/HueSaturationShader.js +10 -3
- package/examples/jsm/shaders/KaleidoShader.js +11 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +8 -4
- package/examples/jsm/shaders/LuminosityShader.js +8 -2
- package/examples/jsm/shaders/MirrorShader.js +10 -4
- package/examples/jsm/shaders/NormalMapShader.js +7 -2
- package/examples/jsm/shaders/OutputShader.js +19 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +30 -17
- package/examples/jsm/shaders/RGBShiftShader.js +8 -1
- package/examples/jsm/shaders/SAOShader.js +27 -5
- package/examples/jsm/shaders/SMAAShader.js +24 -1
- package/examples/jsm/shaders/SSAOShader.js +37 -6
- package/examples/jsm/shaders/SSRShader.js +32 -6
- package/examples/jsm/shaders/SepiaShader.js +8 -3
- package/examples/jsm/shaders/SobelOperatorShader.js +9 -3
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +13 -8
- package/examples/jsm/shaders/TechnicolorShader.js +10 -4
- package/examples/jsm/shaders/ToonShader.js +29 -6
- package/examples/jsm/shaders/TriangleBlurShader.js +9 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +19 -6
- package/examples/jsm/shaders/VelocityShader.js +8 -1
- package/examples/jsm/shaders/VerticalBlurShader.js +9 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +8 -1
- package/examples/jsm/shaders/VignetteShader.js +8 -3
- package/examples/jsm/shaders/VolumeShader.js +11 -2
- package/examples/jsm/shaders/WaterRefractionShader.js +11 -0
- package/examples/jsm/textures/FlakesTexture.js +14 -0
- package/examples/jsm/transpiler/AST.js +436 -31
- package/examples/jsm/transpiler/GLSLDecoder.js +380 -135
- package/examples/jsm/transpiler/Linker.js +327 -0
- package/examples/jsm/transpiler/ShaderToyDecoder.js +3 -1
- package/examples/jsm/transpiler/TSLEncoder.js +363 -97
- package/examples/jsm/transpiler/Transpiler.js +50 -1
- package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
- package/examples/jsm/transpiler/WGSLEncoder.js +839 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +244 -0
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +549 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +282 -0
- package/examples/jsm/tsl/display/BilateralBlurNode.js +364 -0
- package/{src/nodes → examples/jsm/tsl}/display/BleachBypass.js +11 -4
- package/examples/jsm/tsl/display/BloomNode.js +534 -0
- package/examples/jsm/tsl/display/CRT.js +150 -0
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +207 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +334 -0
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +554 -0
- package/examples/jsm/tsl/display/DotScreenNode.js +104 -0
- package/examples/jsm/tsl/display/FXAANode.js +365 -0
- package/examples/jsm/tsl/display/FilmNode.js +101 -0
- package/examples/jsm/tsl/display/GTAONode.js +571 -0
- package/examples/jsm/tsl/display/GaussianBlurNode.js +389 -0
- package/examples/jsm/tsl/display/GodraysNode.js +624 -0
- package/examples/jsm/tsl/display/LensflareNode.js +279 -0
- package/examples/jsm/tsl/display/Lut3DNode.js +109 -0
- package/examples/jsm/tsl/display/MotionBlur.js +33 -0
- package/examples/jsm/tsl/display/OutlineNode.js +762 -0
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +89 -0
- package/examples/jsm/tsl/display/PixelationPassNode.js +335 -0
- package/examples/jsm/tsl/display/RGBShiftNode.js +96 -0
- package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
- package/examples/jsm/tsl/display/SMAANode.js +768 -0
- package/{src/nodes → examples/jsm/tsl}/display/SSAAPassNode.js +120 -49
- package/examples/jsm/tsl/display/SSGINode.js +642 -0
- package/examples/jsm/tsl/display/SSRNode.js +656 -0
- package/examples/jsm/tsl/display/SSSNode.js +490 -0
- package/{src/nodes → examples/jsm/tsl}/display/Sepia.js +9 -2
- package/examples/jsm/tsl/display/Shape.js +29 -0
- package/{src/nodes → examples/jsm/tsl}/display/SobelOperatorNode.js +61 -19
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +192 -0
- package/{src/nodes → examples/jsm/tsl}/display/StereoPassNode.js +48 -12
- package/examples/jsm/tsl/display/TRAANode.js +726 -0
- package/examples/jsm/tsl/display/TransitionNode.js +141 -0
- package/examples/jsm/tsl/display/boxBlur.js +65 -0
- package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
- package/examples/jsm/tsl/display/hashBlur.js +54 -0
- package/examples/jsm/tsl/display/radialBlur.js +68 -0
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +442 -0
- package/examples/jsm/tsl/math/Bayer.js +73 -0
- package/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
- package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
- package/examples/jsm/tsl/utils/Raymarching.js +70 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +91 -29
- package/examples/jsm/utils/CameraUtils.js +15 -6
- package/examples/jsm/utils/GeometryCompressionUtils.js +23 -30
- package/examples/jsm/utils/GeometryUtils.js +32 -27
- package/examples/jsm/utils/LDrawUtils.js +14 -5
- package/examples/jsm/utils/SceneOptimizer.js +458 -0
- package/examples/jsm/utils/SceneUtils.js +53 -3
- package/examples/jsm/utils/ShadowMapViewer.js +72 -33
- package/examples/jsm/utils/ShadowMapViewerGPU.js +61 -29
- package/examples/jsm/utils/SkeletonUtils.js +48 -0
- package/examples/jsm/utils/SortUtils.js +17 -5
- package/examples/jsm/utils/UVsDebug.js +12 -4
- package/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +16 -0
- package/examples/jsm/utils/{TextureUtilsGPU.js → WebGPUTextureUtils.js} +20 -2
- package/examples/jsm/utils/WorkerPool.js +67 -2
- package/examples/jsm/webxr/ARButton.js +19 -0
- package/examples/jsm/webxr/OculusHandModel.js +84 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +148 -22
- package/examples/jsm/webxr/Text2D.js +20 -6
- package/examples/jsm/webxr/VRButton.js +31 -0
- package/examples/jsm/webxr/XRButton.js +23 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +94 -3
- package/examples/jsm/webxr/XREstimatedLight.js +35 -4
- package/examples/jsm/webxr/XRHandMeshModel.js +37 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +96 -6
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +44 -0
- package/examples/jsm/webxr/XRPlanes.js +18 -0
- package/package.json +29 -34
- package/src/Three.Core.js +198 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +641 -0
- package/src/Three.WebGPU.Nodes.js +14 -186
- package/src/Three.WebGPU.js +16 -186
- package/src/Three.js +2 -197
- package/src/animation/AnimationAction.js +263 -31
- package/src/animation/AnimationClip.js +162 -7
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +45 -21
- package/src/animation/AnimationUtils.js +163 -24
- package/src/animation/KeyframeTrack.js +191 -17
- package/src/animation/PropertyBinding.js +91 -16
- 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 +386 -8
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +94 -13
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +37 -0
- package/src/cameras/Camera.js +61 -0
- package/src/cameras/CubeCamera.js +86 -0
- package/src/cameras/OrthographicCamera.js +110 -1
- package/src/cameras/PerspectiveCamera.js +174 -35
- package/src/cameras/StereoCamera.js +48 -2
- package/src/constants.js +1546 -11
- package/src/core/BufferAttribute.js +417 -3
- package/src/core/BufferGeometry.js +407 -22
- package/src/core/Clock.js +69 -8
- package/src/core/EventDispatcher.js +52 -8
- package/src/core/GLBufferAttribute.js +113 -2
- 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 +141 -7
- package/src/core/InterleavedBufferAttribute.js +200 -2
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +673 -26
- package/src/core/Raycaster.js +136 -2
- package/src/core/RenderTarget.js +256 -27
- package/src/core/RenderTarget3D.js +48 -0
- package/src/core/Timer.js +184 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +89 -1
- package/src/extras/DataUtils.js +50 -9
- package/src/extras/Earcut.js +18 -779
- package/src/extras/ImageUtils.js +22 -14
- package/src/extras/PMREMGenerator.js +316 -67
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +101 -15
- package/src/extras/core/Curve.js +156 -55
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +34 -2
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +66 -3
- package/src/extras/core/ShapePath.js +80 -4
- 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 +39 -0
- package/src/geometries/CapsuleGeometry.js +196 -11
- package/src/geometries/CircleGeometry.js +41 -0
- package/src/geometries/ConeGeometry.js +39 -0
- package/src/geometries/CylinderGeometry.js +42 -2
- package/src/geometries/DodecahedronGeometry.js +33 -0
- package/src/geometries/EdgesGeometry.js +30 -2
- package/src/geometries/ExtrudeGeometry.js +148 -52
- package/src/geometries/IcosahedronGeometry.js +33 -0
- package/src/geometries/LatheGeometry.js +44 -3
- package/src/geometries/OctahedronGeometry.js +33 -0
- package/src/geometries/PlaneGeometry.js +35 -0
- package/src/geometries/PolyhedronGeometry.js +30 -1
- package/src/geometries/RingGeometry.js +37 -0
- package/src/geometries/ShapeGeometry.js +38 -0
- package/src/geometries/SphereGeometry.js +38 -0
- package/src/geometries/TetrahedronGeometry.js +33 -0
- package/src/geometries/TorusGeometry.js +44 -3
- package/src/geometries/TorusKnotGeometry.js +39 -0
- package/src/geometries/TubeGeometry.js +50 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +62 -5
- 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 +103 -27
- package/src/helpers/DirectionalLightHelper.js +55 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +42 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -24
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +73 -7
- package/src/helpers/SpotLightHelper.js +43 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +70 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +42 -0
- package/src/lights/Light.js +37 -11
- package/src/lights/LightProbe.js +37 -9
- package/src/lights/LightShadow.js +202 -7
- package/src/lights/PointLight.js +74 -0
- package/src/lights/PointLightShadow.js +15 -80
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +124 -1
- package/src/lights/SpotLightShadow.js +33 -3
- package/src/lights/webgpu/IESSpotLight.js +22 -0
- package/src/lights/webgpu/ProjectorLight.js +46 -0
- package/src/loaders/AnimationLoader.js +34 -2
- package/src/loaders/AudioLoader.js +34 -2
- package/src/loaders/BufferGeometryLoader.js +38 -13
- package/src/loaders/Cache.js +75 -2
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +45 -4
- package/src/loaders/FileLoader.js +85 -5
- package/src/loaders/ImageBitmapLoader.js +113 -11
- package/src/loaders/ImageLoader.js +85 -8
- package/src/loaders/Loader.js +144 -0
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +187 -0
- package/src/loaders/MaterialLoader.js +62 -3
- package/src/loaders/ObjectLoader.js +131 -31
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +68 -4
- package/src/loaders/nodes/NodeMaterialLoader.js +45 -0
- package/src/loaders/nodes/NodeObjectLoader.js +61 -0
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -1
- package/src/materials/Material.js +502 -8
- package/src/materials/MeshBasicMaterial.js +168 -2
- package/src/materials/MeshDepthMaterial.js +94 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +283 -0
- package/src/materials/MeshMatcapMaterial.js +164 -0
- package/src/materials/MeshNormalMaterial.js +114 -0
- package/src/materials/MeshPhongMaterial.js +298 -0
- package/src/materials/MeshPhysicalMaterial.js +296 -4
- package/src/materials/MeshStandardMaterial.js +300 -2
- package/src/materials/MeshToonMaterial.js +219 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +234 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +158 -53
- package/src/materials/nodes/LineBasicNodeMaterial.js +17 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +81 -6
- package/src/materials/nodes/MeshBasicNodeMaterial.js +59 -2
- package/src/materials/nodes/MeshLambertNodeMaterial.js +35 -0
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +23 -3
- package/src/materials/nodes/MeshNormalNodeMaterial.js +27 -4
- package/src/materials/nodes/MeshPhongNodeMaterial.js +64 -1
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +276 -3
- package/src/materials/nodes/MeshSSSNodeMaterial.js +98 -10
- package/src/materials/nodes/MeshStandardNodeMaterial.js +83 -4
- package/src/materials/nodes/MeshToonNodeMaterial.js +28 -0
- package/src/materials/nodes/NodeMaterial.js +789 -74
- package/src/materials/nodes/NodeMaterials.js +0 -1
- package/src/materials/nodes/PointsNodeMaterial.js +180 -11
- package/src/materials/nodes/ShadowNodeMaterial.js +38 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +86 -23
- package/src/materials/nodes/VolumeNodeMaterial.js +57 -84
- package/src/materials/nodes/manager/NodeMaterialObserver.js +329 -12
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +271 -0
- package/src/math/Color.js +355 -11
- package/src/math/ColorManagement.js +158 -92
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +139 -5
- package/src/math/Frustum.js +108 -9
- package/src/math/FrustumArray.js +258 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +221 -2
- package/src/math/MathUtils.js +408 -20
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +489 -94
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +322 -90
- package/src/math/Ray.js +162 -0
- package/src/math/Sphere.js +175 -0
- package/src/math/Spherical.js +73 -11
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +206 -2
- package/src/math/Vector2.js +396 -10
- package/src/math/Vector3.js +550 -15
- package/src/math/Vector4.js +415 -9
- package/src/math/interpolants/BezierInterpolant.js +108 -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 +91 -88
- package/src/nodes/TSL.js +32 -38
- package/src/nodes/accessors/AccessorsUtils.js +37 -9
- package/src/nodes/accessors/Arrays.js +68 -0
- package/src/nodes/accessors/BatchNode.js +49 -14
- package/src/nodes/accessors/Bitangent.js +82 -13
- package/src/nodes/accessors/BufferAttributeNode.js +269 -8
- package/src/nodes/accessors/BufferNode.js +91 -2
- package/src/nodes/accessors/BuiltinNode.js +63 -0
- package/src/nodes/accessors/Camera.js +400 -10
- package/src/nodes/accessors/ClippingNode.js +149 -45
- package/src/nodes/accessors/CubeTextureNode.js +137 -7
- package/src/nodes/accessors/InstanceNode.js +245 -40
- package/src/nodes/accessors/InstancedMeshNode.js +50 -0
- package/src/nodes/accessors/Lights.js +88 -0
- package/src/nodes/accessors/MaterialNode.js +355 -13
- package/src/nodes/accessors/MaterialProperties.js +57 -1
- package/src/nodes/accessors/MaterialReferenceNode.js +52 -14
- package/src/nodes/accessors/ModelNode.js +117 -5
- package/src/nodes/accessors/ModelViewProjectionNode.js +10 -39
- package/src/nodes/accessors/MorphNode.js +73 -26
- package/src/nodes/accessors/Normal.js +174 -19
- package/src/nodes/accessors/Object3DNode.js +146 -12
- package/src/nodes/accessors/PointUVNode.js +25 -0
- package/src/nodes/accessors/Position.js +119 -7
- package/src/nodes/accessors/ReferenceBaseNode.js +190 -4
- package/src/nodes/accessors/ReferenceNode.js +223 -8
- package/src/nodes/accessors/ReflectVector.js +29 -3
- package/src/nodes/accessors/RendererReferenceNode.js +45 -2
- package/src/nodes/accessors/SceneProperties.js +53 -0
- package/src/nodes/accessors/SkinningNode.js +180 -43
- package/src/nodes/accessors/StorageBufferNode.js +278 -26
- package/src/nodes/accessors/StorageTextureNode.js +205 -12
- package/src/nodes/accessors/Tangent.js +48 -10
- package/src/nodes/accessors/TangentUtils.js +46 -0
- package/src/nodes/accessors/Texture3DNode.js +104 -11
- package/src/nodes/accessors/TextureBicubic.js +31 -4
- package/src/nodes/accessors/TextureNode.js +564 -52
- package/src/nodes/accessors/TextureSizeNode.js +42 -1
- package/src/nodes/accessors/UV.js +9 -1
- package/src/nodes/accessors/UniformArrayNode.js +226 -34
- package/src/nodes/accessors/UserDataNode.js +46 -2
- package/src/nodes/accessors/VelocityNode.js +93 -3
- package/src/nodes/accessors/VertexColorNode.js +39 -4
- package/src/nodes/code/CodeNode.js +101 -8
- package/src/nodes/code/ExpressionNode.js +29 -2
- package/src/nodes/code/FunctionCallNode.js +98 -10
- package/src/nodes/code/FunctionNode.js +69 -2
- package/src/nodes/core/ArrayNode.js +174 -0
- package/src/nodes/core/AssignNode.js +80 -9
- package/src/nodes/core/AttributeNode.js +47 -4
- package/src/nodes/core/BypassNode.js +47 -3
- package/src/nodes/core/ConstNode.js +32 -0
- package/src/nodes/core/ContextNode.js +220 -14
- package/src/nodes/core/IndexNode.js +72 -7
- package/src/nodes/core/InputNode.js +50 -1
- package/src/nodes/core/InspectorNode.js +128 -0
- package/src/nodes/core/IsolateNode.js +133 -0
- package/src/nodes/core/LightingModel.js +65 -5
- package/src/nodes/core/MRTNode.js +113 -2
- package/src/nodes/core/Node.js +595 -36
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +1840 -121
- package/src/nodes/core/NodeCache.js +41 -2
- package/src/nodes/core/NodeCode.js +31 -0
- package/src/nodes/core/NodeError.js +28 -0
- package/src/nodes/core/NodeFrame.js +153 -24
- package/src/nodes/core/NodeFunction.js +48 -1
- package/src/nodes/core/NodeFunctionInput.js +44 -0
- package/src/nodes/core/NodeParser.js +13 -1
- package/src/nodes/core/NodeUniform.js +53 -1
- package/src/nodes/core/NodeUtils.js +201 -51
- package/src/nodes/core/NodeVar.js +47 -1
- package/src/nodes/core/NodeVarying.js +47 -1
- package/src/nodes/core/OutputStructNode.js +54 -12
- package/src/nodes/core/ParameterNode.js +60 -2
- package/src/nodes/core/PropertyNode.js +286 -7
- package/src/nodes/core/StackNode.js +337 -20
- package/src/nodes/core/StackTrace.js +139 -0
- package/src/nodes/core/StructNode.js +134 -0
- package/src/nodes/core/StructType.js +13 -0
- package/src/nodes/core/StructTypeNode.js +126 -6
- package/src/nodes/core/SubBuildNode.js +89 -0
- package/src/nodes/core/TempNode.js +31 -5
- package/src/nodes/core/UniformGroupNode.js +85 -7
- package/src/nodes/core/UniformNode.js +163 -16
- package/src/nodes/core/VarNode.js +317 -10
- package/src/nodes/core/VaryingNode.js +115 -13
- package/src/nodes/core/constants.js +40 -0
- package/src/nodes/display/BlendModes.js +171 -0
- package/src/nodes/display/BumpMapNode.js +38 -2
- package/src/nodes/display/ColorAdjustment.js +118 -6
- package/src/nodes/display/ColorSpaceFunctions.js +22 -6
- package/src/nodes/display/ColorSpaceNode.js +97 -47
- package/src/nodes/display/FrontFacingNode.js +64 -7
- package/src/nodes/display/NormalMapNode.js +101 -54
- package/src/nodes/display/PassNode.js +690 -33
- package/src/nodes/display/RenderOutputNode.js +94 -4
- package/src/nodes/display/ScreenNode.js +138 -27
- package/src/nodes/display/ToneMappingFunctions.js +62 -10
- package/src/nodes/display/ToneMappingNode.js +88 -8
- package/src/nodes/display/ToonOutlinePassNode.js +84 -4
- package/src/nodes/display/ViewportDepthNode.js +227 -10
- package/src/nodes/display/ViewportDepthTextureNode.js +39 -5
- package/src/nodes/display/ViewportSharedTextureNode.js +35 -1
- package/src/nodes/display/ViewportTextureNode.js +171 -7
- package/src/nodes/fog/Fog.js +97 -0
- package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
- package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/LTC.js +45 -1
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +1 -1
- package/src/nodes/functions/BasicLightingModel.js +28 -6
- package/src/nodes/functions/PhongLightingModel.js +36 -6
- package/src/nodes/functions/PhysicalLightingModel.js +336 -91
- package/src/nodes/functions/ShadowMaskModel.js +30 -3
- package/src/nodes/functions/ToonLightingModel.js +21 -2
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
- package/src/nodes/functions/material/getGeometryRoughness.js +10 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
- package/src/nodes/geometry/RangeNode.js +97 -8
- package/src/nodes/gpgpu/AtomicFunctionNode.js +198 -23
- package/src/nodes/gpgpu/BarrierNode.js +52 -3
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +135 -6
- package/src/nodes/gpgpu/ComputeNode.js +212 -16
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +143 -9
- package/src/nodes/lighting/AONode.js +18 -0
- package/src/nodes/lighting/AmbientLightNode.js +10 -0
- package/src/nodes/lighting/AnalyticLightNode.js +186 -399
- package/src/nodes/lighting/BasicEnvironmentNode.js +19 -0
- package/src/nodes/lighting/BasicLightMapNode.js +17 -0
- package/src/nodes/lighting/DirectionalLightNode.js +12 -11
- package/src/nodes/lighting/EnvironmentNode.js +59 -19
- package/src/nodes/lighting/HemisphereLightNode.js +33 -2
- package/src/nodes/lighting/IESSpotLightNode.js +13 -1
- package/src/nodes/lighting/IrradianceNode.js +17 -0
- package/src/nodes/lighting/LightProbeNode.js +20 -0
- package/src/nodes/lighting/LightUtils.js +11 -3
- package/src/nodes/lighting/LightingContextNode.js +52 -4
- package/src/nodes/lighting/LightingNode.js +15 -6
- package/src/nodes/lighting/LightsNode.js +238 -35
- package/src/nodes/lighting/PointLightNode.js +60 -25
- package/src/nodes/lighting/PointShadowNode.js +325 -0
- package/src/nodes/lighting/ProjectorLightNode.js +91 -0
- package/src/nodes/lighting/RectAreaLightNode.js +50 -14
- package/src/nodes/lighting/ShadowBaseNode.js +81 -0
- package/src/nodes/lighting/ShadowFilterNode.js +264 -0
- package/src/nodes/lighting/ShadowNode.js +867 -0
- package/src/nodes/lighting/SpotLightNode.js +99 -18
- package/src/nodes/materialx/MaterialXNodes.js +131 -2
- package/src/nodes/materialx/lib/mx_noise.js +166 -2
- package/src/nodes/math/BitcastNode.js +156 -0
- package/src/nodes/math/BitcountNode.js +433 -0
- package/src/nodes/math/ConditionalNode.js +110 -21
- package/src/nodes/math/Hash.js +8 -0
- package/src/nodes/math/MathNode.js +820 -97
- package/src/nodes/math/MathUtils.js +47 -1
- package/src/nodes/math/OperatorNode.js +517 -84
- package/src/nodes/math/PackFloatNode.js +98 -0
- package/src/nodes/math/TriNoise3D.js +17 -7
- package/src/nodes/math/UnpackFloatNode.js +96 -0
- package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
- package/src/nodes/parsers/GLSLNodeParser.js +11 -0
- package/src/nodes/pmrem/PMREMNode.js +180 -23
- package/src/nodes/pmrem/PMREMUtils.js +114 -5
- package/src/nodes/procedural/Checker.js +8 -0
- package/src/nodes/shapes/Shapes.js +33 -0
- package/src/nodes/tsl/TSLBase.js +10 -4
- package/src/nodes/tsl/TSLCore.js +732 -160
- package/src/nodes/utils/ArrayElementNode.js +55 -4
- package/src/nodes/utils/ConvertNode.js +31 -0
- package/src/nodes/utils/CubeMapNode.js +79 -2
- package/src/nodes/utils/DebugNode.js +83 -0
- package/src/nodes/utils/Discard.js +18 -2
- package/src/nodes/utils/EquirectUV.js +27 -0
- package/src/nodes/utils/EventNode.js +118 -0
- package/src/nodes/utils/FlipNode.js +38 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +91 -22
- package/src/nodes/utils/JoinNode.js +57 -4
- package/src/nodes/utils/LoopNode.js +193 -55
- package/src/nodes/utils/MatcapUV.js +22 -0
- package/src/nodes/utils/MaxMipLevelNode.js +49 -1
- package/src/nodes/utils/MemberNode.js +120 -0
- package/src/nodes/utils/Oscillators.js +41 -0
- package/src/nodes/utils/Packing.js +30 -1
- package/src/nodes/utils/PostProcessingUtils.js +154 -0
- package/src/nodes/utils/RTTNode.js +165 -9
- package/src/nodes/utils/ReflectorNode.js +407 -21
- package/src/nodes/utils/RemapNode.js +81 -2
- package/src/nodes/utils/RotateNode.js +41 -1
- package/src/nodes/utils/SampleNode.js +91 -0
- package/src/nodes/utils/SetNode.js +44 -1
- package/src/nodes/utils/SplitNode.js +66 -3
- package/src/nodes/utils/SpriteSheetUV.js +35 -0
- package/src/nodes/utils/SpriteUtils.js +16 -0
- package/src/nodes/utils/StorageArrayElementNode.js +56 -3
- package/src/nodes/utils/Timer.js +26 -0
- package/src/nodes/utils/TriplanarTextures.js +65 -0
- package/src/nodes/utils/UVUtils.js +48 -0
- package/src/nodes/utils/ViewportUtils.js +12 -0
- package/src/objects/BatchedMesh.js +798 -309
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +68 -0
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +131 -2
- package/src/objects/LOD.js +99 -5
- package/src/objects/Line.js +90 -7
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +20 -1
- package/src/objects/Mesh.js +84 -0
- package/src/objects/Points.js +60 -0
- package/src/objects/Skeleton.js +120 -5
- package/src/objects/SkinnedMesh.js +102 -6
- package/src/objects/Sprite.js +65 -1
- package/src/renderers/WebGL3DRenderTarget.js +26 -0
- package/src/renderers/WebGLArrayRenderTarget.js +26 -0
- package/src/renderers/WebGLCubeRenderTarget.js +41 -5
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +1016 -278
- package/src/renderers/common/Animation.js +123 -14
- package/src/renderers/common/Attributes.js +41 -1
- package/src/renderers/common/Backend.js +623 -44
- package/src/renderers/common/Background.js +99 -16
- package/src/renderers/common/BindGroup.js +37 -2
- package/src/renderers/common/Binding.js +46 -0
- package/src/renderers/common/Bindings.js +211 -20
- package/src/renderers/common/BlendMode.js +143 -0
- package/src/renderers/common/Buffer.js +89 -0
- package/src/renderers/common/BufferUtils.js +25 -0
- package/src/renderers/common/BundleGroup.js +57 -0
- package/src/renderers/common/CanvasTarget.js +341 -0
- package/src/renderers/common/ChainMap.js +73 -10
- package/src/renderers/common/ClippingContext.js +172 -87
- package/src/renderers/common/Color4.js +40 -0
- package/src/renderers/common/ComputePipeline.js +24 -0
- package/src/renderers/common/Constants.js +2 -1
- package/src/renderers/common/CubeRenderTarget.js +77 -7
- package/src/renderers/common/DataMap.js +37 -1
- package/src/renderers/common/Geometries.js +163 -14
- package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
- package/src/renderers/common/Info.js +81 -36
- package/src/renderers/common/InspectorBase.js +146 -0
- package/src/renderers/common/Lighting.js +57 -0
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +150 -7
- package/src/renderers/common/PostProcessing.js +22 -84
- package/src/renderers/common/ProgrammableStage.js +60 -2
- package/src/renderers/common/QuadMesh.js +63 -6
- package/src/renderers/common/RenderBundle.js +14 -8
- package/src/renderers/common/RenderBundles.js +40 -10
- package/src/renderers/common/RenderContext.js +219 -4
- package/src/renderers/common/RenderContexts.js +54 -17
- package/src/renderers/common/RenderList.js +233 -24
- package/src/renderers/common/RenderLists.js +46 -6
- package/src/renderers/common/RenderObject.js +548 -46
- package/src/renderers/common/RenderObjectPipeline.js +40 -0
- package/src/renderers/common/RenderObjects.js +133 -15
- package/src/renderers/common/RenderPipeline.js +216 -6
- package/src/renderers/common/Renderer.js +2155 -332
- package/src/renderers/common/RendererUtils.js +200 -0
- package/src/renderers/common/SampledTexture.js +99 -39
- package/src/renderers/common/Sampler.js +148 -1
- package/src/renderers/common/Storage3DTexture.js +100 -0
- package/src/renderers/common/StorageArrayTexture.js +84 -0
- package/src/renderers/common/StorageBuffer.js +38 -2
- package/src/renderers/common/StorageBufferAttribute.js +31 -2
- package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
- package/src/renderers/common/StorageTexture.js +65 -0
- package/src/renderers/common/Textures.js +273 -57
- package/src/renderers/common/TimestampQueryPool.js +163 -0
- package/src/renderers/common/Uniform.js +233 -3
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +235 -26
- package/src/renderers/common/XRManager.js +1677 -0
- package/src/renderers/common/XRRenderTarget.js +91 -0
- package/src/renderers/common/extras/PMREMGenerator.js +371 -108
- package/src/renderers/common/nodes/NodeBuilderState.js +100 -6
- package/src/renderers/common/nodes/NodeLibrary.js +95 -17
- package/src/renderers/common/nodes/NodeManager.js +852 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +84 -8
- package/src/renderers/common/nodes/NodeSampler.js +41 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +48 -3
- package/src/renderers/common/nodes/NodeUniform.js +285 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +81 -0
- package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
- package/src/renderers/shaders/DFGLUTData.js +49 -0
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
- package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -24
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
- package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +7 -11
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +5 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +154 -59
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +230 -181
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
- package/src/renderers/shaders/ShaderChunk.js +3 -3
- package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +14 -2
- package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +1 -2
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib.js +7 -5
- package/src/renderers/shaders/UniformsLib.js +2 -7
- package/src/renderers/shaders/UniformsUtils.js +21 -2
- package/src/renderers/webgl/WebGLAttributes.js +4 -0
- package/src/renderers/webgl/WebGLBackground.js +30 -5
- package/src/renderers/webgl/WebGLBindingStates.js +99 -27
- package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLCapabilities.js +7 -14
- package/src/renderers/webgl/WebGLEnvironments.js +228 -0
- package/src/renderers/webgl/WebGLExtensions.js +2 -25
- package/src/renderers/webgl/WebGLGeometries.js +10 -35
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLInfo.js +3 -1
- package/src/renderers/webgl/WebGLLights.js +18 -1
- package/src/renderers/webgl/WebGLMaterials.js +12 -0
- package/src/renderers/webgl/WebGLObjects.js +3 -1
- package/src/renderers/webgl/WebGLOutput.js +267 -0
- package/src/renderers/webgl/WebGLProgram.js +87 -148
- package/src/renderers/webgl/WebGLPrograms.js +53 -51
- package/src/renderers/webgl/WebGLRenderLists.js +15 -0
- package/src/renderers/webgl/WebGLShadowMap.js +204 -28
- package/src/renderers/webgl/WebGLState.js +88 -56
- package/src/renderers/webgl/WebGLTextures.js +293 -59
- package/src/renderers/webgl/WebGLUniforms.js +40 -3
- package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
- package/src/renderers/webgl/WebGLUtils.js +7 -5
- package/src/renderers/webgl-fallback/WebGLBackend.js +1416 -293
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +5 -10
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +785 -92
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +62 -1
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +3 -3
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +584 -20
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +468 -80
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +396 -0
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +72 -24
- package/src/renderers/webgpu/WebGPUBackend.js +1517 -428
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +31 -4
- package/src/renderers/webgpu/WebGPURenderer.js +55 -4
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +23 -16
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +37 -42
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +1335 -241
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +32 -4
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +144 -20
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +460 -116
- package/src/renderers/webgpu/utils/WebGPUConstants.js +17 -4
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +283 -69
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +225 -178
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +583 -191
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +310 -0
- package/src/renderers/webgpu/utils/WebGPUUtils.js +150 -28
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +52 -7
- package/src/renderers/webxr/WebXRManager.js +275 -15
- 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/CubeDepthTexture.js +76 -0
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +79 -2
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +59 -11
- package/src/textures/ExternalTexture.js +56 -0
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +106 -4
- package/src/textures/Texture.js +488 -6
- package/src/textures/VideoFrameTexture.js +72 -0
- package/src/textures/VideoTexture.js +78 -6
- package/src/utils.js +322 -3
- package/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
- package/examples/jsm/animation/MMDPhysics.js +0 -1406
- package/examples/jsm/cameras/CinematicCamera.js +0 -208
- package/examples/jsm/effects/PeppersGhostEffect.js +0 -153
- package/examples/jsm/exporters/MMDExporter.js +0 -217
- package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
- package/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/GLTFLoaderAnimationPointer.js +0 -729
- package/examples/jsm/loaders/MMDLoader.js +0 -2295
- package/examples/jsm/loaders/RGBMLoader.js +0 -1081
- package/examples/jsm/materials/MeshGouraudMaterial.js +0 -432
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -144
- package/examples/jsm/misc/Timer.js +0 -128
- package/examples/jsm/objects/InstancedPoints.js +0 -21
- package/examples/jsm/shaders/GodRaysShader.js +0 -321
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/src/materials/nodes/InstancedPointsNodeMaterial.js +0 -156
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -24
- package/src/nodes/accessors/SceneNode.js +0 -55
- package/src/nodes/code/ScriptableNode.js +0 -505
- package/src/nodes/code/ScriptableValueNode.js +0 -170
- package/src/nodes/core/CacheNode.js +0 -50
- package/src/nodes/core/UniformGroup.js +0 -13
- package/src/nodes/display/AfterImageNode.js +0 -158
- package/src/nodes/display/AnaglyphPassNode.js +0 -67
- package/src/nodes/display/AnamorphicNode.js +0 -151
- package/src/nodes/display/BlendMode.js +0 -54
- package/src/nodes/display/BloomNode.js +0 -341
- package/src/nodes/display/DenoiseNode.js +0 -204
- package/src/nodes/display/DepthOfFieldNode.js +0 -124
- package/src/nodes/display/DotScreenNode.js +0 -66
- package/src/nodes/display/FXAANode.js +0 -332
- package/src/nodes/display/FilmNode.js +0 -56
- package/src/nodes/display/GTAONode.js +0 -331
- package/src/nodes/display/GaussianBlurNode.js +0 -213
- package/src/nodes/display/Lut3DNode.js +0 -57
- package/src/nodes/display/MotionBlur.js +0 -25
- package/src/nodes/display/ParallaxBarrierPassNode.js +0 -58
- package/src/nodes/display/PixelationPassNode.js +0 -213
- package/src/nodes/display/PosterizeNode.js +0 -33
- package/src/nodes/display/RGBShiftNode.js +0 -53
- package/src/nodes/display/StereoCompositePassNode.js +0 -110
- package/src/nodes/display/TransitionNode.js +0 -80
- package/src/nodes/fog/FogExp2Node.js +0 -35
- package/src/nodes/fog/FogNode.js +0 -50
- package/src/nodes/fog/FogRangeNode.js +0 -36
- package/src/nodes/functions/BSDF/DFGApprox.js +0 -30
- package/src/nodes/utils/EquirectUVNode.js +0 -36
- package/src/nodes/utils/MatcapUVNode.js +0 -33
- package/src/nodes/utils/OscNode.js +0 -85
- package/src/nodes/utils/SpriteSheetUVNode.js +0 -45
- package/src/nodes/utils/TimerNode.js +0 -97
- package/src/nodes/utils/TriplanarTexturesNode.js +0 -64
- package/src/renderers/common/nodes/Nodes.js +0 -534
- package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
- package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -136
|
@@ -7,8 +7,25 @@ import { fromHalfFloat, toHalfFloat } from '../extras/DataUtils.js';
|
|
|
7
7
|
const _vector = /*@__PURE__*/ new Vector3();
|
|
8
8
|
const _vector2 = /*@__PURE__*/ new Vector2();
|
|
9
9
|
|
|
10
|
+
let _id = 0;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* This class stores data for an attribute (such as vertex positions, face
|
|
14
|
+
* indices, normals, colors, UVs, and any custom attributes ) associated with
|
|
15
|
+
* a geometry, which allows for more efficient passing of data to the GPU.
|
|
16
|
+
*
|
|
17
|
+
* When working with vector-like data, the `fromBufferAttribute( attribute, index )`
|
|
18
|
+
* helper methods on vector and color class might be helpful. E.g. {@link Vector3#fromBufferAttribute}.
|
|
19
|
+
*/
|
|
10
20
|
class BufferAttribute {
|
|
11
21
|
|
|
22
|
+
/**
|
|
23
|
+
* Constructs a new buffer attribute.
|
|
24
|
+
*
|
|
25
|
+
* @param {TypedArray} array - The array holding the attribute data.
|
|
26
|
+
* @param {number} itemSize - The item size.
|
|
27
|
+
* @param {boolean} [normalized=false] - Whether the data are normalized or not.
|
|
28
|
+
*/
|
|
12
29
|
constructor( array, itemSize, normalized = false ) {
|
|
13
30
|
|
|
14
31
|
if ( Array.isArray( array ) ) {
|
|
@@ -17,31 +34,133 @@ class BufferAttribute {
|
|
|
17
34
|
|
|
18
35
|
}
|
|
19
36
|
|
|
37
|
+
/**
|
|
38
|
+
* This flag can be used for type testing.
|
|
39
|
+
*
|
|
40
|
+
* @type {boolean}
|
|
41
|
+
* @readonly
|
|
42
|
+
* @default true
|
|
43
|
+
*/
|
|
20
44
|
this.isBufferAttribute = true;
|
|
21
45
|
|
|
46
|
+
/**
|
|
47
|
+
* The ID of the buffer attribute.
|
|
48
|
+
*
|
|
49
|
+
* @name BufferAttribute#id
|
|
50
|
+
* @type {number}
|
|
51
|
+
* @readonly
|
|
52
|
+
*/
|
|
53
|
+
Object.defineProperty( this, 'id', { value: _id ++ } );
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* The name of the buffer attribute.
|
|
57
|
+
*
|
|
58
|
+
* @type {string}
|
|
59
|
+
*/
|
|
22
60
|
this.name = '';
|
|
23
61
|
|
|
62
|
+
/**
|
|
63
|
+
* The array holding the attribute data. It should have `itemSize * numVertices`
|
|
64
|
+
* elements, where `numVertices` is the number of vertices in the associated geometry.
|
|
65
|
+
*
|
|
66
|
+
* @type {TypedArray}
|
|
67
|
+
*/
|
|
24
68
|
this.array = array;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* The number of values of the array that should be associated with a particular vertex.
|
|
72
|
+
* For instance, if this attribute is storing a 3-component vector (such as a position,
|
|
73
|
+
* normal, or color), then the value should be `3`.
|
|
74
|
+
*
|
|
75
|
+
* @type {number}
|
|
76
|
+
*/
|
|
25
77
|
this.itemSize = itemSize;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Represents the number of items this buffer attribute stores. It is internally computed
|
|
81
|
+
* by dividing the `array` length by the `itemSize`.
|
|
82
|
+
*
|
|
83
|
+
* @type {number}
|
|
84
|
+
* @readonly
|
|
85
|
+
*/
|
|
26
86
|
this.count = array !== undefined ? array.length / itemSize : 0;
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Applies to integer data only. Indicates how the underlying data in the buffer maps to
|
|
90
|
+
* the values in the GLSL code. For instance, if `array` is an instance of `UInt16Array`,
|
|
91
|
+
* and `normalized` is `true`, the values `0 - +65535` in the array data will be mapped to
|
|
92
|
+
* `0.0f - +1.0f` in the GLSL attribute. If `normalized` is `false`, the values will be converted
|
|
93
|
+
* to floats unmodified, i.e. `65535` becomes `65535.0f`.
|
|
94
|
+
*
|
|
95
|
+
* @type {boolean}
|
|
96
|
+
*/
|
|
27
97
|
this.normalized = normalized;
|
|
28
98
|
|
|
99
|
+
/**
|
|
100
|
+
* Defines the intended usage pattern of the data store for optimization purposes.
|
|
101
|
+
*
|
|
102
|
+
* Note: After the initial use of a buffer, its usage cannot be changed. Instead,
|
|
103
|
+
* instantiate a new one and set the desired usage before the next render.
|
|
104
|
+
*
|
|
105
|
+
* @type {(StaticDrawUsage|DynamicDrawUsage|StreamDrawUsage|StaticReadUsage|DynamicReadUsage|StreamReadUsage|StaticCopyUsage|DynamicCopyUsage|StreamCopyUsage)}
|
|
106
|
+
* @default StaticDrawUsage
|
|
107
|
+
*/
|
|
29
108
|
this.usage = StaticDrawUsage;
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* This can be used to only update some components of stored vectors (for example, just the
|
|
112
|
+
* component related to color). Use the `addUpdateRange()` function to add ranges to this array.
|
|
113
|
+
*
|
|
114
|
+
* @type {Array<Object>}
|
|
115
|
+
*/
|
|
30
116
|
this.updateRanges = [];
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Configures the bound GPU type for use in shaders.
|
|
120
|
+
*
|
|
121
|
+
* Note: this only has an effect for integer arrays and is not configurable for float arrays.
|
|
122
|
+
* For lower precision float types, use `Float16BufferAttribute`.
|
|
123
|
+
*
|
|
124
|
+
* @type {(FloatType|IntType)}
|
|
125
|
+
* @default FloatType
|
|
126
|
+
*/
|
|
31
127
|
this.gpuType = FloatType;
|
|
32
128
|
|
|
129
|
+
/**
|
|
130
|
+
* A version number, incremented every time the `needsUpdate` is set to `true`.
|
|
131
|
+
*
|
|
132
|
+
* @type {number}
|
|
133
|
+
*/
|
|
33
134
|
this.version = 0;
|
|
34
135
|
|
|
35
136
|
}
|
|
36
137
|
|
|
138
|
+
/**
|
|
139
|
+
* A callback function that is executed after the renderer has transferred the attribute
|
|
140
|
+
* array data to the GPU.
|
|
141
|
+
*/
|
|
37
142
|
onUploadCallback() {}
|
|
38
143
|
|
|
144
|
+
/**
|
|
145
|
+
* Flag to indicate that this attribute has changed and should be re-sent to
|
|
146
|
+
* the GPU. Set this to `true` when you modify the value of the array.
|
|
147
|
+
*
|
|
148
|
+
* @type {number}
|
|
149
|
+
* @default false
|
|
150
|
+
* @param {boolean} value
|
|
151
|
+
*/
|
|
39
152
|
set needsUpdate( value ) {
|
|
40
153
|
|
|
41
154
|
if ( value === true ) this.version ++;
|
|
42
155
|
|
|
43
156
|
}
|
|
44
157
|
|
|
158
|
+
/**
|
|
159
|
+
* Sets the usage of this buffer attribute.
|
|
160
|
+
*
|
|
161
|
+
* @param {(StaticDrawUsage|DynamicDrawUsage|StreamDrawUsage|StaticReadUsage|DynamicReadUsage|StreamReadUsage|StaticCopyUsage|DynamicCopyUsage|StreamCopyUsage)} value - The usage to set.
|
|
162
|
+
* @return {BufferAttribute} A reference to this buffer attribute.
|
|
163
|
+
*/
|
|
45
164
|
setUsage( value ) {
|
|
46
165
|
|
|
47
166
|
this.usage = value;
|
|
@@ -50,18 +169,33 @@ class BufferAttribute {
|
|
|
50
169
|
|
|
51
170
|
}
|
|
52
171
|
|
|
172
|
+
/**
|
|
173
|
+
* Adds a range of data in the data array to be updated on the GPU.
|
|
174
|
+
*
|
|
175
|
+
* @param {number} start - Position at which to start update.
|
|
176
|
+
* @param {number} count - The number of components to update.
|
|
177
|
+
*/
|
|
53
178
|
addUpdateRange( start, count ) {
|
|
54
179
|
|
|
55
180
|
this.updateRanges.push( { start, count } );
|
|
56
181
|
|
|
57
182
|
}
|
|
58
183
|
|
|
184
|
+
/**
|
|
185
|
+
* Clears the update ranges.
|
|
186
|
+
*/
|
|
59
187
|
clearUpdateRanges() {
|
|
60
188
|
|
|
61
189
|
this.updateRanges.length = 0;
|
|
62
190
|
|
|
63
191
|
}
|
|
64
192
|
|
|
193
|
+
/**
|
|
194
|
+
* Copies the values of the given buffer attribute to this instance.
|
|
195
|
+
*
|
|
196
|
+
* @param {BufferAttribute} source - The buffer attribute to copy.
|
|
197
|
+
* @return {BufferAttribute} A reference to this instance.
|
|
198
|
+
*/
|
|
65
199
|
copy( source ) {
|
|
66
200
|
|
|
67
201
|
this.name = source.name;
|
|
@@ -77,6 +211,16 @@ class BufferAttribute {
|
|
|
77
211
|
|
|
78
212
|
}
|
|
79
213
|
|
|
214
|
+
/**
|
|
215
|
+
* Copies a vector from the given buffer attribute to this one. The start
|
|
216
|
+
* and destination position in the attribute buffers are represented by the
|
|
217
|
+
* given indices.
|
|
218
|
+
*
|
|
219
|
+
* @param {number} index1 - The destination index into this buffer attribute.
|
|
220
|
+
* @param {BufferAttribute} attribute - The buffer attribute to copy from.
|
|
221
|
+
* @param {number} index2 - The source index into the given buffer attribute.
|
|
222
|
+
* @return {BufferAttribute} A reference to this instance.
|
|
223
|
+
*/
|
|
80
224
|
copyAt( index1, attribute, index2 ) {
|
|
81
225
|
|
|
82
226
|
index1 *= this.itemSize;
|
|
@@ -92,6 +236,12 @@ class BufferAttribute {
|
|
|
92
236
|
|
|
93
237
|
}
|
|
94
238
|
|
|
239
|
+
/**
|
|
240
|
+
* Copies the given array data into this buffer attribute.
|
|
241
|
+
*
|
|
242
|
+
* @param {(TypedArray|Array)} array - The array to copy.
|
|
243
|
+
* @return {BufferAttribute} A reference to this instance.
|
|
244
|
+
*/
|
|
95
245
|
copyArray( array ) {
|
|
96
246
|
|
|
97
247
|
this.array.set( array );
|
|
@@ -100,6 +250,13 @@ class BufferAttribute {
|
|
|
100
250
|
|
|
101
251
|
}
|
|
102
252
|
|
|
253
|
+
/**
|
|
254
|
+
* Applies the given 3x3 matrix to the given attribute. Works with
|
|
255
|
+
* item size `2` and `3`.
|
|
256
|
+
*
|
|
257
|
+
* @param {Matrix3} m - The matrix to apply.
|
|
258
|
+
* @return {BufferAttribute} A reference to this instance.
|
|
259
|
+
*/
|
|
103
260
|
applyMatrix3( m ) {
|
|
104
261
|
|
|
105
262
|
if ( this.itemSize === 2 ) {
|
|
@@ -130,6 +287,13 @@ class BufferAttribute {
|
|
|
130
287
|
|
|
131
288
|
}
|
|
132
289
|
|
|
290
|
+
/**
|
|
291
|
+
* Applies the given 4x4 matrix to the given attribute. Only works with
|
|
292
|
+
* item size `3`.
|
|
293
|
+
*
|
|
294
|
+
* @param {Matrix4} m - The matrix to apply.
|
|
295
|
+
* @return {BufferAttribute} A reference to this instance.
|
|
296
|
+
*/
|
|
133
297
|
applyMatrix4( m ) {
|
|
134
298
|
|
|
135
299
|
for ( let i = 0, l = this.count; i < l; i ++ ) {
|
|
@@ -146,6 +310,13 @@ class BufferAttribute {
|
|
|
146
310
|
|
|
147
311
|
}
|
|
148
312
|
|
|
313
|
+
/**
|
|
314
|
+
* Applies the given 3x3 normal matrix to the given attribute. Only works with
|
|
315
|
+
* item size `3`.
|
|
316
|
+
*
|
|
317
|
+
* @param {Matrix3} m - The normal matrix to apply.
|
|
318
|
+
* @return {BufferAttribute} A reference to this instance.
|
|
319
|
+
*/
|
|
149
320
|
applyNormalMatrix( m ) {
|
|
150
321
|
|
|
151
322
|
for ( let i = 0, l = this.count; i < l; i ++ ) {
|
|
@@ -162,6 +333,13 @@ class BufferAttribute {
|
|
|
162
333
|
|
|
163
334
|
}
|
|
164
335
|
|
|
336
|
+
/**
|
|
337
|
+
* Applies the given 4x4 matrix to the given attribute. Only works with
|
|
338
|
+
* item size `3` and with direction vectors.
|
|
339
|
+
*
|
|
340
|
+
* @param {Matrix4} m - The matrix to apply.
|
|
341
|
+
* @return {BufferAttribute} A reference to this instance.
|
|
342
|
+
*/
|
|
165
343
|
transformDirection( m ) {
|
|
166
344
|
|
|
167
345
|
for ( let i = 0, l = this.count; i < l; i ++ ) {
|
|
@@ -178,6 +356,13 @@ class BufferAttribute {
|
|
|
178
356
|
|
|
179
357
|
}
|
|
180
358
|
|
|
359
|
+
/**
|
|
360
|
+
* Sets the given array data in the buffer attribute.
|
|
361
|
+
*
|
|
362
|
+
* @param {(TypedArray|Array)} value - The array data to set.
|
|
363
|
+
* @param {number} [offset=0] - The offset in this buffer attribute's array.
|
|
364
|
+
* @return {BufferAttribute} A reference to this instance.
|
|
365
|
+
*/
|
|
181
366
|
set( value, offset = 0 ) {
|
|
182
367
|
|
|
183
368
|
// Matching BufferAttribute constructor, do not normalize the array.
|
|
@@ -187,6 +372,13 @@ class BufferAttribute {
|
|
|
187
372
|
|
|
188
373
|
}
|
|
189
374
|
|
|
375
|
+
/**
|
|
376
|
+
* Returns the given component of the vector at the given index.
|
|
377
|
+
*
|
|
378
|
+
* @param {number} index - The index into the buffer attribute.
|
|
379
|
+
* @param {number} component - The component index.
|
|
380
|
+
* @return {number} The returned value.
|
|
381
|
+
*/
|
|
190
382
|
getComponent( index, component ) {
|
|
191
383
|
|
|
192
384
|
let value = this.array[ index * this.itemSize + component ];
|
|
@@ -197,6 +389,14 @@ class BufferAttribute {
|
|
|
197
389
|
|
|
198
390
|
}
|
|
199
391
|
|
|
392
|
+
/**
|
|
393
|
+
* Sets the given value to the given component of the vector at the given index.
|
|
394
|
+
*
|
|
395
|
+
* @param {number} index - The index into the buffer attribute.
|
|
396
|
+
* @param {number} component - The component index.
|
|
397
|
+
* @param {number} value - The value to set.
|
|
398
|
+
* @return {BufferAttribute} A reference to this instance.
|
|
399
|
+
*/
|
|
200
400
|
setComponent( index, component, value ) {
|
|
201
401
|
|
|
202
402
|
if ( this.normalized ) value = normalize( value, this.array );
|
|
@@ -207,6 +407,12 @@ class BufferAttribute {
|
|
|
207
407
|
|
|
208
408
|
}
|
|
209
409
|
|
|
410
|
+
/**
|
|
411
|
+
* Returns the x component of the vector at the given index.
|
|
412
|
+
*
|
|
413
|
+
* @param {number} index - The index into the buffer attribute.
|
|
414
|
+
* @return {number} The x component.
|
|
415
|
+
*/
|
|
210
416
|
getX( index ) {
|
|
211
417
|
|
|
212
418
|
let x = this.array[ index * this.itemSize ];
|
|
@@ -217,6 +423,13 @@ class BufferAttribute {
|
|
|
217
423
|
|
|
218
424
|
}
|
|
219
425
|
|
|
426
|
+
/**
|
|
427
|
+
* Sets the x component of the vector at the given index.
|
|
428
|
+
*
|
|
429
|
+
* @param {number} index - The index into the buffer attribute.
|
|
430
|
+
* @param {number} x - The value to set.
|
|
431
|
+
* @return {BufferAttribute} A reference to this instance.
|
|
432
|
+
*/
|
|
220
433
|
setX( index, x ) {
|
|
221
434
|
|
|
222
435
|
if ( this.normalized ) x = normalize( x, this.array );
|
|
@@ -227,6 +440,12 @@ class BufferAttribute {
|
|
|
227
440
|
|
|
228
441
|
}
|
|
229
442
|
|
|
443
|
+
/**
|
|
444
|
+
* Returns the y component of the vector at the given index.
|
|
445
|
+
*
|
|
446
|
+
* @param {number} index - The index into the buffer attribute.
|
|
447
|
+
* @return {number} The y component.
|
|
448
|
+
*/
|
|
230
449
|
getY( index ) {
|
|
231
450
|
|
|
232
451
|
let y = this.array[ index * this.itemSize + 1 ];
|
|
@@ -237,6 +456,13 @@ class BufferAttribute {
|
|
|
237
456
|
|
|
238
457
|
}
|
|
239
458
|
|
|
459
|
+
/**
|
|
460
|
+
* Sets the y component of the vector at the given index.
|
|
461
|
+
*
|
|
462
|
+
* @param {number} index - The index into the buffer attribute.
|
|
463
|
+
* @param {number} y - The value to set.
|
|
464
|
+
* @return {BufferAttribute} A reference to this instance.
|
|
465
|
+
*/
|
|
240
466
|
setY( index, y ) {
|
|
241
467
|
|
|
242
468
|
if ( this.normalized ) y = normalize( y, this.array );
|
|
@@ -247,6 +473,12 @@ class BufferAttribute {
|
|
|
247
473
|
|
|
248
474
|
}
|
|
249
475
|
|
|
476
|
+
/**
|
|
477
|
+
* Returns the z component of the vector at the given index.
|
|
478
|
+
*
|
|
479
|
+
* @param {number} index - The index into the buffer attribute.
|
|
480
|
+
* @return {number} The z component.
|
|
481
|
+
*/
|
|
250
482
|
getZ( index ) {
|
|
251
483
|
|
|
252
484
|
let z = this.array[ index * this.itemSize + 2 ];
|
|
@@ -257,6 +489,13 @@ class BufferAttribute {
|
|
|
257
489
|
|
|
258
490
|
}
|
|
259
491
|
|
|
492
|
+
/**
|
|
493
|
+
* Sets the z component of the vector at the given index.
|
|
494
|
+
*
|
|
495
|
+
* @param {number} index - The index into the buffer attribute.
|
|
496
|
+
* @param {number} z - The value to set.
|
|
497
|
+
* @return {BufferAttribute} A reference to this instance.
|
|
498
|
+
*/
|
|
260
499
|
setZ( index, z ) {
|
|
261
500
|
|
|
262
501
|
if ( this.normalized ) z = normalize( z, this.array );
|
|
@@ -267,6 +506,12 @@ class BufferAttribute {
|
|
|
267
506
|
|
|
268
507
|
}
|
|
269
508
|
|
|
509
|
+
/**
|
|
510
|
+
* Returns the w component of the vector at the given index.
|
|
511
|
+
*
|
|
512
|
+
* @param {number} index - The index into the buffer attribute.
|
|
513
|
+
* @return {number} The w component.
|
|
514
|
+
*/
|
|
270
515
|
getW( index ) {
|
|
271
516
|
|
|
272
517
|
let w = this.array[ index * this.itemSize + 3 ];
|
|
@@ -277,6 +522,13 @@ class BufferAttribute {
|
|
|
277
522
|
|
|
278
523
|
}
|
|
279
524
|
|
|
525
|
+
/**
|
|
526
|
+
* Sets the w component of the vector at the given index.
|
|
527
|
+
*
|
|
528
|
+
* @param {number} index - The index into the buffer attribute.
|
|
529
|
+
* @param {number} w - The value to set.
|
|
530
|
+
* @return {BufferAttribute} A reference to this instance.
|
|
531
|
+
*/
|
|
280
532
|
setW( index, w ) {
|
|
281
533
|
|
|
282
534
|
if ( this.normalized ) w = normalize( w, this.array );
|
|
@@ -287,6 +539,14 @@ class BufferAttribute {
|
|
|
287
539
|
|
|
288
540
|
}
|
|
289
541
|
|
|
542
|
+
/**
|
|
543
|
+
* Sets the x and y component of the vector at the given index.
|
|
544
|
+
*
|
|
545
|
+
* @param {number} index - The index into the buffer attribute.
|
|
546
|
+
* @param {number} x - The value for the x component to set.
|
|
547
|
+
* @param {number} y - The value for the y component to set.
|
|
548
|
+
* @return {BufferAttribute} A reference to this instance.
|
|
549
|
+
*/
|
|
290
550
|
setXY( index, x, y ) {
|
|
291
551
|
|
|
292
552
|
index *= this.itemSize;
|
|
@@ -305,6 +565,15 @@ class BufferAttribute {
|
|
|
305
565
|
|
|
306
566
|
}
|
|
307
567
|
|
|
568
|
+
/**
|
|
569
|
+
* Sets the x, y and z component of the vector at the given index.
|
|
570
|
+
*
|
|
571
|
+
* @param {number} index - The index into the buffer attribute.
|
|
572
|
+
* @param {number} x - The value for the x component to set.
|
|
573
|
+
* @param {number} y - The value for the y component to set.
|
|
574
|
+
* @param {number} z - The value for the z component to set.
|
|
575
|
+
* @return {BufferAttribute} A reference to this instance.
|
|
576
|
+
*/
|
|
308
577
|
setXYZ( index, x, y, z ) {
|
|
309
578
|
|
|
310
579
|
index *= this.itemSize;
|
|
@@ -325,6 +594,16 @@ class BufferAttribute {
|
|
|
325
594
|
|
|
326
595
|
}
|
|
327
596
|
|
|
597
|
+
/**
|
|
598
|
+
* Sets the x, y, z and w component of the vector at the given index.
|
|
599
|
+
*
|
|
600
|
+
* @param {number} index - The index into the buffer attribute.
|
|
601
|
+
* @param {number} x - The value for the x component to set.
|
|
602
|
+
* @param {number} y - The value for the y component to set.
|
|
603
|
+
* @param {number} z - The value for the z component to set.
|
|
604
|
+
* @param {number} w - The value for the w component to set.
|
|
605
|
+
* @return {BufferAttribute} A reference to this instance.
|
|
606
|
+
*/
|
|
328
607
|
setXYZW( index, x, y, z, w ) {
|
|
329
608
|
|
|
330
609
|
index *= this.itemSize;
|
|
@@ -347,6 +626,14 @@ class BufferAttribute {
|
|
|
347
626
|
|
|
348
627
|
}
|
|
349
628
|
|
|
629
|
+
/**
|
|
630
|
+
* Sets the given callback function that is executed after the Renderer has transferred
|
|
631
|
+
* the attribute array data to the GPU. Can be used to perform clean-up operations after
|
|
632
|
+
* the upload when attribute data are not needed anymore on the CPU side.
|
|
633
|
+
*
|
|
634
|
+
* @param {Function} callback - The `onUpload()` callback.
|
|
635
|
+
* @return {BufferAttribute} A reference to this instance.
|
|
636
|
+
*/
|
|
350
637
|
onUpload( callback ) {
|
|
351
638
|
|
|
352
639
|
this.onUploadCallback = callback;
|
|
@@ -355,12 +642,22 @@ class BufferAttribute {
|
|
|
355
642
|
|
|
356
643
|
}
|
|
357
644
|
|
|
645
|
+
/**
|
|
646
|
+
* Returns a new buffer attribute with copied values from this instance.
|
|
647
|
+
*
|
|
648
|
+
* @return {BufferAttribute} A clone of this instance.
|
|
649
|
+
*/
|
|
358
650
|
clone() {
|
|
359
651
|
|
|
360
652
|
return new this.constructor( this.array, this.itemSize ).copy( this );
|
|
361
653
|
|
|
362
654
|
}
|
|
363
655
|
|
|
656
|
+
/**
|
|
657
|
+
* Serializes the buffer attribute into JSON.
|
|
658
|
+
*
|
|
659
|
+
* @return {Object} A JSON object representing the serialized buffer attribute.
|
|
660
|
+
*/
|
|
364
661
|
toJSON() {
|
|
365
662
|
|
|
366
663
|
const data = {
|
|
@@ -379,10 +676,21 @@ class BufferAttribute {
|
|
|
379
676
|
|
|
380
677
|
}
|
|
381
678
|
|
|
382
|
-
|
|
383
|
-
|
|
679
|
+
/**
|
|
680
|
+
* Convenient class that can be used when creating a `Int8` buffer attribute with
|
|
681
|
+
* a plain `Array` instance.
|
|
682
|
+
*
|
|
683
|
+
* @augments BufferAttribute
|
|
684
|
+
*/
|
|
384
685
|
class Int8BufferAttribute extends BufferAttribute {
|
|
385
686
|
|
|
687
|
+
/**
|
|
688
|
+
* Constructs a new buffer attribute.
|
|
689
|
+
*
|
|
690
|
+
* @param {(Array<number>|Int8Array)} array - The array holding the attribute data.
|
|
691
|
+
* @param {number} itemSize - The item size.
|
|
692
|
+
* @param {boolean} [normalized=false] - Whether the data are normalized or not.
|
|
693
|
+
*/
|
|
386
694
|
constructor( array, itemSize, normalized ) {
|
|
387
695
|
|
|
388
696
|
super( new Int8Array( array ), itemSize, normalized );
|
|
@@ -391,8 +699,21 @@ class Int8BufferAttribute extends BufferAttribute {
|
|
|
391
699
|
|
|
392
700
|
}
|
|
393
701
|
|
|
702
|
+
/**
|
|
703
|
+
* Convenient class that can be used when creating a `UInt8` buffer attribute with
|
|
704
|
+
* a plain `Array` instance.
|
|
705
|
+
*
|
|
706
|
+
* @augments BufferAttribute
|
|
707
|
+
*/
|
|
394
708
|
class Uint8BufferAttribute extends BufferAttribute {
|
|
395
709
|
|
|
710
|
+
/**
|
|
711
|
+
* Constructs a new buffer attribute.
|
|
712
|
+
*
|
|
713
|
+
* @param {(Array<number>|Uint8Array)} array - The array holding the attribute data.
|
|
714
|
+
* @param {number} itemSize - The item size.
|
|
715
|
+
* @param {boolean} [normalized=false] - Whether the data are normalized or not.
|
|
716
|
+
*/
|
|
396
717
|
constructor( array, itemSize, normalized ) {
|
|
397
718
|
|
|
398
719
|
super( new Uint8Array( array ), itemSize, normalized );
|
|
@@ -401,8 +722,21 @@ class Uint8BufferAttribute extends BufferAttribute {
|
|
|
401
722
|
|
|
402
723
|
}
|
|
403
724
|
|
|
725
|
+
/**
|
|
726
|
+
* Convenient class that can be used when creating a `UInt8Clamped` buffer attribute with
|
|
727
|
+
* a plain `Array` instance.
|
|
728
|
+
*
|
|
729
|
+
* @augments BufferAttribute
|
|
730
|
+
*/
|
|
404
731
|
class Uint8ClampedBufferAttribute extends BufferAttribute {
|
|
405
732
|
|
|
733
|
+
/**
|
|
734
|
+
* Constructs a new buffer attribute.
|
|
735
|
+
*
|
|
736
|
+
* @param {(Array<number>|Uint8ClampedArray)} array - The array holding the attribute data.
|
|
737
|
+
* @param {number} itemSize - The item size.
|
|
738
|
+
* @param {boolean} [normalized=false] - Whether the data are normalized or not.
|
|
739
|
+
*/
|
|
406
740
|
constructor( array, itemSize, normalized ) {
|
|
407
741
|
|
|
408
742
|
super( new Uint8ClampedArray( array ), itemSize, normalized );
|
|
@@ -411,8 +745,21 @@ class Uint8ClampedBufferAttribute extends BufferAttribute {
|
|
|
411
745
|
|
|
412
746
|
}
|
|
413
747
|
|
|
748
|
+
/**
|
|
749
|
+
* Convenient class that can be used when creating a `Int16` buffer attribute with
|
|
750
|
+
* a plain `Array` instance.
|
|
751
|
+
*
|
|
752
|
+
* @augments BufferAttribute
|
|
753
|
+
*/
|
|
414
754
|
class Int16BufferAttribute extends BufferAttribute {
|
|
415
755
|
|
|
756
|
+
/**
|
|
757
|
+
* Constructs a new buffer attribute.
|
|
758
|
+
*
|
|
759
|
+
* @param {(Array<number>|Int16Array)} array - The array holding the attribute data.
|
|
760
|
+
* @param {number} itemSize - The item size.
|
|
761
|
+
* @param {boolean} [normalized=false] - Whether the data are normalized or not.
|
|
762
|
+
*/
|
|
416
763
|
constructor( array, itemSize, normalized ) {
|
|
417
764
|
|
|
418
765
|
super( new Int16Array( array ), itemSize, normalized );
|
|
@@ -421,8 +768,21 @@ class Int16BufferAttribute extends BufferAttribute {
|
|
|
421
768
|
|
|
422
769
|
}
|
|
423
770
|
|
|
771
|
+
/**
|
|
772
|
+
* Convenient class that can be used when creating a `UInt16` buffer attribute with
|
|
773
|
+
* a plain `Array` instance.
|
|
774
|
+
*
|
|
775
|
+
* @augments BufferAttribute
|
|
776
|
+
*/
|
|
424
777
|
class Uint16BufferAttribute extends BufferAttribute {
|
|
425
778
|
|
|
779
|
+
/**
|
|
780
|
+
* Constructs a new buffer attribute.
|
|
781
|
+
*
|
|
782
|
+
* @param {(Array<number>|Uint16Array)} array - The array holding the attribute data.
|
|
783
|
+
* @param {number} itemSize - The item size.
|
|
784
|
+
* @param {boolean} [normalized=false] - Whether the data are normalized or not.
|
|
785
|
+
*/
|
|
426
786
|
constructor( array, itemSize, normalized ) {
|
|
427
787
|
|
|
428
788
|
super( new Uint16Array( array ), itemSize, normalized );
|
|
@@ -431,8 +791,21 @@ class Uint16BufferAttribute extends BufferAttribute {
|
|
|
431
791
|
|
|
432
792
|
}
|
|
433
793
|
|
|
794
|
+
/**
|
|
795
|
+
* Convenient class that can be used when creating a `Int32` buffer attribute with
|
|
796
|
+
* a plain `Array` instance.
|
|
797
|
+
*
|
|
798
|
+
* @augments BufferAttribute
|
|
799
|
+
*/
|
|
434
800
|
class Int32BufferAttribute extends BufferAttribute {
|
|
435
801
|
|
|
802
|
+
/**
|
|
803
|
+
* Constructs a new buffer attribute.
|
|
804
|
+
*
|
|
805
|
+
* @param {(Array<number>|Int32Array)} array - The array holding the attribute data.
|
|
806
|
+
* @param {number} itemSize - The item size.
|
|
807
|
+
* @param {boolean} [normalized=false] - Whether the data are normalized or not.
|
|
808
|
+
*/
|
|
436
809
|
constructor( array, itemSize, normalized ) {
|
|
437
810
|
|
|
438
811
|
super( new Int32Array( array ), itemSize, normalized );
|
|
@@ -441,8 +814,21 @@ class Int32BufferAttribute extends BufferAttribute {
|
|
|
441
814
|
|
|
442
815
|
}
|
|
443
816
|
|
|
817
|
+
/**
|
|
818
|
+
* Convenient class that can be used when creating a `UInt32` buffer attribute with
|
|
819
|
+
* a plain `Array` instance.
|
|
820
|
+
*
|
|
821
|
+
* @augments BufferAttribute
|
|
822
|
+
*/
|
|
444
823
|
class Uint32BufferAttribute extends BufferAttribute {
|
|
445
824
|
|
|
825
|
+
/**
|
|
826
|
+
* Constructs a new buffer attribute.
|
|
827
|
+
*
|
|
828
|
+
* @param {(Array<number>|Uint32Array)} array - The array holding the attribute data.
|
|
829
|
+
* @param {number} itemSize - The item size.
|
|
830
|
+
* @param {boolean} [normalized=false] - Whether the data are normalized or not.
|
|
831
|
+
*/
|
|
446
832
|
constructor( array, itemSize, normalized ) {
|
|
447
833
|
|
|
448
834
|
super( new Uint32Array( array ), itemSize, normalized );
|
|
@@ -451,8 +837,24 @@ class Uint32BufferAttribute extends BufferAttribute {
|
|
|
451
837
|
|
|
452
838
|
}
|
|
453
839
|
|
|
840
|
+
/**
|
|
841
|
+
* Convenient class that can be used when creating a `Float16` buffer attribute with
|
|
842
|
+
* a plain `Array` instance.
|
|
843
|
+
*
|
|
844
|
+
* This class automatically converts to and from FP16 via `Uint16Array` since `Float16Array`
|
|
845
|
+
* browser support is still problematic.
|
|
846
|
+
*
|
|
847
|
+
* @augments BufferAttribute
|
|
848
|
+
*/
|
|
454
849
|
class Float16BufferAttribute extends BufferAttribute {
|
|
455
850
|
|
|
851
|
+
/**
|
|
852
|
+
* Constructs a new buffer attribute.
|
|
853
|
+
*
|
|
854
|
+
* @param {(Array<number>|Uint16Array)} array - The array holding the attribute data.
|
|
855
|
+
* @param {number} itemSize - The item size.
|
|
856
|
+
* @param {boolean} [normalized=false] - Whether the data are normalized or not.
|
|
857
|
+
*/
|
|
456
858
|
constructor( array, itemSize, normalized ) {
|
|
457
859
|
|
|
458
860
|
super( new Uint16Array( array ), itemSize, normalized );
|
|
@@ -603,9 +1005,21 @@ class Float16BufferAttribute extends BufferAttribute {
|
|
|
603
1005
|
|
|
604
1006
|
}
|
|
605
1007
|
|
|
606
|
-
|
|
1008
|
+
/**
|
|
1009
|
+
* Convenient class that can be used when creating a `Float32` buffer attribute with
|
|
1010
|
+
* a plain `Array` instance.
|
|
1011
|
+
*
|
|
1012
|
+
* @augments BufferAttribute
|
|
1013
|
+
*/
|
|
607
1014
|
class Float32BufferAttribute extends BufferAttribute {
|
|
608
1015
|
|
|
1016
|
+
/**
|
|
1017
|
+
* Constructs a new buffer attribute.
|
|
1018
|
+
*
|
|
1019
|
+
* @param {(Array<number>|Float32Array)} array - The array holding the attribute data.
|
|
1020
|
+
* @param {number} itemSize - The item size.
|
|
1021
|
+
* @param {boolean} [normalized=false] - Whether the data are normalized or not.
|
|
1022
|
+
*/
|
|
609
1023
|
constructor( array, itemSize, normalized ) {
|
|
610
1024
|
|
|
611
1025
|
super( new Float32Array( array ), itemSize, normalized );
|