@playdrop/playdrop-cli 0.3.5-build.1 → 0.3.8-build.2
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/config/client-meta.json +5 -5
- package/dist/apps/upload.js +1 -0
- package/dist/catalogue.d.ts +7 -0
- package/dist/catalogue.js +70 -33
- package/dist/commands/create.js +129 -70
- package/dist/commands/createRemixContent.d.ts +3 -0
- package/dist/commands/createRemixContent.js +310 -0
- package/dist/commands/generation.d.ts +0 -1
- package/dist/commands/generation.js +0 -18
- package/dist/commands/init.js +3 -3
- package/dist/commands/upload.js +11 -0
- package/dist/index.js +17 -4
- package/node_modules/@playdrop/ai-client/dist/index.d.ts +1 -1
- package/node_modules/@playdrop/ai-client/dist/index.d.ts.map +1 -1
- package/node_modules/@playdrop/ai-client/dist/index.js +1 -1
- package/node_modules/@playdrop/api-client/dist/client.d.ts +8 -2
- package/node_modules/@playdrop/api-client/dist/client.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/client.js +2 -0
- package/node_modules/@playdrop/api-client/dist/domains/apps.d.ts +3 -2
- package/node_modules/@playdrop/api-client/dist/domains/apps.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/domains/apps.js +24 -2
- package/node_modules/@playdrop/api-client/dist/domains/asset-packs.d.ts +3 -1
- package/node_modules/@playdrop/api-client/dist/domains/asset-packs.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/domains/asset-packs.js +19 -1
- package/node_modules/@playdrop/api-client/dist/domains/assets.d.ts +3 -1
- package/node_modules/@playdrop/api-client/dist/domains/assets.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/domains/assets.js +19 -1
- package/node_modules/@playdrop/api-client/dist/index.d.ts +3 -0
- package/node_modules/@playdrop/api-client/dist/index.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/index.js +9 -0
- package/node_modules/@playdrop/config/client-meta.json +5 -5
- package/node_modules/@playdrop/types/dist/api.d.ts +22 -1
- package/node_modules/@playdrop/types/dist/api.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/asset-pack.d.ts +1 -0
- package/node_modules/@playdrop/types/dist/asset-pack.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/asset.d.ts +27 -0
- package/node_modules/@playdrop/types/dist/asset.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/graph.d.ts +21 -0
- package/node_modules/@playdrop/types/dist/graph.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/graph.js +66 -0
- package/node_modules/@playdrop/types/dist/version.d.ts +1 -0
- package/node_modules/@playdrop/types/dist/version.d.ts.map +1 -1
- package/node_modules/@playdrop/vox-three/dist/src/index.d.ts +1 -0
- package/node_modules/@playdrop/vox-three/dist/src/index.js +18 -0
- package/node_modules/@playdrop/vox-three/dist/src/index.js.map +1 -0
- package/node_modules/@playdrop/vox-three/dist/src/vox.d.ts +25 -0
- package/node_modules/@playdrop/vox-three/dist/src/vox.js +425 -0
- package/node_modules/@playdrop/vox-three/dist/src/vox.js.map +1 -0
- package/node_modules/@playdrop/vox-three/dist/test/vox.test.d.ts +1 -0
- package/node_modules/@playdrop/vox-three/dist/test/vox.test.js +79 -0
- package/node_modules/@playdrop/vox-three/dist/test/vox.test.js.map +1 -0
- package/node_modules/@playdrop/vox-three/package.json +25 -0
- package/node_modules/three/LICENSE +1 -1
- package/node_modules/three/README.md +7 -7
- package/node_modules/three/build/three.cjs +49655 -25499
- package/node_modules/three/build/three.core.js +58952 -0
- package/node_modules/three/build/three.core.min.js +6 -0
- package/node_modules/three/build/three.module.js +11162 -45962
- package/node_modules/three/build/three.module.min.js +2 -2
- package/node_modules/three/build/three.tsl.js +640 -0
- package/node_modules/three/build/three.tsl.min.js +6 -0
- package/node_modules/three/build/three.webgpu.js +79685 -0
- package/node_modules/three/build/three.webgpu.min.js +6 -0
- package/node_modules/three/build/three.webgpu.nodes.js +79456 -0
- package/node_modules/three/build/three.webgpu.nodes.min.js +6 -0
- package/node_modules/three/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/node_modules/three/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
- package/node_modules/three/examples/jsm/Addons.js +8 -18
- package/node_modules/three/examples/jsm/animation/AnimationClipCreator.js +59 -7
- package/node_modules/three/examples/jsm/animation/CCDIKSolver.js +154 -45
- package/node_modules/three/examples/jsm/capabilities/WebGL.js +28 -23
- package/node_modules/three/examples/jsm/capabilities/WebGPU.js +19 -17
- package/node_modules/three/examples/jsm/controls/ArcballControls.js +636 -324
- package/node_modules/three/examples/jsm/controls/DragControls.js +332 -101
- package/node_modules/three/examples/jsm/controls/FirstPersonControls.js +291 -169
- package/node_modules/three/examples/jsm/controls/FlyControls.js +245 -191
- package/node_modules/three/examples/jsm/controls/MapControls.js +43 -9
- package/node_modules/three/examples/jsm/controls/OrbitControls.js +1156 -802
- package/node_modules/three/examples/jsm/controls/PointerLockControls.js +137 -35
- package/node_modules/three/examples/jsm/controls/TrackballControls.js +629 -456
- package/node_modules/three/examples/jsm/controls/TransformControls.js +442 -97
- package/node_modules/three/examples/jsm/csm/CSM.js +230 -17
- package/node_modules/three/examples/jsm/csm/CSMFrustum.js +61 -4
- package/node_modules/three/examples/jsm/csm/CSMHelper.js +50 -0
- package/node_modules/three/examples/jsm/csm/CSMShader.js +17 -5
- package/node_modules/three/examples/jsm/csm/CSMShadowNode.js +599 -0
- package/node_modules/three/examples/jsm/curves/CurveExtras.js +303 -31
- package/node_modules/three/examples/jsm/curves/NURBSCurve.js +91 -16
- package/node_modules/three/examples/jsm/curves/NURBSSurface.js +52 -6
- package/node_modules/three/examples/jsm/curves/NURBSUtils.js +102 -112
- package/node_modules/three/examples/jsm/curves/NURBSVolume.js +24 -4
- package/node_modules/three/examples/jsm/effects/AnaglyphEffect.js +39 -14
- package/node_modules/three/examples/jsm/effects/AsciiEffect.js +69 -22
- package/node_modules/three/examples/jsm/effects/OutlineEffect.js +61 -111
- package/node_modules/three/examples/jsm/effects/ParallaxBarrierEffect.js +48 -12
- package/node_modules/three/examples/jsm/effects/StereoEffect.js +37 -1
- package/node_modules/three/examples/jsm/environments/DebugEnvironment.js +50 -0
- package/node_modules/three/examples/jsm/environments/RoomEnvironment.js +82 -48
- package/node_modules/three/examples/jsm/exporters/DRACOExporter.js +59 -15
- package/node_modules/three/examples/jsm/exporters/EXRExporter.js +58 -19
- package/node_modules/three/examples/jsm/exporters/GLTFExporter.js +460 -174
- package/node_modules/three/examples/jsm/exporters/KTX2Exporter.js +80 -25
- package/node_modules/three/examples/jsm/exporters/OBJExporter.js +25 -1
- package/node_modules/three/examples/jsm/exporters/PLYExporter.js +51 -17
- package/node_modules/three/examples/jsm/exporters/STLExporter.js +27 -5
- package/node_modules/three/examples/jsm/exporters/USDZExporter.js +783 -268
- package/node_modules/three/examples/jsm/geometries/BoxLineGeometry.js +23 -0
- package/node_modules/three/examples/jsm/geometries/ConvexGeometry.js +19 -0
- package/node_modules/three/examples/jsm/geometries/DecalGeometry.js +94 -30
- package/node_modules/three/examples/jsm/geometries/ParametricFunctions.js +100 -0
- package/node_modules/three/examples/jsm/geometries/ParametricGeometry.js +38 -5
- package/node_modules/three/examples/jsm/geometries/RoundedBoxGeometry.js +68 -7
- package/node_modules/three/examples/jsm/geometries/TeapotGeometry.js +23 -38
- package/node_modules/three/examples/jsm/geometries/TextGeometry.js +48 -21
- package/node_modules/three/examples/jsm/gpgpu/BitonicSort.js +715 -0
- package/node_modules/three/examples/jsm/helpers/LightProbeHelper.js +79 -44
- package/node_modules/three/examples/jsm/helpers/LightProbeHelperGPU.js +102 -0
- package/node_modules/three/examples/jsm/helpers/OctreeHelper.js +36 -0
- package/node_modules/three/examples/jsm/helpers/PositionalAudioHelper.js +60 -0
- package/node_modules/three/examples/jsm/helpers/RapierHelper.js +59 -0
- package/node_modules/three/examples/jsm/helpers/RectAreaLightHelper.js +36 -3
- package/node_modules/three/examples/jsm/helpers/TextureHelper.js +28 -0
- package/node_modules/three/examples/jsm/helpers/TextureHelperGPU.js +214 -0
- package/node_modules/three/examples/jsm/helpers/VertexNormalsHelper.js +61 -2
- package/node_modules/three/examples/jsm/helpers/VertexTangentsHelper.js +47 -2
- package/node_modules/three/examples/jsm/helpers/ViewHelper.js +192 -65
- package/node_modules/three/examples/jsm/inspector/Inspector.js +427 -0
- package/node_modules/three/examples/jsm/inspector/RendererInspector.js +415 -0
- package/node_modules/three/examples/jsm/inspector/tabs/Console.js +204 -0
- package/node_modules/three/examples/jsm/inspector/tabs/Parameters.js +332 -0
- package/node_modules/three/examples/jsm/inspector/tabs/Performance.js +268 -0
- package/node_modules/three/examples/jsm/inspector/tabs/Viewer.js +166 -0
- package/node_modules/three/examples/jsm/inspector/ui/Graph.js +95 -0
- package/node_modules/three/examples/jsm/inspector/ui/Item.js +170 -0
- package/node_modules/three/examples/jsm/inspector/ui/List.js +75 -0
- package/node_modules/three/examples/jsm/inspector/ui/Profiler.js +170 -0
- package/node_modules/three/examples/jsm/inspector/ui/Style.js +654 -0
- package/node_modules/three/examples/jsm/inspector/ui/Tab.js +46 -0
- package/node_modules/three/examples/jsm/inspector/ui/Values.js +423 -0
- package/node_modules/three/examples/jsm/inspector/ui/utils.js +56 -0
- package/node_modules/three/examples/jsm/interactive/HTMLMesh.js +50 -21
- package/node_modules/three/examples/jsm/interactive/InteractiveGroup.js +170 -62
- package/node_modules/three/examples/jsm/interactive/SelectionBox.js +106 -9
- package/node_modules/three/examples/jsm/interactive/SelectionHelper.js +76 -30
- package/node_modules/three/examples/jsm/libs/basis/basis_transcoder.js +8 -10
- package/node_modules/three/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
- package/node_modules/three/examples/jsm/libs/demuxer_mp4.js +109 -0
- package/node_modules/three/examples/jsm/libs/draco/README.md +2 -2
- package/node_modules/three/examples/jsm/libs/fflate.module.js +694 -496
- package/node_modules/three/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/node_modules/three/examples/jsm/libs/meshopt_decoder.module.js +75 -58
- package/node_modules/three/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/node_modules/three/examples/jsm/libs/rhino3dm/rhino3dm.js +1 -8723
- package/node_modules/three/examples/jsm/libs/rhino3dm/rhino3dm.module.js +1 -8734
- package/node_modules/three/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
- package/node_modules/three/examples/jsm/libs/tween.module.js +32 -14
- package/node_modules/three/examples/jsm/lighting/TiledLighting.js +42 -0
- package/node_modules/three/examples/jsm/lights/LightProbeGenerator.js +65 -14
- package/node_modules/three/examples/jsm/lights/RectAreaLightTexturesLib.js +127 -0
- package/node_modules/three/examples/jsm/lights/RectAreaLightUniformsLib.js +20 -59
- package/node_modules/three/examples/jsm/lines/Line2.js +41 -4
- package/node_modules/three/examples/jsm/lines/LineGeometry.js +80 -2
- package/node_modules/three/examples/jsm/lines/LineMaterial.js +100 -22
- package/node_modules/three/examples/jsm/lines/LineSegments2.js +69 -4
- package/node_modules/three/examples/jsm/lines/LineSegmentsGeometry.js +65 -8
- package/node_modules/three/examples/jsm/lines/Wireframe.js +58 -6
- package/node_modules/three/examples/jsm/lines/WireframeGeometry2.js +27 -2
- package/node_modules/three/examples/jsm/lines/webgpu/Line2.js +46 -0
- package/node_modules/three/examples/jsm/lines/webgpu/LineSegments2.js +411 -0
- package/node_modules/three/examples/jsm/lines/webgpu/Wireframe.js +86 -0
- package/node_modules/three/examples/jsm/loaders/3DMLoader.js +86 -23
- package/node_modules/three/examples/jsm/loaders/3MFLoader.js +148 -5
- package/node_modules/three/examples/jsm/loaders/AMFLoader.js +32 -12
- package/node_modules/three/examples/jsm/loaders/BVHLoader.js +59 -12
- package/node_modules/three/examples/jsm/loaders/ColladaLoader.js +51 -12
- package/node_modules/three/examples/jsm/loaders/DDSLoader.js +68 -1
- package/node_modules/three/examples/jsm/loaders/DRACOLoader.js +149 -23
- package/node_modules/three/examples/jsm/loaders/EXRLoader.js +584 -109
- package/node_modules/three/examples/jsm/loaders/FBXLoader.js +165 -97
- package/node_modules/three/examples/jsm/loaders/FontLoader.js +83 -6
- package/node_modules/three/examples/jsm/loaders/GCodeLoader.js +37 -6
- package/node_modules/three/examples/jsm/loaders/GLTFLoader.js +337 -108
- package/node_modules/three/examples/jsm/loaders/HDRCubeTextureLoader.js +52 -3
- package/node_modules/three/examples/jsm/loaders/HDRLoader.js +486 -0
- package/node_modules/three/examples/jsm/loaders/IESLoader.js +42 -0
- package/node_modules/three/examples/jsm/loaders/KMZLoader.js +33 -0
- package/node_modules/three/examples/jsm/loaders/KTX2Loader.js +441 -138
- package/node_modules/three/examples/jsm/loaders/KTXLoader.js +31 -10
- package/node_modules/three/examples/jsm/loaders/LDrawLoader.js +194 -145
- package/node_modules/three/examples/jsm/loaders/LUT3dlLoader.js +47 -25
- package/node_modules/three/examples/jsm/loaders/LUTCubeLoader.js +46 -23
- package/node_modules/three/examples/jsm/loaders/LUTImageLoader.js +79 -52
- package/node_modules/three/examples/jsm/loaders/LWOLoader.js +47 -20
- package/node_modules/three/examples/jsm/loaders/LottieLoader.js +54 -1
- package/node_modules/three/examples/jsm/loaders/MD2Loader.js +37 -1
- package/node_modules/three/examples/jsm/loaders/MDDLoader.js +57 -12
- package/node_modules/three/examples/jsm/loaders/MTLLoader.js +61 -35
- package/node_modules/three/examples/jsm/loaders/MaterialXLoader.js +291 -39
- package/node_modules/three/examples/jsm/loaders/NRRDLoader.js +38 -6
- package/node_modules/three/examples/jsm/loaders/OBJLoader.js +54 -4
- package/node_modules/three/examples/jsm/loaders/PCDLoader.js +183 -32
- package/node_modules/three/examples/jsm/loaders/PDBLoader.js +44 -4
- package/node_modules/three/examples/jsm/loaders/PLYLoader.js +78 -44
- package/node_modules/three/examples/jsm/loaders/PVRLoader.js +25 -6
- package/node_modules/three/examples/jsm/loaders/RGBELoader.js +6 -438
- package/node_modules/three/examples/jsm/loaders/STLLoader.js +51 -40
- package/node_modules/three/examples/jsm/loaders/SVGLoader.js +118 -24
- package/node_modules/three/examples/jsm/loaders/TDSLoader.js +92 -72
- package/node_modules/three/examples/jsm/loaders/TGALoader.js +23 -0
- package/node_modules/three/examples/jsm/loaders/TIFFLoader.js +23 -0
- package/node_modules/three/examples/jsm/loaders/TTFLoader.js +50 -3
- package/node_modules/three/examples/jsm/loaders/USDLoader.js +219 -0
- package/node_modules/three/examples/jsm/loaders/USDZLoader.js +4 -810
- package/node_modules/three/examples/jsm/loaders/UltraHDRLoader.js +630 -0
- package/node_modules/three/examples/jsm/loaders/VOXLoader.js +67 -2
- package/node_modules/three/examples/jsm/loaders/VRMLLoader.js +57 -21
- package/node_modules/three/examples/jsm/loaders/VTKLoader.js +119 -6
- package/node_modules/three/examples/jsm/loaders/XYZLoader.js +39 -2
- package/node_modules/three/examples/jsm/loaders/lwo/IFFParser.js +81 -78
- package/node_modules/three/examples/jsm/loaders/usd/USDAParser.js +741 -0
- package/node_modules/three/examples/jsm/loaders/usd/USDCParser.js +17 -0
- package/node_modules/three/examples/jsm/materials/LDrawConditionalLineMaterial.js +183 -0
- package/node_modules/three/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +154 -0
- package/node_modules/three/examples/jsm/materials/MeshGouraudMaterial.js +9 -1
- package/node_modules/three/examples/jsm/materials/MeshPostProcessingMaterial.js +25 -2
- package/node_modules/three/examples/jsm/materials/WoodNodeMaterial.js +533 -0
- package/node_modules/three/examples/jsm/math/Capsule.js +91 -14
- package/node_modules/three/examples/jsm/math/ColorConverter.js +22 -0
- package/node_modules/three/examples/jsm/math/ColorSpaces.js +147 -0
- package/node_modules/three/examples/jsm/math/ConvexHull.js +517 -93
- package/node_modules/three/examples/jsm/math/ImprovedNoise.js +32 -15
- package/node_modules/three/examples/jsm/math/Lut.js +113 -0
- package/node_modules/three/examples/jsm/math/MeshSurfaceSampler.js +78 -13
- package/node_modules/three/examples/jsm/math/OBB.js +141 -29
- package/node_modules/three/examples/jsm/math/Octree.js +177 -25
- package/node_modules/three/examples/jsm/math/SimplexNoise.js +68 -42
- package/node_modules/three/examples/jsm/misc/ConvexObjectBreaker.js +45 -25
- package/node_modules/three/examples/jsm/misc/GPUComputationRenderer.js +105 -45
- package/node_modules/three/examples/jsm/misc/Gyroscope.js +12 -0
- package/node_modules/three/examples/jsm/misc/MD2Character.js +117 -2
- package/node_modules/three/examples/jsm/misc/MD2CharacterComplex.js +175 -11
- package/node_modules/three/examples/jsm/misc/MorphAnimMesh.js +44 -0
- package/node_modules/three/examples/jsm/misc/MorphBlendMesh.js +103 -0
- package/node_modules/three/examples/jsm/misc/ProgressiveLightMap.js +101 -54
- package/node_modules/three/examples/jsm/misc/ProgressiveLightMapGPU.js +322 -0
- package/node_modules/three/examples/jsm/misc/RollerCoaster.js +57 -0
- package/node_modules/three/examples/jsm/misc/TubePainter.js +437 -40
- package/node_modules/three/examples/jsm/misc/Volume.js +123 -75
- package/node_modules/three/examples/jsm/misc/VolumeSlice.js +95 -48
- package/node_modules/three/examples/jsm/modifiers/CurveModifier.js +77 -47
- package/node_modules/three/examples/jsm/modifiers/CurveModifierGPU.js +256 -0
- package/node_modules/three/examples/jsm/modifiers/EdgeSplitModifier.js +20 -0
- package/node_modules/three/examples/jsm/modifiers/SimplifyModifier.js +26 -11
- package/node_modules/three/examples/jsm/modifiers/TessellateModifier.js +35 -2
- package/node_modules/three/examples/jsm/objects/GroundedSkybox.js +25 -6
- package/node_modules/three/examples/jsm/objects/Lensflare.js +96 -4
- package/node_modules/three/examples/jsm/objects/LensflareMesh.js +376 -0
- package/node_modules/three/examples/jsm/objects/MarchingCubes.js +90 -5
- package/node_modules/three/examples/jsm/objects/Reflector.js +76 -2
- package/node_modules/three/examples/jsm/objects/ReflectorForSSRPass.js +41 -0
- package/node_modules/three/examples/jsm/objects/Refractor.js +62 -0
- package/node_modules/three/examples/jsm/objects/ShadowMesh.js +54 -4
- package/node_modules/three/examples/jsm/objects/Sky.js +30 -12
- package/node_modules/three/examples/jsm/objects/SkyMesh.js +243 -0
- package/node_modules/three/examples/jsm/objects/Water.js +45 -5
- package/node_modules/three/examples/jsm/objects/Water2.js +44 -4
- package/node_modules/three/examples/jsm/objects/Water2Mesh.js +199 -0
- package/node_modules/three/examples/jsm/objects/WaterMesh.js +196 -0
- package/node_modules/three/examples/jsm/physics/AmmoPhysics.js +48 -0
- package/node_modules/three/examples/jsm/physics/JoltPhysics.js +330 -0
- package/node_modules/three/examples/jsm/physics/RapierPhysics.js +231 -19
- package/node_modules/three/examples/jsm/postprocessing/AfterimagePass.js +110 -29
- package/node_modules/three/examples/jsm/postprocessing/BloomPass.js +128 -26
- package/node_modules/three/examples/jsm/postprocessing/BokehPass.js +99 -22
- package/node_modules/three/examples/jsm/postprocessing/ClearPass.js +54 -3
- package/node_modules/three/examples/jsm/postprocessing/CubeTexturePass.js +82 -21
- package/node_modules/three/examples/jsm/postprocessing/DotScreenPass.js +59 -10
- package/node_modules/three/examples/jsm/postprocessing/EffectComposer.js +135 -3
- package/node_modules/three/examples/jsm/postprocessing/FXAAPass.js +40 -0
- package/node_modules/three/examples/jsm/postprocessing/FilmPass.js +54 -5
- package/node_modules/three/examples/jsm/postprocessing/GTAOPass.js +202 -57
- package/node_modules/three/examples/jsm/postprocessing/GlitchPass.js +86 -37
- package/node_modules/three/examples/jsm/postprocessing/HalftonePass.js +65 -10
- package/node_modules/three/examples/jsm/postprocessing/LUTPass.js +43 -79
- package/node_modules/three/examples/jsm/postprocessing/MaskPass.js +91 -0
- package/node_modules/three/examples/jsm/postprocessing/OutlinePass.js +277 -155
- package/node_modules/three/examples/jsm/postprocessing/OutputPass.js +58 -14
- package/node_modules/three/examples/jsm/postprocessing/Pass.js +100 -4
- package/node_modules/three/examples/jsm/postprocessing/RenderPass.js +85 -1
- package/node_modules/three/examples/jsm/postprocessing/RenderPixelatedPass.js +124 -45
- package/node_modules/three/examples/jsm/postprocessing/RenderTransitionPass.js +267 -0
- package/node_modules/three/examples/jsm/postprocessing/SAOPass.js +128 -56
- package/node_modules/three/examples/jsm/postprocessing/SMAAPass.js +106 -75
- package/node_modules/three/examples/jsm/postprocessing/SSAARenderPass.js +120 -35
- package/node_modules/three/examples/jsm/postprocessing/SSAOPass.js +174 -67
- package/node_modules/three/examples/jsm/postprocessing/SSRPass.js +268 -53
- package/node_modules/three/examples/jsm/postprocessing/SavePass.js +69 -16
- package/node_modules/three/examples/jsm/postprocessing/ShaderPass.js +65 -7
- package/node_modules/three/examples/jsm/postprocessing/TAARenderPass.js +79 -24
- package/node_modules/three/examples/jsm/postprocessing/TexturePass.js +72 -8
- package/node_modules/three/examples/jsm/postprocessing/UnrealBloomPass.js +125 -46
- package/node_modules/three/examples/jsm/renderers/CSS2DRenderer.js +122 -9
- package/node_modules/three/examples/jsm/renderers/CSS3DRenderer.js +133 -8
- package/node_modules/three/examples/jsm/renderers/Projector.js +20 -2
- package/node_modules/three/examples/jsm/renderers/SVGRenderer.js +134 -5
- package/node_modules/three/examples/jsm/shaders/ACESFilmicToneMappingShader.js +12 -5
- package/node_modules/three/examples/jsm/shaders/AfterimageShader.js +8 -3
- package/node_modules/three/examples/jsm/shaders/BasicShader.js +8 -1
- package/node_modules/three/examples/jsm/shaders/BleachBypassShader.js +11 -5
- package/node_modules/three/examples/jsm/shaders/BlendShader.js +8 -1
- package/node_modules/three/examples/jsm/shaders/BokehShader.js +9 -3
- package/node_modules/three/examples/jsm/shaders/BokehShader2.js +11 -4
- package/node_modules/three/examples/jsm/shaders/BrightnessContrastShader.js +10 -4
- package/node_modules/three/examples/jsm/shaders/ColorCorrectionShader.js +8 -1
- package/node_modules/three/examples/jsm/shaders/ColorifyShader.js +9 -3
- package/node_modules/three/examples/jsm/shaders/ConvolutionShader.js +9 -38
- package/node_modules/three/examples/jsm/shaders/CopyShader.js +8 -1
- package/node_modules/three/examples/jsm/shaders/DOFMipMapShader.js +10 -3
- package/node_modules/three/examples/jsm/shaders/DepthLimitedBlurShader.js +10 -1
- package/node_modules/three/examples/jsm/shaders/DigitalGlitch.js +10 -7
- package/node_modules/three/examples/jsm/shaders/DotScreenShader.js +8 -3
- package/node_modules/three/examples/jsm/shaders/ExposureShader.js +8 -1
- package/node_modules/three/examples/jsm/shaders/FXAAShader.js +243 -233
- package/node_modules/three/examples/jsm/shaders/FilmShader.js +13 -0
- package/node_modules/three/examples/jsm/shaders/FocusShader.js +8 -3
- package/node_modules/three/examples/jsm/shaders/FreiChenShader.js +10 -3
- package/node_modules/three/examples/jsm/shaders/GTAOShader.js +37 -40
- package/node_modules/three/examples/jsm/shaders/GammaCorrectionShader.js +11 -2
- package/node_modules/three/examples/jsm/shaders/GodRaysShader.js +20 -8
- package/node_modules/three/examples/jsm/shaders/HalftoneShader.js +13 -4
- package/node_modules/three/examples/jsm/shaders/HorizontalBlurShader.js +12 -3
- package/node_modules/three/examples/jsm/shaders/HorizontalTiltShiftShader.js +9 -2
- package/node_modules/three/examples/jsm/shaders/HueSaturationShader.js +10 -3
- package/node_modules/three/examples/jsm/shaders/KaleidoShader.js +11 -4
- package/node_modules/three/examples/jsm/shaders/LuminosityHighPassShader.js +9 -7
- package/node_modules/three/examples/jsm/shaders/LuminosityShader.js +8 -2
- package/node_modules/three/examples/jsm/shaders/MirrorShader.js +10 -4
- package/node_modules/three/examples/jsm/shaders/NormalMapShader.js +7 -2
- package/node_modules/three/examples/jsm/shaders/OutputShader.js +24 -2
- package/node_modules/three/examples/jsm/shaders/PoissonDenoiseShader.js +24 -15
- package/node_modules/three/examples/jsm/shaders/RGBShiftShader.js +8 -1
- package/node_modules/three/examples/jsm/shaders/SAOShader.js +10 -1
- package/node_modules/three/examples/jsm/shaders/SMAAShader.js +24 -1
- package/node_modules/three/examples/jsm/shaders/SSAOShader.js +26 -5
- package/node_modules/three/examples/jsm/shaders/SSRShader.js +26 -1
- package/node_modules/three/examples/jsm/shaders/SepiaShader.js +8 -3
- package/node_modules/three/examples/jsm/shaders/SobelOperatorShader.js +9 -3
- package/node_modules/three/examples/jsm/shaders/SubsurfaceScatteringShader.js +13 -8
- package/node_modules/three/examples/jsm/shaders/TechnicolorShader.js +10 -4
- package/node_modules/three/examples/jsm/shaders/ToonShader.js +29 -6
- package/node_modules/three/examples/jsm/shaders/TriangleBlurShader.js +9 -4
- package/node_modules/three/examples/jsm/shaders/UnpackDepthRGBAShader.js +19 -4
- package/node_modules/three/examples/jsm/shaders/VelocityShader.js +8 -1
- package/node_modules/three/examples/jsm/shaders/VerticalBlurShader.js +9 -2
- package/node_modules/three/examples/jsm/shaders/VerticalTiltShiftShader.js +8 -1
- package/node_modules/three/examples/jsm/shaders/VignetteShader.js +8 -3
- package/node_modules/three/examples/jsm/shaders/VolumeShader.js +11 -2
- package/node_modules/three/examples/jsm/shaders/WaterRefractionShader.js +11 -0
- package/node_modules/three/examples/jsm/textures/FlakesTexture.js +14 -0
- package/node_modules/three/examples/jsm/transpiler/AST.js +392 -31
- package/node_modules/three/examples/jsm/transpiler/GLSLDecoder.js +366 -136
- package/node_modules/three/examples/jsm/transpiler/Linker.js +327 -0
- package/node_modules/three/examples/jsm/transpiler/ShaderToyDecoder.js +3 -3
- package/node_modules/three/examples/jsm/transpiler/TSLEncoder.js +336 -111
- package/node_modules/three/examples/jsm/transpiler/Transpiler.js +50 -1
- package/node_modules/three/examples/jsm/transpiler/TranspilerUtils.js +29 -0
- package/node_modules/three/examples/jsm/transpiler/WGSLEncoder.js +812 -0
- package/node_modules/three/examples/jsm/tsl/display/AfterImageNode.js +244 -0
- package/node_modules/three/examples/jsm/tsl/display/AnaglyphPassNode.js +107 -0
- package/node_modules/three/examples/jsm/tsl/display/AnamorphicNode.js +282 -0
- package/node_modules/three/examples/jsm/tsl/display/BleachBypass.js +33 -0
- package/node_modules/three/examples/jsm/tsl/display/BloomNode.js +524 -0
- package/node_modules/three/examples/jsm/tsl/display/ChromaticAberrationNode.js +207 -0
- package/node_modules/three/examples/jsm/tsl/display/DenoiseNode.js +334 -0
- package/node_modules/three/examples/jsm/tsl/display/DepthOfFieldNode.js +554 -0
- package/node_modules/three/examples/jsm/tsl/display/DotScreenNode.js +104 -0
- package/node_modules/three/examples/jsm/tsl/display/FXAANode.js +365 -0
- package/node_modules/three/examples/jsm/tsl/display/FilmNode.js +101 -0
- package/node_modules/three/examples/jsm/tsl/display/GTAONode.js +570 -0
- package/node_modules/three/examples/jsm/tsl/display/GaussianBlurNode.js +380 -0
- package/node_modules/three/examples/jsm/tsl/display/LensflareNode.js +279 -0
- package/node_modules/three/examples/jsm/tsl/display/Lut3DNode.js +109 -0
- package/node_modules/three/examples/jsm/tsl/display/MotionBlur.js +33 -0
- package/node_modules/three/examples/jsm/tsl/display/OutlineNode.js +762 -0
- package/node_modules/three/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +89 -0
- package/node_modules/three/examples/jsm/tsl/display/PixelationPassNode.js +334 -0
- package/node_modules/three/examples/jsm/tsl/display/RGBShiftNode.js +96 -0
- package/node_modules/three/examples/jsm/tsl/display/SMAANode.js +768 -0
- package/node_modules/three/examples/jsm/tsl/display/SSAAPassNode.js +358 -0
- package/node_modules/three/examples/jsm/tsl/display/SSGINode.js +654 -0
- package/node_modules/three/examples/jsm/tsl/display/SSRNode.js +656 -0
- package/node_modules/three/examples/jsm/tsl/display/SSSNode.js +488 -0
- package/node_modules/three/examples/jsm/tsl/display/Sepia.js +24 -0
- package/node_modules/three/examples/jsm/tsl/display/SobelOperatorNode.js +168 -0
- package/node_modules/three/examples/jsm/tsl/display/StereoCompositePassNode.js +185 -0
- package/node_modules/three/examples/jsm/tsl/display/StereoPassNode.js +120 -0
- package/node_modules/three/examples/jsm/tsl/display/TRAANode.js +578 -0
- package/node_modules/three/examples/jsm/tsl/display/TransitionNode.js +141 -0
- package/node_modules/three/examples/jsm/tsl/display/boxBlur.js +65 -0
- package/node_modules/three/examples/jsm/tsl/display/hashBlur.js +54 -0
- package/node_modules/three/examples/jsm/tsl/lighting/TiledLightsNode.js +442 -0
- package/node_modules/three/examples/jsm/tsl/math/Bayer.js +34 -0
- package/node_modules/three/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
- package/node_modules/three/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
- package/node_modules/three/examples/jsm/tsl/utils/Raymarching.js +70 -0
- package/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +109 -45
- package/node_modules/three/examples/jsm/utils/CameraUtils.js +15 -6
- package/node_modules/three/examples/jsm/utils/GeometryCompressionUtils.js +54 -146
- package/node_modules/three/examples/jsm/utils/GeometryUtils.js +32 -27
- package/node_modules/three/examples/jsm/utils/LDrawUtils.js +13 -4
- package/node_modules/three/examples/jsm/utils/SceneOptimizer.js +458 -0
- package/node_modules/three/examples/jsm/utils/SceneUtils.js +112 -3
- package/node_modules/three/examples/jsm/utils/ShadowMapViewer.js +51 -31
- package/node_modules/three/examples/jsm/utils/ShadowMapViewerGPU.js +233 -0
- package/node_modules/three/examples/jsm/utils/SkeletonUtils.js +145 -68
- package/node_modules/three/examples/jsm/utils/SortUtils.js +23 -8
- package/node_modules/three/examples/jsm/utils/UVsDebug.js +12 -4
- package/node_modules/three/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +19 -2
- package/node_modules/three/examples/jsm/utils/WebGPUTextureUtils.js +81 -0
- package/node_modules/three/examples/jsm/utils/WorkerPool.js +67 -2
- package/node_modules/three/examples/jsm/webxr/ARButton.js +19 -0
- package/node_modules/three/examples/jsm/webxr/OculusHandModel.js +87 -2
- package/node_modules/three/examples/jsm/webxr/OculusHandPointerModel.js +148 -22
- package/node_modules/three/examples/jsm/webxr/Text2D.js +20 -6
- package/node_modules/three/examples/jsm/webxr/VRButton.js +44 -5
- package/node_modules/three/examples/jsm/webxr/XRButton.js +23 -1
- package/node_modules/three/examples/jsm/webxr/XRControllerModelFactory.js +103 -4
- package/node_modules/three/examples/jsm/webxr/XREstimatedLight.js +35 -4
- package/node_modules/three/examples/jsm/webxr/XRHandMeshModel.js +37 -0
- package/node_modules/three/examples/jsm/webxr/XRHandModelFactory.js +101 -9
- package/node_modules/three/examples/jsm/webxr/XRHandPrimitiveModel.js +44 -0
- package/node_modules/three/examples/jsm/webxr/XRPlanes.js +18 -0
- package/node_modules/three/package.json +25 -20
- package/node_modules/three/src/Three.Core.js +185 -0
- package/node_modules/three/src/Three.Legacy.js +0 -1
- package/node_modules/three/src/Three.TSL.js +633 -0
- package/node_modules/three/src/Three.WebGPU.Nodes.js +26 -0
- package/node_modules/three/src/Three.WebGPU.js +28 -0
- package/node_modules/three/src/Three.js +1 -176
- package/node_modules/three/src/animation/AnimationAction.js +262 -30
- package/node_modules/three/src/animation/AnimationClip.js +164 -9
- package/node_modules/three/src/animation/AnimationMixer.js +99 -15
- package/node_modules/three/src/animation/AnimationObjectGroup.js +45 -21
- package/node_modules/three/src/animation/AnimationUtils.js +169 -19
- package/node_modules/three/src/animation/KeyframeTrack.js +151 -16
- package/node_modules/three/src/animation/PropertyBinding.js +91 -16
- package/node_modules/three/src/animation/PropertyMixer.js +72 -5
- package/node_modules/three/src/animation/tracks/BooleanKeyframeTrack.js +42 -6
- package/node_modules/three/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/node_modules/three/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/node_modules/three/src/animation/tracks/QuaternionKeyframeTrack.js +31 -3
- package/node_modules/three/src/animation/tracks/StringKeyframeTrack.js +42 -2
- package/node_modules/three/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/node_modules/three/src/audio/Audio.js +388 -10
- package/node_modules/three/src/audio/AudioAnalyser.js +58 -1
- package/node_modules/three/src/audio/AudioContext.js +15 -0
- package/node_modules/three/src/audio/AudioListener.js +89 -10
- package/node_modules/three/src/audio/PositionalAudio.js +107 -0
- package/node_modules/three/src/cameras/ArrayCamera.js +37 -0
- package/node_modules/three/src/cameras/Camera.js +61 -0
- package/node_modules/three/src/cameras/CubeCamera.js +66 -0
- package/node_modules/three/src/cameras/OrthographicCamera.js +110 -1
- package/node_modules/three/src/cameras/PerspectiveCamera.js +174 -35
- package/node_modules/three/src/cameras/StereoCamera.js +48 -2
- package/node_modules/three/src/constants.js +1477 -18
- package/node_modules/three/src/core/BufferAttribute.js +417 -23
- package/node_modules/three/src/core/BufferGeometry.js +416 -49
- package/node_modules/three/src/core/Clock.js +62 -8
- package/node_modules/three/src/core/EventDispatcher.js +52 -8
- package/node_modules/three/src/core/GLBufferAttribute.js +113 -2
- package/node_modules/three/src/core/InstancedBufferAttribute.js +29 -0
- package/node_modules/three/src/core/InstancedBufferGeometry.js +20 -0
- package/node_modules/three/src/core/InstancedInterleavedBuffer.js +26 -0
- package/node_modules/three/src/core/InterleavedBuffer.js +141 -16
- package/node_modules/three/src/core/InterleavedBufferAttribute.js +200 -2
- package/node_modules/three/src/core/Layers.js +71 -10
- package/node_modules/three/src/core/Object3D.js +665 -54
- package/node_modules/three/src/core/Raycaster.js +160 -8
- package/node_modules/three/src/core/RenderTarget.js +297 -36
- package/node_modules/three/src/core/RenderTarget3D.js +48 -0
- package/node_modules/three/src/core/Timer.js +184 -0
- package/node_modules/three/src/core/Uniform.js +29 -0
- package/node_modules/three/src/core/UniformsGroup.js +84 -2
- package/node_modules/three/src/extras/Controls.js +120 -0
- package/node_modules/three/src/extras/DataUtils.js +50 -9
- package/node_modules/three/src/extras/Earcut.js +18 -779
- package/node_modules/three/src/extras/ImageUtils.js +22 -14
- package/node_modules/three/src/extras/PMREMGenerator.js +329 -64
- package/node_modules/three/src/extras/ShapeUtils.js +24 -2
- package/node_modules/three/src/extras/TextureUtils.js +293 -0
- package/node_modules/three/src/extras/core/Curve.js +156 -55
- package/node_modules/three/src/extras/core/CurvePath.js +63 -22
- package/node_modules/three/src/extras/core/Interpolations.js +34 -2
- package/node_modules/three/src/extras/core/Path.js +134 -1
- package/node_modules/three/src/extras/core/Shape.js +66 -3
- package/node_modules/three/src/extras/core/ShapePath.js +80 -4
- package/node_modules/three/src/extras/curves/ArcCurve.js +22 -0
- package/node_modules/three/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/node_modules/three/src/extras/curves/CubicBezierCurve.js +67 -0
- package/node_modules/three/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/node_modules/three/src/extras/curves/EllipseCurve.js +104 -2
- package/node_modules/three/src/extras/curves/LineCurve.js +36 -0
- package/node_modules/three/src/extras/curves/LineCurve3.js +36 -0
- package/node_modules/three/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/node_modules/three/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/node_modules/three/src/extras/curves/SplineCurve.js +48 -0
- package/node_modules/three/src/extras/lib/earcut.js +685 -0
- package/node_modules/three/src/geometries/BoxGeometry.js +39 -0
- package/node_modules/three/src/geometries/CapsuleGeometry.js +196 -11
- package/node_modules/three/src/geometries/CircleGeometry.js +41 -0
- package/node_modules/three/src/geometries/ConeGeometry.js +39 -0
- package/node_modules/three/src/geometries/CylinderGeometry.js +51 -4
- package/node_modules/three/src/geometries/DodecahedronGeometry.js +33 -0
- package/node_modules/three/src/geometries/EdgesGeometry.js +30 -2
- package/node_modules/three/src/geometries/ExtrudeGeometry.js +146 -50
- package/node_modules/three/src/geometries/IcosahedronGeometry.js +33 -0
- package/node_modules/three/src/geometries/LatheGeometry.js +44 -3
- package/node_modules/three/src/geometries/OctahedronGeometry.js +33 -0
- package/node_modules/three/src/geometries/PlaneGeometry.js +35 -0
- package/node_modules/three/src/geometries/PolyhedronGeometry.js +29 -0
- package/node_modules/three/src/geometries/RingGeometry.js +37 -0
- package/node_modules/three/src/geometries/ShapeGeometry.js +38 -0
- package/node_modules/three/src/geometries/SphereGeometry.js +38 -0
- package/node_modules/three/src/geometries/TetrahedronGeometry.js +33 -0
- package/node_modules/three/src/geometries/TorusGeometry.js +36 -0
- package/node_modules/three/src/geometries/TorusKnotGeometry.js +39 -0
- package/node_modules/three/src/geometries/TubeGeometry.js +50 -0
- package/node_modules/three/src/geometries/WireframeGeometry.js +32 -0
- package/node_modules/three/src/helpers/ArrowHelper.js +62 -5
- package/node_modules/three/src/helpers/AxesHelper.js +28 -0
- package/node_modules/three/src/helpers/Box3Helper.js +28 -0
- package/node_modules/three/src/helpers/BoxHelper.js +43 -7
- package/node_modules/three/src/helpers/CameraHelper.js +100 -27
- package/node_modules/three/src/helpers/DirectionalLightHelper.js +52 -0
- package/node_modules/three/src/helpers/GridHelper.js +26 -0
- package/node_modules/three/src/helpers/HemisphereLightHelper.js +39 -0
- package/node_modules/three/src/helpers/PlaneHelper.js +33 -0
- package/node_modules/three/src/helpers/PointLightHelper.js +43 -0
- package/node_modules/three/src/helpers/PolarGridHelper.js +30 -0
- package/node_modules/three/src/helpers/SkeletonHelper.js +73 -7
- package/node_modules/three/src/helpers/SpotLightHelper.js +58 -1
- package/node_modules/three/src/lights/AmbientLight.js +25 -0
- package/node_modules/three/src/lights/DirectionalLight.js +57 -0
- package/node_modules/three/src/lights/DirectionalLightShadow.js +15 -0
- package/node_modules/three/src/lights/HemisphereLight.js +32 -0
- package/node_modules/three/src/lights/Light.js +37 -0
- package/node_modules/three/src/lights/LightProbe.js +43 -0
- package/node_modules/three/src/lights/LightShadow.js +198 -7
- package/node_modules/three/src/lights/PointLight.js +59 -0
- package/node_modules/three/src/lights/PointLightShadow.js +22 -1
- package/node_modules/three/src/lights/RectAreaLight.js +59 -0
- package/node_modules/three/src/lights/SpotLight.js +102 -0
- package/node_modules/three/src/lights/SpotLightShadow.js +33 -3
- package/node_modules/three/src/lights/webgpu/IESSpotLight.js +46 -0
- package/node_modules/three/src/lights/webgpu/ProjectorLight.js +46 -0
- package/node_modules/three/src/loaders/AnimationLoader.js +34 -2
- package/node_modules/three/src/loaders/AudioLoader.js +34 -2
- package/node_modules/three/src/loaders/BufferGeometryLoader.js +38 -13
- package/node_modules/three/src/loaders/Cache.js +47 -2
- package/node_modules/three/src/loaders/CompressedTextureLoader.js +36 -3
- package/node_modules/three/src/loaders/CubeTextureLoader.js +45 -0
- package/node_modules/three/src/loaders/DataTextureLoader.js +45 -8
- package/node_modules/three/src/loaders/FileLoader.js +90 -6
- package/node_modules/three/src/loaders/ImageBitmapLoader.js +108 -11
- package/node_modules/three/src/loaders/ImageLoader.js +85 -8
- package/node_modules/three/src/loaders/Loader.js +144 -0
- package/node_modules/three/src/loaders/LoaderUtils.js +18 -34
- package/node_modules/three/src/loaders/LoadingManager.js +187 -0
- package/node_modules/three/src/loaders/MaterialLoader.js +70 -4
- package/node_modules/three/src/loaders/ObjectLoader.js +146 -30
- package/node_modules/three/src/loaders/TextureLoader.js +33 -0
- package/node_modules/three/src/loaders/nodes/NodeLoader.js +194 -0
- package/node_modules/three/src/loaders/nodes/NodeMaterialLoader.js +108 -0
- package/node_modules/three/src/loaders/nodes/NodeObjectLoader.js +151 -0
- package/node_modules/three/src/materials/LineBasicMaterial.js +74 -1
- package/node_modules/three/src/materials/LineDashedMaterial.js +52 -1
- package/node_modules/three/src/materials/Material.js +504 -11
- package/node_modules/three/src/materials/MeshBasicMaterial.js +172 -3
- package/node_modules/three/src/materials/MeshDepthMaterial.js +94 -0
- package/node_modules/three/src/materials/MeshDistanceMaterial.js +76 -0
- package/node_modules/three/src/materials/MeshLambertMaterial.js +278 -1
- package/node_modules/three/src/materials/MeshMatcapMaterial.js +164 -0
- package/node_modules/three/src/materials/MeshNormalMaterial.js +114 -0
- package/node_modules/three/src/materials/MeshPhongMaterial.js +293 -1
- package/node_modules/three/src/materials/MeshPhysicalMaterial.js +316 -4
- package/node_modules/three/src/materials/MeshStandardMaterial.js +304 -3
- package/node_modules/three/src/materials/MeshToonMaterial.js +219 -0
- package/node_modules/three/src/materials/PointsMaterial.js +89 -0
- package/node_modules/three/src/materials/RawShaderMaterial.js +25 -0
- package/node_modules/three/src/materials/ShaderMaterial.js +215 -10
- package/node_modules/three/src/materials/ShadowMaterial.js +54 -0
- package/node_modules/three/src/materials/SpriteMaterial.js +82 -0
- package/node_modules/three/{examples/jsm/nodes/materials → src/materials/nodes}/Line2NodeMaterial.js +206 -100
- package/node_modules/three/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
- package/node_modules/three/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
- package/node_modules/three/src/materials/nodes/MeshBasicNodeMaterial.js +134 -0
- package/node_modules/three/src/materials/nodes/MeshLambertNodeMaterial.js +82 -0
- package/node_modules/three/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
- package/node_modules/three/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
- package/node_modules/three/src/materials/nodes/MeshPhongNodeMaterial.js +141 -0
- package/node_modules/three/src/materials/nodes/MeshPhysicalNodeMaterial.js +518 -0
- package/node_modules/three/src/materials/nodes/MeshSSSNodeMaterial.js +175 -0
- package/node_modules/three/src/materials/nodes/MeshStandardNodeMaterial.js +186 -0
- package/node_modules/three/src/materials/nodes/MeshToonNodeMaterial.js +66 -0
- package/node_modules/three/src/materials/nodes/NodeMaterial.js +1310 -0
- package/node_modules/three/{examples/jsm/nodes/materials/Materials.js → src/materials/nodes/NodeMaterials.js} +7 -2
- package/node_modules/three/src/materials/nodes/PointsNodeMaterial.js +211 -0
- package/node_modules/three/src/materials/nodes/ShadowNodeMaterial.js +76 -0
- package/node_modules/three/src/materials/nodes/SpriteNodeMaterial.js +186 -0
- package/node_modules/three/src/materials/nodes/VolumeNodeMaterial.js +81 -0
- package/node_modules/three/src/materials/nodes/manager/NodeMaterialObserver.js +613 -0
- package/node_modules/three/src/math/Box2.js +181 -4
- package/node_modules/three/src/math/Box3.js +277 -6
- package/node_modules/three/src/math/Color.js +355 -11
- package/node_modules/three/src/math/ColorManagement.js +161 -85
- package/node_modules/three/src/math/Cylindrical.js +65 -6
- package/node_modules/three/src/math/Euler.js +139 -5
- package/node_modules/three/src/math/Frustum.js +108 -9
- package/node_modules/three/src/math/FrustumArray.js +258 -0
- package/node_modules/three/src/math/Interpolant.js +87 -8
- package/node_modules/three/src/math/Line3.js +223 -2
- package/node_modules/three/src/math/MathUtils.js +408 -20
- package/node_modules/three/src/math/Matrix2.js +124 -0
- package/node_modules/three/src/math/Matrix3.js +229 -4
- package/node_modules/three/src/math/Matrix4.js +416 -30
- package/node_modules/three/src/math/Plane.js +164 -2
- package/node_modules/three/src/math/Quaternion.js +345 -86
- package/node_modules/three/src/math/Ray.js +162 -0
- package/node_modules/three/src/math/Sphere.js +175 -0
- package/node_modules/three/src/math/Spherical.js +74 -13
- package/node_modules/three/src/math/SphericalHarmonics3.js +112 -14
- package/node_modules/three/src/math/Triangle.js +230 -2
- package/node_modules/three/src/math/Vector2.js +396 -10
- package/node_modules/three/src/math/Vector3.js +557 -20
- package/node_modules/three/src/math/Vector4.js +428 -9
- package/node_modules/three/src/math/interpolants/CubicInterpolant.js +10 -1
- package/node_modules/three/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/node_modules/three/src/math/interpolants/LinearInterpolant.js +13 -0
- package/node_modules/three/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/node_modules/three/src/nodes/Nodes.js +148 -0
- package/node_modules/three/src/nodes/TSL.js +173 -0
- package/node_modules/three/src/nodes/accessors/AccessorsUtils.js +53 -0
- package/node_modules/three/src/nodes/accessors/Arrays.js +68 -0
- package/node_modules/three/src/nodes/accessors/BatchNode.js +163 -0
- package/node_modules/three/src/nodes/accessors/Bitangent.js +82 -0
- package/node_modules/three/src/nodes/accessors/BufferAttributeNode.js +340 -0
- package/node_modules/three/src/nodes/accessors/BufferNode.js +101 -0
- package/node_modules/three/src/nodes/accessors/BuiltinNode.js +63 -0
- package/node_modules/three/src/nodes/accessors/Camera.js +282 -0
- package/node_modules/three/src/nodes/accessors/ClippingNode.js +255 -0
- package/node_modules/three/src/nodes/accessors/CubeTextureNode.js +190 -0
- package/node_modules/three/src/nodes/accessors/InstanceNode.js +244 -0
- package/node_modules/three/src/nodes/accessors/InstancedMeshNode.js +50 -0
- package/node_modules/three/src/nodes/accessors/Lights.js +139 -0
- package/node_modules/three/src/nodes/accessors/MaterialNode.js +775 -0
- package/node_modules/three/src/nodes/accessors/MaterialProperties.js +59 -0
- package/node_modules/three/src/nodes/accessors/MaterialReferenceNode.js +85 -0
- package/node_modules/three/src/nodes/accessors/ModelNode.js +184 -0
- package/node_modules/three/src/nodes/accessors/ModelViewProjectionNode.js +13 -0
- package/node_modules/three/{examples/jsm → src}/nodes/accessors/MorphNode.js +122 -57
- package/node_modules/three/src/nodes/accessors/Normal.js +243 -0
- package/node_modules/three/src/nodes/accessors/Object3DNode.js +268 -0
- package/node_modules/three/src/nodes/accessors/PointUVNode.js +55 -0
- package/node_modules/three/src/nodes/accessors/Position.js +90 -0
- package/node_modules/three/src/nodes/accessors/ReferenceBaseNode.js +357 -0
- package/node_modules/three/src/nodes/accessors/ReferenceNode.js +424 -0
- package/node_modules/three/src/nodes/accessors/ReflectVector.js +36 -0
- package/node_modules/three/src/nodes/accessors/RendererReferenceNode.js +79 -0
- package/node_modules/three/src/nodes/accessors/SceneNode.js +145 -0
- package/node_modules/three/src/nodes/accessors/SkinningNode.js +327 -0
- package/node_modules/three/src/nodes/accessors/StorageBufferNode.js +416 -0
- package/node_modules/three/src/nodes/accessors/StorageTextureNode.js +264 -0
- package/node_modules/three/src/nodes/accessors/Tangent.js +70 -0
- package/node_modules/three/src/nodes/accessors/TangentUtils.js +46 -0
- package/node_modules/three/src/nodes/accessors/Texture3DNode.js +199 -0
- package/node_modules/three/{examples/jsm/nodes/accessors/TextureBicubicNode.js → src/nodes/accessors/TextureBicubic.js} +28 -30
- package/node_modules/three/src/nodes/accessors/TextureNode.js +927 -0
- package/node_modules/three/src/nodes/accessors/TextureSizeNode.js +77 -0
- package/node_modules/three/src/nodes/accessors/UV.js +11 -0
- package/node_modules/three/src/nodes/accessors/UniformArrayNode.js +348 -0
- package/node_modules/three/src/nodes/accessors/UserDataNode.js +77 -0
- package/node_modules/three/src/nodes/accessors/VelocityNode.js +224 -0
- package/node_modules/three/src/nodes/accessors/VertexColorNode.js +110 -0
- package/node_modules/three/src/nodes/code/CodeNode.js +181 -0
- package/node_modules/three/src/nodes/code/ExpressionNode.js +68 -0
- package/node_modules/three/src/nodes/code/FunctionCallNode.js +187 -0
- package/node_modules/three/src/nodes/code/FunctionNode.js +183 -0
- package/node_modules/three/{examples/jsm → src}/nodes/code/ScriptableNode.js +253 -15
- package/node_modules/three/{examples/jsm → src}/nodes/code/ScriptableValueNode.js +95 -9
- package/node_modules/three/src/nodes/core/ArrayNode.js +155 -0
- package/node_modules/three/src/nodes/core/AssignNode.js +202 -0
- package/node_modules/three/src/nodes/core/AttributeNode.js +168 -0
- package/node_modules/three/src/nodes/core/BypassNode.js +93 -0
- package/node_modules/three/src/nodes/core/ConstNode.js +67 -0
- package/node_modules/three/src/nodes/core/ContextNode.js +184 -0
- package/node_modules/three/src/nodes/core/IndexNode.js +164 -0
- package/node_modules/three/src/nodes/core/InputNode.js +136 -0
- package/node_modules/three/src/nodes/core/InspectorNode.js +128 -0
- package/node_modules/three/src/nodes/core/IsolateNode.js +133 -0
- package/node_modules/three/src/nodes/core/LightingModel.js +77 -0
- package/node_modules/three/src/nodes/core/MRTNode.js +150 -0
- package/node_modules/three/src/nodes/core/Node.js +1083 -0
- package/node_modules/three/src/nodes/core/NodeAttribute.js +53 -0
- package/node_modules/three/src/nodes/core/NodeBuilder.js +3081 -0
- package/node_modules/three/src/nodes/core/NodeCache.js +75 -0
- package/node_modules/three/src/nodes/core/NodeCode.js +46 -0
- package/node_modules/three/src/nodes/core/NodeFrame.js +306 -0
- package/node_modules/three/src/nodes/core/NodeFunction.js +69 -0
- package/node_modules/three/src/nodes/core/NodeFunctionInput.js +61 -0
- package/node_modules/three/src/nodes/core/NodeParser.js +23 -0
- package/node_modules/three/src/nodes/core/NodeUniform.js +91 -0
- package/node_modules/three/src/nodes/core/NodeUtils.js +406 -0
- package/node_modules/three/src/nodes/core/NodeVar.js +60 -0
- package/node_modules/three/src/nodes/core/NodeVarying.js +63 -0
- package/node_modules/three/src/nodes/core/OutputStructNode.js +103 -0
- package/node_modules/three/src/nodes/core/ParameterNode.js +94 -0
- package/node_modules/three/src/nodes/core/PropertyNode.js +351 -0
- package/node_modules/three/src/nodes/core/StackNode.js +377 -0
- package/node_modules/three/src/nodes/core/StructNode.js +120 -0
- package/node_modules/three/src/nodes/core/StructType.js +13 -0
- package/node_modules/three/src/nodes/core/StructTypeNode.js +154 -0
- package/node_modules/three/src/nodes/core/SubBuildNode.js +89 -0
- package/node_modules/three/src/nodes/core/TempNode.js +88 -0
- package/node_modules/three/src/nodes/core/UniformGroupNode.js +137 -0
- package/node_modules/three/src/nodes/core/UniformNode.js +243 -0
- package/node_modules/three/src/nodes/core/VarNode.js +342 -0
- package/node_modules/three/src/nodes/core/VaryingNode.js +227 -0
- package/node_modules/three/src/nodes/core/constants.js +68 -0
- package/node_modules/three/src/nodes/display/BlendModes.js +235 -0
- package/node_modules/three/src/nodes/display/BumpMapNode.js +117 -0
- package/node_modules/three/src/nodes/display/ColorAdjustment.js +141 -0
- package/node_modules/three/src/nodes/display/ColorSpaceFunctions.js +54 -0
- package/node_modules/three/src/nodes/display/ColorSpaceNode.js +164 -0
- package/node_modules/three/src/nodes/display/FrontFacingNode.js +102 -0
- package/node_modules/three/src/nodes/display/NormalMapNode.js +118 -0
- package/node_modules/three/src/nodes/display/PassNode.js +946 -0
- package/node_modules/three/src/nodes/display/PosterizeNode.js +65 -0
- package/node_modules/three/src/nodes/display/RenderOutputNode.js +150 -0
- package/node_modules/three/src/nodes/display/ScreenNode.js +290 -0
- package/node_modules/three/src/nodes/display/ToneMappingFunctions.js +242 -0
- package/node_modules/three/src/nodes/display/ToneMappingNode.js +147 -0
- package/node_modules/three/src/nodes/display/ToonOutlinePassNode.js +191 -0
- package/node_modules/three/src/nodes/display/ViewportDepthNode.js +294 -0
- package/node_modules/three/src/nodes/display/ViewportDepthTextureNode.js +67 -0
- package/node_modules/three/src/nodes/display/ViewportSharedTextureNode.js +73 -0
- package/node_modules/three/src/nodes/display/ViewportTextureNode.js +228 -0
- package/node_modules/three/src/nodes/fog/Fog.js +114 -0
- package/node_modules/three/src/nodes/functions/BSDF/BRDF_GGX.js +55 -0
- package/node_modules/three/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
- package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
- package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Sheen.js +9 -9
- package/node_modules/three/src/nodes/functions/BSDF/DFGApprox.js +71 -0
- package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/D_GGX.js +2 -2
- package/node_modules/three/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +28 -0
- package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/F_Schlick.js +2 -2
- package/node_modules/three/src/nodes/functions/BSDF/LTC.js +175 -0
- package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
- package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -4
- package/node_modules/three/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +29 -0
- package/node_modules/three/src/nodes/functions/BasicLightingModel.js +100 -0
- package/node_modules/three/src/nodes/functions/PhongLightingModel.js +99 -0
- package/node_modules/three/src/nodes/functions/PhysicalLightingModel.js +797 -0
- package/node_modules/three/src/nodes/functions/ShadowMaskModel.js +58 -0
- package/node_modules/three/src/nodes/functions/ToonLightingModel.js +70 -0
- package/node_modules/three/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/node_modules/three/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
- package/node_modules/three/src/nodes/functions/material/getGeometryRoughness.js +19 -0
- package/node_modules/three/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
- package/node_modules/three/{examples/jsm → src}/nodes/functions/material/getRoughness.js +2 -2
- package/node_modules/three/src/nodes/functions/material/getShIrradianceAt.js +28 -0
- package/node_modules/three/src/nodes/geometry/RangeNode.js +208 -0
- package/node_modules/three/src/nodes/gpgpu/AtomicFunctionNode.js +274 -0
- package/node_modules/three/src/nodes/gpgpu/BarrierNode.js +89 -0
- package/node_modules/three/src/nodes/gpgpu/ComputeBuiltinNode.js +228 -0
- package/node_modules/three/src/nodes/gpgpu/ComputeNode.js +284 -0
- package/node_modules/three/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
- package/node_modules/three/src/nodes/gpgpu/WorkgroupInfoNode.js +234 -0
- package/node_modules/three/src/nodes/lighting/AONode.js +45 -0
- package/node_modules/three/{examples/jsm → src}/nodes/lighting/AmbientLightNode.js +16 -8
- package/node_modules/three/src/nodes/lighting/AnalyticLightNode.js +256 -0
- package/node_modules/three/src/nodes/lighting/BasicEnvironmentNode.js +49 -0
- package/node_modules/three/src/nodes/lighting/BasicLightMapNode.js +49 -0
- package/node_modules/three/src/nodes/lighting/DirectionalLightNode.js +39 -0
- package/node_modules/three/src/nodes/lighting/EnvironmentNode.js +153 -0
- package/node_modules/three/src/nodes/lighting/HemisphereLightNode.js +87 -0
- package/node_modules/three/{examples/jsm → src}/nodes/lighting/IESSpotLightNode.js +20 -10
- package/node_modules/three/src/nodes/lighting/IrradianceNode.js +44 -0
- package/node_modules/three/src/nodes/lighting/LightProbeNode.js +73 -0
- package/node_modules/three/src/nodes/lighting/LightUtils.js +25 -0
- package/node_modules/three/src/nodes/lighting/LightingContextNode.js +115 -0
- package/node_modules/three/src/nodes/lighting/LightingNode.js +36 -0
- package/node_modules/three/src/nodes/lighting/LightsNode.js +453 -0
- package/node_modules/three/src/nodes/lighting/PointLightNode.js +102 -0
- package/node_modules/three/src/nodes/lighting/PointShadowNode.js +312 -0
- package/node_modules/three/src/nodes/lighting/ProjectorLightNode.js +91 -0
- package/node_modules/three/src/nodes/lighting/RectAreaLightNode.js +133 -0
- package/node_modules/three/src/nodes/lighting/ShadowBaseNode.js +81 -0
- package/node_modules/three/src/nodes/lighting/ShadowFilterNode.js +276 -0
- package/node_modules/three/src/nodes/lighting/ShadowNode.js +811 -0
- package/node_modules/three/src/nodes/lighting/SpotLightNode.js +168 -0
- package/node_modules/three/src/nodes/materialx/MaterialXNodes.js +197 -0
- package/node_modules/three/{examples/jsm → src}/nodes/materialx/lib/mx_hsv.js +43 -46
- package/node_modules/three/{examples/jsm → src}/nodes/materialx/lib/mx_noise.js +625 -564
- package/node_modules/three/{examples/jsm → src}/nodes/materialx/lib/mx_transform_color.js +3 -9
- package/node_modules/three/src/nodes/math/BitcastNode.js +156 -0
- package/node_modules/three/src/nodes/math/ConditionalNode.js +245 -0
- package/node_modules/three/src/nodes/math/Hash.js +21 -0
- package/node_modules/three/src/nodes/math/MathNode.js +1167 -0
- package/node_modules/three/src/nodes/math/MathUtils.js +54 -0
- package/node_modules/three/src/nodes/math/OperatorNode.js +751 -0
- package/node_modules/three/{examples/jsm → src}/nodes/math/TriNoise3D.js +34 -34
- package/node_modules/three/{examples/jsm → src}/nodes/parsers/GLSLNodeFunction.js +23 -7
- package/node_modules/three/{examples/jsm → src}/nodes/parsers/GLSLNodeParser.js +11 -0
- package/node_modules/three/src/nodes/pmrem/PMREMNode.js +397 -0
- package/node_modules/three/src/nodes/pmrem/PMREMUtils.js +403 -0
- package/node_modules/three/src/nodes/procedural/Checker.js +22 -0
- package/node_modules/three/src/nodes/shapes/Shapes.js +33 -0
- package/node_modules/three/src/nodes/tsl/TSLBase.js +36 -0
- package/node_modules/three/src/nodes/tsl/TSLCore.js +1229 -0
- package/node_modules/three/src/nodes/utils/ArrayElementNode.js +77 -0
- package/node_modules/three/src/nodes/utils/ConvertNode.js +100 -0
- package/node_modules/three/src/nodes/utils/CubeMapNode.js +237 -0
- package/node_modules/three/src/nodes/utils/DebugNode.js +83 -0
- package/node_modules/three/src/nodes/utils/Discard.js +24 -0
- package/node_modules/three/src/nodes/utils/EquirectUV.js +27 -0
- package/node_modules/three/src/nodes/utils/EventNode.js +119 -0
- package/node_modules/three/src/nodes/utils/FlipNode.js +106 -0
- package/node_modules/three/src/nodes/utils/FunctionOverloadingNode.js +170 -0
- package/node_modules/three/src/nodes/utils/JoinNode.js +117 -0
- package/node_modules/three/src/nodes/utils/LoopNode.js +349 -0
- package/node_modules/three/src/nodes/utils/MatcapUV.js +22 -0
- package/node_modules/three/src/nodes/utils/MaxMipLevelNode.js +103 -0
- package/node_modules/three/src/nodes/utils/MemberNode.js +120 -0
- package/node_modules/three/src/nodes/utils/Oscillators.js +41 -0
- package/node_modules/three/src/nodes/utils/Packing.js +21 -0
- package/node_modules/three/src/nodes/utils/PostProcessingUtils.js +122 -0
- package/node_modules/three/src/nodes/utils/RTTNode.js +289 -0
- package/node_modules/three/src/nodes/utils/ReflectorNode.js +630 -0
- package/node_modules/three/src/nodes/utils/RemapNode.js +125 -0
- package/node_modules/three/{examples/jsm → src}/nodes/utils/RotateNode.js +48 -13
- package/node_modules/three/src/nodes/utils/SampleNode.js +91 -0
- package/node_modules/three/{examples/jsm → src}/nodes/utils/SetNode.js +50 -4
- package/node_modules/three/{examples/jsm → src}/nodes/utils/SplitNode.js +73 -6
- package/node_modules/three/src/nodes/utils/SpriteSheetUVNode.js +90 -0
- package/node_modules/three/src/nodes/utils/SpriteUtils.js +63 -0
- package/node_modules/three/src/nodes/utils/StorageArrayElementNode.js +143 -0
- package/node_modules/three/src/nodes/utils/Timer.js +26 -0
- package/node_modules/three/src/nodes/utils/TriplanarTextures.js +65 -0
- package/node_modules/three/src/nodes/utils/UVUtils.js +39 -0
- package/node_modules/three/src/nodes/utils/ViewportUtils.js +26 -0
- package/node_modules/three/src/objects/BatchedMesh.js +940 -305
- package/node_modules/three/src/objects/Bone.js +24 -0
- package/node_modules/three/src/objects/ClippingGroup.js +68 -0
- package/node_modules/three/src/objects/Group.js +24 -0
- package/node_modules/three/src/objects/InstancedMesh.js +182 -1
- package/node_modules/three/src/objects/LOD.js +120 -5
- package/node_modules/three/src/objects/Line.js +151 -44
- package/node_modules/three/src/objects/LineLoop.js +20 -0
- package/node_modules/three/src/objects/LineSegments.js +20 -1
- package/node_modules/three/src/objects/Mesh.js +91 -24
- package/node_modules/three/src/objects/Points.js +62 -0
- package/node_modules/three/src/objects/Skeleton.js +111 -5
- package/node_modules/three/src/objects/SkinnedMesh.js +102 -6
- package/node_modules/three/src/objects/Sprite.js +65 -1
- package/node_modules/three/src/renderers/WebGL3DRenderTarget.js +26 -0
- package/node_modules/three/src/renderers/WebGLArrayRenderTarget.js +26 -0
- package/node_modules/three/src/renderers/WebGLCubeRenderTarget.js +42 -15
- package/node_modules/three/src/renderers/WebGLRenderTarget.js +19 -0
- package/node_modules/three/src/renderers/WebGLRenderer.js +1222 -318
- package/node_modules/three/src/renderers/common/Animation.js +159 -0
- package/node_modules/three/{examples/jsm → src}/renderers/common/Attributes.js +45 -2
- package/node_modules/three/src/renderers/common/Backend.js +748 -0
- package/node_modules/three/src/renderers/common/Background.js +212 -0
- package/node_modules/three/src/renderers/common/BindGroup.js +61 -0
- package/node_modules/three/src/renderers/common/Binding.js +60 -0
- package/node_modules/three/src/renderers/common/Bindings.js +379 -0
- package/node_modules/three/src/renderers/common/Buffer.js +87 -0
- package/node_modules/three/src/renderers/common/BufferUtils.js +58 -0
- package/node_modules/three/src/renderers/common/BundleGroup.js +83 -0
- package/node_modules/three/src/renderers/common/CanvasTarget.js +341 -0
- package/node_modules/three/src/renderers/common/ChainMap.js +98 -0
- package/node_modules/three/src/renderers/common/ClippingContext.js +262 -0
- package/node_modules/three/src/renderers/common/Color4.js +77 -0
- package/node_modules/three/src/renderers/common/ComputePipeline.js +41 -0
- package/node_modules/three/{examples/jsm → src}/renderers/common/Constants.js +2 -1
- package/node_modules/three/{examples/jsm → src}/renderers/common/CubeRenderTarget.js +43 -5
- package/node_modules/three/src/renderers/common/DataMap.js +90 -0
- package/node_modules/three/src/renderers/common/Geometries.js +370 -0
- package/node_modules/three/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
- package/node_modules/three/src/renderers/common/Info.js +172 -0
- package/node_modules/three/src/renderers/common/InspectorBase.js +146 -0
- package/node_modules/three/src/renderers/common/Lighting.js +73 -0
- package/node_modules/three/src/renderers/common/Pipeline.js +35 -0
- package/node_modules/three/{examples/jsm → src}/renderers/common/Pipelines.js +150 -7
- package/node_modules/three/src/renderers/common/PostProcessing.js +226 -0
- package/node_modules/three/src/renderers/common/ProgrammableStage.js +78 -0
- package/node_modules/three/src/renderers/common/QuadMesh.js +112 -0
- package/node_modules/three/src/renderers/common/RenderBundle.js +24 -0
- package/node_modules/three/src/renderers/common/RenderBundles.js +67 -0
- package/node_modules/three/src/renderers/common/RenderContext.js +265 -0
- package/node_modules/three/src/renderers/common/RenderContexts.js +116 -0
- package/node_modules/three/src/renderers/common/RenderList.js +404 -0
- package/node_modules/three/src/renderers/common/RenderLists.js +77 -0
- package/node_modules/three/src/renderers/common/RenderObject.js +903 -0
- package/node_modules/three/src/renderers/common/RenderObjects.js +202 -0
- package/node_modules/three/src/renderers/common/RenderPipeline.js +40 -0
- package/node_modules/three/src/renderers/common/Renderer.js +3290 -0
- package/node_modules/three/src/renderers/common/RendererUtils.js +200 -0
- package/node_modules/three/src/renderers/common/SampledTexture.js +152 -0
- package/node_modules/three/src/renderers/common/Sampler.js +165 -0
- package/node_modules/three/src/renderers/common/Storage3DTexture.js +100 -0
- package/node_modules/three/src/renderers/common/StorageArrayTexture.js +84 -0
- package/node_modules/three/src/renderers/common/StorageBuffer.js +41 -0
- package/node_modules/three/src/renderers/common/StorageBufferAttribute.js +46 -0
- package/node_modules/three/src/renderers/common/StorageInstancedBufferAttribute.js +46 -0
- package/node_modules/three/src/renderers/common/StorageTexture.js +86 -0
- package/node_modules/three/src/renderers/common/Textures.js +544 -0
- package/node_modules/three/src/renderers/common/TimestampQueryPool.js +161 -0
- package/node_modules/three/src/renderers/common/Uniform.js +367 -0
- package/node_modules/three/src/renderers/common/UniformBuffer.js +34 -0
- package/node_modules/three/src/renderers/common/UniformsGroup.js +487 -0
- package/node_modules/three/src/renderers/common/XRManager.js +1676 -0
- package/node_modules/three/src/renderers/common/XRRenderTarget.js +91 -0
- package/node_modules/three/src/renderers/common/extras/PMREMGenerator.js +1034 -0
- package/node_modules/three/src/renderers/common/nodes/NodeBuilderState.js +152 -0
- package/node_modules/three/src/renderers/common/nodes/NodeLibrary.js +196 -0
- package/node_modules/three/src/renderers/common/nodes/NodeSampledTexture.js +140 -0
- package/node_modules/three/src/renderers/common/nodes/NodeSampler.js +62 -0
- package/node_modules/three/src/renderers/common/nodes/NodeStorageBuffer.js +61 -0
- package/node_modules/three/src/renderers/common/nodes/NodeUniform.js +418 -0
- package/node_modules/three/src/renderers/common/nodes/NodeUniformBuffer.js +53 -0
- package/node_modules/three/src/renderers/common/nodes/NodeUniformsGroup.js +51 -0
- package/node_modules/three/src/renderers/common/nodes/Nodes.js +840 -0
- package/node_modules/three/src/renderers/shaders/DFGLUTData.js +64 -0
- package/node_modules/three/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +31 -1
- package/node_modules/three/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +1 -1
- package/node_modules/three/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -1
- package/node_modules/three/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +9 -1
- package/node_modules/three/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -33
- package/node_modules/three/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -22
- package/node_modules/three/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
- package/node_modules/three/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +2 -1
- package/node_modules/three/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +1 -1
- package/node_modules/three/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +3 -3
- package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +3 -3
- package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +8 -22
- package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +6 -0
- package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +55 -20
- package/node_modules/three/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +2 -2
- package/node_modules/three/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
- package/node_modules/three/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +3 -11
- package/node_modules/three/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +3 -17
- package/node_modules/three/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +3 -3
- package/node_modules/three/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +1 -1
- package/node_modules/three/src/renderers/shaders/ShaderChunk/morphinstance_vertex.glsl.js +14 -0
- package/node_modules/three/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +3 -14
- package/node_modules/three/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +12 -24
- package/node_modules/three/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +3 -23
- package/node_modules/three/src/renderers/shaders/ShaderChunk/packing.glsl.js +45 -13
- package/node_modules/three/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
- package/node_modules/three/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +59 -36
- package/node_modules/three/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +3 -0
- package/node_modules/three/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +3 -3
- package/node_modules/three/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +33 -2
- package/node_modules/three/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
- package/node_modules/three/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +47 -13
- package/node_modules/three/src/renderers/shaders/ShaderChunk.js +2 -2
- package/node_modules/three/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
- package/node_modules/three/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +3 -2
- package/node_modules/three/src/renderers/shaders/ShaderLib/depth.glsl.js +21 -2
- package/node_modules/three/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +2 -0
- package/node_modules/three/src/renderers/shaders/ShaderLib/linedashed.glsl.js +1 -0
- package/node_modules/three/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -0
- package/node_modules/three/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +1 -0
- package/node_modules/three/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -0
- package/node_modules/three/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -0
- package/node_modules/three/src/renderers/shaders/ShaderLib/meshphong.glsl.js +1 -0
- package/node_modules/three/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +5 -0
- package/node_modules/three/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +1 -0
- package/node_modules/three/src/renderers/shaders/ShaderLib/points.glsl.js +1 -0
- package/node_modules/three/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -0
- package/node_modules/three/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
- package/node_modules/three/src/renderers/shaders/ShaderLib.js +4 -2
- package/node_modules/three/src/renderers/shaders/UniformsLib.js +6 -4
- package/node_modules/three/src/renderers/shaders/UniformsUtils.js +31 -3
- package/node_modules/three/src/renderers/webgl/WebGLAttributes.js +46 -38
- package/node_modules/three/src/renderers/webgl/WebGLBackground.js +69 -5
- package/node_modules/three/src/renderers/webgl/WebGLBindingStates.js +14 -51
- package/node_modules/three/src/renderers/webgl/WebGLBufferRenderer.js +19 -22
- package/node_modules/three/src/renderers/webgl/WebGLCapabilities.js +39 -14
- package/node_modules/three/src/renderers/webgl/WebGLCubeUVMaps.js +10 -6
- package/node_modules/three/src/renderers/webgl/WebGLExtensions.js +8 -44
- package/node_modules/three/src/renderers/webgl/WebGLGeometries.js +0 -28
- package/node_modules/three/src/renderers/webgl/WebGLIndexedBufferRenderer.js +19 -21
- package/node_modules/three/src/renderers/webgl/WebGLInfo.js +3 -1
- package/node_modules/three/src/renderers/webgl/WebGLLights.js +21 -44
- package/node_modules/three/src/renderers/webgl/WebGLMaterials.js +33 -9
- package/node_modules/three/src/renderers/webgl/WebGLMorphtargets.js +78 -210
- package/node_modules/three/src/renderers/webgl/WebGLProgram.js +103 -121
- package/node_modules/three/src/renderers/webgl/WebGLPrograms.js +32 -26
- package/node_modules/three/src/renderers/webgl/WebGLProperties.js +7 -0
- package/node_modules/three/src/renderers/webgl/WebGLRenderStates.js +15 -9
- package/node_modules/three/src/renderers/webgl/WebGLShadowMap.js +41 -29
- package/node_modules/three/src/renderers/webgl/WebGLState.js +104 -100
- package/node_modules/three/src/renderers/webgl/WebGLTextures.js +567 -408
- package/node_modules/three/src/renderers/webgl/WebGLUniforms.js +12 -2
- package/node_modules/three/src/renderers/webgl/WebGLUniformsGroups.js +13 -11
- package/node_modules/three/src/renderers/webgl/WebGLUtils.js +11 -81
- package/node_modules/three/src/renderers/webgl-fallback/WebGLBackend.js +2612 -0
- package/node_modules/three/src/renderers/webgl-fallback/WebGLBufferRenderer.js +140 -0
- package/node_modules/three/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +1577 -0
- package/node_modules/three/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLAttributeUtils.js +76 -3
- package/node_modules/three/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +64 -0
- package/node_modules/three/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLConstants.js +5 -3
- package/node_modules/three/src/renderers/webgl-fallback/utils/WebGLExtensions.js +83 -0
- package/node_modules/three/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLState.js +427 -21
- package/node_modules/three/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +1309 -0
- package/node_modules/three/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +396 -0
- package/node_modules/three/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLUtils.js +72 -43
- package/node_modules/three/src/renderers/webgpu/WebGPUBackend.js +2482 -0
- package/node_modules/three/src/renderers/webgpu/WebGPURenderer.Nodes.js +69 -0
- package/node_modules/three/src/renderers/webgpu/WebGPURenderer.js +106 -0
- package/node_modules/three/src/renderers/webgpu/nodes/BasicNodeLibrary.js +66 -0
- package/node_modules/three/src/renderers/webgpu/nodes/StandardNodeLibrary.js +100 -0
- package/node_modules/three/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +2247 -0
- package/node_modules/three/src/renderers/webgpu/nodes/WGSLNodeFunction.js +187 -0
- package/node_modules/three/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
- package/node_modules/three/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +449 -0
- package/node_modules/three/src/renderers/webgpu/utils/WebGPUBindingUtils.js +485 -0
- package/node_modules/three/{examples/jsm → src}/renderers/webgpu/utils/WebGPUConstants.js +24 -4
- package/node_modules/three/{examples/jsm → src}/renderers/webgpu/utils/WebGPUPipelineUtils.js +289 -72
- package/node_modules/three/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTexturePassUtils.js +160 -8
- package/node_modules/three/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1576 -0
- package/node_modules/three/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +310 -0
- package/node_modules/three/src/renderers/webgpu/utils/WebGPUUtils.js +247 -0
- package/node_modules/three/src/renderers/webxr/WebXRController.js +87 -2
- package/node_modules/three/src/renderers/webxr/WebXRDepthSensing.js +63 -13
- package/node_modules/three/src/renderers/webxr/WebXRManager.js +323 -44
- package/node_modules/three/src/scenes/Fog.js +60 -0
- package/node_modules/three/src/scenes/FogExp2.js +51 -0
- package/node_modules/three/src/scenes/Scene.js +103 -1
- package/node_modules/three/src/textures/CanvasTexture.js +28 -0
- package/node_modules/three/src/textures/CompressedArrayTexture.js +71 -0
- package/node_modules/three/src/textures/CompressedCubeTexture.js +29 -0
- package/node_modules/three/src/textures/CompressedTexture.js +64 -6
- package/node_modules/three/src/textures/CubeTexture.js +52 -4
- package/node_modules/three/src/textures/Data3DTexture.js +79 -2
- package/node_modules/three/src/textures/DataArrayTexture.js +107 -0
- package/node_modules/three/src/textures/DataTexture.js +65 -0
- package/node_modules/three/src/textures/DepthTexture.js +59 -13
- package/node_modules/three/src/textures/ExternalTexture.js +56 -0
- package/node_modules/three/src/textures/FramebufferTexture.js +62 -0
- package/node_modules/three/src/textures/Source.js +106 -4
- package/node_modules/three/src/textures/Texture.js +490 -27
- package/node_modules/three/src/textures/VideoFrameTexture.js +72 -0
- package/node_modules/three/src/textures/VideoTexture.js +78 -6
- package/node_modules/three/src/utils.js +128 -3
- package/package.json +3 -2
- package/node_modules/three/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
- package/node_modules/three/examples/jsm/animation/MMDPhysics.js +0 -1406
- package/node_modules/three/examples/jsm/cameras/CinematicCamera.js +0 -208
- package/node_modules/three/examples/jsm/effects/PeppersGhostEffect.js +0 -153
- package/node_modules/three/examples/jsm/exporters/MMDExporter.js +0 -217
- package/node_modules/three/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
- package/node_modules/three/examples/jsm/geometries/ParametricGeometries.js +0 -254
- package/node_modules/three/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
- package/node_modules/three/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/node_modules/three/examples/jsm/lights/IESSpotLight.js +0 -25
- package/node_modules/three/examples/jsm/loaders/LogLuvLoader.js +0 -606
- package/node_modules/three/examples/jsm/loaders/MMDLoader.js +0 -2276
- package/node_modules/three/examples/jsm/loaders/RGBMLoader.js +0 -1065
- package/node_modules/three/examples/jsm/loaders/TiltLoader.js +0 -520
- package/node_modules/three/examples/jsm/misc/Timer.js +0 -128
- package/node_modules/three/examples/jsm/nodes/Nodes.js +0 -193
- package/node_modules/three/examples/jsm/nodes/accessors/BitangentNode.js +0 -89
- package/node_modules/three/examples/jsm/nodes/accessors/BufferAttributeNode.js +0 -127
- package/node_modules/three/examples/jsm/nodes/accessors/BufferNode.js +0 -30
- package/node_modules/three/examples/jsm/nodes/accessors/CameraNode.js +0 -119
- package/node_modules/three/examples/jsm/nodes/accessors/CubeTextureNode.js +0 -61
- package/node_modules/three/examples/jsm/nodes/accessors/InstanceNode.js +0 -71
- package/node_modules/three/examples/jsm/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
- package/node_modules/three/examples/jsm/nodes/accessors/MaterialNode.js +0 -314
- package/node_modules/three/examples/jsm/nodes/accessors/MaterialReferenceNode.js +0 -51
- package/node_modules/three/examples/jsm/nodes/accessors/ModelNode.js +0 -33
- package/node_modules/three/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +0 -39
- package/node_modules/three/examples/jsm/nodes/accessors/NormalNode.js +0 -96
- package/node_modules/three/examples/jsm/nodes/accessors/Object3DNode.js +0 -150
- package/node_modules/three/examples/jsm/nodes/accessors/PointUVNode.js +0 -26
- package/node_modules/three/examples/jsm/nodes/accessors/PositionNode.js +0 -104
- package/node_modules/three/examples/jsm/nodes/accessors/ReferenceNode.js +0 -102
- package/node_modules/three/examples/jsm/nodes/accessors/ReflectVectorNode.js +0 -35
- package/node_modules/three/examples/jsm/nodes/accessors/SceneNode.js +0 -52
- package/node_modules/three/examples/jsm/nodes/accessors/SkinningNode.js +0 -103
- package/node_modules/three/examples/jsm/nodes/accessors/StorageBufferNode.js +0 -54
- package/node_modules/three/examples/jsm/nodes/accessors/TangentNode.js +0 -103
- package/node_modules/three/examples/jsm/nodes/accessors/TextureNode.js +0 -367
- package/node_modules/three/examples/jsm/nodes/accessors/TextureSizeNode.js +0 -35
- package/node_modules/three/examples/jsm/nodes/accessors/TextureStoreNode.js +0 -82
- package/node_modules/three/examples/jsm/nodes/accessors/UVNode.js +0 -47
- package/node_modules/three/examples/jsm/nodes/accessors/UserDataNode.js +0 -29
- package/node_modules/three/examples/jsm/nodes/accessors/VertexColorNode.js +0 -70
- package/node_modules/three/examples/jsm/nodes/code/CodeNode.js +0 -78
- package/node_modules/three/examples/jsm/nodes/code/ExpressionNode.js +0 -37
- package/node_modules/three/examples/jsm/nodes/code/FunctionCallNode.js +0 -96
- package/node_modules/three/examples/jsm/nodes/code/FunctionNode.js +0 -138
- package/node_modules/three/examples/jsm/nodes/core/ArrayUniformNode.js +0 -26
- package/node_modules/three/examples/jsm/nodes/core/AssignNode.js +0 -72
- package/node_modules/three/examples/jsm/nodes/core/AttributeNode.js +0 -108
- package/node_modules/three/examples/jsm/nodes/core/BypassNode.js +0 -45
- package/node_modules/three/examples/jsm/nodes/core/CacheNode.js +0 -49
- package/node_modules/three/examples/jsm/nodes/core/ConstNode.js +0 -32
- package/node_modules/three/examples/jsm/nodes/core/ContextNode.js +0 -61
- package/node_modules/three/examples/jsm/nodes/core/IndexNode.js +0 -66
- package/node_modules/three/examples/jsm/nodes/core/InputNode.js +0 -83
- package/node_modules/three/examples/jsm/nodes/core/LightingModel.js +0 -17
- package/node_modules/three/examples/jsm/nodes/core/Node.js +0 -483
- package/node_modules/three/examples/jsm/nodes/core/NodeAttribute.js +0 -15
- package/node_modules/three/examples/jsm/nodes/core/NodeBuilder.js +0 -1256
- package/node_modules/three/examples/jsm/nodes/core/NodeCache.js +0 -26
- package/node_modules/three/examples/jsm/nodes/core/NodeCode.js +0 -15
- package/node_modules/three/examples/jsm/nodes/core/NodeFrame.js +0 -143
- package/node_modules/three/examples/jsm/nodes/core/NodeFunction.js +0 -22
- package/node_modules/three/examples/jsm/nodes/core/NodeFunctionInput.js +0 -17
- package/node_modules/three/examples/jsm/nodes/core/NodeKeywords.js +0 -80
- package/node_modules/three/examples/jsm/nodes/core/NodeParser.js +0 -11
- package/node_modules/three/examples/jsm/nodes/core/NodeUniform.js +0 -40
- package/node_modules/three/examples/jsm/nodes/core/NodeUtils.js +0 -210
- package/node_modules/three/examples/jsm/nodes/core/NodeVar.js +0 -14
- package/node_modules/three/examples/jsm/nodes/core/NodeVarying.js +0 -17
- package/node_modules/three/examples/jsm/nodes/core/OutputStructNode.js +0 -62
- package/node_modules/three/examples/jsm/nodes/core/ParameterNode.js +0 -33
- package/node_modules/three/examples/jsm/nodes/core/PropertyNode.js +0 -72
- package/node_modules/three/examples/jsm/nodes/core/StackNode.js +0 -89
- package/node_modules/three/examples/jsm/nodes/core/StructTypeNode.js +0 -24
- package/node_modules/three/examples/jsm/nodes/core/TempNode.js +0 -58
- package/node_modules/three/examples/jsm/nodes/core/UniformGroup.js +0 -13
- package/node_modules/three/examples/jsm/nodes/core/UniformGroupNode.js +0 -36
- package/node_modules/three/examples/jsm/nodes/core/UniformNode.js +0 -80
- package/node_modules/three/examples/jsm/nodes/core/VarNode.js +0 -60
- package/node_modules/three/examples/jsm/nodes/core/VaryingNode.js +0 -65
- package/node_modules/three/examples/jsm/nodes/core/constants.js +0 -28
- package/node_modules/three/examples/jsm/nodes/display/AfterImageNode.js +0 -148
- package/node_modules/three/examples/jsm/nodes/display/AnamorphicNode.js +0 -148
- package/node_modules/three/examples/jsm/nodes/display/BlendModeNode.js +0 -99
- package/node_modules/three/examples/jsm/nodes/display/BumpMapNode.js +0 -99
- package/node_modules/three/examples/jsm/nodes/display/ColorAdjustmentNode.js +0 -99
- package/node_modules/three/examples/jsm/nodes/display/ColorSpaceNode.js +0 -108
- package/node_modules/three/examples/jsm/nodes/display/FrontFacingNode.js +0 -27
- package/node_modules/three/examples/jsm/nodes/display/GaussianBlurNode.js +0 -190
- package/node_modules/three/examples/jsm/nodes/display/NormalMapNode.js +0 -108
- package/node_modules/three/examples/jsm/nodes/display/PassNode.js +0 -183
- package/node_modules/three/examples/jsm/nodes/display/PosterizeNode.js +0 -32
- package/node_modules/three/examples/jsm/nodes/display/ToneMappingNode.js +0 -184
- package/node_modules/three/examples/jsm/nodes/display/ViewportDepthNode.js +0 -97
- package/node_modules/three/examples/jsm/nodes/display/ViewportDepthTextureNode.js +0 -31
- package/node_modules/three/examples/jsm/nodes/display/ViewportNode.js +0 -134
- package/node_modules/three/examples/jsm/nodes/display/ViewportSharedTextureNode.js +0 -31
- package/node_modules/three/examples/jsm/nodes/display/ViewportTextureNode.js +0 -75
- package/node_modules/three/examples/jsm/nodes/fog/FogExp2Node.js +0 -35
- package/node_modules/three/examples/jsm/nodes/fog/FogNode.js +0 -38
- package/node_modules/three/examples/jsm/nodes/fog/FogRangeNode.js +0 -34
- package/node_modules/three/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +0 -40
- package/node_modules/three/examples/jsm/nodes/functions/BSDF/DFGApprox.js +0 -30
- package/node_modules/three/examples/jsm/nodes/functions/PhongLightingModel.js +0 -67
- package/node_modules/three/examples/jsm/nodes/functions/PhysicalLightingModel.js +0 -393
- package/node_modules/three/examples/jsm/nodes/functions/material/getGeometryRoughness.js +0 -13
- package/node_modules/three/examples/jsm/nodes/geometry/RangeNode.js +0 -104
- package/node_modules/three/examples/jsm/nodes/gpgpu/ComputeNode.js +0 -85
- package/node_modules/three/examples/jsm/nodes/lighting/AONode.js +0 -27
- package/node_modules/three/examples/jsm/nodes/lighting/AnalyticLightNode.js +0 -241
- package/node_modules/three/examples/jsm/nodes/lighting/DirectionalLightNode.js +0 -40
- package/node_modules/three/examples/jsm/nodes/lighting/EnvironmentNode.js +0 -181
- package/node_modules/three/examples/jsm/nodes/lighting/HemisphereLightNode.js +0 -55
- package/node_modules/three/examples/jsm/nodes/lighting/LightNode.js +0 -57
- package/node_modules/three/examples/jsm/nodes/lighting/LightUtils.js +0 -17
- package/node_modules/three/examples/jsm/nodes/lighting/LightingContextNode.js +0 -66
- package/node_modules/three/examples/jsm/nodes/lighting/LightingNode.js +0 -21
- package/node_modules/three/examples/jsm/nodes/lighting/LightsNode.js +0 -188
- package/node_modules/three/examples/jsm/nodes/lighting/PointLightNode.js +0 -68
- package/node_modules/three/examples/jsm/nodes/lighting/SpotLightNode.js +0 -89
- package/node_modules/three/examples/jsm/nodes/loaders/NodeLoader.js +0 -108
- package/node_modules/three/examples/jsm/nodes/loaders/NodeMaterialLoader.js +0 -59
- package/node_modules/three/examples/jsm/nodes/loaders/NodeObjectLoader.js +0 -70
- package/node_modules/three/examples/jsm/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
- package/node_modules/three/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +0 -28
- package/node_modules/three/examples/jsm/nodes/materials/LineDashedNodeMaterial.js +0 -54
- package/node_modules/three/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +0 -28
- package/node_modules/three/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +0 -34
- package/node_modules/three/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +0 -40
- package/node_modules/three/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +0 -65
- package/node_modules/three/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +0 -155
- package/node_modules/three/examples/jsm/nodes/materials/MeshSSSNodeMaterial.js +0 -84
- package/node_modules/three/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +0 -80
- package/node_modules/three/examples/jsm/nodes/materials/NodeMaterial.js +0 -570
- package/node_modules/three/examples/jsm/nodes/materials/PointsNodeMaterial.js +0 -39
- package/node_modules/three/examples/jsm/nodes/materials/SpriteNodeMaterial.js +0 -90
- package/node_modules/three/examples/jsm/nodes/materialx/MaterialXNodes.js +0 -68
- package/node_modules/three/examples/jsm/nodes/math/CondNode.js +0 -86
- package/node_modules/three/examples/jsm/nodes/math/HashNode.js +0 -34
- package/node_modules/three/examples/jsm/nodes/math/MathNode.js +0 -371
- package/node_modules/three/examples/jsm/nodes/math/MathUtils.js +0 -15
- package/node_modules/three/examples/jsm/nodes/math/OperatorNode.js +0 -274
- package/node_modules/three/examples/jsm/nodes/procedural/CheckerNode.js +0 -42
- package/node_modules/three/examples/jsm/nodes/shadernode/ShaderNode.js +0 -634
- package/node_modules/three/examples/jsm/nodes/utils/ArrayElementNode.js +0 -41
- package/node_modules/three/examples/jsm/nodes/utils/ConvertNode.js +0 -65
- package/node_modules/three/examples/jsm/nodes/utils/DiscardNode.js +0 -27
- package/node_modules/three/examples/jsm/nodes/utils/EquirectUVNode.js +0 -33
- package/node_modules/three/examples/jsm/nodes/utils/FunctionOverloadingNode.js +0 -95
- package/node_modules/three/examples/jsm/nodes/utils/JoinNode.js +0 -61
- package/node_modules/three/examples/jsm/nodes/utils/LoopNode.js +0 -198
- package/node_modules/three/examples/jsm/nodes/utils/MatcapUVNode.js +0 -30
- package/node_modules/three/examples/jsm/nodes/utils/MaxMipLevelNode.js +0 -46
- package/node_modules/three/examples/jsm/nodes/utils/OscNode.js +0 -81
- package/node_modules/three/examples/jsm/nodes/utils/PackingNode.js +0 -55
- package/node_modules/three/examples/jsm/nodes/utils/ReflectorNode.js +0 -227
- package/node_modules/three/examples/jsm/nodes/utils/RemapNode.js +0 -42
- package/node_modules/three/examples/jsm/nodes/utils/RotateUVNode.js +0 -35
- package/node_modules/three/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -37
- package/node_modules/three/examples/jsm/nodes/utils/SpriteSheetUVNode.js +0 -41
- package/node_modules/three/examples/jsm/nodes/utils/TimerNode.js +0 -94
- package/node_modules/three/examples/jsm/nodes/utils/TriplanarTexturesNode.js +0 -62
- package/node_modules/three/examples/jsm/objects/InstancedPoints.js +0 -21
- package/node_modules/three/examples/jsm/objects/QuadMesh.js +0 -66
- package/node_modules/three/examples/jsm/renderers/common/Animation.js +0 -47
- package/node_modules/three/examples/jsm/renderers/common/Backend.js +0 -195
- package/node_modules/three/examples/jsm/renderers/common/Background.js +0 -134
- package/node_modules/three/examples/jsm/renderers/common/Binding.js +0 -25
- package/node_modules/three/examples/jsm/renderers/common/Bindings.js +0 -173
- package/node_modules/three/examples/jsm/renderers/common/Buffer.js +0 -38
- package/node_modules/three/examples/jsm/renderers/common/BufferUtils.js +0 -33
- package/node_modules/three/examples/jsm/renderers/common/ChainMap.js +0 -89
- package/node_modules/three/examples/jsm/renderers/common/Color4.js +0 -37
- package/node_modules/three/examples/jsm/renderers/common/ComputePipeline.js +0 -17
- package/node_modules/three/examples/jsm/renderers/common/DataMap.js +0 -54
- package/node_modules/three/examples/jsm/renderers/common/Geometries.js +0 -215
- package/node_modules/three/examples/jsm/renderers/common/Info.js +0 -107
- package/node_modules/three/examples/jsm/renderers/common/Pipeline.js +0 -13
- package/node_modules/three/examples/jsm/renderers/common/PostProcessing.js +0 -25
- package/node_modules/three/examples/jsm/renderers/common/ProgrammableStage.js +0 -20
- package/node_modules/three/examples/jsm/renderers/common/RenderContext.js +0 -41
- package/node_modules/three/examples/jsm/renderers/common/RenderContexts.js +0 -74
- package/node_modules/three/examples/jsm/renderers/common/RenderList.js +0 -186
- package/node_modules/three/examples/jsm/renderers/common/RenderLists.js +0 -38
- package/node_modules/three/examples/jsm/renderers/common/RenderObject.js +0 -178
- package/node_modules/three/examples/jsm/renderers/common/RenderObjects.js +0 -91
- package/node_modules/three/examples/jsm/renderers/common/RenderPipeline.js +0 -16
- package/node_modules/three/examples/jsm/renderers/common/Renderer.js +0 -1247
- package/node_modules/three/examples/jsm/renderers/common/SampledTexture.js +0 -83
- package/node_modules/three/examples/jsm/renderers/common/Sampler.js +0 -18
- package/node_modules/three/examples/jsm/renderers/common/StorageBuffer.js +0 -17
- package/node_modules/three/examples/jsm/renderers/common/StorageBufferAttribute.js +0 -17
- package/node_modules/three/examples/jsm/renderers/common/StorageTexture.js +0 -20
- package/node_modules/three/examples/jsm/renderers/common/Textures.js +0 -354
- package/node_modules/three/examples/jsm/renderers/common/Uniform.js +0 -140
- package/node_modules/three/examples/jsm/renderers/common/UniformBuffer.js +0 -15
- package/node_modules/three/examples/jsm/renderers/common/UniformsGroup.js +0 -299
- package/node_modules/three/examples/jsm/renderers/common/nodes/NodeBuilderState.js +0 -44
- package/node_modules/three/examples/jsm/renderers/common/nodes/NodeSampledTexture.js +0 -49
- package/node_modules/three/examples/jsm/renderers/common/nodes/NodeSampler.js +0 -15
- package/node_modules/three/examples/jsm/renderers/common/nodes/NodeUniform.js +0 -135
- package/node_modules/three/examples/jsm/renderers/common/nodes/NodeUniformsGroup.js +0 -44
- package/node_modules/three/examples/jsm/renderers/common/nodes/Nodes.js +0 -495
- package/node_modules/three/examples/jsm/renderers/webgl/WebGLBackend.js +0 -1362
- package/node_modules/three/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +0 -679
- package/node_modules/three/examples/jsm/renderers/webgl/utils/WebGLCapabilities.js +0 -36
- package/node_modules/three/examples/jsm/renderers/webgl/utils/WebGLExtensions.js +0 -36
- package/node_modules/three/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +0 -647
- package/node_modules/three/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +0 -320
- package/node_modules/three/examples/jsm/renderers/webgl-legacy/nodes/SlotNode.js +0 -26
- package/node_modules/three/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +0 -794
- package/node_modules/three/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodes.js +0 -51
- package/node_modules/three/examples/jsm/renderers/webgpu/WebGPUBackend.js +0 -1321
- package/node_modules/three/examples/jsm/renderers/webgpu/WebGPURenderer.js +0 -53
- package/node_modules/three/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +0 -1103
- package/node_modules/three/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +0 -104
- package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +0 -287
- package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +0 -244
- package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +0 -1040
- package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +0 -93
- package/node_modules/three/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/node_modules/three/examples/jsm/utils/GPUStatsPanel.js +0 -128
- package/node_modules/three/examples/jsm/utils/PackedPhongMaterial.js +0 -178
- package/node_modules/three/src/renderers/WebGL1Renderer.js +0 -7
- package/node_modules/three/src/renderers/WebGLMultipleRenderTargets.js +0 -82
- package/node_modules/three/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +0 -10
- /package/node_modules/three/{examples/jsm → src}/nodes/materialx/DISCLAIMER.md +0 -0
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
import { BufferAttribute } from '../core/BufferAttribute.js';
|
|
2
2
|
import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
3
3
|
import { DataTexture } from '../textures/DataTexture.js';
|
|
4
|
-
import { FloatType } from '../constants.js';
|
|
4
|
+
import { FloatType, RedIntegerFormat, UnsignedIntType, RGBAFormat } from '../constants.js';
|
|
5
5
|
import { Matrix4 } from '../math/Matrix4.js';
|
|
6
6
|
import { Mesh } from './Mesh.js';
|
|
7
|
-
import {
|
|
7
|
+
import { ColorManagement } from '../math/ColorManagement.js';
|
|
8
8
|
import { Box3 } from '../math/Box3.js';
|
|
9
9
|
import { Sphere } from '../math/Sphere.js';
|
|
10
10
|
import { Frustum } from '../math/Frustum.js';
|
|
11
11
|
import { Vector3 } from '../math/Vector3.js';
|
|
12
|
+
import { Color } from '../math/Color.js';
|
|
13
|
+
import { FrustumArray } from '../math/FrustumArray.js';
|
|
14
|
+
|
|
15
|
+
function ascIdSort( a, b ) {
|
|
16
|
+
|
|
17
|
+
return a - b;
|
|
18
|
+
|
|
19
|
+
}
|
|
12
20
|
|
|
13
21
|
function sortOpaque( a, b ) {
|
|
14
22
|
|
|
@@ -32,7 +40,7 @@ class MultiDrawRenderList {
|
|
|
32
40
|
|
|
33
41
|
}
|
|
34
42
|
|
|
35
|
-
push(
|
|
43
|
+
push( start, count, z, index ) {
|
|
36
44
|
|
|
37
45
|
const pool = this.pool;
|
|
38
46
|
const list = this.list;
|
|
@@ -43,6 +51,7 @@ class MultiDrawRenderList {
|
|
|
43
51
|
start: - 1,
|
|
44
52
|
count: - 1,
|
|
45
53
|
z: - 1,
|
|
54
|
+
index: - 1,
|
|
46
55
|
|
|
47
56
|
} );
|
|
48
57
|
|
|
@@ -52,9 +61,10 @@ class MultiDrawRenderList {
|
|
|
52
61
|
list.push( item );
|
|
53
62
|
this.index ++;
|
|
54
63
|
|
|
55
|
-
item.start =
|
|
56
|
-
item.count =
|
|
64
|
+
item.start = start;
|
|
65
|
+
item.count = count;
|
|
57
66
|
item.z = z;
|
|
67
|
+
item.index = index;
|
|
58
68
|
|
|
59
69
|
}
|
|
60
70
|
|
|
@@ -67,26 +77,19 @@ class MultiDrawRenderList {
|
|
|
67
77
|
|
|
68
78
|
}
|
|
69
79
|
|
|
70
|
-
const ID_ATTR_NAME = 'batchId';
|
|
71
80
|
const _matrix = /*@__PURE__*/ new Matrix4();
|
|
72
|
-
const
|
|
73
|
-
const _identityMatrix = /*@__PURE__*/ new Matrix4();
|
|
74
|
-
const _projScreenMatrix = /*@__PURE__*/ new Matrix4();
|
|
81
|
+
const _whiteColor = /*@__PURE__*/ new Color( 1, 1, 1 );
|
|
75
82
|
const _frustum = /*@__PURE__*/ new Frustum();
|
|
83
|
+
const _frustumArray = /*@__PURE__*/ new FrustumArray();
|
|
76
84
|
const _box = /*@__PURE__*/ new Box3();
|
|
77
85
|
const _sphere = /*@__PURE__*/ new Sphere();
|
|
78
86
|
const _vector = /*@__PURE__*/ new Vector3();
|
|
87
|
+
const _forward = /*@__PURE__*/ new Vector3();
|
|
88
|
+
const _temp = /*@__PURE__*/ new Vector3();
|
|
79
89
|
const _renderList = /*@__PURE__*/ new MultiDrawRenderList();
|
|
80
90
|
const _mesh = /*@__PURE__*/ new Mesh();
|
|
81
91
|
const _batchIntersects = [];
|
|
82
92
|
|
|
83
|
-
// @TODO: SkinnedMesh support?
|
|
84
|
-
// @TODO: geometry.groups support?
|
|
85
|
-
// @TODO: geometry.drawRange support?
|
|
86
|
-
// @TODO: geometry.morphAttributes support?
|
|
87
|
-
// @TODO: Support uniform parameter per geometry
|
|
88
|
-
// @TODO: Add an "optimize" function to pack geometry and remove data gaps
|
|
89
|
-
|
|
90
93
|
// copies data from attribute "src" into "target" starting at "targetOffset"
|
|
91
94
|
function copyAttributeData( src, target, targetOffset = 0 ) {
|
|
92
95
|
|
|
@@ -117,47 +120,215 @@ function copyAttributeData( src, target, targetOffset = 0 ) {
|
|
|
117
120
|
|
|
118
121
|
}
|
|
119
122
|
|
|
120
|
-
|
|
123
|
+
// safely copies array contents to a potentially smaller array
|
|
124
|
+
function copyArrayContents( src, target ) {
|
|
125
|
+
|
|
126
|
+
if ( src.constructor !== target.constructor ) {
|
|
121
127
|
|
|
122
|
-
|
|
128
|
+
// if arrays are of a different type (eg due to index size increasing) then data must be per-element copied
|
|
129
|
+
const len = Math.min( src.length, target.length );
|
|
130
|
+
for ( let i = 0; i < len; i ++ ) {
|
|
123
131
|
|
|
124
|
-
|
|
132
|
+
target[ i ] = src[ i ];
|
|
133
|
+
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
} else {
|
|
137
|
+
|
|
138
|
+
// if the arrays use the same data layout we can use a fast block copy
|
|
139
|
+
const len = Math.min( src.length, target.length );
|
|
140
|
+
target.set( new src.constructor( src.buffer, 0, len ) );
|
|
125
141
|
|
|
126
142
|
}
|
|
127
143
|
|
|
128
|
-
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* A special version of a mesh with multi draw batch rendering support. Use
|
|
148
|
+
* this class if you have to render a large number of objects with the same
|
|
149
|
+
* material but with different geometries or world transformations. The usage of
|
|
150
|
+
* `BatchedMesh` will help you to reduce the number of draw calls and thus improve the overall
|
|
151
|
+
* rendering performance in your application.
|
|
152
|
+
*
|
|
153
|
+
* ```js
|
|
154
|
+
* const box = new THREE.BoxGeometry( 1, 1, 1 );
|
|
155
|
+
* const sphere = new THREE.SphereGeometry( 1, 12, 12 );
|
|
156
|
+
* const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
|
|
157
|
+
*
|
|
158
|
+
* // initialize and add geometries into the batched mesh
|
|
159
|
+
* const batchedMesh = new BatchedMesh( 10, 5000, 10000, material );
|
|
160
|
+
* const boxGeometryId = batchedMesh.addGeometry( box );
|
|
161
|
+
* const sphereGeometryId = batchedMesh.addGeometry( sphere );
|
|
162
|
+
*
|
|
163
|
+
* // create instances of those geometries
|
|
164
|
+
* const boxInstancedId1 = batchedMesh.addInstance( boxGeometryId );
|
|
165
|
+
* const boxInstancedId2 = batchedMesh.addInstance( boxGeometryId );
|
|
166
|
+
*
|
|
167
|
+
* const sphereInstancedId1 = batchedMesh.addInstance( sphereGeometryId );
|
|
168
|
+
* const sphereInstancedId2 = batchedMesh.addInstance( sphereGeometryId );
|
|
169
|
+
*
|
|
170
|
+
* // position the geometries
|
|
171
|
+
* batchedMesh.setMatrixAt( boxInstancedId1, boxMatrix1 );
|
|
172
|
+
* batchedMesh.setMatrixAt( boxInstancedId2, boxMatrix2 );
|
|
173
|
+
*
|
|
174
|
+
* batchedMesh.setMatrixAt( sphereInstancedId1, sphereMatrix1 );
|
|
175
|
+
* batchedMesh.setMatrixAt( sphereInstancedId2, sphereMatrix2 );
|
|
176
|
+
*
|
|
177
|
+
* scene.add( batchedMesh );
|
|
178
|
+
* ```
|
|
179
|
+
*
|
|
180
|
+
* @augments Mesh
|
|
181
|
+
*/
|
|
182
|
+
class BatchedMesh extends Mesh {
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Constructs a new batched mesh.
|
|
186
|
+
*
|
|
187
|
+
* @param {number} maxInstanceCount - The maximum number of individual instances planned to be added and rendered.
|
|
188
|
+
* @param {number} maxVertexCount - The maximum number of vertices to be used by all unique geometries.
|
|
189
|
+
* @param {number} [maxIndexCount=maxVertexCount*2] - The maximum number of indices to be used by all unique geometries
|
|
190
|
+
* @param {Material|Array<Material>} [material] - The mesh material.
|
|
191
|
+
*/
|
|
192
|
+
constructor( maxInstanceCount, maxVertexCount, maxIndexCount = maxVertexCount * 2, material ) {
|
|
129
193
|
|
|
130
194
|
super( new BufferGeometry(), material );
|
|
131
195
|
|
|
196
|
+
/**
|
|
197
|
+
* This flag can be used for type testing.
|
|
198
|
+
*
|
|
199
|
+
* @type {boolean}
|
|
200
|
+
* @readonly
|
|
201
|
+
* @default true
|
|
202
|
+
*/
|
|
132
203
|
this.isBatchedMesh = true;
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* When set ot `true`, the individual objects of a batch are frustum culled.
|
|
207
|
+
*
|
|
208
|
+
* @type {boolean}
|
|
209
|
+
* @default true
|
|
210
|
+
*/
|
|
133
211
|
this.perObjectFrustumCulled = true;
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* When set to `true`, the individual objects of a batch are sorted to improve overdraw-related artifacts.
|
|
215
|
+
* If the material is marked as "transparent" objects are rendered back to front and if not then they are
|
|
216
|
+
* rendered front to back.
|
|
217
|
+
*
|
|
218
|
+
* @type {boolean}
|
|
219
|
+
* @default true
|
|
220
|
+
*/
|
|
134
221
|
this.sortObjects = true;
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* The bounding box of the batched mesh. Can be computed via {@link BatchedMesh#computeBoundingBox}.
|
|
225
|
+
*
|
|
226
|
+
* @type {?Box3}
|
|
227
|
+
* @default null
|
|
228
|
+
*/
|
|
135
229
|
this.boundingBox = null;
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* The bounding sphere of the batched mesh. Can be computed via {@link BatchedMesh#computeBoundingSphere}.
|
|
233
|
+
*
|
|
234
|
+
* @type {?Sphere}
|
|
235
|
+
* @default null
|
|
236
|
+
*/
|
|
136
237
|
this.boundingSphere = null;
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Takes a sort a function that is run before render. The function takes a list of instances to
|
|
241
|
+
* sort and a camera. The objects in the list include a "z" field to perform a depth-ordered
|
|
242
|
+
* sort with.
|
|
243
|
+
*
|
|
244
|
+
* @type {?Function}
|
|
245
|
+
* @default null
|
|
246
|
+
*/
|
|
137
247
|
this.customSort = null;
|
|
138
248
|
|
|
139
|
-
|
|
140
|
-
this.
|
|
249
|
+
// stores visible, active, and geometry id per instance and reserved buffer ranges for geometries
|
|
250
|
+
this._instanceInfo = [];
|
|
251
|
+
this._geometryInfo = [];
|
|
252
|
+
|
|
253
|
+
// instance, geometry ids that have been set as inactive, and are available to be overwritten
|
|
254
|
+
this._availableInstanceIds = [];
|
|
255
|
+
this._availableGeometryIds = [];
|
|
256
|
+
|
|
257
|
+
// used to track where the next point is that geometry should be inserted
|
|
258
|
+
this._nextIndexStart = 0;
|
|
259
|
+
this._nextVertexStart = 0;
|
|
260
|
+
this._geometryCount = 0;
|
|
141
261
|
|
|
142
|
-
|
|
143
|
-
this.
|
|
144
|
-
this.
|
|
262
|
+
// flags
|
|
263
|
+
this._visibilityChanged = true;
|
|
264
|
+
this._geometryInitialized = false;
|
|
145
265
|
|
|
146
|
-
|
|
266
|
+
// cached user options
|
|
267
|
+
this._maxInstanceCount = maxInstanceCount;
|
|
147
268
|
this._maxVertexCount = maxVertexCount;
|
|
148
269
|
this._maxIndexCount = maxIndexCount;
|
|
149
270
|
|
|
150
|
-
|
|
151
|
-
this.
|
|
152
|
-
this.
|
|
153
|
-
this._multiDrawStarts = new Int32Array( maxGeometryCount );
|
|
271
|
+
// buffers for multi draw
|
|
272
|
+
this._multiDrawCounts = new Int32Array( maxInstanceCount );
|
|
273
|
+
this._multiDrawStarts = new Int32Array( maxInstanceCount );
|
|
154
274
|
this._multiDrawCount = 0;
|
|
155
|
-
this.
|
|
275
|
+
this._multiDrawInstances = null;
|
|
156
276
|
|
|
157
277
|
// Local matrix per geometry by using data texture
|
|
158
278
|
this._matricesTexture = null;
|
|
279
|
+
this._indirectTexture = null;
|
|
280
|
+
this._colorsTexture = null;
|
|
159
281
|
|
|
160
282
|
this._initMatricesTexture();
|
|
283
|
+
this._initIndirectTexture();
|
|
284
|
+
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* The maximum number of individual instances that can be stored in the batch.
|
|
289
|
+
*
|
|
290
|
+
* @type {number}
|
|
291
|
+
* @readonly
|
|
292
|
+
*/
|
|
293
|
+
get maxInstanceCount() {
|
|
294
|
+
|
|
295
|
+
return this._maxInstanceCount;
|
|
296
|
+
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* The instance count.
|
|
301
|
+
*
|
|
302
|
+
* @type {number}
|
|
303
|
+
* @readonly
|
|
304
|
+
*/
|
|
305
|
+
get instanceCount() {
|
|
306
|
+
|
|
307
|
+
return this._instanceInfo.length - this._availableInstanceIds.length;
|
|
308
|
+
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* The number of unused vertices.
|
|
313
|
+
*
|
|
314
|
+
* @type {number}
|
|
315
|
+
* @readonly
|
|
316
|
+
*/
|
|
317
|
+
get unusedVertexCount() {
|
|
318
|
+
|
|
319
|
+
return this._maxVertexCount - this._nextVertexStart;
|
|
320
|
+
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* The number of unused indices.
|
|
325
|
+
*
|
|
326
|
+
* @type {number}
|
|
327
|
+
* @readonly
|
|
328
|
+
*/
|
|
329
|
+
get unusedIndexCount() {
|
|
330
|
+
|
|
331
|
+
return this._maxIndexCount - this._nextIndexStart;
|
|
161
332
|
|
|
162
333
|
}
|
|
163
334
|
|
|
@@ -170,7 +341,7 @@ class BatchedMesh extends Mesh {
|
|
|
170
341
|
// 32x32 pixel texture max 256 matrices * 4 pixels = (32 * 32)
|
|
171
342
|
// 64x64 pixel texture max 1024 matrices * 4 pixels = (64 * 64)
|
|
172
343
|
|
|
173
|
-
let size = Math.sqrt( this.
|
|
344
|
+
let size = Math.sqrt( this._maxInstanceCount * 4 ); // 4 pixels needed for 1 matrix
|
|
174
345
|
size = Math.ceil( size / 4 ) * 4;
|
|
175
346
|
size = Math.max( size, 4 );
|
|
176
347
|
|
|
@@ -181,11 +352,36 @@ class BatchedMesh extends Mesh {
|
|
|
181
352
|
|
|
182
353
|
}
|
|
183
354
|
|
|
355
|
+
_initIndirectTexture() {
|
|
356
|
+
|
|
357
|
+
let size = Math.sqrt( this._maxInstanceCount );
|
|
358
|
+
size = Math.ceil( size );
|
|
359
|
+
|
|
360
|
+
const indirectArray = new Uint32Array( size * size );
|
|
361
|
+
const indirectTexture = new DataTexture( indirectArray, size, size, RedIntegerFormat, UnsignedIntType );
|
|
362
|
+
|
|
363
|
+
this._indirectTexture = indirectTexture;
|
|
364
|
+
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
_initColorsTexture() {
|
|
368
|
+
|
|
369
|
+
let size = Math.sqrt( this._maxInstanceCount );
|
|
370
|
+
size = Math.ceil( size );
|
|
371
|
+
|
|
372
|
+
// 4 floats per RGBA pixel initialized to white
|
|
373
|
+
const colorsArray = new Float32Array( size * size * 4 ).fill( 1 );
|
|
374
|
+
const colorsTexture = new DataTexture( colorsArray, size, size, RGBAFormat, FloatType );
|
|
375
|
+
colorsTexture.colorSpace = ColorManagement.workingColorSpace;
|
|
376
|
+
|
|
377
|
+
this._colorsTexture = colorsTexture;
|
|
378
|
+
|
|
379
|
+
}
|
|
380
|
+
|
|
184
381
|
_initializeGeometry( reference ) {
|
|
185
382
|
|
|
186
383
|
const geometry = this.geometry;
|
|
187
384
|
const maxVertexCount = this._maxVertexCount;
|
|
188
|
-
const maxGeometryCount = this._maxGeometryCount;
|
|
189
385
|
const maxIndexCount = this._maxIndexCount;
|
|
190
386
|
if ( this._geometryInitialized === false ) {
|
|
191
387
|
|
|
@@ -195,8 +391,7 @@ class BatchedMesh extends Mesh {
|
|
|
195
391
|
const { array, itemSize, normalized } = srcAttribute;
|
|
196
392
|
|
|
197
393
|
const dstArray = new array.constructor( maxVertexCount * itemSize );
|
|
198
|
-
const dstAttribute = new
|
|
199
|
-
dstAttribute.setUsage( srcAttribute.usage );
|
|
394
|
+
const dstAttribute = new BufferAttribute( dstArray, itemSize, normalized );
|
|
200
395
|
|
|
201
396
|
geometry.setAttribute( attributeName, dstAttribute );
|
|
202
397
|
|
|
@@ -204,7 +399,8 @@ class BatchedMesh extends Mesh {
|
|
|
204
399
|
|
|
205
400
|
if ( reference.getIndex() !== null ) {
|
|
206
401
|
|
|
207
|
-
|
|
402
|
+
// Reserve last u16 index for primitive restart.
|
|
403
|
+
const indexArray = maxVertexCount > 65535
|
|
208
404
|
? new Uint32Array( maxIndexCount )
|
|
209
405
|
: new Uint16Array( maxIndexCount );
|
|
210
406
|
|
|
@@ -212,46 +408,28 @@ class BatchedMesh extends Mesh {
|
|
|
212
408
|
|
|
213
409
|
}
|
|
214
410
|
|
|
215
|
-
const idArray = maxGeometryCount > 65536
|
|
216
|
-
? new Uint32Array( maxVertexCount )
|
|
217
|
-
: new Uint16Array( maxVertexCount );
|
|
218
|
-
geometry.setAttribute( ID_ATTR_NAME, new BufferAttribute( idArray, 1 ) );
|
|
219
|
-
|
|
220
411
|
this._geometryInitialized = true;
|
|
221
412
|
|
|
222
413
|
}
|
|
223
414
|
|
|
224
415
|
}
|
|
225
416
|
|
|
226
|
-
// Make sure the geometry is compatible with the existing combined geometry
|
|
417
|
+
// Make sure the geometry is compatible with the existing combined geometry attributes
|
|
227
418
|
_validateGeometry( geometry ) {
|
|
228
419
|
|
|
229
|
-
// check that the geometry doesn't have a version of our reserved id attribute
|
|
230
|
-
if ( geometry.getAttribute( ID_ATTR_NAME ) ) {
|
|
231
|
-
|
|
232
|
-
throw new Error( `BatchedMesh: Geometry cannot use attribute "${ ID_ATTR_NAME }"` );
|
|
233
|
-
|
|
234
|
-
}
|
|
235
|
-
|
|
236
420
|
// check to ensure the geometries are using consistent attributes and indices
|
|
237
421
|
const batchGeometry = this.geometry;
|
|
238
422
|
if ( Boolean( geometry.getIndex() ) !== Boolean( batchGeometry.getIndex() ) ) {
|
|
239
423
|
|
|
240
|
-
throw new Error( 'BatchedMesh: All geometries must consistently have "index".' );
|
|
424
|
+
throw new Error( 'THREE.BatchedMesh: All geometries must consistently have "index".' );
|
|
241
425
|
|
|
242
426
|
}
|
|
243
427
|
|
|
244
428
|
for ( const attributeName in batchGeometry.attributes ) {
|
|
245
429
|
|
|
246
|
-
if ( attributeName === ID_ATTR_NAME ) {
|
|
247
|
-
|
|
248
|
-
continue;
|
|
249
|
-
|
|
250
|
-
}
|
|
251
|
-
|
|
252
430
|
if ( ! geometry.hasAttribute( attributeName ) ) {
|
|
253
431
|
|
|
254
|
-
throw new Error( `BatchedMesh: Added geometry missing "${ attributeName }". All geometries must have consistent attributes.` );
|
|
432
|
+
throw new Error( `THREE.BatchedMesh: Added geometry missing "${ attributeName }". All geometries must have consistent attributes.` );
|
|
255
433
|
|
|
256
434
|
}
|
|
257
435
|
|
|
@@ -259,7 +437,7 @@ class BatchedMesh extends Mesh {
|
|
|
259
437
|
const dstAttribute = batchGeometry.getAttribute( attributeName );
|
|
260
438
|
if ( srcAttribute.itemSize !== dstAttribute.itemSize || srcAttribute.normalized !== dstAttribute.normalized ) {
|
|
261
439
|
|
|
262
|
-
throw new Error( 'BatchedMesh: All attributes must have a consistent itemSize and normalized value.' );
|
|
440
|
+
throw new Error( 'THREE.BatchedMesh: All attributes must have a consistent itemSize and normalized value.' );
|
|
263
441
|
|
|
264
442
|
}
|
|
265
443
|
|
|
@@ -267,6 +445,45 @@ class BatchedMesh extends Mesh {
|
|
|
267
445
|
|
|
268
446
|
}
|
|
269
447
|
|
|
448
|
+
/**
|
|
449
|
+
* Validates the instance defined by the given ID.
|
|
450
|
+
*
|
|
451
|
+
* @param {number} instanceId - The instance to validate.
|
|
452
|
+
*/
|
|
453
|
+
validateInstanceId( instanceId ) {
|
|
454
|
+
|
|
455
|
+
const instanceInfo = this._instanceInfo;
|
|
456
|
+
if ( instanceId < 0 || instanceId >= instanceInfo.length || instanceInfo[ instanceId ].active === false ) {
|
|
457
|
+
|
|
458
|
+
throw new Error( `THREE.BatchedMesh: Invalid instanceId ${instanceId}. Instance is either out of range or has been deleted.` );
|
|
459
|
+
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
/**
|
|
465
|
+
* Validates the geometry defined by the given ID.
|
|
466
|
+
*
|
|
467
|
+
* @param {number} geometryId - The geometry to validate.
|
|
468
|
+
*/
|
|
469
|
+
validateGeometryId( geometryId ) {
|
|
470
|
+
|
|
471
|
+
const geometryInfoList = this._geometryInfo;
|
|
472
|
+
if ( geometryId < 0 || geometryId >= geometryInfoList.length || geometryInfoList[ geometryId ].active === false ) {
|
|
473
|
+
|
|
474
|
+
throw new Error( `THREE.BatchedMesh: Invalid geometryId ${geometryId}. Geometry is either out of range or has been deleted.` );
|
|
475
|
+
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
/**
|
|
481
|
+
* Takes a sort a function that is run before render. The function takes a list of instances to
|
|
482
|
+
* sort and a camera. The objects in the list include a "z" field to perform a depth-ordered sort with.
|
|
483
|
+
*
|
|
484
|
+
* @param {Function} func - The custom sort function.
|
|
485
|
+
* @return {BatchedMesh} A reference to this batched mesh.
|
|
486
|
+
*/
|
|
270
487
|
setCustomSort( func ) {
|
|
271
488
|
|
|
272
489
|
this.customSort = func;
|
|
@@ -274,6 +491,11 @@ class BatchedMesh extends Mesh {
|
|
|
274
491
|
|
|
275
492
|
}
|
|
276
493
|
|
|
494
|
+
/**
|
|
495
|
+
* Computes the bounding box, updating {@link BatchedMesh#boundingBox}.
|
|
496
|
+
* Bounding boxes aren't computed by default. They need to be explicitly computed,
|
|
497
|
+
* otherwise they are `null`.
|
|
498
|
+
*/
|
|
277
499
|
computeBoundingBox() {
|
|
278
500
|
|
|
279
501
|
if ( this.boundingBox === null ) {
|
|
@@ -282,23 +504,28 @@ class BatchedMesh extends Mesh {
|
|
|
282
504
|
|
|
283
505
|
}
|
|
284
506
|
|
|
285
|
-
const geometryCount = this._geometryCount;
|
|
286
507
|
const boundingBox = this.boundingBox;
|
|
287
|
-
const
|
|
508
|
+
const instanceInfo = this._instanceInfo;
|
|
288
509
|
|
|
289
510
|
boundingBox.makeEmpty();
|
|
290
|
-
for ( let i = 0; i <
|
|
511
|
+
for ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {
|
|
291
512
|
|
|
292
|
-
if (
|
|
513
|
+
if ( instanceInfo[ i ].active === false ) continue;
|
|
293
514
|
|
|
515
|
+
const geometryId = instanceInfo[ i ].geometryIndex;
|
|
294
516
|
this.getMatrixAt( i, _matrix );
|
|
295
|
-
this.getBoundingBoxAt(
|
|
517
|
+
this.getBoundingBoxAt( geometryId, _box ).applyMatrix4( _matrix );
|
|
296
518
|
boundingBox.union( _box );
|
|
297
519
|
|
|
298
520
|
}
|
|
299
521
|
|
|
300
522
|
}
|
|
301
523
|
|
|
524
|
+
/**
|
|
525
|
+
* Computes the bounding sphere, updating {@link BatchedMesh#boundingSphere}.
|
|
526
|
+
* Bounding spheres aren't computed by default. They need to be explicitly computed,
|
|
527
|
+
* otherwise they are `null`.
|
|
528
|
+
*/
|
|
302
529
|
computeBoundingSphere() {
|
|
303
530
|
|
|
304
531
|
if ( this.boundingSphere === null ) {
|
|
@@ -307,163 +534,188 @@ class BatchedMesh extends Mesh {
|
|
|
307
534
|
|
|
308
535
|
}
|
|
309
536
|
|
|
310
|
-
const geometryCount = this._geometryCount;
|
|
311
537
|
const boundingSphere = this.boundingSphere;
|
|
312
|
-
const
|
|
538
|
+
const instanceInfo = this._instanceInfo;
|
|
313
539
|
|
|
314
540
|
boundingSphere.makeEmpty();
|
|
315
|
-
for ( let i = 0; i <
|
|
541
|
+
for ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {
|
|
316
542
|
|
|
317
|
-
if (
|
|
543
|
+
if ( instanceInfo[ i ].active === false ) continue;
|
|
318
544
|
|
|
545
|
+
const geometryId = instanceInfo[ i ].geometryIndex;
|
|
319
546
|
this.getMatrixAt( i, _matrix );
|
|
320
|
-
this.getBoundingSphereAt(
|
|
547
|
+
this.getBoundingSphereAt( geometryId, _sphere ).applyMatrix4( _matrix );
|
|
321
548
|
boundingSphere.union( _sphere );
|
|
322
549
|
|
|
323
550
|
}
|
|
324
551
|
|
|
325
552
|
}
|
|
326
553
|
|
|
327
|
-
|
|
554
|
+
/**
|
|
555
|
+
* Adds a new instance to the batch using the geometry of the given ID and returns
|
|
556
|
+
* a new id referring to the new instance to be used by other functions.
|
|
557
|
+
*
|
|
558
|
+
* @param {number} geometryId - The ID of a previously added geometry via {@link BatchedMesh#addGeometry}.
|
|
559
|
+
* @return {number} The instance ID.
|
|
560
|
+
*/
|
|
561
|
+
addInstance( geometryId ) {
|
|
328
562
|
|
|
329
|
-
this.
|
|
330
|
-
|
|
331
|
-
this._validateGeometry( geometry );
|
|
563
|
+
const atCapacity = this._instanceInfo.length >= this.maxInstanceCount;
|
|
332
564
|
|
|
333
565
|
// ensure we're not over geometry
|
|
334
|
-
if (
|
|
566
|
+
if ( atCapacity && this._availableInstanceIds.length === 0 ) {
|
|
335
567
|
|
|
336
|
-
throw new Error( 'BatchedMesh: Maximum
|
|
568
|
+
throw new Error( 'THREE.BatchedMesh: Maximum item count reached.' );
|
|
337
569
|
|
|
338
570
|
}
|
|
339
571
|
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
indexStart: - 1,
|
|
345
|
-
indexCount: - 1,
|
|
572
|
+
const instanceInfo = {
|
|
573
|
+
visible: true,
|
|
574
|
+
active: true,
|
|
575
|
+
geometryIndex: geometryId,
|
|
346
576
|
};
|
|
347
577
|
|
|
348
|
-
let
|
|
349
|
-
const reservedRanges = this._reservedRanges;
|
|
350
|
-
const drawRanges = this._drawRanges;
|
|
351
|
-
const bounds = this._bounds;
|
|
352
|
-
if ( this._geometryCount !== 0 ) {
|
|
578
|
+
let drawId = null;
|
|
353
579
|
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
}
|
|
580
|
+
// Prioritize using previously freed instance ids
|
|
581
|
+
if ( this._availableInstanceIds.length > 0 ) {
|
|
357
582
|
|
|
358
|
-
|
|
583
|
+
this._availableInstanceIds.sort( ascIdSort );
|
|
359
584
|
|
|
360
|
-
|
|
585
|
+
drawId = this._availableInstanceIds.shift();
|
|
586
|
+
this._instanceInfo[ drawId ] = instanceInfo;
|
|
361
587
|
|
|
362
588
|
} else {
|
|
363
589
|
|
|
364
|
-
|
|
590
|
+
drawId = this._instanceInfo.length;
|
|
591
|
+
this._instanceInfo.push( instanceInfo );
|
|
365
592
|
|
|
366
593
|
}
|
|
367
594
|
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
595
|
+
const matricesTexture = this._matricesTexture;
|
|
596
|
+
_matrix.identity().toArray( matricesTexture.image.data, drawId * 16 );
|
|
597
|
+
matricesTexture.needsUpdate = true;
|
|
371
598
|
|
|
372
|
-
|
|
599
|
+
const colorsTexture = this._colorsTexture;
|
|
600
|
+
if ( colorsTexture ) {
|
|
373
601
|
|
|
374
|
-
|
|
602
|
+
_whiteColor.toArray( colorsTexture.image.data, drawId * 4 );
|
|
603
|
+
colorsTexture.needsUpdate = true;
|
|
375
604
|
|
|
376
605
|
}
|
|
377
606
|
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
if ( hasIndex ) {
|
|
607
|
+
this._visibilityChanged = true;
|
|
608
|
+
return drawId;
|
|
381
609
|
|
|
382
|
-
|
|
610
|
+
}
|
|
383
611
|
|
|
384
|
-
|
|
612
|
+
/**
|
|
613
|
+
* Adds the given geometry to the batch and returns the associated
|
|
614
|
+
* geometry id referring to it to be used in other functions.
|
|
615
|
+
*
|
|
616
|
+
* @param {BufferGeometry} geometry - The geometry to add.
|
|
617
|
+
* @param {number} [reservedVertexCount=-1] - Optional parameter specifying the amount of
|
|
618
|
+
* vertex buffer space to reserve for the added geometry. This is necessary if it is planned
|
|
619
|
+
* to set a new geometry at this index at a later time that is larger than the original geometry.
|
|
620
|
+
* Defaults to the length of the given geometry vertex buffer.
|
|
621
|
+
* @param {number} [reservedIndexCount=-1] - Optional parameter specifying the amount of index
|
|
622
|
+
* buffer space to reserve for the added geometry. This is necessary if it is planned to set a
|
|
623
|
+
* new geometry at this index at a later time that is larger than the original geometry. Defaults to
|
|
624
|
+
* the length of the given geometry index buffer.
|
|
625
|
+
* @return {number} The geometry ID.
|
|
626
|
+
*/
|
|
627
|
+
addGeometry( geometry, reservedVertexCount = - 1, reservedIndexCount = - 1 ) {
|
|
385
628
|
|
|
386
|
-
|
|
629
|
+
this._initializeGeometry( geometry );
|
|
387
630
|
|
|
388
|
-
|
|
631
|
+
this._validateGeometry( geometry );
|
|
389
632
|
|
|
390
|
-
|
|
633
|
+
const geometryInfo = {
|
|
634
|
+
// geometry information
|
|
635
|
+
vertexStart: - 1,
|
|
636
|
+
vertexCount: - 1,
|
|
637
|
+
reservedVertexCount: - 1,
|
|
391
638
|
|
|
392
|
-
|
|
639
|
+
indexStart: - 1,
|
|
640
|
+
indexCount: - 1,
|
|
641
|
+
reservedIndexCount: - 1,
|
|
393
642
|
|
|
394
|
-
|
|
643
|
+
// draw range information
|
|
644
|
+
start: - 1,
|
|
645
|
+
count: - 1,
|
|
395
646
|
|
|
396
|
-
|
|
647
|
+
// state
|
|
648
|
+
boundingBox: null,
|
|
649
|
+
boundingSphere: null,
|
|
650
|
+
active: true,
|
|
651
|
+
};
|
|
397
652
|
|
|
398
|
-
|
|
653
|
+
const geometryInfoList = this._geometryInfo;
|
|
654
|
+
geometryInfo.vertexStart = this._nextVertexStart;
|
|
655
|
+
geometryInfo.reservedVertexCount = reservedVertexCount === - 1 ? geometry.getAttribute( 'position' ).count : reservedVertexCount;
|
|
399
656
|
|
|
400
|
-
|
|
657
|
+
const index = geometry.getIndex();
|
|
658
|
+
const hasIndex = index !== null;
|
|
659
|
+
if ( hasIndex ) {
|
|
660
|
+
|
|
661
|
+
geometryInfo.indexStart = this._nextIndexStart;
|
|
662
|
+
geometryInfo.reservedIndexCount = reservedIndexCount === - 1 ? index.count : reservedIndexCount;
|
|
401
663
|
|
|
402
664
|
}
|
|
403
665
|
|
|
404
666
|
if (
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
667
|
+
geometryInfo.indexStart !== - 1 &&
|
|
668
|
+
geometryInfo.indexStart + geometryInfo.reservedIndexCount > this._maxIndexCount ||
|
|
669
|
+
geometryInfo.vertexStart + geometryInfo.reservedVertexCount > this._maxVertexCount
|
|
408
670
|
) {
|
|
409
671
|
|
|
410
|
-
throw new Error( 'BatchedMesh: Reserved space request exceeds the maximum buffer size.' );
|
|
672
|
+
throw new Error( 'THREE.BatchedMesh: Reserved space request exceeds the maximum buffer size.' );
|
|
411
673
|
|
|
412
674
|
}
|
|
413
675
|
|
|
414
|
-
const visibility = this._visibility;
|
|
415
|
-
const active = this._active;
|
|
416
|
-
const matricesTexture = this._matricesTexture;
|
|
417
|
-
const matricesArray = this._matricesTexture.image.data;
|
|
418
|
-
|
|
419
|
-
// push new visibility states
|
|
420
|
-
visibility.push( true );
|
|
421
|
-
active.push( true );
|
|
422
|
-
|
|
423
676
|
// update id
|
|
424
|
-
|
|
425
|
-
this.
|
|
677
|
+
let geometryId;
|
|
678
|
+
if ( this._availableGeometryIds.length > 0 ) {
|
|
426
679
|
|
|
427
|
-
|
|
428
|
-
_identityMatrix.toArray( matricesArray, geometryId * 16 );
|
|
429
|
-
matricesTexture.needsUpdate = true;
|
|
680
|
+
this._availableGeometryIds.sort( ascIdSort );
|
|
430
681
|
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
drawRanges.push( {
|
|
434
|
-
start: hasIndex ? reservedRange.indexStart : reservedRange.vertexStart,
|
|
435
|
-
count: - 1
|
|
436
|
-
} );
|
|
437
|
-
bounds.push( {
|
|
438
|
-
boxInitialized: false,
|
|
439
|
-
box: new Box3(),
|
|
682
|
+
geometryId = this._availableGeometryIds.shift();
|
|
683
|
+
geometryInfoList[ geometryId ] = geometryInfo;
|
|
440
684
|
|
|
441
|
-
sphereInitialized: false,
|
|
442
|
-
sphere: new Sphere()
|
|
443
|
-
} );
|
|
444
685
|
|
|
445
|
-
|
|
446
|
-
const idAttribute = this.geometry.getAttribute( ID_ATTR_NAME );
|
|
447
|
-
for ( let i = 0; i < reservedRange.vertexCount; i ++ ) {
|
|
686
|
+
} else {
|
|
448
687
|
|
|
449
|
-
|
|
688
|
+
geometryId = this._geometryCount;
|
|
689
|
+
this._geometryCount ++;
|
|
690
|
+
geometryInfoList.push( geometryInfo );
|
|
450
691
|
|
|
451
692
|
}
|
|
452
693
|
|
|
453
|
-
idAttribute.needsUpdate = true;
|
|
454
|
-
|
|
455
694
|
// update the geometry
|
|
456
695
|
this.setGeometryAt( geometryId, geometry );
|
|
457
696
|
|
|
697
|
+
// increment the next geometry position
|
|
698
|
+
this._nextIndexStart = geometryInfo.indexStart + geometryInfo.reservedIndexCount;
|
|
699
|
+
this._nextVertexStart = geometryInfo.vertexStart + geometryInfo.reservedVertexCount;
|
|
700
|
+
|
|
458
701
|
return geometryId;
|
|
459
702
|
|
|
460
703
|
}
|
|
461
704
|
|
|
462
|
-
|
|
705
|
+
/**
|
|
706
|
+
* Replaces the geometry at the given ID with the provided geometry. Throws an error if there
|
|
707
|
+
* is not enough space reserved for geometry. Calling this will change all instances that are
|
|
708
|
+
* rendering that geometry.
|
|
709
|
+
*
|
|
710
|
+
* @param {number} geometryId - The ID of the geometry that should be replaced with the given geometry.
|
|
711
|
+
* @param {BufferGeometry} geometry - The new geometry.
|
|
712
|
+
* @return {number} The geometry ID.
|
|
713
|
+
*/
|
|
714
|
+
setGeometryAt( geometryId, geometry ) {
|
|
463
715
|
|
|
464
|
-
if (
|
|
716
|
+
if ( geometryId >= this._geometryCount ) {
|
|
465
717
|
|
|
466
|
-
throw new Error( 'BatchedMesh: Maximum geometry count reached.' );
|
|
718
|
+
throw new Error( 'THREE.BatchedMesh: Maximum geometry count reached.' );
|
|
467
719
|
|
|
468
720
|
}
|
|
469
721
|
|
|
@@ -473,27 +725,23 @@ class BatchedMesh extends Mesh {
|
|
|
473
725
|
const hasIndex = batchGeometry.getIndex() !== null;
|
|
474
726
|
const dstIndex = batchGeometry.getIndex();
|
|
475
727
|
const srcIndex = geometry.getIndex();
|
|
476
|
-
const
|
|
728
|
+
const geometryInfo = this._geometryInfo[ geometryId ];
|
|
477
729
|
if (
|
|
478
730
|
hasIndex &&
|
|
479
|
-
srcIndex.count >
|
|
480
|
-
geometry.attributes.position.count >
|
|
731
|
+
srcIndex.count > geometryInfo.reservedIndexCount ||
|
|
732
|
+
geometry.attributes.position.count > geometryInfo.reservedVertexCount
|
|
481
733
|
) {
|
|
482
734
|
|
|
483
|
-
throw new Error( 'BatchedMesh: Reserved space not large enough for provided geometry.' );
|
|
735
|
+
throw new Error( 'THREE.BatchedMesh: Reserved space not large enough for provided geometry.' );
|
|
484
736
|
|
|
485
737
|
}
|
|
486
738
|
|
|
487
|
-
// copy geometry over
|
|
488
|
-
const vertexStart =
|
|
489
|
-
const
|
|
490
|
-
|
|
739
|
+
// copy geometry buffer data over
|
|
740
|
+
const vertexStart = geometryInfo.vertexStart;
|
|
741
|
+
const reservedVertexCount = geometryInfo.reservedVertexCount;
|
|
742
|
+
geometryInfo.vertexCount = geometry.getAttribute( 'position' ).count;
|
|
491
743
|
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
continue;
|
|
495
|
-
|
|
496
|
-
}
|
|
744
|
+
for ( const attributeName in batchGeometry.attributes ) {
|
|
497
745
|
|
|
498
746
|
// copy attribute data
|
|
499
747
|
const srcAttribute = geometry.getAttribute( attributeName );
|
|
@@ -502,7 +750,7 @@ class BatchedMesh extends Mesh {
|
|
|
502
750
|
|
|
503
751
|
// fill the rest in with zeroes
|
|
504
752
|
const itemSize = srcAttribute.itemSize;
|
|
505
|
-
for ( let i = srcAttribute.count, l =
|
|
753
|
+
for ( let i = srcAttribute.count, l = reservedVertexCount; i < l; i ++ ) {
|
|
506
754
|
|
|
507
755
|
const index = vertexStart + i;
|
|
508
756
|
for ( let c = 0; c < itemSize; c ++ ) {
|
|
@@ -514,13 +762,16 @@ class BatchedMesh extends Mesh {
|
|
|
514
762
|
}
|
|
515
763
|
|
|
516
764
|
dstAttribute.needsUpdate = true;
|
|
765
|
+
dstAttribute.addUpdateRange( vertexStart * itemSize, reservedVertexCount * itemSize );
|
|
517
766
|
|
|
518
767
|
}
|
|
519
768
|
|
|
520
769
|
// copy index
|
|
521
770
|
if ( hasIndex ) {
|
|
522
771
|
|
|
523
|
-
const indexStart =
|
|
772
|
+
const indexStart = geometryInfo.indexStart;
|
|
773
|
+
const reservedIndexCount = geometryInfo.reservedIndexCount;
|
|
774
|
+
geometryInfo.indexCount = geometry.getIndex().count;
|
|
524
775
|
|
|
525
776
|
// copy index data over
|
|
526
777
|
for ( let i = 0; i < srcIndex.count; i ++ ) {
|
|
@@ -530,90 +781,215 @@ class BatchedMesh extends Mesh {
|
|
|
530
781
|
}
|
|
531
782
|
|
|
532
783
|
// fill the rest in with zeroes
|
|
533
|
-
for ( let i = srcIndex.count, l =
|
|
784
|
+
for ( let i = srcIndex.count, l = reservedIndexCount; i < l; i ++ ) {
|
|
534
785
|
|
|
535
786
|
dstIndex.setX( indexStart + i, vertexStart );
|
|
536
787
|
|
|
537
788
|
}
|
|
538
789
|
|
|
539
790
|
dstIndex.needsUpdate = true;
|
|
791
|
+
dstIndex.addUpdateRange( indexStart, geometryInfo.reservedIndexCount );
|
|
540
792
|
|
|
541
793
|
}
|
|
542
794
|
|
|
795
|
+
// update the draw range
|
|
796
|
+
geometryInfo.start = hasIndex ? geometryInfo.indexStart : geometryInfo.vertexStart;
|
|
797
|
+
geometryInfo.count = hasIndex ? geometryInfo.indexCount : geometryInfo.vertexCount;
|
|
798
|
+
|
|
543
799
|
// store the bounding boxes
|
|
544
|
-
|
|
800
|
+
geometryInfo.boundingBox = null;
|
|
545
801
|
if ( geometry.boundingBox !== null ) {
|
|
546
802
|
|
|
547
|
-
|
|
548
|
-
bound.boxInitialized = true;
|
|
803
|
+
geometryInfo.boundingBox = geometry.boundingBox.clone();
|
|
549
804
|
|
|
550
|
-
}
|
|
805
|
+
}
|
|
551
806
|
|
|
552
|
-
|
|
807
|
+
geometryInfo.boundingSphere = null;
|
|
808
|
+
if ( geometry.boundingSphere !== null ) {
|
|
809
|
+
|
|
810
|
+
geometryInfo.boundingSphere = geometry.boundingSphere.clone();
|
|
553
811
|
|
|
554
812
|
}
|
|
555
813
|
|
|
556
|
-
|
|
814
|
+
this._visibilityChanged = true;
|
|
815
|
+
return geometryId;
|
|
557
816
|
|
|
558
|
-
|
|
559
|
-
bound.sphereInitialized = true;
|
|
817
|
+
}
|
|
560
818
|
|
|
561
|
-
|
|
819
|
+
/**
|
|
820
|
+
* Deletes the geometry defined by the given ID from this batch. Any instances referencing
|
|
821
|
+
* this geometry will also be removed as a side effect.
|
|
822
|
+
*
|
|
823
|
+
* @param {number} geometryId - The ID of the geometry to remove from the batch.
|
|
824
|
+
* @return {BatchedMesh} A reference to this batched mesh.
|
|
825
|
+
*/
|
|
826
|
+
deleteGeometry( geometryId ) {
|
|
827
|
+
|
|
828
|
+
const geometryInfoList = this._geometryInfo;
|
|
829
|
+
if ( geometryId >= geometryInfoList.length || geometryInfoList[ geometryId ].active === false ) {
|
|
830
|
+
|
|
831
|
+
return this;
|
|
832
|
+
|
|
833
|
+
}
|
|
834
|
+
|
|
835
|
+
// delete any instances associated with this geometry
|
|
836
|
+
const instanceInfo = this._instanceInfo;
|
|
837
|
+
for ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {
|
|
838
|
+
|
|
839
|
+
if ( instanceInfo[ i ].active && instanceInfo[ i ].geometryIndex === geometryId ) {
|
|
562
840
|
|
|
563
|
-
|
|
841
|
+
this.deleteInstance( i );
|
|
842
|
+
|
|
843
|
+
}
|
|
564
844
|
|
|
565
845
|
}
|
|
566
846
|
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
const posAttr = geometry.getAttribute( 'position' );
|
|
570
|
-
drawRange.count = hasIndex ? srcIndex.count : posAttr.count;
|
|
847
|
+
geometryInfoList[ geometryId ].active = false;
|
|
848
|
+
this._availableGeometryIds.push( geometryId );
|
|
571
849
|
this._visibilityChanged = true;
|
|
572
850
|
|
|
573
|
-
return
|
|
851
|
+
return this;
|
|
574
852
|
|
|
575
853
|
}
|
|
576
854
|
|
|
577
|
-
|
|
855
|
+
/**
|
|
856
|
+
* Deletes an existing instance from the batch using the given ID.
|
|
857
|
+
*
|
|
858
|
+
* @param {number} instanceId - The ID of the instance to remove from the batch.
|
|
859
|
+
* @return {BatchedMesh} A reference to this batched mesh.
|
|
860
|
+
*/
|
|
861
|
+
deleteInstance( instanceId ) {
|
|
578
862
|
|
|
579
|
-
|
|
863
|
+
this.validateInstanceId( instanceId );
|
|
580
864
|
|
|
581
|
-
|
|
582
|
-
|
|
865
|
+
this._instanceInfo[ instanceId ].active = false;
|
|
866
|
+
this._availableInstanceIds.push( instanceId );
|
|
867
|
+
this._visibilityChanged = true;
|
|
583
868
|
|
|
584
|
-
|
|
869
|
+
return this;
|
|
585
870
|
|
|
586
|
-
|
|
871
|
+
}
|
|
587
872
|
|
|
588
|
-
|
|
589
|
-
|
|
873
|
+
/**
|
|
874
|
+
* Repacks the sub geometries in [name] to remove any unused space remaining from
|
|
875
|
+
* previously deleted geometry, freeing up space to add new geometry.
|
|
876
|
+
*
|
|
877
|
+
* @param {number} instanceId - The ID of the instance to remove from the batch.
|
|
878
|
+
* @return {BatchedMesh} A reference to this batched mesh.
|
|
879
|
+
*/
|
|
880
|
+
optimize() {
|
|
881
|
+
|
|
882
|
+
// track the next indices to copy data to
|
|
883
|
+
let nextVertexStart = 0;
|
|
884
|
+
let nextIndexStart = 0;
|
|
885
|
+
|
|
886
|
+
// Iterate over all geometry ranges in order sorted from earliest in the geometry buffer to latest
|
|
887
|
+
// in the geometry buffer. Because draw range objects can be reused there is no guarantee of their order.
|
|
888
|
+
const geometryInfoList = this._geometryInfo;
|
|
889
|
+
const indices = geometryInfoList
|
|
890
|
+
.map( ( e, i ) => i )
|
|
891
|
+
.sort( ( a, b ) => {
|
|
892
|
+
|
|
893
|
+
return geometryInfoList[ a ].vertexStart - geometryInfoList[ b ].vertexStart;
|
|
894
|
+
|
|
895
|
+
} );
|
|
896
|
+
|
|
897
|
+
const geometry = this.geometry;
|
|
898
|
+
for ( let i = 0, l = geometryInfoList.length; i < l; i ++ ) {
|
|
899
|
+
|
|
900
|
+
// if a geometry range is inactive then don't copy anything
|
|
901
|
+
const index = indices[ i ];
|
|
902
|
+
const geometryInfo = geometryInfoList[ index ];
|
|
903
|
+
if ( geometryInfo.active === false ) {
|
|
904
|
+
|
|
905
|
+
continue;
|
|
906
|
+
|
|
907
|
+
}
|
|
908
|
+
|
|
909
|
+
// if a geometry contains an index buffer then shift it, as well
|
|
910
|
+
if ( geometry.index !== null ) {
|
|
911
|
+
|
|
912
|
+
if ( geometryInfo.indexStart !== nextIndexStart ) {
|
|
913
|
+
|
|
914
|
+
const { indexStart, vertexStart, reservedIndexCount } = geometryInfo;
|
|
915
|
+
const index = geometry.index;
|
|
916
|
+
const array = index.array;
|
|
917
|
+
|
|
918
|
+
// shift the index pointers based on how the vertex data will shift
|
|
919
|
+
// adjusting the index must happen first so the original vertex start value is available
|
|
920
|
+
const elementDelta = nextVertexStart - vertexStart;
|
|
921
|
+
for ( let j = indexStart; j < indexStart + reservedIndexCount; j ++ ) {
|
|
922
|
+
|
|
923
|
+
array[ j ] = array[ j ] + elementDelta;
|
|
924
|
+
|
|
925
|
+
}
|
|
926
|
+
|
|
927
|
+
index.array.copyWithin( nextIndexStart, indexStart, indexStart + reservedIndexCount );
|
|
928
|
+
index.addUpdateRange( nextIndexStart, reservedIndexCount );
|
|
929
|
+
|
|
930
|
+
geometryInfo.indexStart = nextIndexStart;
|
|
931
|
+
|
|
932
|
+
}
|
|
933
|
+
|
|
934
|
+
nextIndexStart += geometryInfo.reservedIndexCount;
|
|
935
|
+
|
|
936
|
+
}
|
|
937
|
+
|
|
938
|
+
// if a geometry needs to be moved then copy attribute data to overwrite unused space
|
|
939
|
+
if ( geometryInfo.vertexStart !== nextVertexStart ) {
|
|
940
|
+
|
|
941
|
+
const { vertexStart, reservedVertexCount } = geometryInfo;
|
|
942
|
+
const attributes = geometry.attributes;
|
|
943
|
+
for ( const key in attributes ) {
|
|
944
|
+
|
|
945
|
+
const attribute = attributes[ key ];
|
|
946
|
+
const { array, itemSize } = attribute;
|
|
947
|
+
array.copyWithin( nextVertexStart * itemSize, vertexStart * itemSize, ( vertexStart + reservedVertexCount ) * itemSize );
|
|
948
|
+
attribute.addUpdateRange( nextVertexStart * itemSize, reservedVertexCount * itemSize );
|
|
949
|
+
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
geometryInfo.vertexStart = nextVertexStart;
|
|
953
|
+
|
|
954
|
+
}
|
|
955
|
+
|
|
956
|
+
nextVertexStart += geometryInfo.reservedVertexCount;
|
|
957
|
+
geometryInfo.start = geometry.index ? geometryInfo.indexStart : geometryInfo.vertexStart;
|
|
958
|
+
|
|
959
|
+
// step the next geometry points to the shifted position
|
|
960
|
+
this._nextIndexStart = geometry.index ? geometryInfo.indexStart + geometryInfo.reservedIndexCount : 0;
|
|
961
|
+
this._nextVertexStart = geometryInfo.vertexStart + geometryInfo.reservedVertexCount;
|
|
962
|
+
|
|
963
|
+
}
|
|
590
964
|
|
|
591
965
|
return this;
|
|
592
966
|
|
|
593
967
|
}
|
|
594
968
|
|
|
595
|
-
|
|
596
|
-
|
|
969
|
+
/**
|
|
970
|
+
* Returns the bounding box for the given geometry.
|
|
971
|
+
*
|
|
972
|
+
* @param {number} geometryId - The ID of the geometry to return the bounding box for.
|
|
973
|
+
* @param {Box3} target - The target object that is used to store the method's result.
|
|
974
|
+
* @return {?Box3} The geometry's bounding box. Returns `null` if no geometry has been found for the given ID.
|
|
975
|
+
*/
|
|
976
|
+
getBoundingBoxAt( geometryId, target ) {
|
|
597
977
|
|
|
598
|
-
|
|
599
|
-
if ( active[ id ] === false ) {
|
|
978
|
+
if ( geometryId >= this._geometryCount ) {
|
|
600
979
|
|
|
601
980
|
return null;
|
|
602
981
|
|
|
603
982
|
}
|
|
604
983
|
|
|
605
984
|
// compute bounding box
|
|
606
|
-
const bound = this._bounds[ id ];
|
|
607
|
-
const box = bound.box;
|
|
608
985
|
const geometry = this.geometry;
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
box.makeEmpty();
|
|
986
|
+
const geometryInfo = this._geometryInfo[ geometryId ];
|
|
987
|
+
if ( geometryInfo.boundingBox === null ) {
|
|
612
988
|
|
|
989
|
+
const box = new Box3();
|
|
613
990
|
const index = geometry.index;
|
|
614
991
|
const position = geometry.attributes.position;
|
|
615
|
-
|
|
616
|
-
for ( let i = drawRange.start, l = drawRange.start + drawRange.count; i < l; i ++ ) {
|
|
992
|
+
for ( let i = geometryInfo.start, l = geometryInfo.start + geometryInfo.count; i < l; i ++ ) {
|
|
617
993
|
|
|
618
994
|
let iv = i;
|
|
619
995
|
if ( index ) {
|
|
@@ -626,42 +1002,44 @@ class BatchedMesh extends Mesh {
|
|
|
626
1002
|
|
|
627
1003
|
}
|
|
628
1004
|
|
|
629
|
-
|
|
1005
|
+
geometryInfo.boundingBox = box;
|
|
630
1006
|
|
|
631
1007
|
}
|
|
632
1008
|
|
|
633
|
-
target.copy(
|
|
1009
|
+
target.copy( geometryInfo.boundingBox );
|
|
634
1010
|
return target;
|
|
635
1011
|
|
|
636
1012
|
}
|
|
637
1013
|
|
|
638
|
-
|
|
639
|
-
|
|
1014
|
+
/**
|
|
1015
|
+
* Returns the bounding sphere for the given geometry.
|
|
1016
|
+
*
|
|
1017
|
+
* @param {number} geometryId - The ID of the geometry to return the bounding sphere for.
|
|
1018
|
+
* @param {Sphere} target - The target object that is used to store the method's result.
|
|
1019
|
+
* @return {?Sphere} The geometry's bounding sphere. Returns `null` if no geometry has been found for the given ID.
|
|
1020
|
+
*/
|
|
1021
|
+
getBoundingSphereAt( geometryId, target ) {
|
|
640
1022
|
|
|
641
|
-
|
|
642
|
-
if ( active[ id ] === false ) {
|
|
1023
|
+
if ( geometryId >= this._geometryCount ) {
|
|
643
1024
|
|
|
644
1025
|
return null;
|
|
645
1026
|
|
|
646
1027
|
}
|
|
647
1028
|
|
|
648
1029
|
// compute bounding sphere
|
|
649
|
-
const bound = this._bounds[ id ];
|
|
650
|
-
const sphere = bound.sphere;
|
|
651
1030
|
const geometry = this.geometry;
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
sphere.makeEmpty();
|
|
1031
|
+
const geometryInfo = this._geometryInfo[ geometryId ];
|
|
1032
|
+
if ( geometryInfo.boundingSphere === null ) {
|
|
655
1033
|
|
|
656
|
-
|
|
1034
|
+
const sphere = new Sphere();
|
|
1035
|
+
this.getBoundingBoxAt( geometryId, _box );
|
|
657
1036
|
_box.getCenter( sphere.center );
|
|
658
1037
|
|
|
659
1038
|
const index = geometry.index;
|
|
660
1039
|
const position = geometry.attributes.position;
|
|
661
|
-
const drawRange = this._drawRanges[ id ];
|
|
662
1040
|
|
|
663
1041
|
let maxRadiusSq = 0;
|
|
664
|
-
for ( let i =
|
|
1042
|
+
for ( let i = geometryInfo.start, l = geometryInfo.start + geometryInfo.count; i < l; i ++ ) {
|
|
665
1043
|
|
|
666
1044
|
let iv = i;
|
|
667
1045
|
if ( index ) {
|
|
@@ -676,100 +1054,319 @@ class BatchedMesh extends Mesh {
|
|
|
676
1054
|
}
|
|
677
1055
|
|
|
678
1056
|
sphere.radius = Math.sqrt( maxRadiusSq );
|
|
679
|
-
|
|
1057
|
+
geometryInfo.boundingSphere = sphere;
|
|
680
1058
|
|
|
681
1059
|
}
|
|
682
1060
|
|
|
683
|
-
target.copy(
|
|
1061
|
+
target.copy( geometryInfo.boundingSphere );
|
|
684
1062
|
return target;
|
|
685
1063
|
|
|
686
1064
|
}
|
|
687
1065
|
|
|
688
|
-
|
|
1066
|
+
/**
|
|
1067
|
+
* Sets the given local transformation matrix to the defined instance.
|
|
1068
|
+
* Negatively scaled matrices are not supported.
|
|
1069
|
+
*
|
|
1070
|
+
* @param {number} instanceId - The ID of an instance to set the matrix of.
|
|
1071
|
+
* @param {Matrix4} matrix - A 4x4 matrix representing the local transformation of a single instance.
|
|
1072
|
+
* @return {BatchedMesh} A reference to this batched mesh.
|
|
1073
|
+
*/
|
|
1074
|
+
setMatrixAt( instanceId, matrix ) {
|
|
689
1075
|
|
|
690
|
-
|
|
691
|
-
// optimize() can make geometryId mismatch the index
|
|
1076
|
+
this.validateInstanceId( instanceId );
|
|
692
1077
|
|
|
693
|
-
const active = this._active;
|
|
694
1078
|
const matricesTexture = this._matricesTexture;
|
|
695
1079
|
const matricesArray = this._matricesTexture.image.data;
|
|
696
|
-
|
|
697
|
-
|
|
1080
|
+
matrix.toArray( matricesArray, instanceId * 16 );
|
|
1081
|
+
matricesTexture.needsUpdate = true;
|
|
698
1082
|
|
|
699
|
-
|
|
1083
|
+
return this;
|
|
700
1084
|
|
|
701
|
-
|
|
1085
|
+
}
|
|
702
1086
|
|
|
703
|
-
|
|
704
|
-
|
|
1087
|
+
/**
|
|
1088
|
+
* Returns the local transformation matrix of the defined instance.
|
|
1089
|
+
*
|
|
1090
|
+
* @param {number} instanceId - The ID of an instance to get the matrix of.
|
|
1091
|
+
* @param {Matrix4} matrix - The target object that is used to store the method's result.
|
|
1092
|
+
* @return {Matrix4} The instance's local transformation matrix.
|
|
1093
|
+
*/
|
|
1094
|
+
getMatrixAt( instanceId, matrix ) {
|
|
705
1095
|
|
|
706
|
-
|
|
1096
|
+
this.validateInstanceId( instanceId );
|
|
1097
|
+
return matrix.fromArray( this._matricesTexture.image.data, instanceId * 16 );
|
|
707
1098
|
|
|
708
1099
|
}
|
|
709
1100
|
|
|
710
|
-
|
|
1101
|
+
/**
|
|
1102
|
+
* Sets the given color to the defined instance.
|
|
1103
|
+
*
|
|
1104
|
+
* @param {number} instanceId - The ID of an instance to set the color of.
|
|
1105
|
+
* @param {Color} color - The color to set the instance to.
|
|
1106
|
+
* @return {BatchedMesh} A reference to this batched mesh.
|
|
1107
|
+
*/
|
|
1108
|
+
setColorAt( instanceId, color ) {
|
|
711
1109
|
|
|
712
|
-
|
|
713
|
-
const matricesArray = this._matricesTexture.image.data;
|
|
714
|
-
const geometryCount = this._geometryCount;
|
|
715
|
-
if ( geometryId >= geometryCount || active[ geometryId ] === false ) {
|
|
1110
|
+
this.validateInstanceId( instanceId );
|
|
716
1111
|
|
|
717
|
-
|
|
1112
|
+
if ( this._colorsTexture === null ) {
|
|
1113
|
+
|
|
1114
|
+
this._initColorsTexture();
|
|
718
1115
|
|
|
719
1116
|
}
|
|
720
1117
|
|
|
721
|
-
|
|
1118
|
+
color.toArray( this._colorsTexture.image.data, instanceId * 4 );
|
|
1119
|
+
this._colorsTexture.needsUpdate = true;
|
|
1120
|
+
|
|
1121
|
+
return this;
|
|
722
1122
|
|
|
723
1123
|
}
|
|
724
1124
|
|
|
725
|
-
|
|
1125
|
+
/**
|
|
1126
|
+
* Returns the color of the defined instance.
|
|
1127
|
+
*
|
|
1128
|
+
* @param {number} instanceId - The ID of an instance to get the color of.
|
|
1129
|
+
* @param {Color} color - The target object that is used to store the method's result.
|
|
1130
|
+
* @return {Color} The instance's color.
|
|
1131
|
+
*/
|
|
1132
|
+
getColorAt( instanceId, color ) {
|
|
726
1133
|
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
const geometryCount = this._geometryCount;
|
|
1134
|
+
this.validateInstanceId( instanceId );
|
|
1135
|
+
return color.fromArray( this._colorsTexture.image.data, instanceId * 4 );
|
|
730
1136
|
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
1137
|
+
}
|
|
1138
|
+
|
|
1139
|
+
/**
|
|
1140
|
+
* Sets the visibility of the instance.
|
|
1141
|
+
*
|
|
1142
|
+
* @param {number} instanceId - The id of the instance to set the visibility of.
|
|
1143
|
+
* @param {boolean} visible - Whether the instance is visible or not.
|
|
1144
|
+
* @return {BatchedMesh} A reference to this batched mesh.
|
|
1145
|
+
*/
|
|
1146
|
+
setVisibleAt( instanceId, visible ) {
|
|
1147
|
+
|
|
1148
|
+
this.validateInstanceId( instanceId );
|
|
1149
|
+
|
|
1150
|
+
if ( this._instanceInfo[ instanceId ].visible === visible ) {
|
|
738
1151
|
|
|
739
1152
|
return this;
|
|
740
1153
|
|
|
741
1154
|
}
|
|
742
1155
|
|
|
743
|
-
|
|
1156
|
+
this._instanceInfo[ instanceId ].visible = visible;
|
|
744
1157
|
this._visibilityChanged = true;
|
|
745
1158
|
|
|
746
1159
|
return this;
|
|
747
1160
|
|
|
748
1161
|
}
|
|
749
1162
|
|
|
750
|
-
|
|
1163
|
+
/**
|
|
1164
|
+
* Returns the visibility state of the defined instance.
|
|
1165
|
+
*
|
|
1166
|
+
* @param {number} instanceId - The ID of an instance to get the visibility state of.
|
|
1167
|
+
* @return {boolean} Whether the instance is visible or not.
|
|
1168
|
+
*/
|
|
1169
|
+
getVisibleAt( instanceId ) {
|
|
1170
|
+
|
|
1171
|
+
this.validateInstanceId( instanceId );
|
|
1172
|
+
|
|
1173
|
+
return this._instanceInfo[ instanceId ].visible;
|
|
1174
|
+
|
|
1175
|
+
}
|
|
1176
|
+
|
|
1177
|
+
/**
|
|
1178
|
+
* Sets the geometry ID of the instance at the given index.
|
|
1179
|
+
*
|
|
1180
|
+
* @param {number} instanceId - The ID of the instance to set the geometry ID of.
|
|
1181
|
+
* @param {number} geometryId - The geometry ID to be use by the instance.
|
|
1182
|
+
* @return {BatchedMesh} A reference to this batched mesh.
|
|
1183
|
+
*/
|
|
1184
|
+
setGeometryIdAt( instanceId, geometryId ) {
|
|
1185
|
+
|
|
1186
|
+
this.validateInstanceId( instanceId );
|
|
1187
|
+
this.validateGeometryId( geometryId );
|
|
1188
|
+
|
|
1189
|
+
this._instanceInfo[ instanceId ].geometryIndex = geometryId;
|
|
1190
|
+
|
|
1191
|
+
return this;
|
|
1192
|
+
|
|
1193
|
+
}
|
|
1194
|
+
|
|
1195
|
+
/**
|
|
1196
|
+
* Returns the geometry ID of the defined instance.
|
|
1197
|
+
*
|
|
1198
|
+
* @param {number} instanceId - The ID of an instance to get the geometry ID of.
|
|
1199
|
+
* @return {number} The instance's geometry ID.
|
|
1200
|
+
*/
|
|
1201
|
+
getGeometryIdAt( instanceId ) {
|
|
1202
|
+
|
|
1203
|
+
this.validateInstanceId( instanceId );
|
|
1204
|
+
|
|
1205
|
+
return this._instanceInfo[ instanceId ].geometryIndex;
|
|
1206
|
+
|
|
1207
|
+
}
|
|
1208
|
+
|
|
1209
|
+
/**
|
|
1210
|
+
* Get the range representing the subset of triangles related to the attached geometry,
|
|
1211
|
+
* indicating the starting offset and count, or `null` if invalid.
|
|
1212
|
+
*
|
|
1213
|
+
* @param {number} geometryId - The id of the geometry to get the range of.
|
|
1214
|
+
* @param {Object} [target] - The target object that is used to store the method's result.
|
|
1215
|
+
* @return {{
|
|
1216
|
+
* vertexStart:number,vertexCount:number,reservedVertexCount:number,
|
|
1217
|
+
* indexStart:number,indexCount:number,reservedIndexCount:number,
|
|
1218
|
+
* start:number,count:number
|
|
1219
|
+
* }} The result object with range data.
|
|
1220
|
+
*/
|
|
1221
|
+
getGeometryRangeAt( geometryId, target = {} ) {
|
|
1222
|
+
|
|
1223
|
+
this.validateGeometryId( geometryId );
|
|
1224
|
+
|
|
1225
|
+
const geometryInfo = this._geometryInfo[ geometryId ];
|
|
1226
|
+
target.vertexStart = geometryInfo.vertexStart;
|
|
1227
|
+
target.vertexCount = geometryInfo.vertexCount;
|
|
1228
|
+
target.reservedVertexCount = geometryInfo.reservedVertexCount;
|
|
1229
|
+
|
|
1230
|
+
target.indexStart = geometryInfo.indexStart;
|
|
1231
|
+
target.indexCount = geometryInfo.indexCount;
|
|
1232
|
+
target.reservedIndexCount = geometryInfo.reservedIndexCount;
|
|
1233
|
+
|
|
1234
|
+
target.start = geometryInfo.start;
|
|
1235
|
+
target.count = geometryInfo.count;
|
|
1236
|
+
|
|
1237
|
+
return target;
|
|
1238
|
+
|
|
1239
|
+
}
|
|
751
1240
|
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
1241
|
+
/**
|
|
1242
|
+
* Resizes the necessary buffers to support the provided number of instances.
|
|
1243
|
+
* If the provided arguments shrink the number of instances but there are not enough
|
|
1244
|
+
* unused Ids at the end of the list then an error is thrown.
|
|
1245
|
+
*
|
|
1246
|
+
* @param {number} maxInstanceCount - The max number of individual instances that can be added and rendered by the batch.
|
|
1247
|
+
*/
|
|
1248
|
+
setInstanceCount( maxInstanceCount ) {
|
|
755
1249
|
|
|
756
|
-
//
|
|
757
|
-
|
|
1250
|
+
// shrink the available instances as much as possible
|
|
1251
|
+
const availableInstanceIds = this._availableInstanceIds;
|
|
1252
|
+
const instanceInfo = this._instanceInfo;
|
|
1253
|
+
availableInstanceIds.sort( ascIdSort );
|
|
1254
|
+
while ( availableInstanceIds[ availableInstanceIds.length - 1 ] === instanceInfo.length - 1 ) {
|
|
758
1255
|
|
|
759
|
-
|
|
1256
|
+
instanceInfo.pop();
|
|
1257
|
+
availableInstanceIds.pop();
|
|
760
1258
|
|
|
761
1259
|
}
|
|
762
1260
|
|
|
763
|
-
|
|
1261
|
+
// throw an error if it can't be shrunk to the desired size
|
|
1262
|
+
if ( maxInstanceCount < instanceInfo.length ) {
|
|
1263
|
+
|
|
1264
|
+
throw new Error( `BatchedMesh: Instance ids outside the range ${ maxInstanceCount } are being used. Cannot shrink instance count.` );
|
|
1265
|
+
|
|
1266
|
+
}
|
|
1267
|
+
|
|
1268
|
+
// copy the multi draw counts
|
|
1269
|
+
const multiDrawCounts = new Int32Array( maxInstanceCount );
|
|
1270
|
+
const multiDrawStarts = new Int32Array( maxInstanceCount );
|
|
1271
|
+
copyArrayContents( this._multiDrawCounts, multiDrawCounts );
|
|
1272
|
+
copyArrayContents( this._multiDrawStarts, multiDrawStarts );
|
|
1273
|
+
|
|
1274
|
+
this._multiDrawCounts = multiDrawCounts;
|
|
1275
|
+
this._multiDrawStarts = multiDrawStarts;
|
|
1276
|
+
this._maxInstanceCount = maxInstanceCount;
|
|
1277
|
+
|
|
1278
|
+
// update texture data for instance sampling
|
|
1279
|
+
const indirectTexture = this._indirectTexture;
|
|
1280
|
+
const matricesTexture = this._matricesTexture;
|
|
1281
|
+
const colorsTexture = this._colorsTexture;
|
|
1282
|
+
|
|
1283
|
+
indirectTexture.dispose();
|
|
1284
|
+
this._initIndirectTexture();
|
|
1285
|
+
copyArrayContents( indirectTexture.image.data, this._indirectTexture.image.data );
|
|
1286
|
+
|
|
1287
|
+
matricesTexture.dispose();
|
|
1288
|
+
this._initMatricesTexture();
|
|
1289
|
+
copyArrayContents( matricesTexture.image.data, this._matricesTexture.image.data );
|
|
1290
|
+
|
|
1291
|
+
if ( colorsTexture ) {
|
|
1292
|
+
|
|
1293
|
+
colorsTexture.dispose();
|
|
1294
|
+
this._initColorsTexture();
|
|
1295
|
+
copyArrayContents( colorsTexture.image.data, this._colorsTexture.image.data );
|
|
1296
|
+
|
|
1297
|
+
}
|
|
1298
|
+
|
|
1299
|
+
}
|
|
1300
|
+
|
|
1301
|
+
/**
|
|
1302
|
+
* Resizes the available space in the batch's vertex and index buffer attributes to the provided sizes.
|
|
1303
|
+
* If the provided arguments shrink the geometry buffers but there is not enough unused space at the
|
|
1304
|
+
* end of the geometry attributes then an error is thrown.
|
|
1305
|
+
*
|
|
1306
|
+
* @param {number} maxVertexCount - The maximum number of vertices to be used by all unique geometries to resize to.
|
|
1307
|
+
* @param {number} maxIndexCount - The maximum number of indices to be used by all unique geometries to resize to.
|
|
1308
|
+
*/
|
|
1309
|
+
setGeometrySize( maxVertexCount, maxIndexCount ) {
|
|
1310
|
+
|
|
1311
|
+
// Check if we can shrink to the requested vertex attribute size
|
|
1312
|
+
const validRanges = [ ...this._geometryInfo ].filter( info => info.active );
|
|
1313
|
+
const requiredVertexLength = Math.max( ...validRanges.map( range => range.vertexStart + range.reservedVertexCount ) );
|
|
1314
|
+
if ( requiredVertexLength > maxVertexCount ) {
|
|
1315
|
+
|
|
1316
|
+
throw new Error( `BatchedMesh: Geometry vertex values are being used outside the range ${ maxIndexCount }. Cannot shrink further.` );
|
|
1317
|
+
|
|
1318
|
+
}
|
|
1319
|
+
|
|
1320
|
+
// Check if we can shrink to the requested index attribute size
|
|
1321
|
+
if ( this.geometry.index ) {
|
|
1322
|
+
|
|
1323
|
+
const requiredIndexLength = Math.max( ...validRanges.map( range => range.indexStart + range.reservedIndexCount ) );
|
|
1324
|
+
if ( requiredIndexLength > maxIndexCount ) {
|
|
1325
|
+
|
|
1326
|
+
throw new Error( `BatchedMesh: Geometry index values are being used outside the range ${ maxIndexCount }. Cannot shrink further.` );
|
|
1327
|
+
|
|
1328
|
+
}
|
|
1329
|
+
|
|
1330
|
+
}
|
|
1331
|
+
|
|
1332
|
+
//
|
|
1333
|
+
|
|
1334
|
+
// dispose of the previous geometry
|
|
1335
|
+
const oldGeometry = this.geometry;
|
|
1336
|
+
oldGeometry.dispose();
|
|
1337
|
+
|
|
1338
|
+
// recreate the geometry needed based on the previous variant
|
|
1339
|
+
this._maxVertexCount = maxVertexCount;
|
|
1340
|
+
this._maxIndexCount = maxIndexCount;
|
|
1341
|
+
|
|
1342
|
+
if ( this._geometryInitialized ) {
|
|
1343
|
+
|
|
1344
|
+
this._geometryInitialized = false;
|
|
1345
|
+
this.geometry = new BufferGeometry();
|
|
1346
|
+
this._initializeGeometry( oldGeometry );
|
|
1347
|
+
|
|
1348
|
+
}
|
|
1349
|
+
|
|
1350
|
+
// copy data from the previous geometry
|
|
1351
|
+
const geometry = this.geometry;
|
|
1352
|
+
if ( oldGeometry.index ) {
|
|
1353
|
+
|
|
1354
|
+
copyArrayContents( oldGeometry.index.array, geometry.index.array );
|
|
1355
|
+
|
|
1356
|
+
}
|
|
1357
|
+
|
|
1358
|
+
for ( const key in oldGeometry.attributes ) {
|
|
1359
|
+
|
|
1360
|
+
copyArrayContents( oldGeometry.attributes[ key ].array, geometry.attributes[ key ].array );
|
|
1361
|
+
|
|
1362
|
+
}
|
|
764
1363
|
|
|
765
1364
|
}
|
|
766
1365
|
|
|
767
1366
|
raycast( raycaster, intersects ) {
|
|
768
1367
|
|
|
769
|
-
const
|
|
770
|
-
const
|
|
771
|
-
const drawRanges = this._drawRanges;
|
|
772
|
-
const geometryCount = this._geometryCount;
|
|
1368
|
+
const instanceInfo = this._instanceInfo;
|
|
1369
|
+
const geometryInfoList = this._geometryInfo;
|
|
773
1370
|
const matrixWorld = this.matrixWorld;
|
|
774
1371
|
const batchGeometry = this.geometry;
|
|
775
1372
|
|
|
@@ -789,21 +1386,22 @@ class BatchedMesh extends Mesh {
|
|
|
789
1386
|
|
|
790
1387
|
}
|
|
791
1388
|
|
|
792
|
-
for ( let i = 0; i <
|
|
1389
|
+
for ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {
|
|
793
1390
|
|
|
794
|
-
if ( !
|
|
1391
|
+
if ( ! instanceInfo[ i ].visible || ! instanceInfo[ i ].active ) {
|
|
795
1392
|
|
|
796
1393
|
continue;
|
|
797
1394
|
|
|
798
1395
|
}
|
|
799
1396
|
|
|
800
|
-
const
|
|
801
|
-
|
|
1397
|
+
const geometryId = instanceInfo[ i ].geometryIndex;
|
|
1398
|
+
const geometryInfo = geometryInfoList[ geometryId ];
|
|
1399
|
+
_mesh.geometry.setDrawRange( geometryInfo.start, geometryInfo.count );
|
|
802
1400
|
|
|
803
|
-
//
|
|
1401
|
+
// get the intersects
|
|
804
1402
|
this.getMatrixAt( i, _mesh.matrixWorld ).premultiply( matrixWorld );
|
|
805
|
-
this.getBoundingBoxAt(
|
|
806
|
-
this.getBoundingSphereAt(
|
|
1403
|
+
this.getBoundingBoxAt( geometryId, _mesh.geometry.boundingBox );
|
|
1404
|
+
this.getBoundingSphereAt( geometryId, _mesh.geometry.boundingSphere );
|
|
807
1405
|
_mesh.raycast( raycaster, _batchIntersects );
|
|
808
1406
|
|
|
809
1407
|
// add batch id to the intersects
|
|
@@ -837,35 +1435,50 @@ class BatchedMesh extends Mesh {
|
|
|
837
1435
|
this.boundingBox = source.boundingBox !== null ? source.boundingBox.clone() : null;
|
|
838
1436
|
this.boundingSphere = source.boundingSphere !== null ? source.boundingSphere.clone() : null;
|
|
839
1437
|
|
|
840
|
-
this.
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
this._visibility = source._visibility.slice();
|
|
844
|
-
this._active = source._active.slice();
|
|
845
|
-
this._bounds = source._bounds.map( bound => ( {
|
|
846
|
-
boxInitialized: bound.boxInitialized,
|
|
847
|
-
box: bound.box.clone(),
|
|
1438
|
+
this._geometryInfo = source._geometryInfo.map( info => ( {
|
|
1439
|
+
...info,
|
|
848
1440
|
|
|
849
|
-
|
|
850
|
-
|
|
1441
|
+
boundingBox: info.boundingBox !== null ? info.boundingBox.clone() : null,
|
|
1442
|
+
boundingSphere: info.boundingSphere !== null ? info.boundingSphere.clone() : null,
|
|
851
1443
|
} ) );
|
|
1444
|
+
this._instanceInfo = source._instanceInfo.map( info => ( { ...info } ) );
|
|
852
1445
|
|
|
853
|
-
this.
|
|
1446
|
+
this._availableInstanceIds = source._availableInstanceIds.slice();
|
|
1447
|
+
this._availableGeometryIds = source._availableGeometryIds.slice();
|
|
1448
|
+
|
|
1449
|
+
this._nextIndexStart = source._nextIndexStart;
|
|
1450
|
+
this._nextVertexStart = source._nextVertexStart;
|
|
1451
|
+
this._geometryCount = source._geometryCount;
|
|
1452
|
+
|
|
1453
|
+
this._maxInstanceCount = source._maxInstanceCount;
|
|
854
1454
|
this._maxVertexCount = source._maxVertexCount;
|
|
855
1455
|
this._maxIndexCount = source._maxIndexCount;
|
|
856
1456
|
|
|
857
1457
|
this._geometryInitialized = source._geometryInitialized;
|
|
858
|
-
this._geometryCount = source._geometryCount;
|
|
859
1458
|
this._multiDrawCounts = source._multiDrawCounts.slice();
|
|
860
1459
|
this._multiDrawStarts = source._multiDrawStarts.slice();
|
|
861
1460
|
|
|
1461
|
+
this._indirectTexture = source._indirectTexture.clone();
|
|
1462
|
+
this._indirectTexture.image.data = this._indirectTexture.image.data.slice();
|
|
1463
|
+
|
|
862
1464
|
this._matricesTexture = source._matricesTexture.clone();
|
|
863
|
-
this._matricesTexture.image.data = this._matricesTexture.image.slice();
|
|
1465
|
+
this._matricesTexture.image.data = this._matricesTexture.image.data.slice();
|
|
1466
|
+
|
|
1467
|
+
if ( this._colorsTexture !== null ) {
|
|
1468
|
+
|
|
1469
|
+
this._colorsTexture = source._colorsTexture.clone();
|
|
1470
|
+
this._colorsTexture.image.data = this._colorsTexture.image.data.slice();
|
|
1471
|
+
|
|
1472
|
+
}
|
|
864
1473
|
|
|
865
1474
|
return this;
|
|
866
1475
|
|
|
867
1476
|
}
|
|
868
1477
|
|
|
1478
|
+
/**
|
|
1479
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
1480
|
+
* method whenever this instance is no longer used in your app.
|
|
1481
|
+
*/
|
|
869
1482
|
dispose() {
|
|
870
1483
|
|
|
871
1484
|
// Assuming the geometry is not shared with other meshes
|
|
@@ -873,7 +1486,16 @@ class BatchedMesh extends Mesh {
|
|
|
873
1486
|
|
|
874
1487
|
this._matricesTexture.dispose();
|
|
875
1488
|
this._matricesTexture = null;
|
|
876
|
-
|
|
1489
|
+
|
|
1490
|
+
this._indirectTexture.dispose();
|
|
1491
|
+
this._indirectTexture = null;
|
|
1492
|
+
|
|
1493
|
+
if ( this._colorsTexture !== null ) {
|
|
1494
|
+
|
|
1495
|
+
this._colorsTexture.dispose();
|
|
1496
|
+
this._colorsTexture = null;
|
|
1497
|
+
|
|
1498
|
+
}
|
|
877
1499
|
|
|
878
1500
|
}
|
|
879
1501
|
|
|
@@ -892,54 +1514,62 @@ class BatchedMesh extends Mesh {
|
|
|
892
1514
|
const index = geometry.getIndex();
|
|
893
1515
|
const bytesPerElement = index === null ? 1 : index.array.BYTES_PER_ELEMENT;
|
|
894
1516
|
|
|
895
|
-
const
|
|
896
|
-
const visibility = this._visibility;
|
|
1517
|
+
const instanceInfo = this._instanceInfo;
|
|
897
1518
|
const multiDrawStarts = this._multiDrawStarts;
|
|
898
1519
|
const multiDrawCounts = this._multiDrawCounts;
|
|
899
|
-
const
|
|
1520
|
+
const geometryInfoList = this._geometryInfo;
|
|
900
1521
|
const perObjectFrustumCulled = this.perObjectFrustumCulled;
|
|
1522
|
+
const indirectTexture = this._indirectTexture;
|
|
1523
|
+
const indirectArray = indirectTexture.image.data;
|
|
901
1524
|
|
|
1525
|
+
const frustum = camera.isArrayCamera ? _frustumArray : _frustum;
|
|
902
1526
|
// prepare the frustum in the local frame
|
|
903
|
-
if ( perObjectFrustumCulled ) {
|
|
1527
|
+
if ( perObjectFrustumCulled && ! camera.isArrayCamera ) {
|
|
904
1528
|
|
|
905
|
-
|
|
1529
|
+
_matrix
|
|
906
1530
|
.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse )
|
|
907
1531
|
.multiply( this.matrixWorld );
|
|
1532
|
+
|
|
908
1533
|
_frustum.setFromProjectionMatrix(
|
|
909
|
-
|
|
910
|
-
|
|
1534
|
+
_matrix,
|
|
1535
|
+
camera.coordinateSystem,
|
|
1536
|
+
camera.reversedDepth
|
|
911
1537
|
);
|
|
912
1538
|
|
|
913
1539
|
}
|
|
914
1540
|
|
|
915
|
-
let
|
|
1541
|
+
let multiDrawCount = 0;
|
|
916
1542
|
if ( this.sortObjects ) {
|
|
917
1543
|
|
|
918
1544
|
// get the camera position in the local frame
|
|
919
|
-
|
|
920
|
-
_vector.setFromMatrixPosition( camera.matrixWorld ).applyMatrix4(
|
|
1545
|
+
_matrix.copy( this.matrixWorld ).invert();
|
|
1546
|
+
_vector.setFromMatrixPosition( camera.matrixWorld ).applyMatrix4( _matrix );
|
|
1547
|
+
_forward.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld ).transformDirection( _matrix );
|
|
921
1548
|
|
|
922
|
-
for ( let i = 0, l =
|
|
1549
|
+
for ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {
|
|
923
1550
|
|
|
924
|
-
if (
|
|
1551
|
+
if ( instanceInfo[ i ].visible && instanceInfo[ i ].active ) {
|
|
1552
|
+
|
|
1553
|
+
const geometryId = instanceInfo[ i ].geometryIndex;
|
|
925
1554
|
|
|
926
1555
|
// get the bounds in world space
|
|
927
1556
|
this.getMatrixAt( i, _matrix );
|
|
928
|
-
this.getBoundingSphereAt(
|
|
1557
|
+
this.getBoundingSphereAt( geometryId, _sphere ).applyMatrix4( _matrix );
|
|
929
1558
|
|
|
930
1559
|
// determine whether the batched geometry is within the frustum
|
|
931
1560
|
let culled = false;
|
|
932
1561
|
if ( perObjectFrustumCulled ) {
|
|
933
1562
|
|
|
934
|
-
culled = !
|
|
1563
|
+
culled = ! frustum.intersectsSphere( _sphere, camera );
|
|
935
1564
|
|
|
936
1565
|
}
|
|
937
1566
|
|
|
938
1567
|
if ( ! culled ) {
|
|
939
1568
|
|
|
940
1569
|
// get the distance from camera used for sorting
|
|
941
|
-
const
|
|
942
|
-
|
|
1570
|
+
const geometryInfo = geometryInfoList[ geometryId ];
|
|
1571
|
+
const z = _temp.subVectors( _sphere.center, _vector ).dot( _forward );
|
|
1572
|
+
_renderList.push( geometryInfo.start, geometryInfo.count, z, i );
|
|
943
1573
|
|
|
944
1574
|
}
|
|
945
1575
|
|
|
@@ -963,9 +1593,10 @@ class BatchedMesh extends Mesh {
|
|
|
963
1593
|
for ( let i = 0, l = list.length; i < l; i ++ ) {
|
|
964
1594
|
|
|
965
1595
|
const item = list[ i ];
|
|
966
|
-
multiDrawStarts[
|
|
967
|
-
multiDrawCounts[
|
|
968
|
-
|
|
1596
|
+
multiDrawStarts[ multiDrawCount ] = item.start * bytesPerElement;
|
|
1597
|
+
multiDrawCounts[ multiDrawCount ] = item.count;
|
|
1598
|
+
indirectArray[ multiDrawCount ] = item.index;
|
|
1599
|
+
multiDrawCount ++;
|
|
969
1600
|
|
|
970
1601
|
}
|
|
971
1602
|
|
|
@@ -973,9 +1604,11 @@ class BatchedMesh extends Mesh {
|
|
|
973
1604
|
|
|
974
1605
|
} else {
|
|
975
1606
|
|
|
976
|
-
for ( let i = 0, l =
|
|
1607
|
+
for ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {
|
|
1608
|
+
|
|
1609
|
+
if ( instanceInfo[ i ].visible && instanceInfo[ i ].active ) {
|
|
977
1610
|
|
|
978
|
-
|
|
1611
|
+
const geometryId = instanceInfo[ i ].geometryIndex;
|
|
979
1612
|
|
|
980
1613
|
// determine whether the batched geometry is within the frustum
|
|
981
1614
|
let culled = false;
|
|
@@ -983,17 +1616,18 @@ class BatchedMesh extends Mesh {
|
|
|
983
1616
|
|
|
984
1617
|
// get the bounds in world space
|
|
985
1618
|
this.getMatrixAt( i, _matrix );
|
|
986
|
-
this.getBoundingSphereAt(
|
|
987
|
-
culled = !
|
|
1619
|
+
this.getBoundingSphereAt( geometryId, _sphere ).applyMatrix4( _matrix );
|
|
1620
|
+
culled = ! frustum.intersectsSphere( _sphere, camera );
|
|
988
1621
|
|
|
989
1622
|
}
|
|
990
1623
|
|
|
991
1624
|
if ( ! culled ) {
|
|
992
1625
|
|
|
993
|
-
const
|
|
994
|
-
multiDrawStarts[
|
|
995
|
-
multiDrawCounts[
|
|
996
|
-
|
|
1626
|
+
const geometryInfo = geometryInfoList[ geometryId ];
|
|
1627
|
+
multiDrawStarts[ multiDrawCount ] = geometryInfo.start * bytesPerElement;
|
|
1628
|
+
multiDrawCounts[ multiDrawCount ] = geometryInfo.count;
|
|
1629
|
+
indirectArray[ multiDrawCount ] = i;
|
|
1630
|
+
multiDrawCount ++;
|
|
997
1631
|
|
|
998
1632
|
}
|
|
999
1633
|
|
|
@@ -1003,7 +1637,8 @@ class BatchedMesh extends Mesh {
|
|
|
1003
1637
|
|
|
1004
1638
|
}
|
|
1005
1639
|
|
|
1006
|
-
|
|
1640
|
+
indirectTexture.needsUpdate = true;
|
|
1641
|
+
this._multiDrawCount = multiDrawCount;
|
|
1007
1642
|
this._visibilityChanged = false;
|
|
1008
1643
|
|
|
1009
1644
|
}
|