@needle-tools/three 0.169.20-experimental.0 → 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 +54184 -56703
- package/build/three.core.js +59506 -0
- package/build/three.core.min.js +6 -0
- package/build/three.module.js +11645 -73000
- 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 +53912 -51652
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +53888 -51806
- 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 -37
- 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 +105 -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 +150 -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,8 @@ import { Sphere } from '../math/Sphere.js';
|
|
|
7
7
|
import { Object3D } from './Object3D.js';
|
|
8
8
|
import { Matrix4 } from '../math/Matrix4.js';
|
|
9
9
|
import { Matrix3 } from '../math/Matrix3.js';
|
|
10
|
-
import
|
|
11
|
-
import { arrayNeedsUint32 } from '../utils.js';
|
|
10
|
+
import { generateUUID } from '../math/MathUtils.js';
|
|
11
|
+
import { arrayNeedsUint32, warn, error } from '../utils.js';
|
|
12
12
|
|
|
13
13
|
let _id = 0;
|
|
14
14
|
|
|
@@ -19,44 +19,201 @@ const _box = /*@__PURE__*/ new Box3();
|
|
|
19
19
|
const _boxMorphTargets = /*@__PURE__*/ new Box3();
|
|
20
20
|
const _vector = /*@__PURE__*/ new Vector3();
|
|
21
21
|
|
|
22
|
+
/**
|
|
23
|
+
* A representation of mesh, line, or point geometry. Includes vertex
|
|
24
|
+
* positions, face indices, normals, colors, UVs, and custom attributes
|
|
25
|
+
* within buffers, reducing the cost of passing all this data to the GPU.
|
|
26
|
+
*
|
|
27
|
+
* ```js
|
|
28
|
+
* const geometry = new THREE.BufferGeometry();
|
|
29
|
+
* // create a simple square shape. We duplicate the top left and bottom right
|
|
30
|
+
* // vertices because each vertex needs to appear once per triangle.
|
|
31
|
+
* const vertices = new Float32Array( [
|
|
32
|
+
* -1.0, -1.0, 1.0, // v0
|
|
33
|
+
* 1.0, -1.0, 1.0, // v1
|
|
34
|
+
* 1.0, 1.0, 1.0, // v2
|
|
35
|
+
*
|
|
36
|
+
* 1.0, 1.0, 1.0, // v3
|
|
37
|
+
* -1.0, 1.0, 1.0, // v4
|
|
38
|
+
* -1.0, -1.0, 1.0 // v5
|
|
39
|
+
* ] );
|
|
40
|
+
* // itemSize = 3 because there are 3 values (components) per vertex
|
|
41
|
+
* geometry.setAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) );
|
|
42
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );
|
|
43
|
+
* const mesh = new THREE.Mesh( geometry, material );
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* @augments EventDispatcher
|
|
47
|
+
*/
|
|
22
48
|
class BufferGeometry extends EventDispatcher {
|
|
23
49
|
|
|
50
|
+
/**
|
|
51
|
+
* Constructs a new geometry.
|
|
52
|
+
*/
|
|
24
53
|
constructor() {
|
|
25
54
|
|
|
26
55
|
super();
|
|
27
56
|
|
|
57
|
+
/**
|
|
58
|
+
* This flag can be used for type testing.
|
|
59
|
+
*
|
|
60
|
+
* @type {boolean}
|
|
61
|
+
* @readonly
|
|
62
|
+
* @default true
|
|
63
|
+
*/
|
|
28
64
|
this.isBufferGeometry = true;
|
|
29
65
|
|
|
66
|
+
/**
|
|
67
|
+
* The ID of the geometry.
|
|
68
|
+
*
|
|
69
|
+
* @name BufferGeometry#id
|
|
70
|
+
* @type {number}
|
|
71
|
+
* @readonly
|
|
72
|
+
*/
|
|
30
73
|
Object.defineProperty( this, 'id', { value: _id ++ } );
|
|
31
74
|
|
|
32
|
-
|
|
33
|
-
|
|
75
|
+
/**
|
|
76
|
+
* The UUID of the geometry.
|
|
77
|
+
*
|
|
78
|
+
* @type {string}
|
|
79
|
+
* @readonly
|
|
80
|
+
*/
|
|
81
|
+
this.uuid = generateUUID();
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* The name of the geometry.
|
|
85
|
+
*
|
|
86
|
+
* @type {string}
|
|
87
|
+
*/
|
|
34
88
|
this.name = '';
|
|
35
89
|
this.type = 'BufferGeometry';
|
|
36
90
|
|
|
91
|
+
/**
|
|
92
|
+
* Allows for vertices to be re-used across multiple triangles; this is
|
|
93
|
+
* called using "indexed triangles". Each triangle is associated with the
|
|
94
|
+
* indices of three vertices. This attribute therefore stores the index of
|
|
95
|
+
* each vertex for each triangular face. If this attribute is not set, the
|
|
96
|
+
* renderer assumes that each three contiguous positions represent a single triangle.
|
|
97
|
+
*
|
|
98
|
+
* @type {?BufferAttribute}
|
|
99
|
+
* @default null
|
|
100
|
+
*/
|
|
37
101
|
this.index = null;
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* A (storage) buffer attribute which was generated with a compute shader and
|
|
105
|
+
* now defines indirect draw calls.
|
|
106
|
+
*
|
|
107
|
+
* Can only be used with {@link WebGPURenderer} and a WebGPU backend.
|
|
108
|
+
*
|
|
109
|
+
* @type {?BufferAttribute}
|
|
110
|
+
* @default null
|
|
111
|
+
*/
|
|
112
|
+
this.indirect = null;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* The offset, in bytes, into the indirect drawing buffer where the value data begins. If an array is provided, multiple indirect draw calls will be made for each offset.
|
|
116
|
+
*
|
|
117
|
+
* Can only be used with {@link WebGPURenderer} and a WebGPU backend.
|
|
118
|
+
*
|
|
119
|
+
* @type {number|Array<number>}
|
|
120
|
+
* @default 0
|
|
121
|
+
*/
|
|
122
|
+
this.indirectOffset = 0;
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* This dictionary has as id the name of the attribute to be set and as value
|
|
126
|
+
* the buffer attribute to set it to. Rather than accessing this property directly,
|
|
127
|
+
* use `setAttribute()` and `getAttribute()` to access attributes of this geometry.
|
|
128
|
+
*
|
|
129
|
+
* @type {Object<string,(BufferAttribute|InterleavedBufferAttribute)>}
|
|
130
|
+
*/
|
|
38
131
|
this.attributes = {};
|
|
39
132
|
|
|
133
|
+
/**
|
|
134
|
+
* This dictionary holds the morph targets of the geometry.
|
|
135
|
+
*
|
|
136
|
+
* Note: Once the geometry has been rendered, the morph attribute data cannot
|
|
137
|
+
* be changed. You will have to call `dispose()`, and create a new geometry instance.
|
|
138
|
+
*
|
|
139
|
+
* @type {Object}
|
|
140
|
+
*/
|
|
40
141
|
this.morphAttributes = {};
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Used to control the morph target behavior; when set to `true`, the morph
|
|
145
|
+
* target data is treated as relative offsets, rather than as absolute
|
|
146
|
+
* positions/normals.
|
|
147
|
+
*
|
|
148
|
+
* @type {boolean}
|
|
149
|
+
* @default false
|
|
150
|
+
*/
|
|
41
151
|
this.morphTargetsRelative = false;
|
|
42
152
|
|
|
153
|
+
/**
|
|
154
|
+
* Split the geometry into groups, each of which will be rendered in a
|
|
155
|
+
* separate draw call. This allows an array of materials to be used with the geometry.
|
|
156
|
+
*
|
|
157
|
+
* Use `addGroup()` and `clearGroups()` to edit groups, rather than modifying this array directly.
|
|
158
|
+
*
|
|
159
|
+
* Every vertex and index must belong to exactly one group — groups must not share vertices or
|
|
160
|
+
* indices, and must not leave vertices or indices unused.
|
|
161
|
+
*
|
|
162
|
+
* @type {Array<Object>}
|
|
163
|
+
*/
|
|
43
164
|
this.groups = [];
|
|
44
165
|
|
|
166
|
+
/**
|
|
167
|
+
* Bounding box for the geometry which can be calculated with `computeBoundingBox()`.
|
|
168
|
+
*
|
|
169
|
+
* @type {?Box3}
|
|
170
|
+
* @default null
|
|
171
|
+
*/
|
|
45
172
|
this.boundingBox = null;
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Bounding sphere for the geometry which can be calculated with `computeBoundingSphere()`.
|
|
176
|
+
*
|
|
177
|
+
* @type {?Sphere}
|
|
178
|
+
* @default null
|
|
179
|
+
*/
|
|
46
180
|
this.boundingSphere = null;
|
|
47
181
|
|
|
182
|
+
/**
|
|
183
|
+
* Determines the part of the geometry to render. This should not be set directly,
|
|
184
|
+
* instead use `setDrawRange()`.
|
|
185
|
+
*
|
|
186
|
+
* @type {{start:number,count:number}}
|
|
187
|
+
*/
|
|
48
188
|
this.drawRange = { start: 0, count: Infinity };
|
|
49
189
|
|
|
190
|
+
/**
|
|
191
|
+
* An object that can be used to store custom data about the geometry.
|
|
192
|
+
* It should not hold references to functions as these will not be cloned.
|
|
193
|
+
*
|
|
194
|
+
* @type {Object}
|
|
195
|
+
*/
|
|
50
196
|
this.userData = {};
|
|
51
197
|
|
|
52
198
|
}
|
|
53
199
|
|
|
200
|
+
/**
|
|
201
|
+
* Returns the index of this geometry.
|
|
202
|
+
*
|
|
203
|
+
* @return {?BufferAttribute} The index. Returns `null` if no index is defined.
|
|
204
|
+
*/
|
|
54
205
|
getIndex() {
|
|
55
206
|
|
|
56
207
|
return this.index;
|
|
57
208
|
|
|
58
209
|
}
|
|
59
210
|
|
|
211
|
+
/**
|
|
212
|
+
* Sets the given index to this geometry.
|
|
213
|
+
*
|
|
214
|
+
* @param {Array<number>|BufferAttribute} index - The index to set.
|
|
215
|
+
* @return {BufferGeometry} A reference to this instance.
|
|
216
|
+
*/
|
|
60
217
|
setIndex( index ) {
|
|
61
218
|
|
|
62
219
|
if ( Array.isArray( index ) ) {
|
|
@@ -73,12 +230,53 @@ class BufferGeometry extends EventDispatcher {
|
|
|
73
230
|
|
|
74
231
|
}
|
|
75
232
|
|
|
233
|
+
/**
|
|
234
|
+
* Sets the given indirect attribute to this geometry.
|
|
235
|
+
*
|
|
236
|
+
* @param {BufferAttribute} indirect - The attribute holding indirect draw calls.
|
|
237
|
+
* @param {number|Array<number>} [indirectOffset=0] - The offset, in bytes, into the indirect drawing buffer where the value data begins. If an array is provided, multiple indirect draw calls will be made for each offset.
|
|
238
|
+
* @return {BufferGeometry} A reference to this instance.
|
|
239
|
+
*/
|
|
240
|
+
setIndirect( indirect, indirectOffset = 0 ) {
|
|
241
|
+
|
|
242
|
+
this.indirect = indirect;
|
|
243
|
+
this.indirectOffset = indirectOffset;
|
|
244
|
+
|
|
245
|
+
return this;
|
|
246
|
+
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Returns the indirect attribute of this geometry.
|
|
251
|
+
*
|
|
252
|
+
* @return {?BufferAttribute} The indirect attribute. Returns `null` if no indirect attribute is defined.
|
|
253
|
+
*/
|
|
254
|
+
getIndirect() {
|
|
255
|
+
|
|
256
|
+
return this.indirect;
|
|
257
|
+
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Returns the buffer attribute for the given name.
|
|
262
|
+
*
|
|
263
|
+
* @param {string} name - The attribute name.
|
|
264
|
+
* @return {BufferAttribute|InterleavedBufferAttribute|undefined} The buffer attribute.
|
|
265
|
+
* Returns `undefined` if not attribute has been found.
|
|
266
|
+
*/
|
|
76
267
|
getAttribute( name ) {
|
|
77
268
|
|
|
78
269
|
return this.attributes[ name ];
|
|
79
270
|
|
|
80
271
|
}
|
|
81
272
|
|
|
273
|
+
/**
|
|
274
|
+
* Sets the given attribute for the given name.
|
|
275
|
+
*
|
|
276
|
+
* @param {string} name - The attribute name.
|
|
277
|
+
* @param {BufferAttribute|InterleavedBufferAttribute} attribute - The attribute to set.
|
|
278
|
+
* @return {BufferGeometry} A reference to this instance.
|
|
279
|
+
*/
|
|
82
280
|
setAttribute( name, attribute ) {
|
|
83
281
|
|
|
84
282
|
this.attributes[ name ] = attribute;
|
|
@@ -87,6 +285,12 @@ class BufferGeometry extends EventDispatcher {
|
|
|
87
285
|
|
|
88
286
|
}
|
|
89
287
|
|
|
288
|
+
/**
|
|
289
|
+
* Deletes the attribute for the given name.
|
|
290
|
+
*
|
|
291
|
+
* @param {string} name - The attribute name to delete.
|
|
292
|
+
* @return {BufferGeometry} A reference to this instance.
|
|
293
|
+
*/
|
|
90
294
|
deleteAttribute( name ) {
|
|
91
295
|
|
|
92
296
|
delete this.attributes[ name ];
|
|
@@ -95,12 +299,26 @@ class BufferGeometry extends EventDispatcher {
|
|
|
95
299
|
|
|
96
300
|
}
|
|
97
301
|
|
|
302
|
+
/**
|
|
303
|
+
* Returns `true` if this geometry has an attribute for the given name.
|
|
304
|
+
*
|
|
305
|
+
* @param {string} name - The attribute name.
|
|
306
|
+
* @return {boolean} Whether this geometry has an attribute for the given name or not.
|
|
307
|
+
*/
|
|
98
308
|
hasAttribute( name ) {
|
|
99
309
|
|
|
100
310
|
return this.attributes[ name ] !== undefined;
|
|
101
311
|
|
|
102
312
|
}
|
|
103
313
|
|
|
314
|
+
/**
|
|
315
|
+
* Adds a group to this geometry.
|
|
316
|
+
*
|
|
317
|
+
* @param {number} start - The first element in this draw call. That is the first
|
|
318
|
+
* vertex for non-indexed geometry, otherwise the first triangle index.
|
|
319
|
+
* @param {number} count - Specifies how many vertices (or indices) are part of this group.
|
|
320
|
+
* @param {number} [materialIndex=0] - The material array index to use.
|
|
321
|
+
*/
|
|
104
322
|
addGroup( start, count, materialIndex = 0 ) {
|
|
105
323
|
|
|
106
324
|
this.groups.push( {
|
|
@@ -113,12 +331,22 @@ class BufferGeometry extends EventDispatcher {
|
|
|
113
331
|
|
|
114
332
|
}
|
|
115
333
|
|
|
334
|
+
/**
|
|
335
|
+
* Clears all groups.
|
|
336
|
+
*/
|
|
116
337
|
clearGroups() {
|
|
117
338
|
|
|
118
339
|
this.groups = [];
|
|
119
340
|
|
|
120
341
|
}
|
|
121
342
|
|
|
343
|
+
/**
|
|
344
|
+
* Sets the draw range for this geometry.
|
|
345
|
+
*
|
|
346
|
+
* @param {number} start - The first vertex for non-indexed geometry, otherwise the first triangle index.
|
|
347
|
+
* @param {number} count - For non-indexed BufferGeometry, `count` is the number of vertices to render.
|
|
348
|
+
* For indexed BufferGeometry, `count` is the number of indices to render.
|
|
349
|
+
*/
|
|
122
350
|
setDrawRange( start, count ) {
|
|
123
351
|
|
|
124
352
|
this.drawRange.start = start;
|
|
@@ -126,6 +354,12 @@ class BufferGeometry extends EventDispatcher {
|
|
|
126
354
|
|
|
127
355
|
}
|
|
128
356
|
|
|
357
|
+
/**
|
|
358
|
+
* Applies the given 4x4 transformation matrix to the geometry.
|
|
359
|
+
*
|
|
360
|
+
* @param {Matrix4} matrix - The matrix to apply.
|
|
361
|
+
* @return {BufferGeometry} A reference to this instance.
|
|
362
|
+
*/
|
|
129
363
|
applyMatrix4( matrix ) {
|
|
130
364
|
|
|
131
365
|
const position = this.attributes.position;
|
|
@@ -176,6 +410,12 @@ class BufferGeometry extends EventDispatcher {
|
|
|
176
410
|
|
|
177
411
|
}
|
|
178
412
|
|
|
413
|
+
/**
|
|
414
|
+
* Applies the rotation represented by the Quaternion to the geometry.
|
|
415
|
+
*
|
|
416
|
+
* @param {Quaternion} q - The Quaternion to apply.
|
|
417
|
+
* @return {BufferGeometry} A reference to this instance.
|
|
418
|
+
*/
|
|
179
419
|
applyQuaternion( q ) {
|
|
180
420
|
|
|
181
421
|
_m1.makeRotationFromQuaternion( q );
|
|
@@ -186,6 +426,14 @@ class BufferGeometry extends EventDispatcher {
|
|
|
186
426
|
|
|
187
427
|
}
|
|
188
428
|
|
|
429
|
+
/**
|
|
430
|
+
* Rotates the geometry about the X axis. This is typically done as a one time
|
|
431
|
+
* operation, and not during a loop. Use {@link Object3D#rotation} for typical
|
|
432
|
+
* real-time mesh rotation.
|
|
433
|
+
*
|
|
434
|
+
* @param {number} angle - The angle in radians.
|
|
435
|
+
* @return {BufferGeometry} A reference to this instance.
|
|
436
|
+
*/
|
|
189
437
|
rotateX( angle ) {
|
|
190
438
|
|
|
191
439
|
// rotate geometry around world x-axis
|
|
@@ -198,6 +446,14 @@ class BufferGeometry extends EventDispatcher {
|
|
|
198
446
|
|
|
199
447
|
}
|
|
200
448
|
|
|
449
|
+
/**
|
|
450
|
+
* Rotates the geometry about the Y axis. This is typically done as a one time
|
|
451
|
+
* operation, and not during a loop. Use {@link Object3D#rotation} for typical
|
|
452
|
+
* real-time mesh rotation.
|
|
453
|
+
*
|
|
454
|
+
* @param {number} angle - The angle in radians.
|
|
455
|
+
* @return {BufferGeometry} A reference to this instance.
|
|
456
|
+
*/
|
|
201
457
|
rotateY( angle ) {
|
|
202
458
|
|
|
203
459
|
// rotate geometry around world y-axis
|
|
@@ -210,6 +466,14 @@ class BufferGeometry extends EventDispatcher {
|
|
|
210
466
|
|
|
211
467
|
}
|
|
212
468
|
|
|
469
|
+
/**
|
|
470
|
+
* Rotates the geometry about the Z axis. This is typically done as a one time
|
|
471
|
+
* operation, and not during a loop. Use {@link Object3D#rotation} for typical
|
|
472
|
+
* real-time mesh rotation.
|
|
473
|
+
*
|
|
474
|
+
* @param {number} angle - The angle in radians.
|
|
475
|
+
* @return {BufferGeometry} A reference to this instance.
|
|
476
|
+
*/
|
|
213
477
|
rotateZ( angle ) {
|
|
214
478
|
|
|
215
479
|
// rotate geometry around world z-axis
|
|
@@ -222,6 +486,16 @@ class BufferGeometry extends EventDispatcher {
|
|
|
222
486
|
|
|
223
487
|
}
|
|
224
488
|
|
|
489
|
+
/**
|
|
490
|
+
* Translates the geometry. This is typically done as a one time
|
|
491
|
+
* operation, and not during a loop. Use {@link Object3D#position} for typical
|
|
492
|
+
* real-time mesh rotation.
|
|
493
|
+
*
|
|
494
|
+
* @param {number} x - The x offset.
|
|
495
|
+
* @param {number} y - The y offset.
|
|
496
|
+
* @param {number} z - The z offset.
|
|
497
|
+
* @return {BufferGeometry} A reference to this instance.
|
|
498
|
+
*/
|
|
225
499
|
translate( x, y, z ) {
|
|
226
500
|
|
|
227
501
|
// translate geometry
|
|
@@ -234,6 +508,16 @@ class BufferGeometry extends EventDispatcher {
|
|
|
234
508
|
|
|
235
509
|
}
|
|
236
510
|
|
|
511
|
+
/**
|
|
512
|
+
* Scales the geometry. This is typically done as a one time
|
|
513
|
+
* operation, and not during a loop. Use {@link Object3D#scale} for typical
|
|
514
|
+
* real-time mesh rotation.
|
|
515
|
+
*
|
|
516
|
+
* @param {number} x - The x scale.
|
|
517
|
+
* @param {number} y - The y scale.
|
|
518
|
+
* @param {number} z - The z scale.
|
|
519
|
+
* @return {BufferGeometry} A reference to this instance.
|
|
520
|
+
*/
|
|
237
521
|
scale( x, y, z ) {
|
|
238
522
|
|
|
239
523
|
// scale geometry
|
|
@@ -246,6 +530,14 @@ class BufferGeometry extends EventDispatcher {
|
|
|
246
530
|
|
|
247
531
|
}
|
|
248
532
|
|
|
533
|
+
/**
|
|
534
|
+
* Rotates the geometry to face a point in 3D space. This is typically done as a one time
|
|
535
|
+
* operation, and not during a loop. Use {@link Object3D#lookAt} for typical
|
|
536
|
+
* real-time mesh rotation.
|
|
537
|
+
*
|
|
538
|
+
* @param {Vector3} vector - The target point.
|
|
539
|
+
* @return {BufferGeometry} A reference to this instance.
|
|
540
|
+
*/
|
|
249
541
|
lookAt( vector ) {
|
|
250
542
|
|
|
251
543
|
_obj.lookAt( vector );
|
|
@@ -258,6 +550,11 @@ class BufferGeometry extends EventDispatcher {
|
|
|
258
550
|
|
|
259
551
|
}
|
|
260
552
|
|
|
553
|
+
/**
|
|
554
|
+
* Center the geometry based on its bounding box.
|
|
555
|
+
*
|
|
556
|
+
* @return {BufferGeometry} A reference to this instance.
|
|
557
|
+
*/
|
|
261
558
|
center() {
|
|
262
559
|
|
|
263
560
|
this.computeBoundingBox();
|
|
@@ -270,23 +567,64 @@ class BufferGeometry extends EventDispatcher {
|
|
|
270
567
|
|
|
271
568
|
}
|
|
272
569
|
|
|
570
|
+
/**
|
|
571
|
+
* Defines a geometry by creating a `position` attribute based on the given array of points. The array
|
|
572
|
+
* can hold 2D or 3D vectors. When using two-dimensional data, the `z` coordinate for all vertices is
|
|
573
|
+
* set to `0`.
|
|
574
|
+
*
|
|
575
|
+
* If the method is used with an existing `position` attribute, the vertex data are overwritten with the
|
|
576
|
+
* data from the array. The length of the array must match the vertex count.
|
|
577
|
+
*
|
|
578
|
+
* @param {Array<Vector2>|Array<Vector3>} points - The points.
|
|
579
|
+
* @return {BufferGeometry} A reference to this instance.
|
|
580
|
+
*/
|
|
273
581
|
setFromPoints( points ) {
|
|
274
582
|
|
|
275
|
-
const
|
|
583
|
+
const positionAttribute = this.getAttribute( 'position' );
|
|
584
|
+
|
|
585
|
+
if ( positionAttribute === undefined ) {
|
|
276
586
|
|
|
277
|
-
|
|
587
|
+
const position = [];
|
|
278
588
|
|
|
279
|
-
|
|
280
|
-
position.push( point.x, point.y, point.z || 0 );
|
|
589
|
+
for ( let i = 0, l = points.length; i < l; i ++ ) {
|
|
281
590
|
|
|
282
|
-
|
|
591
|
+
const point = points[ i ];
|
|
592
|
+
position.push( point.x, point.y, point.z || 0 );
|
|
283
593
|
|
|
284
|
-
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
this.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );
|
|
597
|
+
|
|
598
|
+
} else {
|
|
599
|
+
|
|
600
|
+
const l = Math.min( points.length, positionAttribute.count ); // make sure data do not exceed buffer size
|
|
601
|
+
|
|
602
|
+
for ( let i = 0; i < l; i ++ ) {
|
|
603
|
+
|
|
604
|
+
const point = points[ i ];
|
|
605
|
+
positionAttribute.setXYZ( i, point.x, point.y, point.z || 0 );
|
|
606
|
+
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
if ( points.length > positionAttribute.count ) {
|
|
610
|
+
|
|
611
|
+
warn( 'BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry.' );
|
|
612
|
+
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
positionAttribute.needsUpdate = true;
|
|
616
|
+
|
|
617
|
+
}
|
|
285
618
|
|
|
286
619
|
return this;
|
|
287
620
|
|
|
288
621
|
}
|
|
289
622
|
|
|
623
|
+
/**
|
|
624
|
+
* Computes the bounding box of the geometry, and updates the `boundingBox` member.
|
|
625
|
+
* The bounding box is not computed by the engine; it must be computed by your app.
|
|
626
|
+
* You may need to recompute the bounding box if the geometry vertices are modified.
|
|
627
|
+
*/
|
|
290
628
|
computeBoundingBox() {
|
|
291
629
|
|
|
292
630
|
if ( this.boundingBox === null ) {
|
|
@@ -300,7 +638,7 @@ class BufferGeometry extends EventDispatcher {
|
|
|
300
638
|
|
|
301
639
|
if ( position && position.isGLBufferAttribute ) {
|
|
302
640
|
|
|
303
|
-
|
|
641
|
+
error( 'BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.', this );
|
|
304
642
|
|
|
305
643
|
this.boundingBox.set(
|
|
306
644
|
new Vector3( - Infinity, - Infinity, - Infinity ),
|
|
@@ -351,12 +689,17 @@ class BufferGeometry extends EventDispatcher {
|
|
|
351
689
|
|
|
352
690
|
if ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {
|
|
353
691
|
|
|
354
|
-
|
|
692
|
+
error( 'BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this );
|
|
355
693
|
|
|
356
694
|
}
|
|
357
695
|
|
|
358
696
|
}
|
|
359
697
|
|
|
698
|
+
/**
|
|
699
|
+
* Computes the bounding sphere of the geometry, and updates the `boundingSphere` member.
|
|
700
|
+
* The engine automatically computes the bounding sphere when it is needed, e.g., for ray casting or view frustum culling.
|
|
701
|
+
* You may need to recompute the bounding sphere if the geometry vertices are modified.
|
|
702
|
+
*/
|
|
360
703
|
computeBoundingSphere() {
|
|
361
704
|
|
|
362
705
|
if ( this.boundingSphere === null ) {
|
|
@@ -370,7 +713,7 @@ class BufferGeometry extends EventDispatcher {
|
|
|
370
713
|
|
|
371
714
|
if ( position && position.isGLBufferAttribute ) {
|
|
372
715
|
|
|
373
|
-
|
|
716
|
+
error( 'BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.', this );
|
|
374
717
|
|
|
375
718
|
this.boundingSphere.set( new Vector3(), Infinity );
|
|
376
719
|
|
|
@@ -461,7 +804,7 @@ class BufferGeometry extends EventDispatcher {
|
|
|
461
804
|
|
|
462
805
|
if ( isNaN( this.boundingSphere.radius ) ) {
|
|
463
806
|
|
|
464
|
-
|
|
807
|
+
error( 'BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this );
|
|
465
808
|
|
|
466
809
|
}
|
|
467
810
|
|
|
@@ -469,6 +812,13 @@ class BufferGeometry extends EventDispatcher {
|
|
|
469
812
|
|
|
470
813
|
}
|
|
471
814
|
|
|
815
|
+
/**
|
|
816
|
+
* Calculates and adds a tangent attribute to this geometry.
|
|
817
|
+
*
|
|
818
|
+
* The computation is only supported for indexed geometries and if position, normal, and uv attributes
|
|
819
|
+
* are defined. When using a tangent space normal map, prefer the MikkTSpace algorithm provided by
|
|
820
|
+
* {@link BufferGeometryUtils#computeMikkTSpaceTangents} instead.
|
|
821
|
+
*/
|
|
472
822
|
computeTangents() {
|
|
473
823
|
|
|
474
824
|
const index = this.index;
|
|
@@ -482,7 +832,7 @@ class BufferGeometry extends EventDispatcher {
|
|
|
482
832
|
attributes.normal === undefined ||
|
|
483
833
|
attributes.uv === undefined ) {
|
|
484
834
|
|
|
485
|
-
|
|
835
|
+
error( 'BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );
|
|
486
836
|
return;
|
|
487
837
|
|
|
488
838
|
}
|
|
@@ -628,6 +978,12 @@ class BufferGeometry extends EventDispatcher {
|
|
|
628
978
|
|
|
629
979
|
}
|
|
630
980
|
|
|
981
|
+
/**
|
|
982
|
+
* Computes vertex normals for the given vertex data. For indexed geometries, the method sets
|
|
983
|
+
* each vertex normal to be the average of the face normals of the faces that share that vertex.
|
|
984
|
+
* For non-indexed geometries, vertices are not shared, and the method sets each vertex normal
|
|
985
|
+
* to be the same as the face normal.
|
|
986
|
+
*/
|
|
631
987
|
computeVertexNormals() {
|
|
632
988
|
|
|
633
989
|
const index = this.index;
|
|
@@ -720,6 +1076,10 @@ class BufferGeometry extends EventDispatcher {
|
|
|
720
1076
|
|
|
721
1077
|
}
|
|
722
1078
|
|
|
1079
|
+
/**
|
|
1080
|
+
* Ensures every normal vector in a geometry will have a magnitude of `1`. This will
|
|
1081
|
+
* correct lighting on the geometry surfaces.
|
|
1082
|
+
*/
|
|
723
1083
|
normalizeNormals() {
|
|
724
1084
|
|
|
725
1085
|
const normals = this.attributes.normal;
|
|
@@ -736,6 +1096,12 @@ class BufferGeometry extends EventDispatcher {
|
|
|
736
1096
|
|
|
737
1097
|
}
|
|
738
1098
|
|
|
1099
|
+
/**
|
|
1100
|
+
* Return a new non-index version of this indexed geometry. If the geometry
|
|
1101
|
+
* is already non-indexed, the method is a NOOP.
|
|
1102
|
+
*
|
|
1103
|
+
* @return {BufferGeometry} The non-indexed version of this indexed geometry.
|
|
1104
|
+
*/
|
|
739
1105
|
toNonIndexed() {
|
|
740
1106
|
|
|
741
1107
|
function convertBufferAttribute( attribute, indices ) {
|
|
@@ -776,7 +1142,7 @@ class BufferGeometry extends EventDispatcher {
|
|
|
776
1142
|
|
|
777
1143
|
if ( this.index === null ) {
|
|
778
1144
|
|
|
779
|
-
|
|
1145
|
+
warn( 'BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );
|
|
780
1146
|
return this;
|
|
781
1147
|
|
|
782
1148
|
}
|
|
@@ -838,11 +1204,16 @@ class BufferGeometry extends EventDispatcher {
|
|
|
838
1204
|
|
|
839
1205
|
}
|
|
840
1206
|
|
|
1207
|
+
/**
|
|
1208
|
+
* Serializes the geometry into JSON.
|
|
1209
|
+
*
|
|
1210
|
+
* @return {Object} A JSON object representing the serialized geometry.
|
|
1211
|
+
*/
|
|
841
1212
|
toJSON() {
|
|
842
1213
|
|
|
843
1214
|
const data = {
|
|
844
1215
|
metadata: {
|
|
845
|
-
version: 4.
|
|
1216
|
+
version: 4.7,
|
|
846
1217
|
type: 'BufferGeometry',
|
|
847
1218
|
generator: 'BufferGeometry.toJSON'
|
|
848
1219
|
}
|
|
@@ -940,10 +1311,7 @@ class BufferGeometry extends EventDispatcher {
|
|
|
940
1311
|
|
|
941
1312
|
if ( boundingSphere !== null ) {
|
|
942
1313
|
|
|
943
|
-
data.data.boundingSphere =
|
|
944
|
-
center: boundingSphere.center.toArray(),
|
|
945
|
-
radius: boundingSphere.radius
|
|
946
|
-
};
|
|
1314
|
+
data.data.boundingSphere = boundingSphere.toJSON();
|
|
947
1315
|
|
|
948
1316
|
}
|
|
949
1317
|
|
|
@@ -951,12 +1319,23 @@ class BufferGeometry extends EventDispatcher {
|
|
|
951
1319
|
|
|
952
1320
|
}
|
|
953
1321
|
|
|
1322
|
+
/**
|
|
1323
|
+
* Returns a new geometry with copied values from this instance.
|
|
1324
|
+
*
|
|
1325
|
+
* @return {BufferGeometry} A clone of this instance.
|
|
1326
|
+
*/
|
|
954
1327
|
clone() {
|
|
955
1328
|
|
|
956
1329
|
return new this.constructor().copy( this );
|
|
957
1330
|
|
|
958
1331
|
}
|
|
959
1332
|
|
|
1333
|
+
/**
|
|
1334
|
+
* Copies the values of the given geometry to this instance.
|
|
1335
|
+
*
|
|
1336
|
+
* @param {BufferGeometry} source - The geometry to copy.
|
|
1337
|
+
* @return {BufferGeometry} A reference to this instance.
|
|
1338
|
+
*/
|
|
960
1339
|
copy( source ) {
|
|
961
1340
|
|
|
962
1341
|
// reset
|
|
@@ -982,7 +1361,7 @@ class BufferGeometry extends EventDispatcher {
|
|
|
982
1361
|
|
|
983
1362
|
if ( index !== null ) {
|
|
984
1363
|
|
|
985
|
-
this.setIndex( index.clone(
|
|
1364
|
+
this.setIndex( index.clone() );
|
|
986
1365
|
|
|
987
1366
|
}
|
|
988
1367
|
|
|
@@ -1062,6 +1441,12 @@ class BufferGeometry extends EventDispatcher {
|
|
|
1062
1441
|
|
|
1063
1442
|
}
|
|
1064
1443
|
|
|
1444
|
+
/**
|
|
1445
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
1446
|
+
* method whenever this instance is no longer used in your app.
|
|
1447
|
+
*
|
|
1448
|
+
* @fires BufferGeometry#dispose
|
|
1449
|
+
*/
|
|
1065
1450
|
dispose() {
|
|
1066
1451
|
|
|
1067
1452
|
this.dispatchEvent( { type: 'dispose' } );
|