@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
|
@@ -11,12 +11,38 @@ import {
|
|
|
11
11
|
DataUtils
|
|
12
12
|
} from 'three';
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* A loader for the IES format.
|
|
16
|
+
*
|
|
17
|
+
* The loaded texture should be assigned to {@link IESSpotLight#map}.
|
|
18
|
+
*
|
|
19
|
+
* ```js
|
|
20
|
+
* const loader = new IESLoader();
|
|
21
|
+
* const texture = await loader.loadAsync( 'ies/007cfb11e343e2f42e3b476be4ab684e.ies' );
|
|
22
|
+
*
|
|
23
|
+
* const spotLight = new THREE.IESSpotLight( 0xff0000, 500 );
|
|
24
|
+
* spotLight.iesMap = texture;
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @augments Loader
|
|
28
|
+
*/
|
|
14
29
|
class IESLoader extends Loader {
|
|
15
30
|
|
|
31
|
+
/**
|
|
32
|
+
* Constructs a new IES loader.
|
|
33
|
+
*
|
|
34
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
35
|
+
*/
|
|
16
36
|
constructor( manager ) {
|
|
17
37
|
|
|
18
38
|
super( manager );
|
|
19
39
|
|
|
40
|
+
/**
|
|
41
|
+
* The texture type.
|
|
42
|
+
*
|
|
43
|
+
* @type {(HalfFloatType|FloatType)}
|
|
44
|
+
* @default HalfFloatType
|
|
45
|
+
*/
|
|
20
46
|
this.type = HalfFloatType;
|
|
21
47
|
|
|
22
48
|
}
|
|
@@ -112,6 +138,15 @@ class IESLoader extends Loader {
|
|
|
112
138
|
|
|
113
139
|
}
|
|
114
140
|
|
|
141
|
+
/**
|
|
142
|
+
* Starts loading from the given URL and passes the loaded IES texture
|
|
143
|
+
* to the `onLoad()` callback.
|
|
144
|
+
*
|
|
145
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
146
|
+
* @param {function(DataTexture)} onLoad - Executed when the loading process has been finished.
|
|
147
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
148
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
149
|
+
*/
|
|
115
150
|
load( url, onLoad, onProgress, onError ) {
|
|
116
151
|
|
|
117
152
|
const loader = new FileLoader( this.manager );
|
|
@@ -129,6 +164,12 @@ class IESLoader extends Loader {
|
|
|
129
164
|
|
|
130
165
|
}
|
|
131
166
|
|
|
167
|
+
/**
|
|
168
|
+
* Parses the given IES data.
|
|
169
|
+
*
|
|
170
|
+
* @param {string} text - The raw IES data.
|
|
171
|
+
* @return {DataTexture} THE IES data as a texture.
|
|
172
|
+
*/
|
|
132
173
|
parse( text ) {
|
|
133
174
|
|
|
134
175
|
const type = this.type;
|
|
@@ -7,14 +7,40 @@ import {
|
|
|
7
7
|
import { ColladaLoader } from '../loaders/ColladaLoader.js';
|
|
8
8
|
import * as fflate from '../libs/fflate.module.js';
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* A loader for the KMZ format.
|
|
12
|
+
*
|
|
13
|
+
* ```js
|
|
14
|
+
* const loader = new KMZLoader();
|
|
15
|
+
* const kmz = await loader.loadAsync( './models/kmz/Box.kmz' );
|
|
16
|
+
*
|
|
17
|
+
* scene.add( kmz.scene );
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @augments Loader
|
|
21
|
+
*/
|
|
10
22
|
class KMZLoader extends Loader {
|
|
11
23
|
|
|
24
|
+
/**
|
|
25
|
+
* Constructs a new KMZ loader.
|
|
26
|
+
*
|
|
27
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
28
|
+
*/
|
|
12
29
|
constructor( manager ) {
|
|
13
30
|
|
|
14
31
|
super( manager );
|
|
15
32
|
|
|
16
33
|
}
|
|
17
34
|
|
|
35
|
+
/**
|
|
36
|
+
* Starts loading from the given URL and passes the loaded KMZ asset
|
|
37
|
+
* to the `onLoad()` callback.
|
|
38
|
+
*
|
|
39
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
40
|
+
* @param {function({scene:Group})} onLoad - Executed when the loading process has been finished.
|
|
41
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
42
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
43
|
+
*/
|
|
18
44
|
load( url, onLoad, onProgress, onError ) {
|
|
19
45
|
|
|
20
46
|
const scope = this;
|
|
@@ -50,6 +76,12 @@ class KMZLoader extends Loader {
|
|
|
50
76
|
|
|
51
77
|
}
|
|
52
78
|
|
|
79
|
+
/**
|
|
80
|
+
* Parses the given KMZ data and returns an object holding the scene.
|
|
81
|
+
*
|
|
82
|
+
* @param {ArrayBuffer} data - The raw KMZ data as an array buffer.
|
|
83
|
+
* @return {{scene:Group}} The parsed KMZ asset.
|
|
84
|
+
*/
|
|
53
85
|
parse( data ) {
|
|
54
86
|
|
|
55
87
|
function findFile( url ) {
|
|
@@ -1,17 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Loader for KTX 2.0 GPU Texture containers.
|
|
3
|
-
*
|
|
4
|
-
* KTX 2.0 is a container format for various GPU texture formats. The loader
|
|
5
|
-
* supports Basis Universal GPU textures, which can be quickly transcoded to
|
|
6
|
-
* a wide variety of GPU texture compression formats, as well as some
|
|
7
|
-
* uncompressed DataTexture and Data3DTexture formats.
|
|
8
|
-
*
|
|
9
|
-
* References:
|
|
10
|
-
* - KTX: http://github.khronos.org/KTX-Specification/
|
|
11
|
-
* - DFD: https://www.khronos.org/registry/DataFormat/specs/1.3/dataformat.1.3.html#basicdescriptor
|
|
12
|
-
* - BasisU HDR: https://github.com/BinomialLLC/basis_universal/wiki/UASTC-HDR-Texture-Specification-v1.0
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
1
|
import {
|
|
16
2
|
CompressedTexture,
|
|
17
3
|
CompressedArrayTexture,
|
|
@@ -79,8 +65,39 @@ let _activeLoaders = 0;
|
|
|
79
65
|
|
|
80
66
|
let _zstd;
|
|
81
67
|
|
|
68
|
+
/**
|
|
69
|
+
* A loader for KTX 2.0 GPU Texture containers.
|
|
70
|
+
*
|
|
71
|
+
* KTX 2.0 is a container format for various GPU texture formats. The loader supports Basis Universal GPU textures,
|
|
72
|
+
* which can be quickly transcoded to a wide variety of GPU texture compression formats. While KTX 2.0 also allows
|
|
73
|
+
* other hardware-specific formats, this loader does not yet parse them.
|
|
74
|
+
*
|
|
75
|
+
* This loader parses the KTX 2.0 container and transcodes to a supported GPU compressed texture format.
|
|
76
|
+
* The required WASM transcoder and JS wrapper are available from the `examples/jsm/libs/basis` directory.
|
|
77
|
+
*
|
|
78
|
+
* This loader relies on Web Assembly which is not supported in older browsers.
|
|
79
|
+
*
|
|
80
|
+
* References:
|
|
81
|
+
* - [KTX specification]{@link http://github.khronos.org/KTX-Specification/}
|
|
82
|
+
* - [DFD]{@link https://www.khronos.org/registry/DataFormat/specs/1.3/dataformat.1.3.html#basicdescriptor}
|
|
83
|
+
* - [BasisU HDR]{@link https://github.com/BinomialLLC/basis_universal/wiki/UASTC-HDR-Texture-Specification-v1.0}
|
|
84
|
+
*
|
|
85
|
+
* ```js
|
|
86
|
+
* const loader = new KTX2Loader();
|
|
87
|
+
* loader.setTranscoderPath( 'examples/jsm/libs/basis/' );
|
|
88
|
+
* loader.detectSupport( renderer );
|
|
89
|
+
* const texture = loader.loadAsync( 'diffuse.ktx2' );
|
|
90
|
+
* ```
|
|
91
|
+
*
|
|
92
|
+
* @augments Loader
|
|
93
|
+
*/
|
|
82
94
|
class KTX2Loader extends Loader {
|
|
83
95
|
|
|
96
|
+
/**
|
|
97
|
+
* Constructs a new KTX2 loader.
|
|
98
|
+
*
|
|
99
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
100
|
+
*/
|
|
84
101
|
constructor( manager ) {
|
|
85
102
|
|
|
86
103
|
super( manager );
|
|
@@ -106,6 +123,14 @@ class KTX2Loader extends Loader {
|
|
|
106
123
|
|
|
107
124
|
}
|
|
108
125
|
|
|
126
|
+
/**
|
|
127
|
+
* Sets the transcoder path.
|
|
128
|
+
*
|
|
129
|
+
* The WASM transcoder and JS wrapper are available from the `examples/jsm/libs/basis` directory.
|
|
130
|
+
*
|
|
131
|
+
* @param {string} path - The transcoder path to set.
|
|
132
|
+
* @return {KTX2Loader} A reference to this loader.
|
|
133
|
+
*/
|
|
109
134
|
setTranscoderPath( path ) {
|
|
110
135
|
|
|
111
136
|
this.transcoderPath = path;
|
|
@@ -114,14 +139,28 @@ class KTX2Loader extends Loader {
|
|
|
114
139
|
|
|
115
140
|
}
|
|
116
141
|
|
|
117
|
-
|
|
142
|
+
/**
|
|
143
|
+
* Sets the maximum number of Web Workers to be allocated by this instance.
|
|
144
|
+
*
|
|
145
|
+
* @param {number} workerLimit - The worker limit.
|
|
146
|
+
* @return {KTX2Loader} A reference to this loader.
|
|
147
|
+
*/
|
|
148
|
+
setWorkerLimit( workerLimit ) {
|
|
118
149
|
|
|
119
|
-
this.workerPool.setWorkerLimit(
|
|
150
|
+
this.workerPool.setWorkerLimit( workerLimit );
|
|
120
151
|
|
|
121
152
|
return this;
|
|
122
153
|
|
|
123
154
|
}
|
|
124
155
|
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Async version of {@link KTX2Loader#detectSupport}.
|
|
159
|
+
*
|
|
160
|
+
* @async
|
|
161
|
+
* @param {WebGPURenderer|WebGLRenderer} renderer - The renderer.
|
|
162
|
+
* @return {Promise} A Promise that resolves when the support has been detected.
|
|
163
|
+
*/
|
|
125
164
|
async detectSupportAsync( renderer ) {
|
|
126
165
|
|
|
127
166
|
this.workerConfig = {
|
|
@@ -138,6 +177,13 @@ class KTX2Loader extends Loader {
|
|
|
138
177
|
|
|
139
178
|
}
|
|
140
179
|
|
|
180
|
+
/**
|
|
181
|
+
* Detects hardware support for available compressed texture formats, to determine
|
|
182
|
+
* the output format for the transcoder. Must be called before loading a texture.
|
|
183
|
+
*
|
|
184
|
+
* @param {WebGPURenderer|WebGLRenderer} renderer - The renderer.
|
|
185
|
+
* @return {KTX2Loader} A reference to this loader.
|
|
186
|
+
*/
|
|
141
187
|
detectSupport( renderer ) {
|
|
142
188
|
|
|
143
189
|
if ( renderer.isWebGPURenderer === true ) {
|
|
@@ -172,6 +218,8 @@ class KTX2Loader extends Loader {
|
|
|
172
218
|
|
|
173
219
|
}
|
|
174
220
|
|
|
221
|
+
// TODO: Make this method private
|
|
222
|
+
|
|
175
223
|
init() {
|
|
176
224
|
|
|
177
225
|
if ( ! this.transcoderPending ) {
|
|
@@ -243,6 +291,15 @@ class KTX2Loader extends Loader {
|
|
|
243
291
|
|
|
244
292
|
}
|
|
245
293
|
|
|
294
|
+
/**
|
|
295
|
+
* Starts loading from the given URL and passes the loaded KTX2 texture
|
|
296
|
+
* to the `onLoad()` callback.
|
|
297
|
+
*
|
|
298
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
299
|
+
* @param {function(CompressedTexture)} onLoad - Executed when the loading process has been finished.
|
|
300
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
301
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
302
|
+
*/
|
|
246
303
|
load( url, onLoad, onProgress, onError ) {
|
|
247
304
|
|
|
248
305
|
if ( this.workerConfig === null ) {
|
|
@@ -264,6 +321,14 @@ class KTX2Loader extends Loader {
|
|
|
264
321
|
|
|
265
322
|
}
|
|
266
323
|
|
|
324
|
+
/**
|
|
325
|
+
* Parses the given KTX2 data.
|
|
326
|
+
*
|
|
327
|
+
* @param {ArrayBuffer} buffer - The raw KTX2 data as an array buffer.
|
|
328
|
+
* @param {function(CompressedTexture)} onLoad - Executed when the loading/parsing process has been finished.
|
|
329
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
330
|
+
* @returns {Promise} A Promise that resolves when the parsing has been finished.
|
|
331
|
+
*/
|
|
267
332
|
parse( buffer, onLoad, onError ) {
|
|
268
333
|
|
|
269
334
|
if ( this.workerConfig === null ) {
|
|
@@ -323,6 +388,7 @@ class KTX2Loader extends Loader {
|
|
|
323
388
|
}
|
|
324
389
|
|
|
325
390
|
/**
|
|
391
|
+
* @private
|
|
326
392
|
* @param {ArrayBuffer} buffer
|
|
327
393
|
* @param {?Object} config
|
|
328
394
|
* @return {Promise<CompressedTexture|CompressedArrayTexture|DataTexture|Data3DTexture>}
|
|
@@ -364,6 +430,10 @@ class KTX2Loader extends Loader {
|
|
|
364
430
|
|
|
365
431
|
}
|
|
366
432
|
|
|
433
|
+
/**
|
|
434
|
+
* Frees internal resources. This method should be called
|
|
435
|
+
* when the loader is no longer required.
|
|
436
|
+
*/
|
|
367
437
|
dispose() {
|
|
368
438
|
|
|
369
439
|
this.workerPool.dispose();
|
|
@@ -371,8 +441,6 @@ class KTX2Loader extends Loader {
|
|
|
371
441
|
|
|
372
442
|
_activeLoaders --;
|
|
373
443
|
|
|
374
|
-
return this;
|
|
375
|
-
|
|
376
444
|
}
|
|
377
445
|
|
|
378
446
|
}
|
|
@@ -3,21 +3,41 @@ import {
|
|
|
3
3
|
} from 'three';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* for
|
|
7
|
-
* for file layout see https://www.khronos.org/opengles/sdk/tools/KTX/file_format_spec/
|
|
6
|
+
* A loader for the KTX texture compression format.
|
|
8
7
|
*
|
|
9
|
-
*
|
|
8
|
+
* References:
|
|
9
|
+
* - [The KTX File Format and Tools]{@link https://www.khronos.org/opengles/sdk/tools/KTX/}
|
|
10
|
+
* - [Babylon.JS khronosTextureContainer.ts]{@link https://github.com/BabylonJS/Babylon.js/blob/master/src/Misc/khronosTextureContainer.ts}
|
|
11
|
+
*
|
|
12
|
+
* ```js
|
|
13
|
+
* const loader = new KTXLoader();
|
|
14
|
+
*
|
|
15
|
+
* const map = loader.load( 'textures/compressed/lensflare_ASTC8x8.ktx' )
|
|
16
|
+
* map.colorSpace = THREE.SRGBColorSpace; // only for color textures
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @augments CompressedTextureLoader
|
|
10
20
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
13
21
|
class KTXLoader extends CompressedTextureLoader {
|
|
14
22
|
|
|
23
|
+
/**
|
|
24
|
+
* Constructs a new KTX loader.
|
|
25
|
+
*
|
|
26
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
27
|
+
*/
|
|
15
28
|
constructor( manager ) {
|
|
16
29
|
|
|
17
30
|
super( manager );
|
|
18
31
|
|
|
19
32
|
}
|
|
20
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Parses the given KTX texture data.
|
|
36
|
+
*
|
|
37
|
+
* @param {ArrayBuffer} buffer - The raw texture data.
|
|
38
|
+
* @param {boolean} loadMipmaps - Whether to load mipmaps or not.
|
|
39
|
+
* @return {CompressedTextureLoader~TexData} An object representing the parsed texture data.
|
|
40
|
+
*/
|
|
21
41
|
parse( buffer, loadMipmaps ) {
|
|
22
42
|
|
|
23
43
|
const ktx = new KhronosTextureContainer( buffer, 1 );
|
|
@@ -35,7 +55,6 @@ class KTXLoader extends CompressedTextureLoader {
|
|
|
35
55
|
|
|
36
56
|
}
|
|
37
57
|
|
|
38
|
-
|
|
39
58
|
const HEADER_LEN = 12 + ( 13 * 4 ); // identifier + header elements (not including key value meta-data pairs)
|
|
40
59
|
// load types
|
|
41
60
|
const COMPRESSED_2D = 0; // uses a gl.compressedTexImage2D()
|
|
@@ -46,6 +65,7 @@ const COMPRESSED_2D = 0; // uses a gl.compressedTexImage2D()
|
|
|
46
65
|
class KhronosTextureContainer {
|
|
47
66
|
|
|
48
67
|
/**
|
|
68
|
+
* @private
|
|
49
69
|
* @param {ArrayBuffer} arrayBuffer - contents of the KTX container file
|
|
50
70
|
* @param {number} facesExpected - should be either 1 or 6, based whether a cube texture or or
|
|
51
71
|
* @param {boolean} threeDExpected - provision for indicating that data should be a 3D texture, not implemented
|
|
@@ -1746,10 +1746,44 @@ function createObject( loader, elements, elementSize, isConditionalSegments = fa
|
|
|
1746
1746
|
|
|
1747
1747
|
}
|
|
1748
1748
|
|
|
1749
|
-
|
|
1750
|
-
|
|
1749
|
+
/**
|
|
1750
|
+
* A loader for the LDraw format.
|
|
1751
|
+
*
|
|
1752
|
+
* [LDraw]{@link https://ldraw.org/} (LEGO Draw) is an [open format specification]{@link https://ldraw.org/article/218.html}
|
|
1753
|
+
* for describing LEGO and other construction set 3D models.
|
|
1754
|
+
*
|
|
1755
|
+
* An LDraw asset (a text file usually with extension .ldr, .dat or .txt) can describe just a single construction
|
|
1756
|
+
* piece, or an entire model. In the case of a model the LDraw file can reference other LDraw files, which are
|
|
1757
|
+
* loaded from a library path set with `setPartsLibraryPath`. You usually download the LDraw official parts library,
|
|
1758
|
+
* extract to a folder and point setPartsLibraryPath to it.
|
|
1759
|
+
*
|
|
1760
|
+
* Library parts will be loaded by trial and error in subfolders 'parts', 'p' and 'models'. These file accesses
|
|
1761
|
+
* are not optimal for web environment, so a script tool has been made to pack an LDraw file with all its dependencies
|
|
1762
|
+
* into a single file, which loads much faster. See section 'Packing LDraw models'. The LDrawLoader example loads
|
|
1763
|
+
* several packed files. The official parts library is not included due to its large size.
|
|
1764
|
+
*
|
|
1765
|
+
* `LDrawLoader` supports the following extensions:
|
|
1766
|
+
* - !COLOUR: Color and surface finish declarations.
|
|
1767
|
+
* - BFC: Back Face Culling specification.
|
|
1768
|
+
* - !CATEGORY: Model/part category declarations.
|
|
1769
|
+
* - !KEYWORDS: Model/part keywords declarations.
|
|
1770
|
+
*
|
|
1771
|
+
* ```js
|
|
1772
|
+
* const loader = new LDrawLoader();
|
|
1773
|
+
* loader.setConditionalLineMaterial( LDrawConditionalLineMaterial ); // the type of line material depends on the used renderer
|
|
1774
|
+
* const object = await loader.loadAsync( 'models/ldraw/officialLibrary/models/car.ldr_Packed.mpd' );
|
|
1775
|
+
* scene.add( object );
|
|
1776
|
+
* ```
|
|
1777
|
+
*
|
|
1778
|
+
* @augments Loader
|
|
1779
|
+
*/
|
|
1751
1780
|
class LDrawLoader extends Loader {
|
|
1752
1781
|
|
|
1782
|
+
/**
|
|
1783
|
+
* Constructs a new LDraw loader.
|
|
1784
|
+
*
|
|
1785
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
1786
|
+
*/
|
|
1753
1787
|
constructor( manager ) {
|
|
1754
1788
|
|
|
1755
1789
|
super( manager );
|
|
@@ -1784,6 +1818,14 @@ class LDrawLoader extends Loader {
|
|
|
1784
1818
|
|
|
1785
1819
|
}
|
|
1786
1820
|
|
|
1821
|
+
/**
|
|
1822
|
+
* This method must be called prior to `load()` unless the model to load does not reference
|
|
1823
|
+
* library parts (usually it will be a model with all its parts packed in a single file).
|
|
1824
|
+
*
|
|
1825
|
+
* @param {string} path - Path to library parts files to load referenced parts from.
|
|
1826
|
+
* This is different from Loader.setPath, which indicates the path to load the main asset from.
|
|
1827
|
+
* @return {LDrawLoader} A reference to this loader.
|
|
1828
|
+
*/
|
|
1787
1829
|
setPartsLibraryPath( path ) {
|
|
1788
1830
|
|
|
1789
1831
|
this.partsLibraryPath = path;
|
|
@@ -1791,6 +1833,14 @@ class LDrawLoader extends Loader {
|
|
|
1791
1833
|
|
|
1792
1834
|
}
|
|
1793
1835
|
|
|
1836
|
+
/**
|
|
1837
|
+
* Sets the conditional line material type which depends on the used renderer.
|
|
1838
|
+
* Use {@link LDrawConditionalLineMaterial} when using `WebGLRenderer` and
|
|
1839
|
+
* {@link LDrawConditionalLineNodeMaterial} when using `WebGPURenderer`.
|
|
1840
|
+
*
|
|
1841
|
+
* @param {(LDrawConditionalLineMaterial.constructor|LDrawConditionalLineNodeMaterial.constructor)} type - The conditional line material type.
|
|
1842
|
+
* @return {LDrawLoader} A reference to this loader.
|
|
1843
|
+
*/
|
|
1794
1844
|
setConditionalLineMaterial( type ) {
|
|
1795
1845
|
|
|
1796
1846
|
this.ConditionalLineMaterial = type;
|
|
@@ -1799,6 +1849,17 @@ class LDrawLoader extends Loader {
|
|
|
1799
1849
|
|
|
1800
1850
|
}
|
|
1801
1851
|
|
|
1852
|
+
/**
|
|
1853
|
+
* This async method preloads materials from a single LDraw file. In the official
|
|
1854
|
+
* parts library there is a special file which is loaded always the first (LDConfig.ldr)
|
|
1855
|
+
* and contains all the standard color codes. This method is intended to be used with
|
|
1856
|
+
* not packed files, for example in an editor where materials are preloaded and parts
|
|
1857
|
+
* are loaded on demand.
|
|
1858
|
+
*
|
|
1859
|
+
* @async
|
|
1860
|
+
* @param {string} url - Path of the LDraw materials asset.
|
|
1861
|
+
* @return {Promise} A Promise that resolves when the preload has finished.
|
|
1862
|
+
*/
|
|
1802
1863
|
async preloadMaterials( url ) {
|
|
1803
1864
|
|
|
1804
1865
|
const fileLoader = new FileLoader( this.manager );
|
|
@@ -1827,6 +1888,15 @@ class LDrawLoader extends Loader {
|
|
|
1827
1888
|
|
|
1828
1889
|
}
|
|
1829
1890
|
|
|
1891
|
+
/**
|
|
1892
|
+
* Starts loading from the given URL and passes the loaded LDraw asset
|
|
1893
|
+
* to the `onLoad()` callback.
|
|
1894
|
+
*
|
|
1895
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
1896
|
+
* @param {function(Group)} onLoad - Executed when the loading process has been finished.
|
|
1897
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
1898
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
1899
|
+
*/
|
|
1830
1900
|
load( url, onLoad, onProgress, onError ) {
|
|
1831
1901
|
|
|
1832
1902
|
const fileLoader = new FileLoader( this.manager );
|
|
@@ -1839,7 +1909,7 @@ class LDrawLoader extends Loader {
|
|
|
1839
1909
|
this.setMaterials( [] );
|
|
1840
1910
|
|
|
1841
1911
|
this.partsCache
|
|
1842
|
-
.parseModel( text
|
|
1912
|
+
.parseModel( text )
|
|
1843
1913
|
.then( group => {
|
|
1844
1914
|
|
|
1845
1915
|
this.applyMaterialsToMesh( group, MAIN_COLOUR_CODE, this.materialLibrary, true );
|
|
@@ -1854,10 +1924,17 @@ class LDrawLoader extends Loader {
|
|
|
1854
1924
|
|
|
1855
1925
|
}
|
|
1856
1926
|
|
|
1927
|
+
/**
|
|
1928
|
+
* Parses the given LDraw data and returns the resulting group.
|
|
1929
|
+
*
|
|
1930
|
+
* @param {string} text - The raw VRML data as a string.
|
|
1931
|
+
* @param {function(Group)} onLoad - Executed when the loading/parsing process has been finished.
|
|
1932
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
1933
|
+
*/
|
|
1857
1934
|
parse( text, onLoad, onError ) {
|
|
1858
1935
|
|
|
1859
1936
|
this.partsCache
|
|
1860
|
-
.parseModel( text
|
|
1937
|
+
.parseModel( text )
|
|
1861
1938
|
.then( group => {
|
|
1862
1939
|
|
|
1863
1940
|
this.applyMaterialsToMesh( group, MAIN_COLOUR_CODE, this.materialLibrary, true );
|
|
@@ -1888,6 +1965,14 @@ class LDrawLoader extends Loader {
|
|
|
1888
1965
|
|
|
1889
1966
|
}
|
|
1890
1967
|
|
|
1968
|
+
/**
|
|
1969
|
+
* Sets a map which maps referenced library filenames to new filenames.
|
|
1970
|
+
* If a fileMap is not specified (the default), library parts will be accessed by trial and
|
|
1971
|
+
* error in subfolders 'parts', 'p' and 'models'.
|
|
1972
|
+
*
|
|
1973
|
+
* @param {Object<string,string>} fileMap - The file map to set.
|
|
1974
|
+
* @return {LDrawLoader} A reference to this loader.
|
|
1975
|
+
*/
|
|
1891
1976
|
setFileMap( fileMap ) {
|
|
1892
1977
|
|
|
1893
1978
|
this.fileMap = fileMap;
|
|
@@ -1912,6 +1997,12 @@ class LDrawLoader extends Loader {
|
|
|
1912
1997
|
|
|
1913
1998
|
}
|
|
1914
1999
|
|
|
2000
|
+
/**
|
|
2001
|
+
* Returns a material for the given color code.
|
|
2002
|
+
*
|
|
2003
|
+
* @param {string} colorCode - The color code.
|
|
2004
|
+
* @return {?Material} The material. Returns `null` if no material has been found.
|
|
2005
|
+
*/
|
|
1915
2006
|
getMaterial( colorCode ) {
|
|
1916
2007
|
|
|
1917
2008
|
if ( colorCode.startsWith( '0x2' ) ) {
|
|
@@ -2027,12 +2118,31 @@ class LDrawLoader extends Loader {
|
|
|
2027
2118
|
|
|
2028
2119
|
}
|
|
2029
2120
|
|
|
2121
|
+
/**
|
|
2122
|
+
* Returns the Material for the main LDraw color.
|
|
2123
|
+
*
|
|
2124
|
+
* For an already loaded LDraw asset, returns the Material associated with the main color code.
|
|
2125
|
+
* This method can be useful to modify the main material of a model or part that exposes it.
|
|
2126
|
+
*
|
|
2127
|
+
* The main color code is the standard way to color an LDraw part. It is '16' for triangles and
|
|
2128
|
+
* '24' for edges. Usually a complete model will not expose the main color (that is, no part
|
|
2129
|
+
* uses the code '16' at the top level, because they are assigned other specific colors) An LDraw
|
|
2130
|
+
* part file on the other hand will expose the code '16' to be colored, and can have additional
|
|
2131
|
+
* fixed colors.
|
|
2132
|
+
*
|
|
2133
|
+
* @return {?Material} The material. Returns `null` if no material has been found.
|
|
2134
|
+
*/
|
|
2030
2135
|
getMainMaterial() {
|
|
2031
2136
|
|
|
2032
2137
|
return this.getMaterial( MAIN_COLOUR_CODE );
|
|
2033
2138
|
|
|
2034
2139
|
}
|
|
2035
2140
|
|
|
2141
|
+
/**
|
|
2142
|
+
* Returns the material for the edges main LDraw color.
|
|
2143
|
+
*
|
|
2144
|
+
* @return {?Material} The material. Returns `null` if no material has been found.
|
|
2145
|
+
*/
|
|
2036
2146
|
getMainEdgeMaterial() {
|
|
2037
2147
|
|
|
2038
2148
|
const mat = this.getMaterial( MAIN_EDGE_COLOUR_CODE );
|
|
@@ -2151,7 +2261,7 @@ class LDrawLoader extends Loader {
|
|
|
2151
2261
|
|
|
2152
2262
|
if ( ! parseLuminance( lineParser.getToken() ) ) {
|
|
2153
2263
|
|
|
2154
|
-
throw new Error( 'LDrawLoader: Invalid luminance value in material definition' +
|
|
2264
|
+
throw new Error( 'LDrawLoader: Invalid luminance value in material definition' + lineParser.getLineNumberString() + '.' );
|
|
2155
2265
|
|
|
2156
2266
|
}
|
|
2157
2267
|
|
|
@@ -1,41 +1,71 @@
|
|
|
1
|
-
// http://download.autodesk.com/us/systemdocs/help/2011/lustre/index.html?url=./files/WSc4e151a45a3b785a24c3d9a411df9298473-7ffd.htm,topicNumber=d0e9492
|
|
2
|
-
// https://community.foundry.com/discuss/topic/103636/format-spec-for-3dl?mode=Post&postID=895258
|
|
3
|
-
|
|
4
1
|
import {
|
|
5
2
|
ClampToEdgeWrapping,
|
|
6
3
|
Data3DTexture,
|
|
7
4
|
FileLoader,
|
|
8
|
-
FloatType,
|
|
9
5
|
LinearFilter,
|
|
10
6
|
Loader,
|
|
11
7
|
RGBAFormat,
|
|
12
8
|
UnsignedByteType,
|
|
13
9
|
} from 'three';
|
|
14
10
|
|
|
11
|
+
/**
|
|
12
|
+
* A loader for the 3DL LUT format.
|
|
13
|
+
*
|
|
14
|
+
* References:
|
|
15
|
+
* - [3D LUTs]{@link http://download.autodesk.com/us/systemdocs/help/2011/lustre/index.html?url=./files/WSc4e151a45a3b785a24c3d9a411df9298473-7ffd.htm,topicNumber=d0e9492}
|
|
16
|
+
* - [Format Spec for .3dl]{@link https://community.foundry.com/discuss/topic/103636/format-spec-for-3dl?mode=Post&postID=895258}
|
|
17
|
+
*
|
|
18
|
+
* ```js
|
|
19
|
+
* const loader = new LUT3dlLoader();
|
|
20
|
+
* const map = loader.loadAsync( 'luts/Presetpro-Cinematic.3dl' );
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @augments Loader
|
|
24
|
+
*/
|
|
15
25
|
export class LUT3dlLoader extends Loader {
|
|
16
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Constructs a new 3DL LUT loader.
|
|
29
|
+
*
|
|
30
|
+
* @param {LoadingManager} [manager] - The loading manager.
|
|
31
|
+
*/
|
|
17
32
|
constructor( manager ) {
|
|
18
33
|
|
|
19
34
|
super( manager );
|
|
20
35
|
|
|
36
|
+
/**
|
|
37
|
+
* The texture type.
|
|
38
|
+
*
|
|
39
|
+
* @type {(UnsignedByteType|FloatType)}
|
|
40
|
+
* @default UnsignedByteType
|
|
41
|
+
*/
|
|
21
42
|
this.type = UnsignedByteType;
|
|
22
43
|
|
|
23
44
|
}
|
|
24
45
|
|
|
46
|
+
/**
|
|
47
|
+
* Sets the texture type.
|
|
48
|
+
*
|
|
49
|
+
* @param {(UnsignedByteType|FloatType)} type - The texture type to set.
|
|
50
|
+
* @return {LUT3dlLoader} A reference to this loader.
|
|
51
|
+
*/
|
|
25
52
|
setType( type ) {
|
|
26
53
|
|
|
27
|
-
if ( type !== UnsignedByteType && type !== FloatType ) {
|
|
28
|
-
|
|
29
|
-
throw new Error( 'LUT3dlLoader: Unsupported type' );
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
|
|
33
54
|
this.type = type;
|
|
34
55
|
|
|
35
56
|
return this;
|
|
36
57
|
|
|
37
58
|
}
|
|
38
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Starts loading from the given URL and passes the loaded 3DL LUT asset
|
|
62
|
+
* to the `onLoad()` callback.
|
|
63
|
+
*
|
|
64
|
+
* @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
|
|
65
|
+
* @param {function({size:number,texture3D:Data3DTexture})} onLoad - Executed when the loading process has been finished.
|
|
66
|
+
* @param {onProgressCallback} onProgress - Executed while the loading is in progress.
|
|
67
|
+
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
68
|
+
*/
|
|
39
69
|
load( url, onLoad, onProgress, onError ) {
|
|
40
70
|
|
|
41
71
|
const loader = new FileLoader( this.manager );
|
|
@@ -67,6 +97,12 @@ export class LUT3dlLoader extends Loader {
|
|
|
67
97
|
|
|
68
98
|
}
|
|
69
99
|
|
|
100
|
+
/**
|
|
101
|
+
* Parses the given 3DL LUT data and returns the resulting 3D data texture.
|
|
102
|
+
*
|
|
103
|
+
* @param {string} input - The raw 3DL LUT data as a string.
|
|
104
|
+
* @return {{size:number,texture3D:Data3DTexture}} The parsed 3DL LUT.
|
|
105
|
+
*/
|
|
70
106
|
parse( input ) {
|
|
71
107
|
|
|
72
108
|
const regExpGridInfo = /^[\d ]+$/m;
|