super-three 0.141.0 → 0.147.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -9
- package/build/three.cjs +2441 -1569
- package/build/three.js +2441 -1569
- package/build/three.min.js +1 -1
- package/build/three.module.js +2847 -1576
- package/examples/js/animation/AnimationClipCreator.js +0 -8
- package/examples/js/animation/CCDIKSolver.js +50 -67
- package/examples/js/animation/MMDAnimationHelper.js +66 -137
- package/examples/js/animation/MMDPhysics.js +71 -150
- package/examples/js/cameras/CinematicCamera.js +33 -22
- package/examples/js/controls/ArcballControls.js +149 -403
- package/examples/js/controls/DragControls.js +8 -33
- package/examples/js/controls/FirstPersonControls.js +32 -61
- package/examples/js/controls/FlyControls.js +29 -63
- package/examples/js/controls/OrbitControls.js +125 -103
- package/examples/js/controls/PointerLockControls.js +5 -22
- package/examples/js/controls/TrackballControls.js +33 -88
- package/examples/js/controls/TransformControls.js +101 -182
- package/examples/js/csm/CSM.js +4 -39
- package/examples/js/csm/CSMFrustum.js +3 -9
- package/examples/js/csm/CSMHelper.js +24 -4
- package/examples/js/csm/CSMShader.js +2 -6
- package/examples/js/curves/CurveExtras.js +27 -27
- package/examples/js/curves/NURBSCurve.js +4 -16
- package/examples/js/curves/NURBSSurface.js +3 -9
- package/examples/js/curves/NURBSUtils.js +8 -45
- package/examples/js/effects/AnaglyphEffect.js +6 -20
- package/examples/js/effects/AsciiEffect.js +32 -31
- package/examples/js/effects/OutlineEffect.js +30 -54
- package/examples/js/effects/ParallaxBarrierEffect.js +2 -15
- package/examples/js/effects/PeppersGhostEffect.js +14 -41
- package/examples/js/effects/StereoEffect.js +2 -6
- package/examples/js/environments/RoomEnvironment.js +32 -8
- package/examples/js/exporters/ColladaExporter.js +52 -78
- package/examples/js/exporters/DRACOExporter.js +22 -34
- package/examples/js/exporters/EXRExporter.js +15 -18
- package/examples/js/exporters/GLTFExporter.js +168 -345
- package/examples/js/exporters/MMDExporter.js +5 -12
- package/examples/js/exporters/OBJExporter.js +40 -52
- package/examples/js/exporters/PLYExporter.js +50 -57
- package/examples/js/exporters/STLExporter.js +5 -14
- package/examples/js/exporters/USDZExporter.js +119 -27
- package/examples/js/geometries/BoxLineGeometry.js +0 -1
- package/examples/js/geometries/ConvexGeometry.js +12 -7
- package/examples/js/geometries/DecalGeometry.js +53 -20
- package/examples/js/geometries/LightningStrike.js +54 -67
- package/examples/js/geometries/ParametricGeometries.js +8 -7
- package/examples/js/geometries/ParametricGeometry.js +23 -17
- package/examples/js/geometries/RoundedBoxGeometry.js +21 -19
- package/examples/js/geometries/TeapotGeometry.js +54 -50
- package/examples/js/geometries/TextGeometry.js +6 -4
- package/examples/js/helpers/LightProbeHelper.js +1 -2
- package/examples/js/helpers/OctreeHelper.js +22 -20
- package/examples/js/helpers/PositionalAudioHelper.js +8 -6
- package/examples/js/helpers/RectAreaLightHelper.js +6 -7
- package/examples/js/helpers/VertexNormalsHelper.js +15 -13
- package/examples/js/helpers/VertexTangentsHelper.js +15 -9
- package/examples/js/helpers/ViewHelper.js +31 -16
- package/examples/js/interactive/HTMLMesh.js +25 -39
- package/examples/js/interactive/InteractiveGroup.js +9 -14
- package/examples/js/interactive/SelectionBox.js +3 -70
- package/examples/js/interactive/SelectionHelper.js +2 -8
- package/examples/js/libs/ktx-parse.umd.js +1 -0
- package/examples/js/libs/meshopt_decoder.js +98 -32
- package/examples/js/lights/LightProbeGenerator.js +32 -39
- package/examples/js/lights/RectAreaLightUniformsLib.js +5 -1
- package/examples/js/lines/LineGeometry.js +3 -5
- package/examples/js/lines/LineMaterial.js +4 -11
- package/examples/js/lines/LineSegments2.js +40 -89
- package/examples/js/lines/LineSegmentsGeometry.js +7 -28
- package/examples/js/lines/Wireframe.js +2 -7
- package/examples/js/lines/WireframeGeometry2.js +3 -1
- package/examples/js/loaders/3DMLoader.js +58 -155
- package/examples/js/loaders/3MFLoader.js +72 -106
- package/examples/js/loaders/AMFLoader.js +0 -25
- package/examples/js/loaders/BVHLoader.js +44 -43
- package/examples/js/loaders/BasisTextureLoader.js +16 -46
- package/examples/js/loaders/ColladaLoader.js +229 -359
- package/examples/js/loaders/DDSLoader.js +24 -25
- package/examples/js/loaders/DRACOLoader.js +30 -90
- package/examples/js/loaders/EXRLoader.js +69 -177
- package/examples/js/loaders/FBXLoader.js +294 -441
- package/examples/js/loaders/FontLoader.js +9 -31
- package/examples/js/loaders/GCodeLoader.js +15 -16
- package/examples/js/loaders/GLTFLoader.js +458 -739
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -17
- package/examples/js/loaders/KMZLoader.js +3 -7
- package/examples/js/loaders/KTXLoader.js +12 -30
- package/examples/js/loaders/LDrawLoader.js +309 -355
- package/examples/js/loaders/LUT3dlLoader.js +7 -11
- package/examples/js/loaders/LUTCubeLoader.js +0 -8
- package/examples/js/loaders/LWOLoader.js +59 -124
- package/examples/js/loaders/LogLuvLoader.js +27 -77
- package/examples/js/loaders/LottieLoader.js +4 -4
- package/examples/js/loaders/MD2Loader.js +26 -27
- package/examples/js/loaders/MDDLoader.js +6 -10
- package/examples/js/loaders/MMDLoader.js +180 -189
- package/examples/js/loaders/MTLLoader.js +18 -47
- package/examples/js/loaders/NRRDLoader.js +44 -84
- package/examples/js/loaders/OBJLoader.js +56 -77
- package/examples/js/loaders/PCDLoader.js +92 -42
- package/examples/js/loaders/PDBLoader.js +17 -13
- package/examples/js/loaders/PLYLoader.js +65 -51
- package/examples/js/loaders/PRWMLoader.js +11 -22
- package/examples/js/loaders/PVRLoader.js +7 -16
- package/examples/js/loaders/RGBELoader.js +36 -61
- package/examples/js/loaders/RGBMLoader.js +26 -87
- package/examples/js/loaders/STLLoader.js +20 -27
- package/examples/js/loaders/SVGLoader.js +365 -236
- package/examples/js/loaders/TDSLoader.js +81 -118
- package/examples/js/loaders/TGALoader.js +39 -41
- package/examples/js/loaders/TIFFLoader.js +30 -0
- package/examples/js/loaders/TTFLoader.js +0 -8
- package/examples/js/loaders/TiltLoader.js +14 -15
- package/examples/js/loaders/VOXLoader.js +8 -16
- package/examples/js/loaders/VRMLLoader.js +266 -354
- package/examples/js/loaders/VTKLoader.js +102 -119
- package/examples/js/loaders/XYZLoader.js +2 -4
- package/examples/js/loaders/lwo/IFFParser.js +55 -136
- package/examples/js/loaders/lwo/LWO2Parser.js +39 -89
- package/examples/js/loaders/lwo/LWO3Parser.js +38 -79
- package/examples/js/materials/MeshGouraudMaterial.js +387 -0
- package/examples/js/math/Capsule.js +0 -17
- package/examples/js/math/ColorConverter.js +3 -53
- package/examples/js/math/ConvexHull.js +185 -141
- package/examples/js/math/ImprovedNoise.js +1 -1
- package/examples/js/math/Lut.js +8 -15
- package/examples/js/math/MeshSurfaceSampler.js +6 -28
- package/examples/js/math/OBB.js +90 -49
- package/examples/js/math/Octree.js +2 -57
- package/examples/js/math/SimplexNoise.js +74 -88
- package/examples/js/misc/ConvexObjectBreaker.js +37 -48
- package/examples/js/misc/GPUComputationRenderer.js +47 -14
- package/examples/js/misc/Gyroscope.js +5 -9
- package/examples/js/misc/MD2Character.js +14 -23
- package/examples/js/misc/MD2CharacterComplex.js +73 -54
- package/examples/js/misc/MorphAnimMesh.js +0 -6
- package/examples/js/misc/MorphBlendMesh.js +3 -30
- package/examples/js/misc/ProgressiveLightMap.js +47 -43
- package/examples/js/misc/RollerCoaster.js +17 -24
- package/examples/js/misc/TubePainter.js +18 -12
- package/examples/js/misc/Volume.js +173 -194
- package/examples/js/misc/VolumeSlice.js +91 -99
- package/examples/js/modifiers/CurveModifier.js +19 -21
- package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
- package/examples/js/modifiers/SimplifyModifier.js +57 -60
- package/examples/js/modifiers/TessellateModifier.js +2 -9
- package/examples/js/objects/GroundProjectedEnv.js +181 -0
- package/examples/js/objects/Lensflare.js +47 -38
- package/examples/js/objects/LightningStorm.js +10 -13
- package/examples/js/objects/MarchingCubes.js +80 -59
- package/examples/js/objects/Reflector.js +31 -22
- package/examples/js/objects/ReflectorForSSRPass.js +20 -25
- package/examples/js/objects/Refractor.js +61 -33
- package/examples/js/objects/ShadowMesh.js +6 -3
- package/examples/js/objects/Sky.js +2 -7
- package/examples/js/objects/Water.js +23 -18
- package/examples/js/objects/Water2.js +20 -19
- package/examples/js/physics/AmmoPhysics.js +23 -20
- package/examples/js/physics/OimoPhysics.js +19 -17
- package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
- package/examples/js/postprocessing/AfterimagePass.js +19 -12
- package/examples/js/postprocessing/BloomPass.js +38 -17
- package/examples/js/postprocessing/BokehPass.js +29 -12
- package/examples/js/postprocessing/ClearPass.js +1 -6
- package/examples/js/postprocessing/CubeTexturePass.js +12 -9
- package/examples/js/postprocessing/DotScreenPass.js +7 -5
- package/examples/js/postprocessing/EffectComposer.js +25 -32
- package/examples/js/postprocessing/FilmPass.js +7 -5
- package/examples/js/postprocessing/GlitchPass.js +10 -11
- package/examples/js/postprocessing/HalftonePass.js +9 -9
- package/examples/js/postprocessing/LUTPass.js +2 -15
- package/examples/js/postprocessing/MaskPass.js +20 -17
- package/examples/js/postprocessing/OutlinePass.js +49 -38
- package/examples/js/postprocessing/Pass.js +11 -14
- package/examples/js/postprocessing/RenderPass.js +3 -7
- package/examples/js/postprocessing/RenderPixelatedPass.js +215 -0
- package/examples/js/postprocessing/SAOPass.js +40 -32
- package/examples/js/postprocessing/SMAAPass.js +34 -17
- package/examples/js/postprocessing/SSAARenderPass.js +14 -14
- package/examples/js/postprocessing/SSAOPass.js +56 -42
- package/examples/js/postprocessing/SSRPass.js +78 -61
- package/examples/js/postprocessing/SavePass.js +14 -6
- package/examples/js/postprocessing/ShaderPass.js +9 -8
- package/examples/js/postprocessing/TAARenderPass.js +11 -9
- package/examples/js/postprocessing/TexturePass.js +7 -4
- package/examples/js/postprocessing/UnrealBloomPass.js +43 -25
- package/examples/js/renderers/CSS2DRenderer.js +4 -23
- package/examples/js/renderers/CSS3DRenderer.js +5 -26
- package/examples/js/renderers/Projector.js +31 -108
- package/examples/js/renderers/SVGRenderer.js +4 -50
- package/examples/js/shaders/ACESFilmicToneMappingShader.js +3 -6
- package/examples/js/shaders/AfterimageShader.js +3 -6
- package/examples/js/shaders/BasicShader.js +3 -6
- package/examples/js/shaders/BleachBypassShader.js +3 -6
- package/examples/js/shaders/BlendShader.js +3 -6
- package/examples/js/shaders/BokehShader.js +3 -6
- package/examples/js/shaders/BokehShader2.js +4 -13
- package/examples/js/shaders/BrightnessContrastShader.js +3 -6
- package/examples/js/shaders/ColorCorrectionShader.js +2 -6
- package/examples/js/shaders/ColorifyShader.js +2 -6
- package/examples/js/shaders/ConvolutionShader.js +5 -10
- package/examples/js/shaders/CopyShader.js +3 -6
- package/examples/js/shaders/DOFMipMapShader.js +3 -6
- package/examples/js/shaders/DepthLimitedBlurShader.js +2 -9
- package/examples/js/shaders/DigitalGlitch.js +3 -6
- package/examples/js/shaders/DotScreenShader.js +2 -6
- package/examples/js/shaders/FXAAShader.js +1 -3
- package/examples/js/shaders/FilmShader.js +3 -6
- package/examples/js/shaders/FocusShader.js +3 -6
- package/examples/js/shaders/FreiChenShader.js +2 -6
- package/examples/js/shaders/GammaCorrectionShader.js +3 -6
- package/examples/js/shaders/GodRaysShader.js +11 -24
- package/examples/js/shaders/HalftoneShader.js +3 -6
- package/examples/js/shaders/HorizontalBlurShader.js +3 -6
- package/examples/js/shaders/HorizontalTiltShiftShader.js +3 -6
- package/examples/js/shaders/HueSaturationShader.js +3 -6
- package/examples/js/shaders/KaleidoShader.js +3 -6
- package/examples/js/shaders/LuminosityHighPassShader.js +2 -6
- package/examples/js/shaders/LuminosityShader.js +4 -7
- package/examples/js/shaders/MMDToonShader.js +2 -4
- package/examples/js/shaders/MirrorShader.js +3 -6
- package/examples/js/shaders/NormalMapShader.js +2 -6
- package/examples/js/shaders/RGBShiftShader.js +3 -6
- package/examples/js/shaders/SAOShader.js +2 -6
- package/examples/js/shaders/SMAAShader.js +6 -18
- package/examples/js/shaders/SSAOShader.js +2 -6
- package/examples/js/shaders/SSRShader.js +6 -18
- package/examples/js/shaders/SepiaShader.js +3 -6
- package/examples/js/shaders/SobelOperatorShader.js +2 -6
- package/examples/js/shaders/TechnicolorShader.js +3 -6
- package/examples/js/shaders/ToneMapShader.js +4 -7
- package/examples/js/shaders/ToonShader.js +8 -24
- package/examples/js/shaders/TriangleBlurShader.js +2 -6
- package/examples/js/shaders/UnpackDepthRGBAShader.js +3 -6
- package/examples/js/shaders/VelocityShader.js +126 -0
- package/examples/js/shaders/VerticalBlurShader.js +3 -6
- package/examples/js/shaders/VerticalTiltShiftShader.js +3 -6
- package/examples/js/shaders/VignetteShader.js +3 -6
- package/examples/js/shaders/VolumeShader.js +2 -6
- package/examples/js/shaders/WaterRefractionShader.js +2 -6
- package/examples/js/textures/FlakesTexture.js +0 -1
- package/examples/js/utils/BufferGeometryUtils.js +237 -171
- package/examples/js/utils/CameraUtils.js +5 -20
- package/examples/js/utils/GPUStatsPanel.js +3 -12
- package/examples/js/utils/GeometryCompressionUtils.js +19 -44
- package/examples/js/utils/GeometryUtils.js +15 -36
- package/examples/js/utils/LDrawUtils.js +8 -11
- package/examples/js/utils/PackedPhongMaterial.js +6 -4
- package/examples/js/utils/SceneUtils.js +109 -14
- package/examples/js/utils/ShadowMapViewer.js +17 -14
- package/examples/js/utils/SkeletonUtils.js +13 -27
- package/examples/js/utils/UVsDebug.js +20 -12
- package/examples/js/utils/WorkerPool.js +1 -11
- package/examples/jsm/animation/CCDIKSolver.js +27 -3
- package/examples/jsm/animation/MMDPhysics.js +28 -22
- package/examples/jsm/capabilities/WebGPU.js +3 -1
- package/examples/jsm/controls/ArcballControls.js +17 -2
- package/examples/jsm/controls/FirstPersonControls.js +20 -27
- package/examples/jsm/controls/FlyControls.js +16 -24
- package/examples/jsm/controls/OrbitControls.js +44 -9
- package/examples/jsm/controls/PointerLockControls.js +0 -7
- package/examples/jsm/controls/TrackballControls.js +14 -5
- package/examples/jsm/controls/TransformControls.js +18 -16
- package/examples/jsm/csm/CSM.js +1 -0
- package/examples/jsm/csm/CSMHelper.js +30 -0
- package/examples/jsm/effects/AnaglyphEffect.js +2 -2
- package/examples/jsm/effects/OutlineEffect.js +4 -25
- package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -2
- package/examples/jsm/effects/PeppersGhostEffect.js +2 -2
- package/examples/jsm/effects/StereoEffect.js +2 -2
- package/examples/jsm/environments/RoomEnvironment.js +23 -0
- package/examples/jsm/exporters/ColladaExporter.js +4 -13
- package/examples/jsm/exporters/DRACOExporter.js +0 -13
- package/examples/jsm/exporters/GLTFExporter.js +29 -110
- package/examples/jsm/exporters/KTX2Exporter.js +29 -29
- package/examples/jsm/exporters/OBJExporter.js +0 -18
- package/examples/jsm/exporters/PLYExporter.js +14 -22
- package/examples/jsm/exporters/STLExporter.js +1 -9
- package/examples/jsm/exporters/USDZExporter.js +107 -4
- package/examples/jsm/geometries/ConvexGeometry.js +1 -1
- package/examples/jsm/geometries/ParametricGeometry.js +0 -6
- package/examples/jsm/helpers/OctreeHelper.js +22 -8
- package/examples/jsm/helpers/VertexNormalsHelper.js +7 -1
- package/examples/jsm/helpers/VertexTangentsHelper.js +7 -0
- package/examples/jsm/helpers/ViewHelper.js +24 -0
- package/examples/jsm/interactive/HTMLMesh.js +14 -15
- package/examples/jsm/interactive/InteractiveGroup.js +4 -2
- package/examples/jsm/interactive/SelectionHelper.js +5 -3
- package/examples/jsm/libs/flow.module.js +610 -160
- package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
- package/examples/jsm/libs/meshopt_decoder.module.js +97 -32
- package/examples/jsm/libs/utif.module.js +1579 -0
- package/examples/jsm/libs/zstddec.module.js +1 -0
- package/examples/jsm/lines/LineSegments2.js +4 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -2
- package/examples/jsm/loaders/ColladaLoader.js +29 -0
- package/examples/jsm/loaders/DRACOLoader.js +2 -28
- package/examples/jsm/loaders/EXRLoader.js +3 -13
- package/examples/jsm/loaders/FBXLoader.js +26 -3
- package/examples/jsm/loaders/FontLoader.js +3 -16
- package/examples/jsm/loaders/GLTFLoader.js +321 -464
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +0 -13
- package/examples/jsm/loaders/KTX2Loader.js +254 -53
- package/examples/jsm/loaders/LDrawLoader.js +149 -87
- package/examples/jsm/loaders/LottieLoader.js +4 -2
- package/examples/jsm/loaders/MaterialXLoader.js +728 -0
- package/examples/jsm/loaders/OBJLoader.js +6 -14
- package/examples/jsm/loaders/PCDLoader.js +60 -14
- package/examples/jsm/loaders/PLYLoader.js +71 -19
- package/examples/jsm/loaders/RGBELoader.js +1 -1
- package/examples/jsm/loaders/SVGLoader.js +231 -17
- package/examples/jsm/loaders/TIFFLoader.js +36 -0
- package/examples/jsm/loaders/USDZLoader.js +633 -0
- package/examples/jsm/loaders/VRMLLoader.js +36 -26
- package/examples/jsm/loaders/VTKLoader.js +1 -1
- package/examples/jsm/loaders/lwo/LWO2Parser.js +6 -8
- package/examples/jsm/loaders/lwo/LWO3Parser.js +6 -8
- package/examples/jsm/materials/MeshGouraudMaterial.js +423 -0
- package/examples/jsm/math/ColorConverter.js +1 -49
- package/examples/jsm/math/ConvexHull.js +4 -4
- package/examples/jsm/math/Octree.js +1 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +43 -0
- package/examples/jsm/misc/Volume.js +169 -171
- package/examples/jsm/misc/VolumeSlice.js +78 -80
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/node-editor/NodeEditor.js +91 -12
- package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/NormalEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/PositionEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/UVEditor.js +1 -1
- package/examples/jsm/node-editor/core/BaseNode.js +10 -3
- package/examples/jsm/node-editor/display/BlendEditor.js +1 -1
- package/examples/jsm/node-editor/display/NormalMapEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/ColorEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/FloatEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/SliderEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/TextureEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/Vector2Editor.js +1 -1
- package/examples/jsm/node-editor/inputs/Vector3Editor.js +1 -1
- package/examples/jsm/node-editor/inputs/Vector4Editor.js +1 -1
- package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +7 -10
- package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +1 -1
- package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +7 -10
- package/examples/jsm/node-editor/math/AngleEditor.js +4 -4
- package/examples/jsm/node-editor/math/DotEditor.js +1 -1
- package/examples/jsm/node-editor/math/InvertEditor.js +3 -3
- package/examples/jsm/node-editor/math/LimiterEditor.js +1 -1
- package/examples/jsm/node-editor/math/NormalizeEditor.js +1 -1
- package/examples/jsm/node-editor/math/OperatorEditor.js +1 -1
- package/examples/jsm/node-editor/math/PowerEditor.js +1 -1
- package/examples/jsm/node-editor/math/TrigonometryEditor.js +1 -1
- package/examples/jsm/node-editor/procedural/CheckerEditor.js +1 -1
- package/examples/jsm/node-editor/scene/MeshEditor.js +11 -8
- package/examples/jsm/node-editor/utils/JoinEditor.js +1 -1
- package/examples/jsm/node-editor/utils/OscillatorEditor.js +1 -1
- package/examples/jsm/node-editor/utils/PreviewEditor.js +7 -3
- package/examples/jsm/node-editor/utils/SplitEditor.js +1 -1
- package/examples/jsm/node-editor/utils/TimerEditor.js +1 -1
- package/examples/jsm/nodes/Nodes.js +70 -13
- package/examples/jsm/nodes/accessors/BitangentNode.js +62 -0
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +9 -5
- package/examples/jsm/nodes/accessors/NormalNode.js +8 -8
- package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
- package/examples/jsm/nodes/accessors/PositionNode.js +11 -5
- package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
- package/examples/jsm/nodes/accessors/ReflectVectorNode.js +31 -0
- package/examples/jsm/nodes/accessors/SkinningNode.js +8 -1
- package/examples/jsm/nodes/accessors/TangentNode.js +95 -0
- package/examples/jsm/nodes/core/AttributeNode.js +32 -9
- package/examples/jsm/nodes/core/CodeNode.js +3 -3
- package/examples/jsm/nodes/core/FunctionCallNode.js +20 -5
- package/examples/jsm/nodes/core/FunctionNode.js +2 -2
- package/examples/jsm/nodes/core/Node.js +15 -13
- package/examples/jsm/nodes/core/NodeBuilder.js +67 -18
- package/examples/jsm/nodes/core/NodeFrame.js +2 -2
- package/examples/jsm/nodes/core/NodeUtils.js +23 -1
- package/examples/jsm/nodes/core/NodeVarying.js +17 -0
- package/examples/jsm/nodes/core/VaryingNode.js +56 -0
- package/examples/jsm/nodes/core/constants.js +13 -13
- package/examples/jsm/nodes/display/BlendModeNode.js +85 -0
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +84 -0
- package/examples/jsm/nodes/display/NormalMapNode.js +19 -12
- package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
- package/examples/jsm/nodes/display/ViewportNode.js +106 -0
- package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +5 -5
- package/examples/jsm/nodes/functions/PhysicalLightingModel.js +3 -3
- package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +2 -2
- package/examples/jsm/nodes/geometry/RangeNode.js +109 -0
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +3 -1
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +8 -7
- package/examples/jsm/nodes/lighting/LightingContextNode.js +4 -4
- package/examples/jsm/nodes/loaders/NodeLoader.js +2 -2
- package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +33 -0
- package/examples/jsm/nodes/materials/Materials.js +21 -31
- package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +70 -0
- package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +4 -7
- package/examples/jsm/nodes/materials/NodeMaterial.js +11 -3
- package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +28 -17
- package/examples/jsm/nodes/materialx/DISCLAIMER.md +199 -0
- package/examples/jsm/nodes/materialx/MaterialXNodes.js +59 -0
- package/examples/jsm/nodes/materialx/lib/mx_hsv.js +56 -0
- package/examples/jsm/nodes/materialx/lib/mx_noise.js +617 -0
- package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
- package/examples/jsm/nodes/math/MathNode.js +7 -17
- package/examples/jsm/nodes/math/OperatorNode.js +16 -3
- package/examples/jsm/nodes/parsers/GLSLNodeFunction.js +21 -6
- package/examples/jsm/nodes/procedural/CheckerNode.js +2 -2
- package/examples/jsm/nodes/shadernode/ShaderNode.js +40 -25
- package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +95 -68
- package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +49 -6
- package/examples/jsm/nodes/utils/ConvertNode.js +18 -12
- package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
- package/examples/jsm/nodes/utils/JoinNode.js +15 -9
- package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +3 -2
- package/examples/jsm/nodes/utils/OscNode.js +2 -2
- package/examples/jsm/nodes/utils/RemapNode.js +34 -0
- package/examples/jsm/nodes/utils/RotateUVNode.js +32 -0
- package/examples/jsm/nodes/utils/SplitNode.js +21 -5
- package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
- package/examples/jsm/nodes/utils/TimerNode.js +23 -3
- package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
- package/examples/jsm/objects/GroundProjectedEnv.js +186 -0
- package/examples/jsm/objects/Reflector.js +12 -5
- package/examples/jsm/objects/ReflectorForSSRPass.js +3 -5
- package/examples/jsm/objects/Refractor.js +12 -6
- package/examples/jsm/objects/ShadowMesh.js +8 -2
- package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
- package/examples/jsm/postprocessing/BloomPass.js +22 -3
- package/examples/jsm/postprocessing/BokehPass.js +18 -4
- package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
- package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
- package/examples/jsm/postprocessing/EffectComposer.js +9 -0
- package/examples/jsm/postprocessing/FilmPass.js +8 -0
- package/examples/jsm/postprocessing/GlitchPass.js +13 -1
- package/examples/jsm/postprocessing/HalftonePass.js +8 -0
- package/examples/jsm/postprocessing/OutlinePass.js +25 -3
- package/examples/jsm/postprocessing/Pass.js +2 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
- package/examples/jsm/postprocessing/SAOPass.js +20 -0
- package/examples/jsm/postprocessing/SMAAPass.js +16 -0
- package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
- package/examples/jsm/postprocessing/SavePass.js +17 -1
- package/examples/jsm/postprocessing/ShaderPass.js +8 -0
- package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
- package/examples/jsm/postprocessing/TexturePass.js +8 -0
- package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
- package/examples/jsm/renderers/CSS2DRenderer.js +2 -2
- package/examples/jsm/renderers/CSS3DRenderer.js +2 -2
- package/examples/jsm/renderers/Projector.js +2 -24
- package/examples/jsm/renderers/webgl/nodes/SlotNode.js +9 -5
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +363 -231
- package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +7 -3
- package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
- package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
- package/examples/jsm/renderers/webgpu/WebGPUBackground.js +68 -3
- package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +6 -0
- package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +6 -0
- package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -1
- package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +17 -19
- package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +16 -14
- package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +113 -93
- package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +5 -3
- package/examples/jsm/renderers/webgpu/WebGPUTextures.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPUUtils.js +81 -0
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +63 -36
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
- package/examples/jsm/shaders/LuminosityShader.js +1 -1
- package/examples/jsm/shaders/MMDToonShader.js +2 -4
- package/examples/jsm/shaders/ToneMapShader.js +1 -1
- package/examples/jsm/shaders/VelocityShader.js +128 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +176 -43
- package/examples/jsm/utils/GeometryUtils.js +17 -25
- package/examples/jsm/utils/PackedPhongMaterial.js +0 -1
- package/examples/jsm/utils/SceneUtils.js +117 -12
- package/examples/jsm/webxr/OculusHandModel.js +3 -2
- package/examples/jsm/webxr/OculusHandPointerModel.js +6 -1
- package/examples/jsm/webxr/VRButton.js +1 -7
- package/examples/jsm/webxr/XRHandMeshModel.js +8 -3
- package/package.json +22 -18
- package/src/Three.Legacy.js +262 -36
- package/src/Three.js +4 -2
- package/src/animation/AnimationAction.js +6 -5
- package/src/animation/AnimationClip.js +1 -1
- package/src/animation/AnimationMixer.js +1 -1
- package/src/animation/AnimationUtils.js +204 -199
- package/src/animation/KeyframeTrack.js +1 -1
- package/src/animation/PropertyBinding.js +31 -5
- package/src/audio/AudioContext.js +5 -5
- package/src/cameras/CubeCamera.js +14 -21
- package/src/constants.js +2 -4
- package/src/core/BufferAttribute.js +81 -111
- package/src/core/BufferGeometry.js +3 -41
- package/src/core/InstancedBufferAttribute.js +0 -10
- package/src/core/InstancedBufferGeometry.js +1 -7
- package/src/core/InterleavedBuffer.js +1 -1
- package/src/core/InterleavedBufferAttribute.js +57 -8
- package/src/core/Object3D.js +22 -5
- package/src/core/Uniform.js +0 -7
- package/src/core/UniformsGroup.js +92 -0
- package/src/extras/DataUtils.js +104 -88
- package/src/extras/Earcut.js +67 -67
- package/src/extras/core/Path.js +1 -0
- package/src/extras/core/ShapePath.js +1 -4
- package/src/extras/curves/CatmullRomCurve3.js +4 -2
- package/src/geometries/BoxGeometry.js +1 -1
- package/src/geometries/CapsuleGeometry.js +1 -1
- package/src/geometries/CircleGeometry.js +1 -1
- package/src/geometries/ConeGeometry.js +1 -1
- package/src/geometries/CylinderGeometry.js +2 -1
- package/src/geometries/DodecahedronGeometry.js +1 -1
- package/src/geometries/EdgesGeometry.js +5 -4
- package/src/geometries/ExtrudeGeometry.js +2 -11
- package/src/geometries/IcosahedronGeometry.js +1 -1
- package/src/geometries/LatheGeometry.js +2 -2
- package/src/geometries/OctahedronGeometry.js +1 -1
- package/src/geometries/PlaneGeometry.js +2 -1
- package/src/geometries/PolyhedronGeometry.js +2 -2
- package/src/geometries/RingGeometry.js +1 -1
- package/src/geometries/ShapeGeometry.js +3 -2
- package/src/geometries/SphereGeometry.js +2 -1
- package/src/geometries/TetrahedronGeometry.js +1 -1
- package/src/geometries/TorusGeometry.js +2 -1
- package/src/geometries/TorusKnotGeometry.js +2 -1
- package/src/geometries/TubeGeometry.js +2 -1
- package/src/geometries/WireframeGeometry.js +1 -0
- package/src/helpers/ArrowHelper.js +9 -0
- package/src/helpers/Box3Helper.js +7 -0
- package/src/helpers/BoxHelper.js +7 -1
- package/src/helpers/CameraHelper.js +97 -38
- package/src/helpers/DirectionalLightHelper.js +6 -1
- package/src/helpers/GridHelper.js +7 -0
- package/src/helpers/HemisphereLightHelper.js +5 -1
- package/src/helpers/PlaneHelper.js +15 -9
- package/src/helpers/PointLightHelper.js +2 -1
- package/src/helpers/PolarGridHelper.js +25 -14
- package/src/helpers/SkeletonHelper.js +7 -0
- package/src/helpers/SpotLightHelper.js +5 -2
- package/src/lights/LightShadow.js +1 -2
- package/src/lights/PointLight.js +2 -2
- package/src/lights/SpotLight.js +4 -2
- package/src/loaders/FileLoader.js +16 -2
- package/src/loaders/LoadingManager.js +1 -1
- package/src/loaders/MaterialLoader.js +49 -7
- package/src/loaders/ObjectLoader.js +9 -42
- package/src/materials/Material.js +2 -34
- package/src/materials/Materials.js +0 -27
- package/src/materials/MeshLambertMaterial.js +28 -1
- package/src/materials/MeshPhysicalMaterial.js +1 -1
- package/src/materials/ShaderMaterial.js +3 -7
- package/src/math/Color.js +8 -18
- package/src/math/MathUtils.js +1 -7
- package/src/math/Matrix3.js +54 -25
- package/src/math/Matrix4.js +3 -27
- package/src/math/Quaternion.js +1 -21
- package/src/math/Ray.js +2 -5
- package/src/math/Sphere.js +36 -21
- package/src/math/Vector2.js +4 -24
- package/src/math/Vector3.js +7 -46
- package/src/math/Vector4.js +4 -24
- package/src/objects/InstancedMesh.js +7 -0
- package/src/objects/LOD.js +25 -6
- package/src/renderers/WebGL3DRenderTarget.js +1 -1
- package/src/renderers/WebGLArrayRenderTarget.js +1 -1
- package/src/renderers/WebGLCubeRenderTarget.js +1 -1
- package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
- package/src/renderers/WebGLRenderTarget.js +1 -1
- package/src/renderers/WebGLRenderer.js +119 -69
- package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +12 -12
- package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +3 -5
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +6 -5
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +24 -24
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
- package/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +2 -1
- package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +113 -99
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +34 -13
- package/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +28 -0
- package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +3 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +13 -1
- package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -4
- package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -4
- package/src/renderers/shaders/ShaderChunk/output_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +18 -7
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +8 -3
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +9 -6
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +14 -10
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk.js +7 -2
- package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
- package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +22 -50
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +0 -3
- package/src/renderers/shaders/ShaderLib.js +50 -36
- package/src/renderers/shaders/UniformsLib.js +13 -12
- package/src/renderers/shaders/UniformsUtils.js +29 -0
- package/src/renderers/webgl/WebGLAttributes.js +2 -0
- package/src/renderers/webgl/WebGLBackground.js +17 -9
- package/src/renderers/webgl/WebGLLights.js +37 -17
- package/src/renderers/webgl/WebGLMaterials.js +2 -1
- package/src/renderers/webgl/WebGLMorphtargets.js +0 -20
- package/src/renderers/webgl/WebGLProgram.js +6 -11
- package/src/renderers/webgl/WebGLPrograms.js +30 -26
- package/src/renderers/webgl/WebGLRenderLists.js +5 -4
- package/src/renderers/webgl/WebGLRenderStates.js +5 -4
- package/src/renderers/webgl/WebGLShaderCache.js +9 -6
- package/src/renderers/webgl/WebGLShadowMap.js +13 -16
- package/src/renderers/webgl/WebGLState.js +125 -41
- package/src/renderers/webgl/WebGLTextures.js +94 -39
- package/src/renderers/webgl/WebGLUniforms.js +156 -28
- package/src/renderers/webgl/WebGLUniformsGroups.js +372 -0
- package/src/renderers/webgl/WebGLUtils.js +3 -1
- package/src/renderers/webvr/WebVRManager.js +42 -9
- package/src/renderers/webvr/WebVRUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +91 -50
- package/src/renderers/webxr/WebXRManager.js +127 -34
- package/src/scenes/Scene.js +24 -3
- package/src/textures/CompressedArrayTexture.js +18 -0
- package/src/textures/Source.js +1 -1
- package/src/textures/Texture.js +2 -1
- package/src/utils.js +1 -1
- package/examples/js/controls/experimental/CameraControls.js +0 -1048
- package/examples/js/libs/lottie_canvas.js +0 -12751
- package/examples/js/loaders/KTX2Loader.js +0 -558
- package/examples/js/shaders/PixelShader.js +0 -51
- package/examples/jsm/controls/experimental/CameraControls.js +0 -1248
- package/examples/jsm/nodes/accessors/ReflectNode.js +0 -70
- package/examples/jsm/nodes/core/NodeVary.js +0 -14
- package/examples/jsm/nodes/core/VaryNode.js +0 -54
- package/examples/jsm/package.json +0 -3
- package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +0 -45
- package/examples/jsm/shaders/PixelShader.js +0 -44
- package/src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl.js +0 -122
|
@@ -122,7 +122,7 @@ class ConvexHull {
|
|
|
122
122
|
|
|
123
123
|
intersectRay( ray, target ) {
|
|
124
124
|
|
|
125
|
-
// based on "Fast Ray-Convex Polyhedron Intersection"
|
|
125
|
+
// based on "Fast Ray-Convex Polyhedron Intersection" by Eric Haines, GRAPHICS GEMS II
|
|
126
126
|
|
|
127
127
|
const faces = this.faces;
|
|
128
128
|
|
|
@@ -156,7 +156,7 @@ class ConvexHull {
|
|
|
156
156
|
|
|
157
157
|
if ( vD > 0 ) {
|
|
158
158
|
|
|
159
|
-
//
|
|
159
|
+
// plane faces away from the ray, so this plane is a back-face
|
|
160
160
|
|
|
161
161
|
tFar = Math.min( t, tFar );
|
|
162
162
|
|
|
@@ -263,7 +263,7 @@ class ConvexHull {
|
|
|
263
263
|
|
|
264
264
|
}
|
|
265
265
|
|
|
266
|
-
// Removes all the visible vertices that a given face is able to see which are stored in the 'assigned'
|
|
266
|
+
// Removes all the visible vertices that a given face is able to see which are stored in the 'assigned' vertex list
|
|
267
267
|
|
|
268
268
|
removeAllVerticesFromFace( face ) {
|
|
269
269
|
|
|
@@ -1268,4 +1268,4 @@ class VertexList {
|
|
|
1268
1268
|
|
|
1269
1269
|
}
|
|
1270
1270
|
|
|
1271
|
-
export { ConvexHull };
|
|
1271
|
+
export { ConvexHull, Face, HalfEdge, VertexNode, VertexList };
|
|
@@ -3,8 +3,10 @@ import {
|
|
|
3
3
|
ClampToEdgeWrapping,
|
|
4
4
|
DataTexture,
|
|
5
5
|
FloatType,
|
|
6
|
+
LinearEncoding,
|
|
6
7
|
Mesh,
|
|
7
8
|
NearestFilter,
|
|
9
|
+
NoToneMapping,
|
|
8
10
|
PlaneGeometry,
|
|
9
11
|
RGBAFormat,
|
|
10
12
|
Scene,
|
|
@@ -288,6 +290,32 @@ class GPUComputationRenderer {
|
|
|
288
290
|
|
|
289
291
|
};
|
|
290
292
|
|
|
293
|
+
this.dispose = function () {
|
|
294
|
+
|
|
295
|
+
mesh.geometry.dispose();
|
|
296
|
+
mesh.material.dispose();
|
|
297
|
+
|
|
298
|
+
const variables = this.variables;
|
|
299
|
+
|
|
300
|
+
for ( let i = 0; i < variables.length; i ++ ) {
|
|
301
|
+
|
|
302
|
+
const variable = variables[ i ];
|
|
303
|
+
|
|
304
|
+
variable.initialValueTexture?.dispose();
|
|
305
|
+
|
|
306
|
+
const renderTargets = variable.renderTargets;
|
|
307
|
+
|
|
308
|
+
for ( let j = 0; j < renderTargets.length; j ++ ) {
|
|
309
|
+
|
|
310
|
+
const renderTarget = renderTargets[ j ];
|
|
311
|
+
renderTarget.dispose();
|
|
312
|
+
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
};
|
|
318
|
+
|
|
291
319
|
function addResolutionDefine( materialShader ) {
|
|
292
320
|
|
|
293
321
|
materialShader.defines.resolution = 'vec2( ' + sizeX.toFixed( 1 ) + ', ' + sizeY.toFixed( 1 ) + ' )';
|
|
@@ -369,11 +397,26 @@ class GPUComputationRenderer {
|
|
|
369
397
|
|
|
370
398
|
const currentRenderTarget = renderer.getRenderTarget();
|
|
371
399
|
|
|
400
|
+
const currentXrEnabled = renderer.xr.enabled;
|
|
401
|
+
const currentShadowAutoUpdate = renderer.shadowMap.autoUpdate;
|
|
402
|
+
const currentOutputEncoding = renderer.outputEncoding;
|
|
403
|
+
const currentToneMapping = renderer.toneMapping;
|
|
404
|
+
|
|
405
|
+
renderer.xr.enabled = false; // Avoid camera modification
|
|
406
|
+
renderer.shadowMap.autoUpdate = false; // Avoid re-computing shadows
|
|
407
|
+
renderer.outputEncoding = LinearEncoding;
|
|
408
|
+
renderer.toneMapping = NoToneMapping;
|
|
409
|
+
|
|
372
410
|
mesh.material = material;
|
|
373
411
|
renderer.setRenderTarget( output );
|
|
374
412
|
renderer.render( scene, camera );
|
|
375
413
|
mesh.material = passThruShader;
|
|
376
414
|
|
|
415
|
+
renderer.xr.enabled = currentXrEnabled;
|
|
416
|
+
renderer.shadowMap.autoUpdate = currentShadowAutoUpdate;
|
|
417
|
+
renderer.outputEncoding = currentOutputEncoding;
|
|
418
|
+
renderer.toneMapping = currentToneMapping;
|
|
419
|
+
|
|
377
420
|
renderer.setRenderTarget( currentRenderTarget );
|
|
378
421
|
|
|
379
422
|
};
|
|
@@ -17,190 +17,188 @@ import { VolumeSlice } from '../misc/VolumeSlice.js';
|
|
|
17
17
|
* @param {string} type The type of data (uint8, uint16, ...)
|
|
18
18
|
* @param {ArrayBuffer} arrayBuffer The buffer with volume data
|
|
19
19
|
*/
|
|
20
|
-
|
|
20
|
+
class Volume {
|
|
21
|
+
|
|
22
|
+
constructor( xLength, yLength, zLength, type, arrayBuffer ) {
|
|
23
|
+
|
|
24
|
+
if ( xLength !== undefined ) {
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @member {number} xLength Width of the volume in the IJK coordinate system
|
|
28
|
+
*/
|
|
29
|
+
this.xLength = Number( xLength ) || 1;
|
|
30
|
+
/**
|
|
31
|
+
* @member {number} yLength Height of the volume in the IJK coordinate system
|
|
32
|
+
*/
|
|
33
|
+
this.yLength = Number( yLength ) || 1;
|
|
34
|
+
/**
|
|
35
|
+
* @member {number} zLength Depth of the volume in the IJK coordinate system
|
|
36
|
+
*/
|
|
37
|
+
this.zLength = Number( zLength ) || 1;
|
|
38
|
+
/**
|
|
39
|
+
* @member {Array<string>} The order of the Axis dictated by the NRRD header
|
|
40
|
+
*/
|
|
41
|
+
this.axisOrder = [ 'x', 'y', 'z' ];
|
|
42
|
+
/**
|
|
43
|
+
* @member {TypedArray} data Data of the volume
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
switch ( type ) {
|
|
47
|
+
|
|
48
|
+
case 'Uint8' :
|
|
49
|
+
case 'uint8' :
|
|
50
|
+
case 'uchar' :
|
|
51
|
+
case 'unsigned char' :
|
|
52
|
+
case 'uint8_t' :
|
|
53
|
+
this.data = new Uint8Array( arrayBuffer );
|
|
54
|
+
break;
|
|
55
|
+
case 'Int8' :
|
|
56
|
+
case 'int8' :
|
|
57
|
+
case 'signed char' :
|
|
58
|
+
case 'int8_t' :
|
|
59
|
+
this.data = new Int8Array( arrayBuffer );
|
|
60
|
+
break;
|
|
61
|
+
case 'Int16' :
|
|
62
|
+
case 'int16' :
|
|
63
|
+
case 'short' :
|
|
64
|
+
case 'short int' :
|
|
65
|
+
case 'signed short' :
|
|
66
|
+
case 'signed short int' :
|
|
67
|
+
case 'int16_t' :
|
|
68
|
+
this.data = new Int16Array( arrayBuffer );
|
|
69
|
+
break;
|
|
70
|
+
case 'Uint16' :
|
|
71
|
+
case 'uint16' :
|
|
72
|
+
case 'ushort' :
|
|
73
|
+
case 'unsigned short' :
|
|
74
|
+
case 'unsigned short int' :
|
|
75
|
+
case 'uint16_t' :
|
|
76
|
+
this.data = new Uint16Array( arrayBuffer );
|
|
77
|
+
break;
|
|
78
|
+
case 'Int32' :
|
|
79
|
+
case 'int32' :
|
|
80
|
+
case 'int' :
|
|
81
|
+
case 'signed int' :
|
|
82
|
+
case 'int32_t' :
|
|
83
|
+
this.data = new Int32Array( arrayBuffer );
|
|
84
|
+
break;
|
|
85
|
+
case 'Uint32' :
|
|
86
|
+
case 'uint32' :
|
|
87
|
+
case 'uint' :
|
|
88
|
+
case 'unsigned int' :
|
|
89
|
+
case 'uint32_t' :
|
|
90
|
+
this.data = new Uint32Array( arrayBuffer );
|
|
91
|
+
break;
|
|
92
|
+
case 'longlong' :
|
|
93
|
+
case 'long long' :
|
|
94
|
+
case 'long long int' :
|
|
95
|
+
case 'signed long long' :
|
|
96
|
+
case 'signed long long int' :
|
|
97
|
+
case 'int64' :
|
|
98
|
+
case 'int64_t' :
|
|
99
|
+
case 'ulonglong' :
|
|
100
|
+
case 'unsigned long long' :
|
|
101
|
+
case 'unsigned long long int' :
|
|
102
|
+
case 'uint64' :
|
|
103
|
+
case 'uint64_t' :
|
|
104
|
+
throw new Error( 'Error in Volume constructor : this type is not supported in JavaScript' );
|
|
105
|
+
break;
|
|
106
|
+
case 'Float32' :
|
|
107
|
+
case 'float32' :
|
|
108
|
+
case 'float' :
|
|
109
|
+
this.data = new Float32Array( arrayBuffer );
|
|
110
|
+
break;
|
|
111
|
+
case 'Float64' :
|
|
112
|
+
case 'float64' :
|
|
113
|
+
case 'double' :
|
|
114
|
+
this.data = new Float64Array( arrayBuffer );
|
|
115
|
+
break;
|
|
116
|
+
default :
|
|
117
|
+
this.data = new Uint8Array( arrayBuffer );
|
|
21
118
|
|
|
22
|
-
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if ( this.data.length !== this.xLength * this.yLength * this.zLength ) {
|
|
122
|
+
|
|
123
|
+
throw new Error( 'Error in Volume constructor, lengths are not matching arrayBuffer size' );
|
|
124
|
+
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
}
|
|
23
128
|
|
|
24
129
|
/**
|
|
25
|
-
* @member {
|
|
130
|
+
* @member {Array} spacing Spacing to apply to the volume from IJK to RAS coordinate system
|
|
26
131
|
*/
|
|
27
|
-
this.
|
|
132
|
+
this.spacing = [ 1, 1, 1 ];
|
|
28
133
|
/**
|
|
29
|
-
* @member {
|
|
134
|
+
* @member {Array} offset Offset of the volume in the RAS coordinate system
|
|
30
135
|
*/
|
|
31
|
-
this.
|
|
136
|
+
this.offset = [ 0, 0, 0 ];
|
|
32
137
|
/**
|
|
33
|
-
* @member {
|
|
138
|
+
* @member {Martrix3} matrix The IJK to RAS matrix
|
|
34
139
|
*/
|
|
35
|
-
this.
|
|
140
|
+
this.matrix = new Matrix3();
|
|
141
|
+
this.matrix.identity();
|
|
36
142
|
/**
|
|
37
|
-
* @member {
|
|
143
|
+
* @member {Martrix3} inverseMatrix The RAS to IJK matrix
|
|
38
144
|
*/
|
|
39
|
-
this.axisOrder = [ 'x', 'y', 'z' ];
|
|
40
145
|
/**
|
|
41
|
-
* @member {
|
|
146
|
+
* @member {number} lowerThreshold The voxels with values under this threshold won't appear in the slices.
|
|
147
|
+
* If changed, geometryNeedsUpdate is automatically set to true on all the slices associated to this volume
|
|
42
148
|
*/
|
|
149
|
+
let lowerThreshold = - Infinity;
|
|
150
|
+
Object.defineProperty( this, 'lowerThreshold', {
|
|
151
|
+
get: function () {
|
|
43
152
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
case 'Uint8' :
|
|
47
|
-
case 'uint8' :
|
|
48
|
-
case 'uchar' :
|
|
49
|
-
case 'unsigned char' :
|
|
50
|
-
case 'uint8_t' :
|
|
51
|
-
this.data = new Uint8Array( arrayBuffer );
|
|
52
|
-
break;
|
|
53
|
-
case 'Int8' :
|
|
54
|
-
case 'int8' :
|
|
55
|
-
case 'signed char' :
|
|
56
|
-
case 'int8_t' :
|
|
57
|
-
this.data = new Int8Array( arrayBuffer );
|
|
58
|
-
break;
|
|
59
|
-
case 'Int16' :
|
|
60
|
-
case 'int16' :
|
|
61
|
-
case 'short' :
|
|
62
|
-
case 'short int' :
|
|
63
|
-
case 'signed short' :
|
|
64
|
-
case 'signed short int' :
|
|
65
|
-
case 'int16_t' :
|
|
66
|
-
this.data = new Int16Array( arrayBuffer );
|
|
67
|
-
break;
|
|
68
|
-
case 'Uint16' :
|
|
69
|
-
case 'uint16' :
|
|
70
|
-
case 'ushort' :
|
|
71
|
-
case 'unsigned short' :
|
|
72
|
-
case 'unsigned short int' :
|
|
73
|
-
case 'uint16_t' :
|
|
74
|
-
this.data = new Uint16Array( arrayBuffer );
|
|
75
|
-
break;
|
|
76
|
-
case 'Int32' :
|
|
77
|
-
case 'int32' :
|
|
78
|
-
case 'int' :
|
|
79
|
-
case 'signed int' :
|
|
80
|
-
case 'int32_t' :
|
|
81
|
-
this.data = new Int32Array( arrayBuffer );
|
|
82
|
-
break;
|
|
83
|
-
case 'Uint32' :
|
|
84
|
-
case 'uint32' :
|
|
85
|
-
case 'uint' :
|
|
86
|
-
case 'unsigned int' :
|
|
87
|
-
case 'uint32_t' :
|
|
88
|
-
this.data = new Uint32Array( arrayBuffer );
|
|
89
|
-
break;
|
|
90
|
-
case 'longlong' :
|
|
91
|
-
case 'long long' :
|
|
92
|
-
case 'long long int' :
|
|
93
|
-
case 'signed long long' :
|
|
94
|
-
case 'signed long long int' :
|
|
95
|
-
case 'int64' :
|
|
96
|
-
case 'int64_t' :
|
|
97
|
-
case 'ulonglong' :
|
|
98
|
-
case 'unsigned long long' :
|
|
99
|
-
case 'unsigned long long int' :
|
|
100
|
-
case 'uint64' :
|
|
101
|
-
case 'uint64_t' :
|
|
102
|
-
throw new Error( 'Error in Volume constructor : this type is not supported in JavaScript' );
|
|
103
|
-
break;
|
|
104
|
-
case 'Float32' :
|
|
105
|
-
case 'float32' :
|
|
106
|
-
case 'float' :
|
|
107
|
-
this.data = new Float32Array( arrayBuffer );
|
|
108
|
-
break;
|
|
109
|
-
case 'Float64' :
|
|
110
|
-
case 'float64' :
|
|
111
|
-
case 'double' :
|
|
112
|
-
this.data = new Float64Array( arrayBuffer );
|
|
113
|
-
break;
|
|
114
|
-
default :
|
|
115
|
-
this.data = new Uint8Array( arrayBuffer );
|
|
116
|
-
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
if ( this.data.length !== this.xLength * this.yLength * this.zLength ) {
|
|
120
|
-
|
|
121
|
-
throw new Error( 'Error in Volume constructor, lengths are not matching arrayBuffer size' );
|
|
122
|
-
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* @member {Array} spacing Spacing to apply to the volume from IJK to RAS coordinate system
|
|
129
|
-
*/
|
|
130
|
-
this.spacing = [ 1, 1, 1 ];
|
|
131
|
-
/**
|
|
132
|
-
* @member {Array} offset Offset of the volume in the RAS coordinate system
|
|
133
|
-
*/
|
|
134
|
-
this.offset = [ 0, 0, 0 ];
|
|
135
|
-
/**
|
|
136
|
-
* @member {Martrix3} matrix The IJK to RAS matrix
|
|
137
|
-
*/
|
|
138
|
-
this.matrix = new Matrix3();
|
|
139
|
-
this.matrix.identity();
|
|
140
|
-
/**
|
|
141
|
-
* @member {Martrix3} inverseMatrix The RAS to IJK matrix
|
|
142
|
-
*/
|
|
143
|
-
/**
|
|
144
|
-
* @member {number} lowerThreshold The voxels with values under this threshold won't appear in the slices.
|
|
145
|
-
* If changed, geometryNeedsUpdate is automatically set to true on all the slices associated to this volume
|
|
146
|
-
*/
|
|
147
|
-
let lowerThreshold = - Infinity;
|
|
148
|
-
Object.defineProperty( this, 'lowerThreshold', {
|
|
149
|
-
get: function () {
|
|
150
|
-
|
|
151
|
-
return lowerThreshold;
|
|
152
|
-
|
|
153
|
-
},
|
|
154
|
-
set: function ( value ) {
|
|
153
|
+
return lowerThreshold;
|
|
155
154
|
|
|
156
|
-
|
|
157
|
-
|
|
155
|
+
},
|
|
156
|
+
set: function ( value ) {
|
|
158
157
|
|
|
159
|
-
|
|
158
|
+
lowerThreshold = value;
|
|
159
|
+
this.sliceList.forEach( function ( slice ) {
|
|
160
160
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
}
|
|
164
|
-
} );
|
|
165
|
-
/**
|
|
166
|
-
* @member {number} upperThreshold The voxels with values over this threshold won't appear in the slices.
|
|
167
|
-
* If changed, geometryNeedsUpdate is automatically set to true on all the slices associated to this volume
|
|
168
|
-
*/
|
|
169
|
-
let upperThreshold = Infinity;
|
|
170
|
-
Object.defineProperty( this, 'upperThreshold', {
|
|
171
|
-
get: function () {
|
|
161
|
+
slice.geometryNeedsUpdate = true;
|
|
172
162
|
|
|
173
|
-
|
|
163
|
+
} );
|
|
174
164
|
|
|
175
|
-
|
|
176
|
-
|
|
165
|
+
}
|
|
166
|
+
} );
|
|
167
|
+
/**
|
|
168
|
+
* @member {number} upperThreshold The voxels with values over this threshold won't appear in the slices.
|
|
169
|
+
* If changed, geometryNeedsUpdate is automatically set to true on all the slices associated to this volume
|
|
170
|
+
*/
|
|
171
|
+
let upperThreshold = Infinity;
|
|
172
|
+
Object.defineProperty( this, 'upperThreshold', {
|
|
173
|
+
get: function () {
|
|
177
174
|
|
|
178
|
-
|
|
179
|
-
this.sliceList.forEach( function ( slice ) {
|
|
175
|
+
return upperThreshold;
|
|
180
176
|
|
|
181
|
-
|
|
177
|
+
},
|
|
178
|
+
set: function ( value ) {
|
|
182
179
|
|
|
183
|
-
|
|
180
|
+
upperThreshold = value;
|
|
181
|
+
this.sliceList.forEach( function ( slice ) {
|
|
184
182
|
|
|
185
|
-
|
|
186
|
-
} );
|
|
183
|
+
slice.geometryNeedsUpdate = true;
|
|
187
184
|
|
|
185
|
+
} );
|
|
188
186
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
*/
|
|
192
|
-
this.sliceList = [];
|
|
187
|
+
}
|
|
188
|
+
} );
|
|
193
189
|
|
|
194
190
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
191
|
+
/**
|
|
192
|
+
* @member {Array} sliceList The list of all the slices associated to this volume
|
|
193
|
+
*/
|
|
194
|
+
this.sliceList = [];
|
|
198
195
|
|
|
199
|
-
}
|
|
200
196
|
|
|
201
|
-
|
|
197
|
+
/**
|
|
198
|
+
* @member {Array} RASDimensions This array holds the dimensions of the volume in the RAS space
|
|
199
|
+
*/
|
|
202
200
|
|
|
203
|
-
|
|
201
|
+
}
|
|
204
202
|
|
|
205
203
|
/**
|
|
206
204
|
* @member {Function} getData Shortcut for data[access(i,j,k)]
|
|
@@ -210,11 +208,11 @@ Volume.prototype = {
|
|
|
210
208
|
* @param {number} k Third coordinate
|
|
211
209
|
* @returns {number} value in the data array
|
|
212
210
|
*/
|
|
213
|
-
getData
|
|
211
|
+
getData( i, j, k ) {
|
|
214
212
|
|
|
215
213
|
return this.data[ k * this.xLength * this.yLength + j * this.xLength + i ];
|
|
216
214
|
|
|
217
|
-
}
|
|
215
|
+
}
|
|
218
216
|
|
|
219
217
|
/**
|
|
220
218
|
* @member {Function} access compute the index in the data array corresponding to the given coordinates in IJK system
|
|
@@ -224,11 +222,11 @@ Volume.prototype = {
|
|
|
224
222
|
* @param {number} k Third coordinate
|
|
225
223
|
* @returns {number} index
|
|
226
224
|
*/
|
|
227
|
-
access
|
|
225
|
+
access( i, j, k ) {
|
|
228
226
|
|
|
229
227
|
return k * this.xLength * this.yLength + j * this.xLength + i;
|
|
230
228
|
|
|
231
|
-
}
|
|
229
|
+
}
|
|
232
230
|
|
|
233
231
|
/**
|
|
234
232
|
* @member {Function} reverseAccess Retrieve the IJK coordinates of the voxel corresponding of the given index in the data
|
|
@@ -236,14 +234,14 @@ Volume.prototype = {
|
|
|
236
234
|
* @param {number} index index of the voxel
|
|
237
235
|
* @returns {Array} [x,y,z]
|
|
238
236
|
*/
|
|
239
|
-
reverseAccess
|
|
237
|
+
reverseAccess( index ) {
|
|
240
238
|
|
|
241
239
|
const z = Math.floor( index / ( this.yLength * this.xLength ) );
|
|
242
240
|
const y = Math.floor( ( index - z * this.yLength * this.xLength ) / this.xLength );
|
|
243
241
|
const x = index - z * this.yLength * this.xLength - y * this.xLength;
|
|
244
242
|
return [ x, y, z ];
|
|
245
243
|
|
|
246
|
-
}
|
|
244
|
+
}
|
|
247
245
|
|
|
248
246
|
/**
|
|
249
247
|
* @member {Function} map Apply a function to all the voxels, be careful, the value will be replaced
|
|
@@ -255,7 +253,7 @@ Volume.prototype = {
|
|
|
255
253
|
* @param {Object} context You can specify a context in which call the function, default if this Volume
|
|
256
254
|
* @returns {Volume} this
|
|
257
255
|
*/
|
|
258
|
-
map
|
|
256
|
+
map( functionToMap, context ) {
|
|
259
257
|
|
|
260
258
|
const length = this.data.length;
|
|
261
259
|
context = context || this;
|
|
@@ -268,7 +266,7 @@ Volume.prototype = {
|
|
|
268
266
|
|
|
269
267
|
return this;
|
|
270
268
|
|
|
271
|
-
}
|
|
269
|
+
}
|
|
272
270
|
|
|
273
271
|
/**
|
|
274
272
|
* @member {Function} extractPerpendicularPlane Compute the orientation of the slice and returns all the information relative to the geometry such as sliceAccess, the plane matrix (orientation and position in RAS coordinate) and the dimensions of the plane in both coordinate system.
|
|
@@ -277,7 +275,7 @@ Volume.prototype = {
|
|
|
277
275
|
* @param {number} index the index of the slice
|
|
278
276
|
* @returns {Object} an object containing all the usefull information on the geometry of the slice
|
|
279
277
|
*/
|
|
280
|
-
extractPerpendicularPlane
|
|
278
|
+
extractPerpendicularPlane( axis, RASIndex ) {
|
|
281
279
|
|
|
282
280
|
let firstSpacing,
|
|
283
281
|
secondSpacing,
|
|
@@ -387,7 +385,7 @@ Volume.prototype = {
|
|
|
387
385
|
planeHeight: planeHeight
|
|
388
386
|
};
|
|
389
387
|
|
|
390
|
-
}
|
|
388
|
+
}
|
|
391
389
|
|
|
392
390
|
/**
|
|
393
391
|
* @member {Function} extractSlice Returns a slice corresponding to the given axis and index
|
|
@@ -397,13 +395,13 @@ Volume.prototype = {
|
|
|
397
395
|
* @param {number} index the index of the slice
|
|
398
396
|
* @returns {VolumeSlice} the extracted slice
|
|
399
397
|
*/
|
|
400
|
-
extractSlice
|
|
398
|
+
extractSlice( axis, index ) {
|
|
401
399
|
|
|
402
400
|
const slice = new VolumeSlice( this, index, axis );
|
|
403
401
|
this.sliceList.push( slice );
|
|
404
402
|
return slice;
|
|
405
403
|
|
|
406
|
-
}
|
|
404
|
+
}
|
|
407
405
|
|
|
408
406
|
/**
|
|
409
407
|
* @member {Function} repaintAllSlices Call repaint on all the slices extracted from this volume
|
|
@@ -411,7 +409,7 @@ Volume.prototype = {
|
|
|
411
409
|
* @memberof Volume
|
|
412
410
|
* @returns {Volume} this
|
|
413
411
|
*/
|
|
414
|
-
repaintAllSlices
|
|
412
|
+
repaintAllSlices() {
|
|
415
413
|
|
|
416
414
|
this.sliceList.forEach( function ( slice ) {
|
|
417
415
|
|
|
@@ -421,14 +419,14 @@ Volume.prototype = {
|
|
|
421
419
|
|
|
422
420
|
return this;
|
|
423
421
|
|
|
424
|
-
}
|
|
422
|
+
}
|
|
425
423
|
|
|
426
424
|
/**
|
|
427
425
|
* @member {Function} computeMinMax Compute the minimum and the maximum of the data in the volume
|
|
428
426
|
* @memberof Volume
|
|
429
427
|
* @returns {Array} [min,max]
|
|
430
428
|
*/
|
|
431
|
-
computeMinMax
|
|
429
|
+
computeMinMax() {
|
|
432
430
|
|
|
433
431
|
let min = Infinity;
|
|
434
432
|
let max = - Infinity;
|
|
@@ -457,6 +455,6 @@ Volume.prototype = {
|
|
|
457
455
|
|
|
458
456
|
}
|
|
459
457
|
|
|
460
|
-
}
|
|
458
|
+
}
|
|
461
459
|
|
|
462
460
|
export { Volume };
|