@plastic-software/three 0.174.0 → 0.175.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +10744 -1476
- package/build/three.core.js +9633 -1096
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +918 -189
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +4 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +2658 -1697
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +2654 -1709
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +93 -39
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +171 -48
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +71 -29
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +41 -3
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +35 -0
- package/examples/jsm/loaders/DDSLoader.js +24 -0
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +42 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +218 -5
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +86 -18
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +38 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +81 -61
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +79 -2
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +108 -72
- package/examples/jsm/misc/VolumeSlice.js +88 -45
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +70 -0
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +131 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +266 -133
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
- package/examples/jsm/tsl/display/BloomNode.js +1 -1
- package/examples/jsm/tsl/display/PixelationPassNode.js +4 -4
- package/examples/jsm/tsl/display/SSRNode.js +1 -1
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +29 -3
- package/examples/jsm/tsl/math/Bayer.js +14 -1
- package/examples/jsm/tsl/utils/Raymarching.js +4 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +1 -1
- package/src/Three.TSL.js +3 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +168 -18
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/AudioAnalyser.js +1 -1
- package/src/audio/AudioListener.js +2 -2
- package/src/audio/PositionalAudio.js +5 -5
- package/src/constants.js +1432 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +23 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +166 -7
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +16 -1
- package/src/extras/Earcut.js +3 -781
- package/src/extras/ImageUtils.js +3 -2
- package/src/extras/PMREMGenerator.js +22 -17
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/core/Path.js +1 -1
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/ConeGeometry.js +2 -2
- package/src/geometries/CylinderGeometry.js +2 -2
- package/src/geometries/ExtrudeGeometry.js +71 -39
- package/src/geometries/LatheGeometry.js +1 -1
- package/src/lights/LightShadow.js +1 -1
- package/src/lights/webgpu/IESSpotLight.js +1 -1
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +4 -6
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +58 -1
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +6 -2
- package/src/loaders/nodes/NodeMaterialLoader.js +1 -1
- package/src/loaders/nodes/NodeObjectLoader.js +3 -3
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +18 -3
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +1 -1
- package/src/materials/nodes/LineBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshLambertNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshStandardNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshToonNodeMaterial.js +2 -2
- package/src/materials/nodes/NodeMaterial.js +7 -3
- package/src/materials/nodes/PointsNodeMaterial.js +1 -1
- package/src/materials/nodes/ShadowNodeMaterial.js +11 -2
- package/src/materials/nodes/SpriteNodeMaterial.js +1 -1
- package/src/materials/nodes/VolumeNodeMaterial.js +10 -1
- package/src/math/Color.js +1 -1
- package/src/math/MathUtils.js +223 -0
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/accessors/BatchNode.js +8 -8
- package/src/nodes/accessors/BuiltinNode.js +1 -1
- package/src/nodes/accessors/CubeTextureNode.js +1 -1
- package/src/nodes/accessors/InstanceNode.js +5 -5
- package/src/nodes/accessors/InstancedMeshNode.js +1 -1
- package/src/nodes/accessors/MorphNode.js +27 -23
- package/src/nodes/accessors/Normal.js +1 -1
- package/src/nodes/accessors/Object3DNode.js +12 -12
- package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
- package/src/nodes/accessors/ReferenceNode.js +1 -1
- package/src/nodes/accessors/SkinningNode.js +46 -37
- package/src/nodes/accessors/StorageBufferNode.js +1 -1
- package/src/nodes/accessors/StorageTextureNode.js +3 -3
- package/src/nodes/accessors/Texture3DNode.js +1 -1
- package/src/nodes/accessors/TextureNode.js +25 -5
- package/src/nodes/accessors/TextureSizeNode.js +1 -1
- package/src/nodes/accessors/UniformArrayNode.js +2 -2
- package/src/nodes/code/CodeNode.js +4 -4
- package/src/nodes/code/ExpressionNode.js +4 -4
- package/src/nodes/code/FunctionCallNode.js +23 -3
- package/src/nodes/code/ScriptableNode.js +4 -4
- package/src/nodes/code/ScriptableValueNode.js +2 -2
- package/src/nodes/core/AssignNode.js +1 -1
- package/src/nodes/core/AttributeNode.js +1 -1
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/CacheNode.js +1 -1
- package/src/nodes/core/ContextNode.js +1 -1
- package/src/nodes/core/InputNode.js +2 -2
- package/src/nodes/core/Node.js +14 -2
- package/src/nodes/core/NodeBuilder.js +86 -14
- package/src/nodes/core/StackNode.js +5 -5
- package/src/nodes/core/StructNode.js +1 -1
- package/src/nodes/core/StructTypeNode.js +2 -2
- package/src/nodes/core/VarNode.js +2 -8
- package/src/nodes/core/VaryingNode.js +3 -3
- package/src/nodes/display/BlendModes.js +4 -4
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/NormalMapNode.js +1 -1
- package/src/nodes/display/PosterizeNode.js +1 -1
- package/src/nodes/display/ScreenNode.js +3 -3
- package/src/nodes/display/ViewportDepthNode.js +2 -2
- package/src/nodes/display/ViewportDepthTextureNode.js +2 -2
- package/src/nodes/display/ViewportSharedTextureNode.js +2 -2
- package/src/nodes/display/ViewportTextureNode.js +4 -4
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +6 -6
- package/src/nodes/geometry/RangeNode.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +16 -40
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
- package/src/nodes/gpgpu/ComputeNode.js +30 -2
- package/src/nodes/lighting/AnalyticLightNode.js +9 -1
- package/src/nodes/lighting/LightsNode.js +3 -3
- package/src/nodes/lighting/ShadowNode.js +1 -1
- package/src/nodes/math/ConditionalNode.js +20 -3
- package/src/nodes/math/MathNode.js +83 -78
- package/src/nodes/math/OperatorNode.js +171 -82
- package/src/nodes/pmrem/PMREMNode.js +4 -4
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +115 -12
- package/src/nodes/utils/ArrayElementNode.js +3 -1
- package/src/nodes/utils/CubeMapNode.js +3 -3
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/EquirectUVNode.js +2 -2
- package/src/nodes/utils/JoinNode.js +27 -2
- package/src/nodes/utils/LoopNode.js +58 -28
- package/src/nodes/utils/MaxMipLevelNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +2 -2
- package/src/nodes/utils/RemapNode.js +6 -6
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUVNode.js +3 -3
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/nodes/utils/TriplanarTexturesNode.js +3 -3
- package/src/objects/BatchedMesh.js +4 -4
- package/src/objects/InstancedMesh.js +2 -2
- package/src/objects/LOD.js +1 -1
- package/src/objects/Skeleton.js +1 -1
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +617 -79
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Attributes.js +2 -2
- package/src/renderers/common/Backend.js +12 -3
- package/src/renderers/common/Background.js +1 -0
- package/src/renderers/common/Color4.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/PostProcessing.js +2 -0
- package/src/renderers/common/QuadMesh.js +2 -0
- package/src/renderers/common/RenderList.js +2 -2
- package/src/renderers/common/RenderObject.js +1 -1
- package/src/renderers/common/RenderObjects.js +2 -2
- package/src/renderers/common/Renderer.js +52 -31
- package/src/renderers/common/XRManager.js +333 -10
- package/src/renderers/common/extras/PMREMGenerator.js +6 -0
- package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
- package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +10 -1
- package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +8 -1
- package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +82 -0
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +22 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +8 -2
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +31 -11
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -1
- package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/triplanar_fragment.glsl.js +20 -0
- package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +52 -7
- package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +25 -6
- package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +19 -7
- package/src/renderers/shaders/ShaderChunk.js +2 -0
- package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -0
- package/src/renderers/shaders/UniformsLib.js +6 -5
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLMaterials.js +12 -0
- package/src/renderers/webgl/WebGLProgram.js +25 -5
- package/src/renderers/webgl/WebGLPrograms.js +21 -7
- package/src/renderers/webgl/WebGLState.js +9 -9
- package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
- package/src/renderers/webgpu/WebGPUBackend.js +128 -87
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
- package/src/renderers/webgpu/WebGPURenderer.js +17 -11
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +173 -1
- package/src/scenes/Scene.js +2 -1
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +59 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +5 -5
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -15,21 +15,39 @@ import {
|
|
|
15
15
|
} from 'three';
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
|
-
*
|
|
18
|
+
* A loader for the 3DS format, based on lib3ds.
|
|
19
19
|
*
|
|
20
20
|
* Loads geometry with uv and materials basic properties with texture support.
|
|
21
21
|
*
|
|
22
|
-
*
|
|
22
|
+
* ```js
|
|
23
|
+
* const loader = new TDSLoader();
|
|
24
|
+
* loader.setResourcePath( 'models/3ds/portalgun/textures/' );
|
|
25
|
+
* const object = await loader.loadAsync( 'models/3ds/portalgun/portalgun.3ds' );
|
|
26
|
+
* scene.add( object );
|
|
27
|
+
*
|
|
28
|
+
* @augments Loader
|
|
23
29
|
*/
|
|
24
|
-
|
|
25
30
|
class TDSLoader extends Loader {
|
|
26
31
|
|
|
32
|
+
/**
|
|
33
|
+
* Constructs a new 3DS loader.
|
|
34
|
+
*
|
|
35
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
36
|
+
*/
|
|
27
37
|
constructor( manager ) {
|
|
28
38
|
|
|
29
39
|
super( manager );
|
|
30
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Whether debug mode should be enabled or not.
|
|
43
|
+
*
|
|
44
|
+
* @type {boolean}
|
|
45
|
+
* @default false
|
|
46
|
+
*/
|
|
31
47
|
this.debug = false;
|
|
32
48
|
|
|
49
|
+
// internals
|
|
50
|
+
|
|
33
51
|
this.group = null;
|
|
34
52
|
|
|
35
53
|
this.materials = [];
|
|
@@ -38,13 +56,13 @@ class TDSLoader extends Loader {
|
|
|
38
56
|
}
|
|
39
57
|
|
|
40
58
|
/**
|
|
41
|
-
*
|
|
59
|
+
* Starts loading from the given URL and passes the loaded 3DS asset
|
|
60
|
+
* to the `onLoad()` callback.
|
|
42
61
|
*
|
|
43
|
-
* @
|
|
44
|
-
* @param {
|
|
45
|
-
* @param {
|
|
46
|
-
* @param {
|
|
47
|
-
* @param {Function} onError onError callback.
|
|
62
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
63
|
+
* @param {function(Group)} onLoad - Executed when the loading process has been finished.
|
|
64
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
65
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
48
66
|
*/
|
|
49
67
|
load( url, onLoad, onProgress, onError ) {
|
|
50
68
|
|
|
@@ -85,12 +103,11 @@ class TDSLoader extends Loader {
|
|
|
85
103
|
}
|
|
86
104
|
|
|
87
105
|
/**
|
|
88
|
-
*
|
|
106
|
+
* Parses the given 3DS data and returns the resulting data.
|
|
89
107
|
*
|
|
90
|
-
* @
|
|
91
|
-
* @param {
|
|
92
|
-
* @
|
|
93
|
-
* @return {Group} Group loaded from 3ds file.
|
|
108
|
+
* @param {ArrayBuffer} arraybuffer - The raw 3DS data as an array buffer.
|
|
109
|
+
* @param {string} path - The asset path.
|
|
110
|
+
* @return {Group} The parsed asset represented as a group.
|
|
94
111
|
*/
|
|
95
112
|
parse( arraybuffer, path ) {
|
|
96
113
|
|
|
@@ -113,9 +130,9 @@ class TDSLoader extends Loader {
|
|
|
113
130
|
/**
|
|
114
131
|
* Decode file content to read 3ds data.
|
|
115
132
|
*
|
|
116
|
-
* @
|
|
117
|
-
* @param {ArrayBuffer} arraybuffer Arraybuffer data to be loaded.
|
|
118
|
-
* @param {string} path Path for external resources.
|
|
133
|
+
* @private
|
|
134
|
+
* @param {ArrayBuffer} arraybuffer - Arraybuffer data to be loaded.
|
|
135
|
+
* @param {string} path - Path for external resources.
|
|
119
136
|
*/
|
|
120
137
|
readFile( arraybuffer, path ) {
|
|
121
138
|
|
|
@@ -156,9 +173,9 @@ class TDSLoader extends Loader {
|
|
|
156
173
|
/**
|
|
157
174
|
* Read mesh data chunk.
|
|
158
175
|
*
|
|
159
|
-
* @
|
|
160
|
-
* @param {Chunk} chunk to read mesh from
|
|
161
|
-
* @param {string} path Path for external resources.
|
|
176
|
+
* @private
|
|
177
|
+
* @param {Chunk} chunk - to read mesh from
|
|
178
|
+
* @param {string} path - Path for external resources.
|
|
162
179
|
*/
|
|
163
180
|
readMeshData( chunk, path ) {
|
|
164
181
|
|
|
@@ -202,8 +219,8 @@ class TDSLoader extends Loader {
|
|
|
202
219
|
/**
|
|
203
220
|
* Read named object chunk.
|
|
204
221
|
*
|
|
205
|
-
* @
|
|
206
|
-
* @param {Chunk} chunk Chunk in use.
|
|
222
|
+
* @private
|
|
223
|
+
* @param {Chunk} chunk - Chunk in use.
|
|
207
224
|
*/
|
|
208
225
|
readNamedObject( chunk ) {
|
|
209
226
|
|
|
@@ -233,9 +250,9 @@ class TDSLoader extends Loader {
|
|
|
233
250
|
/**
|
|
234
251
|
* Read material data chunk and add it to the material list.
|
|
235
252
|
*
|
|
236
|
-
* @
|
|
237
|
-
* @param {Chunk} chunk Chunk in use.
|
|
238
|
-
* @param {string} path Path for external resources.
|
|
253
|
+
* @private
|
|
254
|
+
* @param {Chunk} chunk - Chunk in use.
|
|
255
|
+
* @param {string} path - Path for external resources.
|
|
239
256
|
*/
|
|
240
257
|
readMaterialEntry( chunk, path ) {
|
|
241
258
|
|
|
@@ -335,9 +352,9 @@ class TDSLoader extends Loader {
|
|
|
335
352
|
/**
|
|
336
353
|
* Read mesh data chunk.
|
|
337
354
|
*
|
|
338
|
-
* @
|
|
339
|
-
* @param {Chunk} chunk Chunk in use.
|
|
340
|
-
* @return {Mesh} The parsed mesh.
|
|
355
|
+
* @private
|
|
356
|
+
* @param {Chunk} chunk - Chunk in use.
|
|
357
|
+
* @return {Mesh} - The parsed mesh.
|
|
341
358
|
*/
|
|
342
359
|
readMesh( chunk ) {
|
|
343
360
|
|
|
@@ -459,9 +476,9 @@ class TDSLoader extends Loader {
|
|
|
459
476
|
/**
|
|
460
477
|
* Read face array data chunk.
|
|
461
478
|
*
|
|
462
|
-
* @
|
|
463
|
-
* @param {Chunk} chunk Chunk in use.
|
|
464
|
-
* @param {Mesh} mesh Mesh to be filled with the data read.
|
|
479
|
+
* @private
|
|
480
|
+
* @param {Chunk} chunk - Chunk in use.
|
|
481
|
+
* @param {Mesh} mesh - Mesh to be filled with the data read.
|
|
465
482
|
*/
|
|
466
483
|
readFaceArray( chunk, mesh ) {
|
|
467
484
|
|
|
@@ -527,9 +544,9 @@ class TDSLoader extends Loader {
|
|
|
527
544
|
/**
|
|
528
545
|
* Read texture map data chunk.
|
|
529
546
|
*
|
|
530
|
-
* @
|
|
531
|
-
* @param {Chunk} chunk Chunk in use.
|
|
532
|
-
* @param {string} path Path for external resources.
|
|
547
|
+
* @private
|
|
548
|
+
* @param {Chunk} chunk - Chunk in use.
|
|
549
|
+
* @param {string} path - Path for external resources.
|
|
533
550
|
* @return {Texture} Texture read from this data chunk.
|
|
534
551
|
*/
|
|
535
552
|
readMap( chunk, path ) {
|
|
@@ -586,8 +603,8 @@ class TDSLoader extends Loader {
|
|
|
586
603
|
/**
|
|
587
604
|
* Read material group data chunk.
|
|
588
605
|
*
|
|
589
|
-
* @
|
|
590
|
-
* @param {Chunk} chunk Chunk in use.
|
|
606
|
+
* @private
|
|
607
|
+
* @param {Chunk} chunk - Chunk in use.
|
|
591
608
|
* @return {Object} Object with name and index of the object.
|
|
592
609
|
*/
|
|
593
610
|
readMaterialGroup( chunk ) {
|
|
@@ -612,9 +629,9 @@ class TDSLoader extends Loader {
|
|
|
612
629
|
/**
|
|
613
630
|
* Read a color value.
|
|
614
631
|
*
|
|
615
|
-
* @
|
|
616
|
-
* @param {Chunk} chunk Chunk.
|
|
617
|
-
* @return {Color} Color value read
|
|
632
|
+
* @private
|
|
633
|
+
* @param {Chunk} chunk - Chunk.
|
|
634
|
+
* @return {Color} Color value read.
|
|
618
635
|
*/
|
|
619
636
|
readColor( chunk ) {
|
|
620
637
|
|
|
@@ -654,8 +671,8 @@ class TDSLoader extends Loader {
|
|
|
654
671
|
/**
|
|
655
672
|
* Read percentage value.
|
|
656
673
|
*
|
|
657
|
-
* @
|
|
658
|
-
* @param {Chunk} chunk Chunk to read data from.
|
|
674
|
+
* @private
|
|
675
|
+
* @param {Chunk} chunk - Chunk to read data from.
|
|
659
676
|
* @return {number} Data read from the dataview.
|
|
660
677
|
*/
|
|
661
678
|
readPercentage( chunk ) {
|
|
@@ -685,8 +702,8 @@ class TDSLoader extends Loader {
|
|
|
685
702
|
*
|
|
686
703
|
* Is controlled by a flag to show or hide debug messages.
|
|
687
704
|
*
|
|
688
|
-
* @
|
|
689
|
-
* @param {Object} message Debug message to print to the console.
|
|
705
|
+
* @private
|
|
706
|
+
* @param {Object} message - Debug message to print to the console.
|
|
690
707
|
*/
|
|
691
708
|
debugMessage( message ) {
|
|
692
709
|
|
|
@@ -700,17 +717,20 @@ class TDSLoader extends Loader {
|
|
|
700
717
|
|
|
701
718
|
}
|
|
702
719
|
|
|
703
|
-
|
|
704
|
-
|
|
720
|
+
/**
|
|
721
|
+
* Read data/sub-chunks from chunk.
|
|
722
|
+
*
|
|
723
|
+
* @private
|
|
724
|
+
*/
|
|
705
725
|
class Chunk {
|
|
706
726
|
|
|
707
727
|
/**
|
|
708
728
|
* Create a new chunk
|
|
709
729
|
*
|
|
710
|
-
* @
|
|
711
|
-
* @param {DataView} data DataView to read from.
|
|
712
|
-
* @param {number} position
|
|
713
|
-
* @param {Function} debugMessage
|
|
730
|
+
* @private
|
|
731
|
+
* @param {DataView} data - DataView to read from.
|
|
732
|
+
* @param {number} position - In data.
|
|
733
|
+
* @param {Function} debugMessage - Logging callback.
|
|
714
734
|
*/
|
|
715
735
|
constructor( data, position, debugMessage ) {
|
|
716
736
|
|
|
@@ -740,10 +760,10 @@ class Chunk {
|
|
|
740
760
|
}
|
|
741
761
|
|
|
742
762
|
/**
|
|
743
|
-
*
|
|
763
|
+
* Reads a sub cchunk.
|
|
744
764
|
*
|
|
745
|
-
* @
|
|
746
|
-
* @return {Chunk | null} next sub chunk
|
|
765
|
+
* @private
|
|
766
|
+
* @return {Chunk | null} next sub chunk.
|
|
747
767
|
*/
|
|
748
768
|
readChunk() {
|
|
749
769
|
|
|
@@ -769,9 +789,9 @@ class Chunk {
|
|
|
769
789
|
}
|
|
770
790
|
|
|
771
791
|
/**
|
|
772
|
-
*
|
|
792
|
+
* Returns the ID of this chunk as Hex
|
|
773
793
|
*
|
|
774
|
-
* @
|
|
794
|
+
* @private
|
|
775
795
|
* @return {string} hex-string of id
|
|
776
796
|
*/
|
|
777
797
|
get hexId() {
|
|
@@ -789,7 +809,7 @@ class Chunk {
|
|
|
789
809
|
/**
|
|
790
810
|
* Read byte value.
|
|
791
811
|
*
|
|
792
|
-
* @
|
|
812
|
+
* @private
|
|
793
813
|
* @return {number} Data read from the dataview.
|
|
794
814
|
*/
|
|
795
815
|
readByte() {
|
|
@@ -803,7 +823,7 @@ class Chunk {
|
|
|
803
823
|
/**
|
|
804
824
|
* Read 32 bit float value.
|
|
805
825
|
*
|
|
806
|
-
* @
|
|
826
|
+
* @private
|
|
807
827
|
* @return {number} Data read from the dataview.
|
|
808
828
|
*/
|
|
809
829
|
readFloat() {
|
|
@@ -826,7 +846,7 @@ class Chunk {
|
|
|
826
846
|
/**
|
|
827
847
|
* Read 32 bit signed integer value.
|
|
828
848
|
*
|
|
829
|
-
* @
|
|
849
|
+
* @private
|
|
830
850
|
* @return {number} Data read from the dataview.
|
|
831
851
|
*/
|
|
832
852
|
readInt() {
|
|
@@ -840,7 +860,7 @@ class Chunk {
|
|
|
840
860
|
/**
|
|
841
861
|
* Read 16 bit signed integer value.
|
|
842
862
|
*
|
|
843
|
-
* @
|
|
863
|
+
* @private
|
|
844
864
|
* @return {number} Data read from the dataview.
|
|
845
865
|
*/
|
|
846
866
|
readShort() {
|
|
@@ -854,7 +874,7 @@ class Chunk {
|
|
|
854
874
|
/**
|
|
855
875
|
* Read 64 bit unsigned integer value.
|
|
856
876
|
*
|
|
857
|
-
* @
|
|
877
|
+
* @private
|
|
858
878
|
* @return {number} Data read from the dataview.
|
|
859
879
|
*/
|
|
860
880
|
readDWord() {
|
|
@@ -868,7 +888,7 @@ class Chunk {
|
|
|
868
888
|
/**
|
|
869
889
|
* Read 32 bit unsigned integer value.
|
|
870
890
|
*
|
|
871
|
-
* @
|
|
891
|
+
* @private
|
|
872
892
|
* @return {number} Data read from the dataview.
|
|
873
893
|
*/
|
|
874
894
|
readWord() {
|
|
@@ -882,7 +902,7 @@ class Chunk {
|
|
|
882
902
|
/**
|
|
883
903
|
* Read NULL terminated ASCII string value from chunk-pos.
|
|
884
904
|
*
|
|
885
|
-
* @
|
|
905
|
+
* @private
|
|
886
906
|
* @return {string} Data read from the dataview.
|
|
887
907
|
*/
|
|
888
908
|
readString() {
|
|
@@ -3,14 +3,36 @@ import {
|
|
|
3
3
|
LinearMipmapLinearFilter
|
|
4
4
|
} from 'three';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* A loader for the TGA texture format.
|
|
8
|
+
*
|
|
9
|
+
* ```js
|
|
10
|
+
* const loader = new TGALoader();
|
|
11
|
+
* const texture = await loader.loadAsync( 'textures/crate_color8.tga' );
|
|
12
|
+
* texture.colorSpace = THREE.SRGBColorSpace; // only for color textures
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* @augments DataTextureLoader
|
|
16
|
+
*/
|
|
6
17
|
class TGALoader extends DataTextureLoader {
|
|
7
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Constructs a new TGA loader.
|
|
21
|
+
*
|
|
22
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
23
|
+
*/
|
|
8
24
|
constructor( manager ) {
|
|
9
25
|
|
|
10
26
|
super( manager );
|
|
11
27
|
|
|
12
28
|
}
|
|
13
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Parses the given TGA texture data.
|
|
32
|
+
*
|
|
33
|
+
* @param {ArrayBuffer} buffer - The raw texture data.
|
|
34
|
+
* @return {DataTextureLoader~TexData} An object representing the parsed texture data.
|
|
35
|
+
*/
|
|
14
36
|
parse( buffer ) {
|
|
15
37
|
|
|
16
38
|
// reference from vthibault, https://github.com/vthibault/roBrowser/blob/master/src/Loaders/Targa.js
|
|
@@ -6,14 +6,36 @@ import {
|
|
|
6
6
|
|
|
7
7
|
import UTIF from '../libs/utif.module.js';
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* A loader for the TIFF texture format.
|
|
11
|
+
*
|
|
12
|
+
* ```js
|
|
13
|
+
* const loader = new TIFFLoader();
|
|
14
|
+
* const texture = await loader.loadAsync( 'textures/tiff/crate_lzw.tif' );
|
|
15
|
+
* texture.colorSpace = THREE.SRGBColorSpace;
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @augments DataTextureLoader
|
|
19
|
+
*/
|
|
9
20
|
class TIFFLoader extends DataTextureLoader {
|
|
10
21
|
|
|
22
|
+
/**
|
|
23
|
+
* Constructs a new TIFF loader.
|
|
24
|
+
*
|
|
25
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
26
|
+
*/
|
|
11
27
|
constructor( manager ) {
|
|
12
28
|
|
|
13
29
|
super( manager );
|
|
14
30
|
|
|
15
31
|
}
|
|
16
32
|
|
|
33
|
+
/**
|
|
34
|
+
* Parses the given TIFF texture data.
|
|
35
|
+
*
|
|
36
|
+
* @param {ArrayBuffer} buffer - The raw texture data.
|
|
37
|
+
* @return {DataTextureLoader~TexData} An object representing the parsed texture data.
|
|
38
|
+
*/
|
|
17
39
|
parse( buffer ) {
|
|
18
40
|
|
|
19
41
|
const ifds = UTIF.decode( buffer );
|
|
@@ -5,21 +5,49 @@ import {
|
|
|
5
5
|
import opentype from '../libs/opentype.module.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
8
|
+
* A loader for the TTF format.
|
|
9
|
+
*
|
|
9
10
|
* Loads TTF files and converts them into typeface JSON that can be used directly
|
|
10
11
|
* to create THREE.Font objects.
|
|
12
|
+
*
|
|
13
|
+
* ```js
|
|
14
|
+
* const loader = new TTFLoader();
|
|
15
|
+
* const json = await loader.loadAsync( 'fonts/ttf/kenpixel.ttf' );
|
|
16
|
+
* const font = new Font( json );
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @augments Loader
|
|
11
20
|
*/
|
|
12
|
-
|
|
13
21
|
class TTFLoader extends Loader {
|
|
14
22
|
|
|
23
|
+
/**
|
|
24
|
+
* Constructs a new TTF loader.
|
|
25
|
+
*
|
|
26
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
27
|
+
*/
|
|
15
28
|
constructor( manager ) {
|
|
16
29
|
|
|
17
30
|
super( manager );
|
|
18
31
|
|
|
32
|
+
/**
|
|
33
|
+
* Whether the TTF commands should be reversed or not.
|
|
34
|
+
*
|
|
35
|
+
* @type {boolean}
|
|
36
|
+
* @default false
|
|
37
|
+
*/
|
|
19
38
|
this.reversed = false;
|
|
20
39
|
|
|
21
40
|
}
|
|
22
41
|
|
|
42
|
+
/**
|
|
43
|
+
* Starts loading from the given URL and passes the loaded TTF asset
|
|
44
|
+
* to the `onLoad()` callback.
|
|
45
|
+
*
|
|
46
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
47
|
+
* @param {function(Object)} onLoad - Executed when the loading process has been finished.
|
|
48
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
49
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
50
|
+
*/
|
|
23
51
|
load( url, onLoad, onProgress, onError ) {
|
|
24
52
|
|
|
25
53
|
const scope = this;
|
|
@@ -55,6 +83,12 @@ class TTFLoader extends Loader {
|
|
|
55
83
|
|
|
56
84
|
}
|
|
57
85
|
|
|
86
|
+
/**
|
|
87
|
+
* Parses the given TTF data and returns a JSON for creating a font.
|
|
88
|
+
*
|
|
89
|
+
* @param {ArrayBuffer} arraybuffer - The raw TTF data as an array buffer.
|
|
90
|
+
* @return {Object} The result JSON.
|
|
91
|
+
*/
|
|
58
92
|
parse( arraybuffer ) {
|
|
59
93
|
|
|
60
94
|
function convert( font, reversed ) {
|
|
@@ -116,14 +116,41 @@ class USDAParser {
|
|
|
116
116
|
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
+
/**
|
|
120
|
+
* A loader for the USDZ format.
|
|
121
|
+
*
|
|
122
|
+
* USDZ files that use USDC internally are not yet supported, only USDA.
|
|
123
|
+
*
|
|
124
|
+
* ```js
|
|
125
|
+
* const loader = new USDZLoader();
|
|
126
|
+
* const model = await loader.loadAsync( 'saeukkang.usdz' );
|
|
127
|
+
* scene.add( model );
|
|
128
|
+
* ```
|
|
129
|
+
*
|
|
130
|
+
* @augments Loader
|
|
131
|
+
*/
|
|
119
132
|
class USDZLoader extends Loader {
|
|
120
133
|
|
|
134
|
+
/**
|
|
135
|
+
* Constructs a new USDZ loader.
|
|
136
|
+
*
|
|
137
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
138
|
+
*/
|
|
121
139
|
constructor( manager ) {
|
|
122
140
|
|
|
123
141
|
super( manager );
|
|
124
142
|
|
|
125
143
|
}
|
|
126
144
|
|
|
145
|
+
/**
|
|
146
|
+
* Starts loading from the given URL and passes the loaded USDZ asset
|
|
147
|
+
* to the `onLoad()` callback.
|
|
148
|
+
*
|
|
149
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
150
|
+
* @param {function(Group)} onLoad - Executed when the loading process has been finished.
|
|
151
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
152
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
153
|
+
*/
|
|
127
154
|
load( url, onLoad, onProgress, onError ) {
|
|
128
155
|
|
|
129
156
|
const scope = this;
|
|
@@ -159,6 +186,12 @@ class USDZLoader extends Loader {
|
|
|
159
186
|
|
|
160
187
|
}
|
|
161
188
|
|
|
189
|
+
/**
|
|
190
|
+
* Parses the given USDZ data and returns the resulting group.
|
|
191
|
+
*
|
|
192
|
+
* @param {ArrayBuffer} buffer - The raw USDZ data as an array buffer.
|
|
193
|
+
* @return {Group} The parsed asset as a group.
|
|
194
|
+
*/
|
|
162
195
|
parse( buffer ) {
|
|
163
196
|
|
|
164
197
|
const parser = new USDAParser();
|
|
@@ -173,7 +206,7 @@ class USDZLoader extends Loader {
|
|
|
173
206
|
|
|
174
207
|
if ( filename.endsWith( 'png' ) ) {
|
|
175
208
|
|
|
176
|
-
const blob = new Blob( [ zip[ filename ] ], { type:
|
|
209
|
+
const blob = new Blob( [ zip[ filename ] ], { type: 'image/png' } );
|
|
177
210
|
data[ filename ] = URL.createObjectURL( blob );
|
|
178
211
|
|
|
179
212
|
}
|
|
@@ -12,10 +12,8 @@ import {
|
|
|
12
12
|
UVMapping,
|
|
13
13
|
} from 'three';
|
|
14
14
|
|
|
15
|
-
// UltraHDR Image Format - https://developer.android.com/media/platform/hdr-image-format
|
|
16
|
-
// HDR/EXR to UltraHDR Converter - https://gainmap-creator.monogrid.com/
|
|
17
|
-
|
|
18
15
|
/**
|
|
16
|
+
* UltraHDR Image Format - https://developer.android.com/media/platform/hdr-image-format
|
|
19
17
|
*
|
|
20
18
|
* Short format brief:
|
|
21
19
|
*
|
|
@@ -30,36 +28,68 @@ import {
|
|
|
30
28
|
* Binary image storages are prefixed with a unique 0xFFD8 16-bit descriptor.
|
|
31
29
|
*/
|
|
32
30
|
|
|
31
|
+
|
|
32
|
+
// Calculating this SRGB powers is extremely slow for 4K images and can be sufficiently precalculated for a 3-4x speed boost
|
|
33
|
+
const SRGB_TO_LINEAR = Array( 1024 )
|
|
34
|
+
.fill( 0 )
|
|
35
|
+
.map( ( _, value ) =>
|
|
36
|
+
Math.pow( ( value / 255 ) * 0.9478672986 + 0.0521327014, 2.4 )
|
|
37
|
+
);
|
|
38
|
+
|
|
33
39
|
/**
|
|
40
|
+
* A loader for the Ultra HDR Image Format.
|
|
41
|
+
*
|
|
42
|
+
* Existing HDR or EXR textures can be converted to Ultra HDR with this [tool]{@link https://gainmap-creator.monogrid.com/}.
|
|
43
|
+
*
|
|
34
44
|
* Current feature set:
|
|
35
45
|
* - JPEG headers (required)
|
|
36
46
|
* - XMP metadata (required)
|
|
37
|
-
*
|
|
47
|
+
* - XMP validation (not implemented)
|
|
38
48
|
* - EXIF profile (not implemented)
|
|
39
49
|
* - ICC profile (not implemented)
|
|
40
50
|
* - Binary storage for SDR & HDR images (required)
|
|
41
51
|
* - Gainmap metadata (required)
|
|
42
52
|
* - Non-JPEG image formats (not implemented)
|
|
43
53
|
* - Primary image as an HDR image (not implemented)
|
|
54
|
+
*
|
|
55
|
+
* ```js
|
|
56
|
+
* const loader = new UltraHDRLoader();
|
|
57
|
+
* const texture = await loader.loadAsync( 'textures/equirectangular/ice_planet_close.jpg' );
|
|
58
|
+
* texture.mapping = THREE.EquirectangularReflectionMapping;
|
|
59
|
+
*
|
|
60
|
+
* scene.background = texture;
|
|
61
|
+
* scene.environment = texture;
|
|
62
|
+
* ```
|
|
63
|
+
*
|
|
64
|
+
* @augments Loader
|
|
44
65
|
*/
|
|
45
|
-
|
|
46
|
-
/* Calculating this SRGB powers is extremely slow for 4K images and can be sufficiently precalculated for a 3-4x speed boost */
|
|
47
|
-
const SRGB_TO_LINEAR = Array( 1024 )
|
|
48
|
-
.fill( 0 )
|
|
49
|
-
.map( ( _, value ) =>
|
|
50
|
-
Math.pow( ( value / 255 ) * 0.9478672986 + 0.0521327014, 2.4 )
|
|
51
|
-
);
|
|
52
|
-
|
|
53
66
|
class UltraHDRLoader extends Loader {
|
|
54
67
|
|
|
68
|
+
/**
|
|
69
|
+
* Constructs a new Ultra HDR loader.
|
|
70
|
+
*
|
|
71
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
72
|
+
*/
|
|
55
73
|
constructor( manager ) {
|
|
56
74
|
|
|
57
75
|
super( manager );
|
|
58
76
|
|
|
77
|
+
/**
|
|
78
|
+
* The texture type.
|
|
79
|
+
*
|
|
80
|
+
* @type {(HalfFloatType|FloatType)}
|
|
81
|
+
* @default HalfFloatType
|
|
82
|
+
*/
|
|
59
83
|
this.type = HalfFloatType;
|
|
60
84
|
|
|
61
85
|
}
|
|
62
86
|
|
|
87
|
+
/**
|
|
88
|
+
* Sets the texture type.
|
|
89
|
+
*
|
|
90
|
+
* @param {(HalfFloatType|FloatType)} value - The texture type to set.
|
|
91
|
+
* @return {RGBELoader} A reference to this loader.
|
|
92
|
+
*/
|
|
63
93
|
setDataType( value ) {
|
|
64
94
|
|
|
65
95
|
this.type = value;
|
|
@@ -68,6 +98,12 @@ class UltraHDRLoader extends Loader {
|
|
|
68
98
|
|
|
69
99
|
}
|
|
70
100
|
|
|
101
|
+
/**
|
|
102
|
+
* Parses the given Ultra HDR texture data.
|
|
103
|
+
*
|
|
104
|
+
* @param {ArrayBuffer} buffer - The raw texture data.
|
|
105
|
+
* @param {Function} onLoad - The `onLoad` callback.
|
|
106
|
+
*/
|
|
71
107
|
parse( buffer, onLoad ) {
|
|
72
108
|
|
|
73
109
|
const xmpMetadata = {
|
|
@@ -262,6 +298,16 @@ class UltraHDRLoader extends Loader {
|
|
|
262
298
|
|
|
263
299
|
}
|
|
264
300
|
|
|
301
|
+
/**
|
|
302
|
+
* Starts loading from the given URL and passes the loaded Ultra HDR texture
|
|
303
|
+
* to the `onLoad()` callback.
|
|
304
|
+
*
|
|
305
|
+
* @param {string} url - The path/URL of the files to be loaded. This can also be a data URI.
|
|
306
|
+
* @param {function(DataTexture, Object)} onLoad - Executed when the loading process has been finished.
|
|
307
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
308
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
309
|
+
* @return {DataTexture} The Ultra HDR texture.
|
|
310
|
+
*/
|
|
265
311
|
load( url, onLoad, onProgress, onError ) {
|
|
266
312
|
|
|
267
313
|
const texture = new DataTexture(
|