super-three 0.177.0 → 0.181.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 +1 -1
- package/build/three.cjs +1994 -749
- package/build/three.core.js +1358 -506
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +631 -247
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +113 -33
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +9571 -3424
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +9397 -3426
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
- package/examples/jsm/Addons.js +2 -3
- package/examples/jsm/animation/CCDIKSolver.js +1 -1
- package/examples/jsm/capabilities/WebGL.js +0 -27
- package/examples/jsm/capabilities/WebGPU.js +1 -1
- package/examples/jsm/controls/ArcballControls.js +9 -9
- package/examples/jsm/controls/DragControls.js +7 -57
- package/examples/jsm/controls/FirstPersonControls.js +3 -3
- package/examples/jsm/controls/FlyControls.js +1 -1
- package/examples/jsm/controls/OrbitControls.js +2 -2
- package/examples/jsm/controls/PointerLockControls.js +2 -10
- package/examples/jsm/controls/TrackballControls.js +1 -1
- package/examples/jsm/controls/TransformControls.js +62 -15
- package/examples/jsm/csm/CSMShadowNode.js +4 -4
- package/examples/jsm/effects/AsciiEffect.js +8 -8
- package/examples/jsm/environments/RoomEnvironment.js +8 -3
- package/examples/jsm/exporters/DRACOExporter.js +2 -2
- package/examples/jsm/exporters/EXRExporter.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +33 -25
- package/examples/jsm/exporters/KTX2Exporter.js +4 -2
- package/examples/jsm/exporters/PLYExporter.js +1 -1
- package/examples/jsm/exporters/USDZExporter.js +683 -299
- package/examples/jsm/geometries/DecalGeometry.js +2 -2
- package/examples/jsm/geometries/ParametricGeometry.js +1 -1
- package/examples/jsm/geometries/RoundedBoxGeometry.js +47 -8
- package/examples/jsm/geometries/TeapotGeometry.js +2 -2
- package/examples/jsm/geometries/TextGeometry.js +3 -2
- package/examples/jsm/gpgpu/BitonicSort.js +715 -0
- package/examples/jsm/helpers/ViewHelper.js +43 -5
- package/examples/jsm/inspector/Inspector.js +427 -0
- package/examples/jsm/inspector/RendererInspector.js +415 -0
- package/examples/jsm/inspector/tabs/Console.js +204 -0
- package/examples/jsm/inspector/tabs/Parameters.js +332 -0
- package/examples/jsm/inspector/tabs/Performance.js +268 -0
- package/examples/jsm/inspector/tabs/Viewer.js +166 -0
- package/examples/jsm/inspector/ui/Graph.js +95 -0
- package/examples/jsm/inspector/ui/Item.js +170 -0
- package/examples/jsm/inspector/ui/List.js +75 -0
- package/examples/jsm/inspector/ui/Profiler.js +170 -0
- package/examples/jsm/inspector/ui/Style.js +654 -0
- package/examples/jsm/inspector/ui/Tab.js +46 -0
- package/examples/jsm/inspector/ui/Values.js +423 -0
- package/examples/jsm/inspector/ui/utils.js +56 -0
- package/examples/jsm/interactive/HTMLMesh.js +11 -13
- package/examples/jsm/interactive/InteractiveGroup.js +1 -1
- package/examples/jsm/interactive/SelectionBox.js +30 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/libs/meshopt_decoder.module.js +75 -58
- package/examples/jsm/lights/LightProbeGenerator.js +14 -3
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/lines/Line2.js +3 -3
- package/examples/jsm/lines/LineGeometry.js +1 -1
- package/examples/jsm/lines/LineSegments2.js +2 -2
- package/examples/jsm/lines/Wireframe.js +2 -2
- package/examples/jsm/lines/WireframeGeometry2.js +1 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
- package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
- package/examples/jsm/loaders/3MFLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +4 -4
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -22
- package/examples/jsm/loaders/EXRLoader.js +210 -22
- package/examples/jsm/loaders/FBXLoader.js +4 -4
- package/examples/jsm/loaders/FontLoader.js +23 -5
- package/examples/jsm/loaders/GLTFLoader.js +14 -8
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
- package/examples/jsm/loaders/HDRLoader.js +486 -0
- package/examples/jsm/loaders/KTX2Loader.js +136 -49
- package/examples/jsm/loaders/KTXLoader.js +2 -2
- package/examples/jsm/loaders/LDrawLoader.js +1 -1
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
- package/examples/jsm/loaders/LWOLoader.js +2 -2
- package/examples/jsm/loaders/MaterialXLoader.js +233 -34
- package/examples/jsm/loaders/OBJLoader.js +1 -1
- package/examples/jsm/loaders/PDBLoader.js +1 -1
- package/examples/jsm/loaders/RGBELoader.js +7 -473
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TTFLoader.js +13 -1
- package/examples/jsm/loaders/USDLoader.js +219 -0
- package/examples/jsm/loaders/USDZLoader.js +4 -892
- package/examples/jsm/loaders/UltraHDRLoader.js +2 -2
- package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
- package/examples/jsm/loaders/usd/USDAParser.js +741 -0
- package/examples/jsm/loaders/usd/USDCParser.js +17 -0
- package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
- package/examples/jsm/math/ColorSpaces.js +19 -1
- package/examples/jsm/math/ConvexHull.js +3 -3
- package/examples/jsm/math/ImprovedNoise.js +1 -1
- package/examples/jsm/math/Lut.js +2 -2
- package/examples/jsm/math/SimplexNoise.js +1 -1
- package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
- package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
- package/examples/jsm/misc/TubePainter.js +383 -40
- package/examples/jsm/misc/Volume.js +1 -1
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/objects/LensflareMesh.js +3 -3
- package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
- package/examples/jsm/objects/Sky.js +1 -1
- package/examples/jsm/objects/SkyMesh.js +3 -3
- package/examples/jsm/objects/Water.js +3 -3
- package/examples/jsm/objects/WaterMesh.js +6 -6
- package/examples/jsm/physics/RapierPhysics.js +95 -16
- package/examples/jsm/postprocessing/GTAOPass.js +10 -9
- package/examples/jsm/postprocessing/GlitchPass.js +2 -2
- package/examples/jsm/postprocessing/OutlinePass.js +17 -17
- package/examples/jsm/postprocessing/SSAOPass.js +10 -9
- package/examples/jsm/postprocessing/SSRPass.js +37 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +8 -6
- package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
- package/examples/jsm/renderers/CSS3DRenderer.js +7 -6
- package/examples/jsm/renderers/SVGRenderer.js +1 -1
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
- package/examples/jsm/shaders/AfterimageShader.js +1 -1
- package/examples/jsm/shaders/BleachBypassShader.js +1 -1
- package/examples/jsm/shaders/BokehShader.js +1 -1
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/DotScreenShader.js +1 -1
- package/examples/jsm/shaders/FocusShader.js +1 -1
- package/examples/jsm/shaders/GTAOShader.js +2 -2
- package/examples/jsm/shaders/GodRaysShader.js +1 -1
- package/examples/jsm/shaders/KaleidoShader.js +1 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +2 -2
- package/examples/jsm/shaders/SSRShader.js +1 -1
- package/examples/jsm/shaders/SepiaShader.js +1 -1
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
- package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +11 -2
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +381 -30
- package/examples/jsm/transpiler/GLSLDecoder.js +247 -104
- package/examples/jsm/transpiler/Linker.js +327 -0
- package/examples/jsm/transpiler/TSLEncoder.js +196 -92
- package/examples/jsm/transpiler/Transpiler.js +17 -1
- package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
- package/examples/jsm/transpiler/WGSLEncoder.js +812 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +26 -24
- package/examples/jsm/tsl/display/AnamorphicNode.js +28 -4
- package/examples/jsm/tsl/display/BloomNode.js +11 -6
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +207 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +2 -0
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
- package/examples/jsm/tsl/display/GTAONode.js +53 -5
- package/examples/jsm/tsl/display/GaussianBlurNode.js +55 -43
- package/examples/jsm/tsl/display/OutlineNode.js +13 -2
- package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
- package/examples/jsm/tsl/display/SSGINode.js +654 -0
- package/examples/jsm/tsl/display/SSRNode.js +182 -65
- package/examples/jsm/tsl/display/SSSNode.js +488 -0
- package/examples/jsm/tsl/display/TRAANode.js +578 -0
- package/examples/jsm/tsl/display/boxBlur.js +65 -0
- package/examples/jsm/tsl/display/hashBlur.js +18 -20
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +22 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
- package/examples/jsm/utils/ShadowMapViewerGPU.js +12 -5
- package/examples/jsm/webxr/OculusHandModel.js +1 -1
- package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -6
- package/package.json +5 -10
- package/src/Three.Core.js +5 -2
- package/src/Three.TSL.js +112 -32
- package/src/Three.WebGPU.Nodes.js +2 -0
- package/src/Three.WebGPU.js +4 -0
- package/src/animation/AnimationClip.js +20 -4
- package/src/animation/AnimationMixer.js +3 -3
- package/src/animation/AnimationObjectGroup.js +2 -1
- package/src/animation/KeyframeTrack.js +8 -7
- package/src/animation/PropertyBinding.js +12 -11
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/audio/Audio.js +10 -9
- package/src/audio/PositionalAudio.js +1 -1
- package/src/cameras/Camera.js +14 -0
- package/src/cameras/OrthographicCamera.js +2 -2
- package/src/cameras/PerspectiveCamera.js +2 -2
- package/src/cameras/StereoCamera.js +2 -2
- package/src/constants.js +13 -5
- package/src/core/BufferAttribute.js +3 -3
- package/src/core/BufferGeometry.js +10 -10
- package/src/core/Clock.js +2 -8
- package/src/core/EventDispatcher.js +1 -1
- package/src/core/GLBufferAttribute.js +13 -1
- package/src/core/InterleavedBuffer.js +1 -1
- package/src/core/InterleavedBufferAttribute.js +3 -2
- package/src/core/Object3D.js +4 -3
- package/src/core/Raycaster.js +2 -1
- package/src/core/RenderTarget.js +10 -1
- package/{examples/jsm/misc → src/core}/Timer.js +4 -42
- package/src/extras/Controls.js +5 -4
- package/src/extras/DataUtils.js +2 -1
- package/src/extras/Earcut.js +6 -0
- package/src/extras/ImageUtils.js +2 -2
- package/src/extras/PMREMGenerator.js +279 -55
- package/src/extras/TextureUtils.js +2 -1
- package/src/extras/core/Curve.js +2 -1
- package/src/extras/core/Interpolations.js +7 -1
- package/src/extras/core/Path.js +22 -22
- package/src/extras/core/ShapePath.js +4 -4
- package/src/extras/lib/earcut.js +8 -8
- package/src/geometries/BoxGeometry.js +1 -0
- package/src/geometries/CapsuleGeometry.js +1 -0
- package/src/geometries/CircleGeometry.js +1 -0
- package/src/geometries/ConeGeometry.js +1 -0
- package/src/geometries/CylinderGeometry.js +1 -0
- package/src/geometries/DodecahedronGeometry.js +1 -0
- package/src/geometries/ExtrudeGeometry.js +8 -6
- package/src/geometries/IcosahedronGeometry.js +1 -0
- package/src/geometries/LatheGeometry.js +1 -0
- package/src/geometries/OctahedronGeometry.js +1 -0
- package/src/geometries/PlaneGeometry.js +1 -0
- package/src/geometries/RingGeometry.js +1 -0
- package/src/geometries/ShapeGeometry.js +1 -0
- package/src/geometries/SphereGeometry.js +1 -0
- package/src/geometries/TetrahedronGeometry.js +1 -0
- package/src/geometries/TorusGeometry.js +1 -0
- package/src/geometries/TorusKnotGeometry.js +1 -0
- package/src/geometries/TubeGeometry.js +1 -0
- package/src/helpers/CameraHelper.js +42 -12
- package/src/helpers/SkeletonHelper.js +35 -6
- package/src/lights/LightShadow.js +21 -8
- package/src/lights/PointLightShadow.js +1 -1
- package/src/lights/webgpu/ProjectorLight.js +1 -1
- package/src/loaders/AnimationLoader.js +2 -1
- package/src/loaders/AudioLoader.js +2 -1
- package/src/loaders/BufferGeometryLoader.js +2 -2
- package/src/loaders/Cache.js +2 -2
- package/src/loaders/DataTextureLoader.js +1 -1
- package/src/loaders/FileLoader.js +29 -5
- package/src/loaders/ImageBitmapLoader.js +32 -8
- package/src/loaders/ImageLoader.js +56 -9
- package/src/loaders/Loader.js +17 -3
- package/src/loaders/LoadingManager.js +45 -0
- package/src/loaders/MaterialLoader.js +3 -2
- package/src/loaders/ObjectLoader.js +13 -13
- package/src/loaders/TextureLoader.js +1 -1
- package/src/loaders/nodes/NodeLoader.js +3 -2
- package/src/materials/Material.js +16 -3
- package/src/materials/MeshBasicMaterial.js +2 -1
- package/src/materials/MeshDepthMaterial.js +1 -0
- package/src/materials/MeshDistanceMaterial.js +1 -1
- package/src/materials/MeshLambertMaterial.js +2 -1
- package/src/materials/MeshMatcapMaterial.js +22 -0
- package/src/materials/MeshNormalMaterial.js +1 -0
- package/src/materials/MeshPhongMaterial.js +2 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -1
- package/src/materials/MeshStandardMaterial.js +8 -7
- package/src/materials/MeshToonMaterial.js +1 -0
- package/src/materials/PointsMaterial.js +1 -1
- package/src/materials/ShaderMaterial.js +2 -2
- package/src/materials/nodes/Line2NodeMaterial.js +2 -10
- package/src/materials/nodes/MeshBasicNodeMaterial.js +4 -3
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -1
- package/src/materials/nodes/MeshSSSNodeMaterial.js +3 -3
- package/src/materials/nodes/NodeMaterial.js +90 -27
- package/src/materials/nodes/PointsNodeMaterial.js +86 -28
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
- package/src/materials/nodes/manager/NodeMaterialObserver.js +89 -3
- package/src/math/Color.js +6 -5
- package/src/math/ColorManagement.js +9 -3
- package/src/math/Cylindrical.js +1 -1
- package/src/math/Euler.js +2 -1
- package/src/math/Frustum.js +25 -9
- package/src/math/FrustumArray.js +10 -5
- package/src/math/Line3.js +129 -2
- package/src/math/MathUtils.js +13 -11
- package/src/math/Matrix2.js +1 -1
- package/src/math/Matrix3.js +2 -2
- package/src/math/Matrix4.js +55 -34
- package/src/math/Plane.js +1 -1
- package/src/math/Quaternion.js +69 -67
- package/src/math/Spherical.js +3 -3
- package/src/nodes/Nodes.js +6 -4
- package/src/nodes/TSL.js +9 -4
- package/src/nodes/accessors/AccessorsUtils.js +7 -8
- package/src/nodes/accessors/Bitangent.js +31 -25
- package/src/nodes/accessors/BufferNode.js +1 -1
- package/src/nodes/accessors/Camera.js +142 -16
- package/src/nodes/accessors/ClippingNode.js +6 -5
- package/src/nodes/accessors/CubeTextureNode.js +5 -4
- package/src/nodes/accessors/InstanceNode.js +25 -5
- package/src/nodes/accessors/Lights.js +10 -0
- package/src/nodes/accessors/Normal.js +97 -30
- package/src/nodes/accessors/Object3DNode.js +2 -2
- package/src/nodes/accessors/Position.js +25 -9
- package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
- package/src/nodes/accessors/ReferenceNode.js +20 -4
- package/src/nodes/accessors/ReflectVector.js +3 -3
- package/src/nodes/accessors/SceneNode.js +3 -2
- package/src/nodes/accessors/StorageBufferNode.js +2 -1
- package/src/nodes/accessors/StorageTextureNode.js +23 -1
- package/src/nodes/accessors/Tangent.js +25 -17
- package/src/nodes/accessors/TangentUtils.js +46 -0
- package/src/nodes/accessors/Texture3DNode.js +14 -1
- package/src/nodes/accessors/TextureBicubic.js +21 -3
- package/src/nodes/accessors/TextureNode.js +142 -44
- package/src/nodes/accessors/UniformArrayNode.js +0 -16
- package/src/nodes/code/FunctionCallNode.js +24 -4
- package/src/nodes/code/FunctionNode.js +23 -0
- package/src/nodes/core/ArrayNode.js +13 -0
- package/src/nodes/core/AssignNode.js +6 -2
- package/src/nodes/core/AttributeNode.js +2 -1
- package/src/nodes/core/ContextNode.js +48 -10
- package/src/nodes/core/IndexNode.js +2 -2
- package/src/nodes/core/InputNode.js +2 -1
- package/src/nodes/core/InspectorNode.js +128 -0
- package/src/nodes/core/{CacheNode.js → IsolateNode.js} +36 -17
- package/src/nodes/core/Node.js +167 -34
- package/src/nodes/core/NodeBuilder.js +404 -120
- package/src/nodes/core/NodeFrame.js +21 -21
- package/src/nodes/core/NodeFunction.js +2 -1
- package/src/nodes/core/NodeParser.js +2 -1
- package/src/nodes/core/NodeUniform.js +1 -1
- package/src/nodes/core/NodeUtils.js +17 -88
- package/src/nodes/core/ParameterNode.js +31 -0
- package/src/nodes/core/PropertyNode.js +7 -0
- package/src/nodes/core/StackNode.js +77 -30
- package/src/nodes/core/StructNode.js +5 -5
- package/src/nodes/core/StructTypeNode.js +1 -0
- package/src/nodes/core/SubBuildNode.js +89 -0
- package/src/nodes/core/UniformNode.js +80 -14
- package/src/nodes/core/VarNode.js +142 -16
- package/src/nodes/core/VaryingNode.js +9 -6
- package/src/nodes/display/BlendModes.js +7 -6
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/ColorAdjustment.js +1 -1
- package/src/nodes/display/FrontFacingNode.js +35 -7
- package/src/nodes/display/NormalMapNode.js +20 -50
- package/src/nodes/display/PassNode.js +206 -17
- package/src/nodes/display/RenderOutputNode.js +28 -2
- package/src/nodes/display/ScreenNode.js +44 -40
- package/src/nodes/display/ToneMappingNode.js +31 -4
- package/src/nodes/display/ToonOutlinePassNode.js +8 -0
- package/src/nodes/display/ViewportDepthTextureNode.js +16 -4
- package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
- package/src/nodes/display/ViewportTextureNode.js +94 -4
- package/src/nodes/fog/Fog.js +3 -2
- package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
- package/src/nodes/functions/BSDF/DFGApprox.js +60 -19
- package/src/nodes/functions/BasicLightingModel.js +2 -1
- package/src/nodes/functions/PhongLightingModel.js +3 -3
- package/src/nodes/functions/PhysicalLightingModel.js +19 -18
- package/src/nodes/functions/VolumetricLightingModel.js +5 -5
- package/src/nodes/functions/material/getGeometryRoughness.js +2 -2
- package/src/nodes/geometry/RangeNode.js +40 -4
- package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -1
- package/src/nodes/gpgpu/ComputeNode.js +81 -25
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +29 -3
- package/src/nodes/lighting/EnvironmentNode.js +11 -11
- package/src/nodes/lighting/LightsNode.js +7 -8
- package/src/nodes/lighting/PointShadowNode.js +6 -0
- package/src/nodes/lighting/ProjectorLightNode.js +19 -6
- package/src/nodes/lighting/ShadowFilterNode.js +3 -1
- package/src/nodes/lighting/ShadowNode.js +77 -10
- package/src/nodes/materialx/MaterialXNodes.js +131 -2
- package/src/nodes/materialx/lib/mx_noise.js +165 -1
- package/src/nodes/math/BitcastNode.js +156 -0
- package/src/nodes/math/ConditionalNode.js +25 -27
- package/src/nodes/math/MathNode.js +106 -65
- package/src/nodes/math/OperatorNode.js +28 -43
- package/src/nodes/pmrem/PMREMUtils.js +117 -2
- package/src/nodes/shapes/Shapes.js +1 -1
- package/src/nodes/tsl/TSLBase.js +6 -2
- package/src/nodes/tsl/TSLCore.js +546 -186
- package/src/nodes/utils/DebugNode.js +3 -2
- package/src/nodes/utils/EquirectUV.js +27 -0
- package/src/nodes/utils/EventNode.js +119 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
- package/src/nodes/utils/JoinNode.js +6 -3
- package/src/nodes/utils/LoopNode.js +20 -41
- package/src/nodes/utils/MatcapUV.js +22 -0
- package/src/nodes/utils/MemberNode.js +59 -7
- package/src/nodes/utils/PostProcessingUtils.js +28 -1
- package/src/nodes/utils/RTTNode.js +33 -6
- package/src/nodes/utils/ReflectorNode.js +68 -10
- package/src/nodes/utils/SampleNode.js +91 -0
- package/src/nodes/utils/SplitNode.js +11 -0
- package/src/nodes/utils/Timer.js +0 -47
- package/src/nodes/utils/TriplanarTextures.js +65 -0
- package/src/objects/BatchedMesh.js +6 -4
- package/src/objects/LOD.js +1 -1
- package/src/objects/Line.js +2 -1
- package/src/objects/LineSegments.js +2 -1
- package/src/objects/Skeleton.js +3 -2
- package/src/objects/SkinnedMesh.js +3 -1
- package/src/objects/Sprite.js +4 -3
- package/src/renderers/WebGLRenderer.js +77 -66
- package/src/renderers/common/Animation.js +13 -1
- package/src/renderers/common/Attributes.js +1 -1
- package/src/renderers/common/Backend.js +108 -27
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/Bindings.js +76 -19
- package/src/renderers/common/CanvasTarget.js +341 -0
- package/src/renderers/common/ChainMap.js +1 -1
- package/src/renderers/common/Color4.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +1 -1
- package/src/renderers/common/DataMap.js +1 -1
- package/src/renderers/common/Geometries.js +26 -0
- package/src/renderers/common/Info.js +4 -2
- package/src/renderers/common/InspectorBase.js +146 -0
- package/src/renderers/common/Pipelines.js +1 -1
- package/src/renderers/common/PostProcessing.js +61 -25
- package/src/renderers/common/QuadMesh.js +7 -1
- package/src/renderers/common/RenderContext.js +2 -2
- package/src/renderers/common/RenderList.js +7 -3
- package/src/renderers/common/RenderObject.js +84 -5
- package/src/renderers/common/RenderObjects.js +1 -1
- package/src/renderers/common/Renderer.js +486 -255
- package/src/renderers/common/RendererUtils.js +9 -0
- package/src/renderers/common/SampledTexture.js +8 -68
- package/src/renderers/common/Sampler.js +117 -0
- package/src/renderers/common/Storage3DTexture.js +100 -0
- package/src/renderers/common/StorageArrayTexture.js +84 -0
- package/src/renderers/common/StorageTexture.js +27 -0
- package/src/renderers/common/Textures.js +138 -46
- package/src/renderers/common/TimestampQueryPool.js +65 -3
- package/src/renderers/common/UniformsGroup.js +2 -1
- package/src/renderers/common/XRManager.js +63 -24
- package/src/renderers/common/XRRenderTarget.js +21 -4
- package/src/renderers/common/extras/PMREMGenerator.js +161 -66
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/NodeLibrary.js +9 -7
- package/src/renderers/common/nodes/NodeSampledTexture.js +0 -12
- package/src/renderers/common/nodes/NodeSampler.js +13 -1
- package/src/renderers/common/nodes/Nodes.js +38 -16
- package/src/renderers/shaders/DFGLUTData.js +64 -0
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +52 -18
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +21 -11
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +11 -2
- package/src/renderers/shaders/UniformsLib.js +1 -0
- package/src/renderers/shaders/UniformsUtils.js +25 -4
- package/src/renderers/webgl/WebGLAttributes.js +4 -0
- package/src/renderers/webgl/WebGLCapabilities.js +4 -3
- package/src/renderers/webgl/WebGLExtensions.js +2 -25
- package/src/renderers/webgl/WebGLInfo.js +3 -1
- package/src/renderers/webgl/WebGLProgram.js +25 -18
- package/src/renderers/webgl/WebGLPrograms.js +9 -6
- package/src/renderers/webgl/WebGLShadowMap.js +13 -2
- package/src/renderers/webgl/WebGLState.js +17 -16
- package/src/renderers/webgl/WebGLTextures.js +38 -21
- package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
- package/src/renderers/webgl/WebGLUtils.js +3 -2
- package/src/renderers/webgl-fallback/WebGLBackend.js +245 -182
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +184 -30
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +4 -0
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
- package/src/renderers/webgl-fallback/utils/WebGLState.js +9 -8
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +171 -19
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +51 -22
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -2
- package/src/renderers/webgpu/WebGPUBackend.js +205 -128
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
- package/src/renderers/webgpu/WebGPURenderer.js +3 -2
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +198 -121
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +8 -1
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +49 -33
- package/src/renderers/webgpu/utils/WebGPUConstants.js +14 -3
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +56 -37
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +6 -8
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +266 -158
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +32 -9
- package/src/renderers/webgpu/utils/WebGPUUtils.js +24 -19
- package/src/renderers/webxr/WebXRDepthSensing.js +6 -10
- package/src/renderers/webxr/WebXRManager.js +89 -13
- package/src/textures/ExternalTexture.js +56 -0
- package/src/textures/FramebufferTexture.js +2 -2
- package/src/textures/Source.js +14 -3
- package/src/textures/Texture.js +3 -2
- package/src/textures/VideoTexture.js +29 -2
- package/src/utils.js +67 -3
- package/examples/jsm/loaders/RGBMLoader.js +0 -1148
- package/examples/jsm/tsl/display/TRAAPassNode.js +0 -452
- package/src/nodes/utils/EquirectUVNode.js +0 -65
- package/src/nodes/utils/MatcapUVNode.js +0 -49
- package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { AudioContext } from '../audio/AudioContext.js';
|
|
2
2
|
import { FileLoader } from './FileLoader.js';
|
|
3
3
|
import { Loader } from './Loader.js';
|
|
4
|
+
import { error } from '../utils.js';
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* Class for loading audio buffers. Audios are internally
|
|
@@ -81,7 +82,7 @@ class AudioLoader extends Loader {
|
|
|
81
82
|
|
|
82
83
|
} else {
|
|
83
84
|
|
|
84
|
-
|
|
85
|
+
error( e );
|
|
85
86
|
|
|
86
87
|
}
|
|
87
88
|
|
|
@@ -7,7 +7,7 @@ import { InstancedBufferGeometry } from '../core/InstancedBufferGeometry.js';
|
|
|
7
7
|
import { InstancedBufferAttribute } from '../core/InstancedBufferAttribute.js';
|
|
8
8
|
import { InterleavedBufferAttribute } from '../core/InterleavedBufferAttribute.js';
|
|
9
9
|
import { InterleavedBuffer } from '../core/InterleavedBuffer.js';
|
|
10
|
-
import { getTypedArray } from '../utils.js';
|
|
10
|
+
import { getTypedArray, error } from '../utils.js';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Class for loading geometries. The files are internally
|
|
@@ -67,7 +67,7 @@ class BufferGeometryLoader extends Loader {
|
|
|
67
67
|
|
|
68
68
|
} else {
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
error( e );
|
|
71
71
|
|
|
72
72
|
}
|
|
73
73
|
|
package/src/loaders/Cache.js
CHANGED
|
@@ -35,7 +35,7 @@ const Cache = {
|
|
|
35
35
|
|
|
36
36
|
if ( this.enabled === false ) return;
|
|
37
37
|
|
|
38
|
-
//
|
|
38
|
+
// log( 'Cache', 'Adding key:', key );
|
|
39
39
|
|
|
40
40
|
this.files[ key ] = file;
|
|
41
41
|
|
|
@@ -52,7 +52,7 @@ const Cache = {
|
|
|
52
52
|
|
|
53
53
|
if ( this.enabled === false ) return;
|
|
54
54
|
|
|
55
|
-
//
|
|
55
|
+
// log( 'Cache', 'Checking key:', key );
|
|
56
56
|
|
|
57
57
|
return this.files[ key ];
|
|
58
58
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Cache } from './Cache.js';
|
|
2
2
|
import { Loader } from './Loader.js';
|
|
3
|
+
import { warn } from '../utils.js';
|
|
3
4
|
|
|
4
5
|
const loading = {};
|
|
5
6
|
|
|
@@ -41,7 +42,8 @@ class FileLoader extends Loader {
|
|
|
41
42
|
super( manager );
|
|
42
43
|
|
|
43
44
|
/**
|
|
44
|
-
* The expected mime type.
|
|
45
|
+
* The expected mime type. Valid values can be found
|
|
46
|
+
* [here](hhttps://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#mimetype)
|
|
45
47
|
*
|
|
46
48
|
* @type {string}
|
|
47
49
|
*/
|
|
@@ -55,6 +57,14 @@ class FileLoader extends Loader {
|
|
|
55
57
|
*/
|
|
56
58
|
this.responseType = '';
|
|
57
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Used for aborting requests.
|
|
62
|
+
*
|
|
63
|
+
* @private
|
|
64
|
+
* @type {AbortController}
|
|
65
|
+
*/
|
|
66
|
+
this._abortController = new AbortController();
|
|
67
|
+
|
|
58
68
|
}
|
|
59
69
|
|
|
60
70
|
/**
|
|
@@ -74,7 +84,7 @@ class FileLoader extends Loader {
|
|
|
74
84
|
|
|
75
85
|
url = this.manager.resolveURL( url );
|
|
76
86
|
|
|
77
|
-
const cached = Cache.get( url );
|
|
87
|
+
const cached = Cache.get( `file:${url}` );
|
|
78
88
|
|
|
79
89
|
if ( cached !== undefined ) {
|
|
80
90
|
|
|
@@ -121,7 +131,7 @@ class FileLoader extends Loader {
|
|
|
121
131
|
const req = new Request( url, {
|
|
122
132
|
headers: new Headers( this.requestHeader ),
|
|
123
133
|
credentials: this.withCredentials ? 'include' : 'same-origin',
|
|
124
|
-
|
|
134
|
+
signal: ( typeof AbortSignal.any === 'function' ) ? AbortSignal.any( [ this._abortController.signal, this.manager.abortController.signal ] ) : this._abortController.signal
|
|
125
135
|
} );
|
|
126
136
|
|
|
127
137
|
// record states ( avoid data race )
|
|
@@ -139,7 +149,7 @@ class FileLoader extends Loader {
|
|
|
139
149
|
|
|
140
150
|
if ( response.status === 0 ) {
|
|
141
151
|
|
|
142
|
-
|
|
152
|
+
warn( 'FileLoader: HTTP Status 0 received.' );
|
|
143
153
|
|
|
144
154
|
}
|
|
145
155
|
|
|
@@ -263,7 +273,7 @@ class FileLoader extends Loader {
|
|
|
263
273
|
|
|
264
274
|
// Add to cache only on HTTP success, so that we do not cache
|
|
265
275
|
// error response bodies as proper responses to requests.
|
|
266
|
-
Cache.add( url
|
|
276
|
+
Cache.add( `file:${url}`, data );
|
|
267
277
|
|
|
268
278
|
const callbacks = loading[ url ];
|
|
269
279
|
delete loading[ url ];
|
|
@@ -338,6 +348,20 @@ class FileLoader extends Loader {
|
|
|
338
348
|
|
|
339
349
|
}
|
|
340
350
|
|
|
351
|
+
/**
|
|
352
|
+
* Aborts ongoing fetch requests.
|
|
353
|
+
*
|
|
354
|
+
* @return {FileLoader} A reference to this instance.
|
|
355
|
+
*/
|
|
356
|
+
abort() {
|
|
357
|
+
|
|
358
|
+
this._abortController.abort();
|
|
359
|
+
this._abortController = new AbortController();
|
|
360
|
+
|
|
361
|
+
return this;
|
|
362
|
+
|
|
363
|
+
}
|
|
364
|
+
|
|
341
365
|
}
|
|
342
366
|
|
|
343
367
|
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { Cache } from './Cache.js';
|
|
2
2
|
import { Loader } from './Loader.js';
|
|
3
|
+
import { warn } from '../utils.js';
|
|
3
4
|
|
|
4
5
|
const _errorMap = new WeakMap();
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
|
-
* A loader for loading images as an [ImageBitmap]
|
|
8
|
+
* A loader for loading images as an [ImageBitmap](https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap).
|
|
8
9
|
* An `ImageBitmap` provides an asynchronous and resource efficient pathway to prepare
|
|
9
10
|
* textures for rendering.
|
|
10
11
|
*
|
|
@@ -48,13 +49,13 @@ class ImageBitmapLoader extends Loader {
|
|
|
48
49
|
|
|
49
50
|
if ( typeof createImageBitmap === 'undefined' ) {
|
|
50
51
|
|
|
51
|
-
|
|
52
|
+
warn( 'ImageBitmapLoader: createImageBitmap() not supported.' );
|
|
52
53
|
|
|
53
54
|
}
|
|
54
55
|
|
|
55
56
|
if ( typeof fetch === 'undefined' ) {
|
|
56
57
|
|
|
57
|
-
|
|
58
|
+
warn( 'ImageBitmapLoader: fetch() not supported.' );
|
|
58
59
|
|
|
59
60
|
}
|
|
60
61
|
|
|
@@ -66,11 +67,19 @@ class ImageBitmapLoader extends Loader {
|
|
|
66
67
|
*/
|
|
67
68
|
this.options = { premultiplyAlpha: 'none' };
|
|
68
69
|
|
|
70
|
+
/**
|
|
71
|
+
* Used for aborting requests.
|
|
72
|
+
*
|
|
73
|
+
* @private
|
|
74
|
+
* @type {AbortController}
|
|
75
|
+
*/
|
|
76
|
+
this._abortController = new AbortController();
|
|
77
|
+
|
|
69
78
|
}
|
|
70
79
|
|
|
71
80
|
/**
|
|
72
81
|
* Sets the given loader options. The structure of the object must match the `options` parameter of
|
|
73
|
-
* [createImageBitmap]
|
|
82
|
+
* [createImageBitmap](https://developer.mozilla.org/en-US/docs/Web/API/Window/createImageBitmap).
|
|
74
83
|
*
|
|
75
84
|
* @param {Object} options - The loader options to set.
|
|
76
85
|
* @return {ImageBitmapLoader} A reference to this image bitmap loader.
|
|
@@ -102,7 +111,7 @@ class ImageBitmapLoader extends Loader {
|
|
|
102
111
|
|
|
103
112
|
const scope = this;
|
|
104
113
|
|
|
105
|
-
const cached = Cache.get( url );
|
|
114
|
+
const cached = Cache.get( `image-bitmap:${url}` );
|
|
106
115
|
|
|
107
116
|
if ( cached !== undefined ) {
|
|
108
117
|
|
|
@@ -154,6 +163,7 @@ class ImageBitmapLoader extends Loader {
|
|
|
154
163
|
const fetchOptions = {};
|
|
155
164
|
fetchOptions.credentials = ( this.crossOrigin === 'anonymous' ) ? 'same-origin' : 'include';
|
|
156
165
|
fetchOptions.headers = this.requestHeader;
|
|
166
|
+
fetchOptions.signal = ( typeof AbortSignal.any === 'function' ) ? AbortSignal.any( [ this._abortController.signal, this.manager.abortController.signal ] ) : this._abortController.signal;
|
|
157
167
|
|
|
158
168
|
const promise = fetch( url, fetchOptions ).then( function ( res ) {
|
|
159
169
|
|
|
@@ -165,7 +175,7 @@ class ImageBitmapLoader extends Loader {
|
|
|
165
175
|
|
|
166
176
|
} ).then( function ( imageBitmap ) {
|
|
167
177
|
|
|
168
|
-
Cache.add( url
|
|
178
|
+
Cache.add( `image-bitmap:${url}`, imageBitmap );
|
|
169
179
|
|
|
170
180
|
if ( onLoad ) onLoad( imageBitmap );
|
|
171
181
|
|
|
@@ -179,18 +189,32 @@ class ImageBitmapLoader extends Loader {
|
|
|
179
189
|
|
|
180
190
|
_errorMap.set( promise, e );
|
|
181
191
|
|
|
182
|
-
Cache.remove( url );
|
|
192
|
+
Cache.remove( `image-bitmap:${url}` );
|
|
183
193
|
|
|
184
194
|
scope.manager.itemError( url );
|
|
185
195
|
scope.manager.itemEnd( url );
|
|
186
196
|
|
|
187
197
|
} );
|
|
188
198
|
|
|
189
|
-
Cache.add( url
|
|
199
|
+
Cache.add( `image-bitmap:${url}`, promise );
|
|
190
200
|
scope.manager.itemStart( url );
|
|
191
201
|
|
|
192
202
|
}
|
|
193
203
|
|
|
204
|
+
/**
|
|
205
|
+
* Aborts ongoing fetch requests.
|
|
206
|
+
*
|
|
207
|
+
* @return {ImageBitmapLoader} A reference to this instance.
|
|
208
|
+
*/
|
|
209
|
+
abort() {
|
|
210
|
+
|
|
211
|
+
this._abortController.abort();
|
|
212
|
+
this._abortController = new AbortController();
|
|
213
|
+
|
|
214
|
+
return this;
|
|
215
|
+
|
|
216
|
+
}
|
|
217
|
+
|
|
194
218
|
}
|
|
195
219
|
|
|
196
220
|
export { ImageBitmapLoader };
|
|
@@ -2,6 +2,8 @@ import { Cache } from './Cache.js';
|
|
|
2
2
|
import { Loader } from './Loader.js';
|
|
3
3
|
import { createElementNS } from '../utils.js';
|
|
4
4
|
|
|
5
|
+
const _loading = new WeakMap();
|
|
6
|
+
|
|
5
7
|
/**
|
|
6
8
|
* A loader for loading images. The class loads images with the HTML `Image` API.
|
|
7
9
|
*
|
|
@@ -11,7 +13,7 @@ import { createElementNS } from '../utils.js';
|
|
|
11
13
|
* ```
|
|
12
14
|
* Please note that `ImageLoader` has dropped support for progress
|
|
13
15
|
* events in `r84`. For an `ImageLoader` that supports progress events, see
|
|
14
|
-
* [this thread]
|
|
16
|
+
* [this thread](https://github.com/mrdoob/three.js/issues/10439#issuecomment-275785639).
|
|
15
17
|
*
|
|
16
18
|
* @augments Loader
|
|
17
19
|
*/
|
|
@@ -48,19 +50,36 @@ class ImageLoader extends Loader {
|
|
|
48
50
|
|
|
49
51
|
const scope = this;
|
|
50
52
|
|
|
51
|
-
const cached = Cache.get( url );
|
|
53
|
+
const cached = Cache.get( `image:${url}` );
|
|
52
54
|
|
|
53
55
|
if ( cached !== undefined ) {
|
|
54
56
|
|
|
55
|
-
|
|
57
|
+
if ( cached.complete === true ) {
|
|
58
|
+
|
|
59
|
+
scope.manager.itemStart( url );
|
|
60
|
+
|
|
61
|
+
setTimeout( function () {
|
|
62
|
+
|
|
63
|
+
if ( onLoad ) onLoad( cached );
|
|
64
|
+
|
|
65
|
+
scope.manager.itemEnd( url );
|
|
66
|
+
|
|
67
|
+
}, 0 );
|
|
56
68
|
|
|
57
|
-
|
|
69
|
+
} else {
|
|
58
70
|
|
|
59
|
-
|
|
71
|
+
let arr = _loading.get( cached );
|
|
60
72
|
|
|
61
|
-
|
|
73
|
+
if ( arr === undefined ) {
|
|
62
74
|
|
|
63
|
-
|
|
75
|
+
arr = [];
|
|
76
|
+
_loading.set( cached, arr );
|
|
77
|
+
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
arr.push( { onLoad, onError } );
|
|
81
|
+
|
|
82
|
+
}
|
|
64
83
|
|
|
65
84
|
return cached;
|
|
66
85
|
|
|
@@ -72,10 +91,21 @@ class ImageLoader extends Loader {
|
|
|
72
91
|
|
|
73
92
|
removeEventListeners();
|
|
74
93
|
|
|
75
|
-
Cache.add( url, this );
|
|
76
|
-
|
|
77
94
|
if ( onLoad ) onLoad( this );
|
|
78
95
|
|
|
96
|
+
//
|
|
97
|
+
|
|
98
|
+
const callbacks = _loading.get( this ) || [];
|
|
99
|
+
|
|
100
|
+
for ( let i = 0; i < callbacks.length; i ++ ) {
|
|
101
|
+
|
|
102
|
+
const callback = callbacks[ i ];
|
|
103
|
+
if ( callback.onLoad ) callback.onLoad( this );
|
|
104
|
+
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
_loading.delete( this );
|
|
108
|
+
|
|
79
109
|
scope.manager.itemEnd( url );
|
|
80
110
|
|
|
81
111
|
}
|
|
@@ -86,6 +116,22 @@ class ImageLoader extends Loader {
|
|
|
86
116
|
|
|
87
117
|
if ( onError ) onError( event );
|
|
88
118
|
|
|
119
|
+
Cache.remove( `image:${url}` );
|
|
120
|
+
|
|
121
|
+
//
|
|
122
|
+
|
|
123
|
+
const callbacks = _loading.get( this ) || [];
|
|
124
|
+
|
|
125
|
+
for ( let i = 0; i < callbacks.length; i ++ ) {
|
|
126
|
+
|
|
127
|
+
const callback = callbacks[ i ];
|
|
128
|
+
if ( callback.onError ) callback.onError( event );
|
|
129
|
+
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
_loading.delete( this );
|
|
133
|
+
|
|
134
|
+
|
|
89
135
|
scope.manager.itemError( url );
|
|
90
136
|
scope.manager.itemEnd( url );
|
|
91
137
|
|
|
@@ -107,6 +153,7 @@ class ImageLoader extends Loader {
|
|
|
107
153
|
|
|
108
154
|
}
|
|
109
155
|
|
|
156
|
+
Cache.add( `image:${url}`, image );
|
|
110
157
|
scope.manager.itemStart( url );
|
|
111
158
|
|
|
112
159
|
image.src = url;
|
package/src/loaders/Loader.js
CHANGED
|
@@ -54,7 +54,7 @@ class Loader {
|
|
|
54
54
|
this.resourcePath = '';
|
|
55
55
|
|
|
56
56
|
/**
|
|
57
|
-
* The [request header]
|
|
57
|
+
* The [request header](https://developer.mozilla.org/en-US/docs/Glossary/Request_header)
|
|
58
58
|
* used in HTTP request.
|
|
59
59
|
*
|
|
60
60
|
* @type {Object<string, any>}
|
|
@@ -67,6 +67,7 @@ class Loader {
|
|
|
67
67
|
* This method needs to be implemented by all concrete loaders. It holds the
|
|
68
68
|
* logic for loading assets from the backend.
|
|
69
69
|
*
|
|
70
|
+
* @abstract
|
|
70
71
|
* @param {string} url - The path/URL of the file to be loaded.
|
|
71
72
|
* @param {Function} onLoad - Executed when the loading process has been finished.
|
|
72
73
|
* @param {onProgressCallback} [onProgress] - Executed while the loading is in progress.
|
|
@@ -97,6 +98,7 @@ class Loader {
|
|
|
97
98
|
* This method needs to be implemented by all concrete loaders. It holds the
|
|
98
99
|
* logic for parsing the asset into three.js entities.
|
|
99
100
|
*
|
|
101
|
+
* @abstract
|
|
100
102
|
* @param {any} data - The data to parse.
|
|
101
103
|
*/
|
|
102
104
|
parse( /* data */ ) {}
|
|
@@ -117,7 +119,7 @@ class Loader {
|
|
|
117
119
|
|
|
118
120
|
/**
|
|
119
121
|
* Whether the XMLHttpRequest uses credentials such as cookies, authorization
|
|
120
|
-
* headers or TLS client certificates, see [XMLHttpRequest.withCredentials]
|
|
122
|
+
* headers or TLS client certificates, see [XMLHttpRequest.withCredentials](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials).
|
|
121
123
|
*
|
|
122
124
|
* Note: This setting has no effect if you are loading files locally or from the same domain.
|
|
123
125
|
*
|
|
@@ -160,7 +162,7 @@ class Loader {
|
|
|
160
162
|
/**
|
|
161
163
|
* Sets the given request header.
|
|
162
164
|
*
|
|
163
|
-
* @param {Object} requestHeader - A [request header]
|
|
165
|
+
* @param {Object} requestHeader - A [request header](https://developer.mozilla.org/en-US/docs/Glossary/Request_header)
|
|
164
166
|
* for configuring the HTTP request.
|
|
165
167
|
* @return {Loader} A reference to this instance.
|
|
166
168
|
*/
|
|
@@ -171,6 +173,18 @@ class Loader {
|
|
|
171
173
|
|
|
172
174
|
}
|
|
173
175
|
|
|
176
|
+
/**
|
|
177
|
+
* This method can be implemented in loaders for aborting ongoing requests.
|
|
178
|
+
*
|
|
179
|
+
* @abstract
|
|
180
|
+
* @return {Loader} A reference to this instance.
|
|
181
|
+
*/
|
|
182
|
+
abort() {
|
|
183
|
+
|
|
184
|
+
return this;
|
|
185
|
+
|
|
186
|
+
}
|
|
187
|
+
|
|
174
188
|
}
|
|
175
189
|
|
|
176
190
|
/**
|
|
@@ -69,6 +69,14 @@ class LoadingManager {
|
|
|
69
69
|
*/
|
|
70
70
|
this.onError = onError;
|
|
71
71
|
|
|
72
|
+
/**
|
|
73
|
+
* Used for aborting ongoing requests in loaders using this manager.
|
|
74
|
+
*
|
|
75
|
+
* @private
|
|
76
|
+
* @type {AbortController | null}
|
|
77
|
+
*/
|
|
78
|
+
this._abortController = null;
|
|
79
|
+
|
|
72
80
|
/**
|
|
73
81
|
* This should be called by any loader using the manager when the loader
|
|
74
82
|
* starts loading an item.
|
|
@@ -269,6 +277,43 @@ class LoadingManager {
|
|
|
269
277
|
|
|
270
278
|
};
|
|
271
279
|
|
|
280
|
+
/**
|
|
281
|
+
* Can be used to abort ongoing loading requests in loaders using this manager.
|
|
282
|
+
* The abort only works if the loaders implement {@link Loader#abort} and `AbortSignal.any()`
|
|
283
|
+
* is supported in the browser.
|
|
284
|
+
*
|
|
285
|
+
* @return {LoadingManager} A reference to this loading manager.
|
|
286
|
+
*/
|
|
287
|
+
this.abort = function () {
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
this.abortController.abort();
|
|
291
|
+
this._abortController = null;
|
|
292
|
+
|
|
293
|
+
return this;
|
|
294
|
+
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
// TODO: Revert this back to a single member variable once this issue has been fixed
|
|
300
|
+
// https://github.com/cloudflare/workerd/issues/3657
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Used for aborting ongoing requests in loaders using this manager.
|
|
304
|
+
*
|
|
305
|
+
* @type {AbortController}
|
|
306
|
+
*/
|
|
307
|
+
get abortController() {
|
|
308
|
+
|
|
309
|
+
if ( ! this._abortController ) {
|
|
310
|
+
|
|
311
|
+
this._abortController = new AbortController();
|
|
312
|
+
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
return this._abortController;
|
|
316
|
+
|
|
272
317
|
}
|
|
273
318
|
|
|
274
319
|
}
|
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
LineBasicMaterial,
|
|
27
27
|
Material,
|
|
28
28
|
} from '../materials/Materials.js';
|
|
29
|
+
import { error, warn } from '../utils.js';
|
|
29
30
|
|
|
30
31
|
/**
|
|
31
32
|
* Class for loading geometries. The files are internally
|
|
@@ -89,7 +90,7 @@ class MaterialLoader extends Loader {
|
|
|
89
90
|
|
|
90
91
|
} else {
|
|
91
92
|
|
|
92
|
-
|
|
93
|
+
error( e );
|
|
93
94
|
|
|
94
95
|
}
|
|
95
96
|
|
|
@@ -115,7 +116,7 @@ class MaterialLoader extends Loader {
|
|
|
115
116
|
|
|
116
117
|
if ( textures[ name ] === undefined ) {
|
|
117
118
|
|
|
118
|
-
|
|
119
|
+
warn( 'MaterialLoader: Undefined texture', name );
|
|
119
120
|
|
|
120
121
|
}
|
|
121
122
|
|
|
@@ -59,12 +59,12 @@ import { BufferGeometryLoader } from './BufferGeometryLoader.js';
|
|
|
59
59
|
import { Loader } from './Loader.js';
|
|
60
60
|
import { FileLoader } from './FileLoader.js';
|
|
61
61
|
import * as Geometries from '../geometries/Geometries.js';
|
|
62
|
-
import { getTypedArray } from '../utils.js';
|
|
62
|
+
import { getTypedArray, error, warn } from '../utils.js';
|
|
63
63
|
import { Box3 } from '../math/Box3.js';
|
|
64
64
|
import { Sphere } from '../math/Sphere.js';
|
|
65
65
|
|
|
66
66
|
/**
|
|
67
|
-
* A loader for loading a JSON resource in the [JSON Object/Scene format]
|
|
67
|
+
* A loader for loading a JSON resource in the [JSON Object/Scene format](https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4).
|
|
68
68
|
* The files are internally loaded via {@link FileLoader}.
|
|
69
69
|
*
|
|
70
70
|
* ```js
|
|
@@ -123,7 +123,7 @@ class ObjectLoader extends Loader {
|
|
|
123
123
|
|
|
124
124
|
if ( onError !== undefined ) onError( error );
|
|
125
125
|
|
|
126
|
-
|
|
126
|
+
error( 'ObjectLoader: Can\'t parse ' + url + '.', error.message );
|
|
127
127
|
|
|
128
128
|
return;
|
|
129
129
|
|
|
@@ -135,7 +135,7 @@ class ObjectLoader extends Loader {
|
|
|
135
135
|
|
|
136
136
|
if ( onError !== undefined ) onError( new Error( 'THREE.ObjectLoader: Can\'t load ' + url ) );
|
|
137
137
|
|
|
138
|
-
|
|
138
|
+
error( 'ObjectLoader: Can\'t load ' + url );
|
|
139
139
|
return;
|
|
140
140
|
|
|
141
141
|
}
|
|
@@ -360,7 +360,7 @@ class ObjectLoader extends Loader {
|
|
|
360
360
|
|
|
361
361
|
} else {
|
|
362
362
|
|
|
363
|
-
|
|
363
|
+
warn( `ObjectLoader: Unsupported geometry type "${ data.type }"` );
|
|
364
364
|
|
|
365
365
|
}
|
|
366
366
|
|
|
@@ -651,7 +651,7 @@ class ObjectLoader extends Loader {
|
|
|
651
651
|
|
|
652
652
|
if ( typeof value === 'number' ) return value;
|
|
653
653
|
|
|
654
|
-
|
|
654
|
+
warn( 'ObjectLoader.parseTexture: Constant should be in numeric form.', value );
|
|
655
655
|
|
|
656
656
|
return type[ value ];
|
|
657
657
|
|
|
@@ -667,13 +667,13 @@ class ObjectLoader extends Loader {
|
|
|
667
667
|
|
|
668
668
|
if ( data.image === undefined ) {
|
|
669
669
|
|
|
670
|
-
|
|
670
|
+
warn( 'ObjectLoader: No "image" specified for', data.uuid );
|
|
671
671
|
|
|
672
672
|
}
|
|
673
673
|
|
|
674
674
|
if ( images[ data.image ] === undefined ) {
|
|
675
675
|
|
|
676
|
-
|
|
676
|
+
warn( 'ObjectLoader: Undefined image', data.image );
|
|
677
677
|
|
|
678
678
|
}
|
|
679
679
|
|
|
@@ -761,7 +761,7 @@ class ObjectLoader extends Loader {
|
|
|
761
761
|
|
|
762
762
|
if ( geometries[ name ] === undefined ) {
|
|
763
763
|
|
|
764
|
-
|
|
764
|
+
warn( 'ObjectLoader: Undefined geometry', name );
|
|
765
765
|
|
|
766
766
|
}
|
|
767
767
|
|
|
@@ -783,7 +783,7 @@ class ObjectLoader extends Loader {
|
|
|
783
783
|
|
|
784
784
|
if ( materials[ uuid ] === undefined ) {
|
|
785
785
|
|
|
786
|
-
|
|
786
|
+
warn( 'ObjectLoader: Undefined material', uuid );
|
|
787
787
|
|
|
788
788
|
}
|
|
789
789
|
|
|
@@ -797,7 +797,7 @@ class ObjectLoader extends Loader {
|
|
|
797
797
|
|
|
798
798
|
if ( materials[ name ] === undefined ) {
|
|
799
799
|
|
|
800
|
-
|
|
800
|
+
warn( 'ObjectLoader: Undefined material', name );
|
|
801
801
|
|
|
802
802
|
}
|
|
803
803
|
|
|
@@ -809,7 +809,7 @@ class ObjectLoader extends Loader {
|
|
|
809
809
|
|
|
810
810
|
if ( textures[ uuid ] === undefined ) {
|
|
811
811
|
|
|
812
|
-
|
|
812
|
+
warn( 'ObjectLoader: Undefined texture', uuid );
|
|
813
813
|
|
|
814
814
|
}
|
|
815
815
|
|
|
@@ -1210,7 +1210,7 @@ class ObjectLoader extends Loader {
|
|
|
1210
1210
|
|
|
1211
1211
|
if ( skeleton === undefined ) {
|
|
1212
1212
|
|
|
1213
|
-
|
|
1213
|
+
warn( 'ObjectLoader: No skeleton found with UUID:', child.skeleton );
|
|
1214
1214
|
|
|
1215
1215
|
} else {
|
|
1216
1216
|
|
|
@@ -14,7 +14,7 @@ import { Loader } from './Loader.js';
|
|
|
14
14
|
* ```
|
|
15
15
|
* Please note that `TextureLoader` has dropped support for progress
|
|
16
16
|
* events in `r84`. For a `TextureLoader` that supports progress events, see
|
|
17
|
-
* [this thread]
|
|
17
|
+
* [this thread](https://github.com/mrdoob/three.js/issues/10439#issuecomment-293260145).
|
|
18
18
|
*
|
|
19
19
|
* @augments Loader
|
|
20
20
|
*/
|
|
@@ -2,6 +2,7 @@ import { nodeObject, float } from '../../nodes/tsl/TSLBase.js';
|
|
|
2
2
|
|
|
3
3
|
import { Loader } from '../Loader.js';
|
|
4
4
|
import { FileLoader } from '../../loaders/FileLoader.js';
|
|
5
|
+
import { error } from '../../utils.js';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* A loader for loading node objects in the three.js JSON Object/Scene format.
|
|
@@ -63,7 +64,7 @@ class NodeLoader extends Loader {
|
|
|
63
64
|
|
|
64
65
|
} else {
|
|
65
66
|
|
|
66
|
-
|
|
67
|
+
error( e );
|
|
67
68
|
|
|
68
69
|
}
|
|
69
70
|
|
|
@@ -179,7 +180,7 @@ class NodeLoader extends Loader {
|
|
|
179
180
|
|
|
180
181
|
if ( this.nodes[ type ] === undefined ) {
|
|
181
182
|
|
|
182
|
-
|
|
183
|
+
error( 'NodeLoader: Node type not found:', type );
|
|
183
184
|
return float();
|
|
184
185
|
|
|
185
186
|
}
|