super-three 0.133.4 → 0.136.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/LICENSE +1 -1
- package/build/three.js +2285 -1983
- package/build/three.min.js +1 -1
- package/build/three.module.js +5983 -5358
- package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff +0 -0
- package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff2 +0 -0
- package/examples/fonts/open-sans/open-sans.css +9 -0
- package/examples/fonts/tabler-icons/fonts/tabler-icons.eot +0 -0
- package/examples/fonts/tabler-icons/fonts/tabler-icons.svg +3966 -0
- package/examples/fonts/tabler-icons/fonts/tabler-icons.ttf +0 -0
- package/examples/fonts/tabler-icons/fonts/tabler-icons.woff +0 -0
- package/examples/fonts/tabler-icons/fonts/tabler-icons.woff2 +0 -0
- package/examples/fonts/tabler-icons/tabler-icons.min.css +4 -0
- package/examples/js/animation/CCDIKSolver.js +0 -1
- package/examples/js/animation/MMDPhysics.js +2 -4
- package/examples/js/cameras/CinematicCamera.js +2 -7
- package/examples/js/controls/ArcballControls.js +99 -72
- package/examples/js/controls/DragControls.js +7 -0
- package/examples/js/controls/OrbitControls.js +5 -36
- package/examples/js/controls/TrackballControls.js +3 -2
- package/examples/js/controls/TransformControls.js +24 -1
- package/examples/js/csm/CSM.js +2 -2
- package/examples/js/csm/CSMFrustum.js +133 -0
- package/examples/js/curves/CurveExtras.js +0 -2
- package/examples/js/effects/AsciiEffect.js +2 -9
- package/examples/js/exporters/GLTFExporter.js +148 -64
- package/examples/js/exporters/MMDExporter.js +1 -1
- package/examples/js/exporters/USDZExporter.js +45 -26
- package/examples/js/geometries/ConvexGeometry.js +1 -1
- package/examples/js/geometries/TeapotGeometry.js +0 -1
- package/examples/js/interactive/SelectionBox.js +2 -0
- package/examples/js/interactive/SelectionHelper.js +22 -7
- package/examples/js/lights/RectAreaLightUniformsLib.js +4 -0
- package/examples/js/lines/LineMaterial.js +58 -20
- package/examples/js/lines/LineSegments2.js +29 -24
- package/examples/js/loaders/3DMLoader.js +24 -11
- package/examples/js/loaders/3MFLoader.js +2 -2
- package/examples/js/loaders/AMFLoader.js +0 -2
- package/examples/js/loaders/BasisTextureLoader.js +1 -0
- package/examples/js/loaders/ColladaLoader.js +61 -4
- package/examples/js/loaders/EXRLoader.js +201 -272
- package/examples/js/loaders/FBXLoader.js +4 -5
- package/examples/js/loaders/GLTFLoader.js +98 -35
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -10
- package/examples/js/loaders/KTX2Loader.js +23 -2
- package/examples/js/loaders/KTXLoader.js +1 -1
- package/examples/js/loaders/LDrawLoader.js +1169 -901
- package/examples/js/loaders/LUT3dlLoader.js +19 -10
- package/examples/js/loaders/LUTCubeLoader.js +5 -4
- package/examples/js/loaders/LWOLoader.js +8 -6
- package/examples/js/loaders/LogLuvLoader.js +766 -0
- package/examples/js/loaders/MMDLoader.js +0 -1
- package/examples/js/loaders/NRRDLoader.js +9 -2
- package/examples/js/loaders/OBJLoader.js +0 -2
- package/examples/js/loaders/PLYLoader.js +33 -8
- package/examples/js/loaders/RGBELoader.js +8 -22
- package/examples/js/loaders/RGBMLoader.js +56 -6
- package/examples/js/loaders/SVGLoader.js +12 -6
- package/examples/js/loaders/TDSLoader.js +237 -271
- package/examples/js/loaders/VOXLoader.js +1 -0
- package/examples/js/loaders/VRMLLoader.js +11 -22
- package/examples/js/loaders/lwo/LWO2Parser.js +1 -0
- package/examples/js/loaders/lwo/LWO3Parser.js +4 -2
- package/examples/js/math/ConvexHull.js +7 -13
- package/examples/js/math/ImprovedNoise.js +1 -1
- package/examples/js/misc/GPUComputationRenderer.js +3 -1
- package/examples/js/misc/Volume.js +2 -2
- package/examples/js/modifiers/CurveModifier.js +8 -7
- package/examples/js/modifiers/EdgeSplitModifier.js +1 -1
- package/examples/js/modifiers/SimplifyModifier.js +1 -1
- package/examples/js/objects/Lensflare.js +2 -10
- package/examples/js/objects/MarchingCubes.js +42 -128
- package/examples/js/objects/Reflector.js +8 -13
- package/examples/js/objects/ReflectorForSSRPass.js +0 -10
- package/examples/js/objects/Refractor.js +8 -13
- package/examples/js/objects/Sky.js +1 -1
- package/examples/js/objects/Water.js +3 -15
- package/examples/js/objects/Water2.js +4 -7
- package/examples/js/postprocessing/GlitchPass.js +6 -5
- package/examples/js/postprocessing/SMAAPass.js +2 -9
- package/examples/js/postprocessing/SSAOPass.js +10 -21
- package/examples/js/postprocessing/SavePass.js +1 -5
- package/examples/js/renderers/CSS2DRenderer.js +4 -4
- package/examples/js/renderers/CSS3DRenderer.js +4 -4
- package/examples/js/shaders/ConvolutionShader.js +0 -1
- package/examples/js/shaders/DigitalGlitch.js +3 -3
- package/examples/js/shaders/FXAAShader.js +1 -1
- package/examples/js/shaders/FilmShader.js +1 -1
- package/examples/js/shaders/GammaCorrectionShader.js +1 -1
- package/examples/js/shaders/HorizontalBlurShader.js +1 -2
- package/examples/js/shaders/MMDToonShader.js +0 -1
- package/examples/js/shaders/SSAOShader.js +1 -1
- package/examples/js/shaders/SSRShader.js +1 -1
- package/examples/js/shaders/SSRrShader.js +1 -1
- package/examples/js/shaders/VerticalBlurShader.js +1 -2
- package/examples/js/utils/GeometryUtils.js +1 -1
- package/examples/jsm/animation/CCDIKSolver.js +0 -1
- package/examples/jsm/animation/MMDPhysics.js +1 -3
- package/examples/jsm/cameras/CinematicCamera.js +2 -5
- package/examples/jsm/{WebGL.js → capabilities/WebGL.js} +2 -2
- package/examples/jsm/{renderers/webgpu → capabilities}/WebGPU.js +1 -1
- package/examples/jsm/controls/ArcballControls.js +80 -77
- package/examples/jsm/controls/DragControls.js +7 -0
- package/examples/jsm/controls/OrbitControls.js +9 -51
- package/examples/jsm/controls/TrackballControls.js +1 -1
- package/examples/jsm/controls/TransformControls.js +24 -1
- package/examples/jsm/csm/CSM.js +3 -3
- package/examples/jsm/csm/{Frustum.js → CSMFrustum.js} +3 -3
- package/examples/jsm/curves/CurveExtras.js +0 -2
- package/examples/jsm/effects/AsciiEffect.js +2 -9
- package/examples/jsm/exporters/GLTFExporter.js +169 -99
- package/examples/jsm/exporters/MMDExporter.js +1 -1
- package/examples/jsm/exporters/USDZExporter.js +47 -26
- package/examples/jsm/geometries/ConvexGeometry.js +1 -1
- package/examples/jsm/geometries/TeapotGeometry.js +0 -1
- package/examples/jsm/interactive/SelectionBox.js +1 -0
- package/examples/jsm/interactive/SelectionHelper.js +19 -7
- package/examples/jsm/libs/flow.module.js +3338 -0
- package/examples/jsm/libs/lil-gui.module.min.js +8 -0
- package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +7 -0
- package/examples/jsm/lines/LineMaterial.js +59 -23
- package/examples/jsm/lines/LineSegments2.js +22 -18
- package/examples/jsm/loaders/3DMLoader.js +18 -12
- package/examples/jsm/loaders/3MFLoader.js +2 -2
- package/examples/jsm/loaders/AMFLoader.js +0 -2
- package/examples/jsm/loaders/BasisTextureLoader.js +7 -0
- package/examples/jsm/loaders/ColladaLoader.js +61 -4
- package/examples/jsm/loaders/EXRLoader.js +200 -306
- package/examples/jsm/loaders/FBXLoader.js +4 -5
- package/examples/jsm/loaders/GLTFLoader.js +102 -40
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -17
- package/examples/jsm/loaders/KTX2Loader.js +30 -2
- package/examples/jsm/loaders/KTXLoader.js +1 -1
- package/examples/jsm/loaders/LDrawLoader.js +1159 -898
- package/examples/jsm/loaders/LUT3dlLoader.js +19 -12
- package/examples/jsm/loaders/LUTCubeLoader.js +5 -5
- package/examples/jsm/loaders/LWOLoader.js +8 -6
- package/examples/jsm/loaders/LogLuvLoader.js +606 -0
- package/examples/jsm/loaders/MMDLoader.js +0 -1
- package/examples/jsm/loaders/NRRDLoader.js +10 -2
- package/examples/jsm/loaders/OBJLoader.js +0 -2
- package/examples/jsm/loaders/PLYLoader.js +34 -8
- package/examples/jsm/loaders/RGBELoader.js +7 -28
- package/examples/jsm/loaders/RGBMLoader.js +62 -8
- package/examples/jsm/loaders/SVGLoader.js +15 -7
- package/examples/jsm/loaders/TDSLoader.js +236 -275
- package/examples/jsm/loaders/VOXLoader.js +1 -0
- package/examples/jsm/loaders/VRMLLoader.js +11 -23
- package/examples/jsm/loaders/lwo/LWO2Parser.js +1 -0
- package/examples/jsm/loaders/lwo/LWO3Parser.js +2 -2
- package/examples/jsm/math/ConvexHull.js +7 -13
- package/examples/jsm/math/ImprovedNoise.js +1 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +3 -1
- package/examples/jsm/misc/Volume.js +2 -2
- package/examples/jsm/modifiers/CurveModifier.js +9 -8
- package/examples/jsm/modifiers/EdgeSplitModifier.js +1 -1
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/node-editor/NodeEditor.js +455 -0
- package/examples/jsm/node-editor/accessors/NormalEditor.js +30 -0
- package/examples/jsm/node-editor/accessors/PositionEditor.js +30 -0
- package/examples/jsm/node-editor/accessors/UVEditor.js +26 -0
- package/examples/jsm/node-editor/display/BlendEditor.js +43 -0
- package/examples/jsm/node-editor/examples/animate-uv.json +1 -0
- package/examples/jsm/node-editor/examples/fake-top-light.json +1 -0
- package/examples/jsm/node-editor/examples/oscillator-color.json +1 -0
- package/examples/jsm/node-editor/examples/rim.json +1 -0
- package/examples/jsm/node-editor/inputs/ColorEditor.js +91 -0
- package/examples/jsm/node-editor/inputs/FloatEditor.js +24 -0
- package/examples/jsm/node-editor/inputs/SliderEditor.js +68 -0
- package/examples/jsm/node-editor/inputs/Vector2Editor.js +28 -0
- package/examples/jsm/node-editor/inputs/Vector3Editor.js +30 -0
- package/examples/jsm/node-editor/inputs/Vector4Editor.js +37 -0
- package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +108 -0
- package/examples/jsm/node-editor/math/DotEditor.js +36 -0
- package/examples/jsm/node-editor/math/InvertEditor.js +38 -0
- package/examples/jsm/node-editor/math/LimiterEditor.js +48 -0
- package/examples/jsm/node-editor/math/NormalizeEditor.js +26 -0
- package/examples/jsm/node-editor/math/OperatorEditor.js +50 -0
- package/examples/jsm/node-editor/math/PowerEditor.js +34 -0
- package/examples/jsm/node-editor/math/TrigonometryEditor.js +39 -0
- package/examples/jsm/node-editor/procedural/CheckerEditor.js +26 -0
- package/examples/jsm/node-editor/utils/OscillatorEditor.js +42 -0
- package/examples/jsm/node-editor/utils/TimerEditor.js +57 -0
- package/examples/jsm/nodes/core/NodeBuilder.js +2 -2
- package/examples/jsm/nodes/materials/StandardNodeMaterial.js +1 -1
- package/examples/jsm/nodes/materials/nodes/StandardNode.js +7 -6
- package/examples/jsm/nodes/math/MathNode.js +12 -0
- package/examples/jsm/nodes/misc/BumpMapNode.js +1 -1
- package/examples/jsm/nodes/misc/TextureCubeUVNode.js +1 -4
- package/examples/jsm/nodes/utils/ColorSpaceNode.js +5 -177
- package/examples/jsm/objects/Lensflare.js +5 -16
- package/examples/jsm/objects/MarchingCubes.js +46 -152
- package/examples/jsm/objects/Reflector.js +8 -16
- package/examples/jsm/objects/ReflectorForSSRPass.js +0 -12
- package/examples/jsm/objects/Refractor.js +8 -16
- package/examples/jsm/objects/Sky.js +1 -1
- package/examples/jsm/objects/Water.js +3 -18
- package/examples/jsm/objects/Water2.js +4 -8
- package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +1 -1
- package/examples/jsm/postprocessing/AfterimagePass.js +1 -1
- package/examples/jsm/postprocessing/BloomPass.js +1 -1
- package/examples/jsm/postprocessing/BokehPass.js +1 -1
- package/examples/jsm/postprocessing/ClearPass.js +1 -1
- package/examples/jsm/postprocessing/CubeTexturePass.js +1 -1
- package/examples/jsm/postprocessing/DotScreenPass.js +1 -1
- package/examples/jsm/postprocessing/EffectComposer.js +3 -3
- package/examples/jsm/postprocessing/FilmPass.js +1 -1
- package/examples/jsm/postprocessing/GlitchPass.js +10 -7
- package/examples/jsm/postprocessing/HalftonePass.js +1 -1
- package/examples/jsm/postprocessing/MaskPass.js +1 -1
- package/examples/jsm/postprocessing/OutlinePass.js +1 -1
- package/examples/jsm/postprocessing/RenderPass.js +1 -1
- package/examples/jsm/postprocessing/SAOPass.js +2 -2
- package/examples/jsm/postprocessing/SMAAPass.js +3 -12
- package/examples/jsm/postprocessing/SSAARenderPass.js +1 -1
- package/examples/jsm/postprocessing/SSAOPass.js +15 -26
- package/examples/jsm/postprocessing/SSRPass.js +1 -1
- package/examples/jsm/postprocessing/SSRrPass.js +1 -1
- package/examples/jsm/postprocessing/SavePass.js +2 -4
- package/examples/jsm/postprocessing/ShaderPass.js +1 -1
- package/examples/jsm/postprocessing/TAARenderPass.js +1 -1
- package/examples/jsm/postprocessing/TexturePass.js +1 -1
- package/examples/jsm/postprocessing/UnrealBloomPass.js +1 -1
- package/examples/jsm/renderers/CSS2DRenderer.js +5 -4
- package/examples/jsm/renderers/CSS3DRenderer.js +5 -4
- package/examples/jsm/renderers/nodes/Nodes.js +17 -13
- package/examples/jsm/renderers/nodes/ShaderNode.js +229 -49
- package/examples/jsm/renderers/nodes/accessors/MaterialNode.js +6 -6
- package/examples/jsm/renderers/nodes/accessors/ModelViewProjectionNode.js +5 -5
- package/examples/jsm/renderers/nodes/accessors/NormalNode.js +14 -3
- package/examples/jsm/renderers/nodes/accessors/PointUVNode.js +3 -3
- package/examples/jsm/renderers/nodes/accessors/PositionNode.js +15 -5
- package/examples/jsm/renderers/nodes/accessors/SkinningNode.js +107 -0
- package/examples/jsm/renderers/nodes/accessors/UVNode.js +7 -5
- package/examples/jsm/renderers/nodes/core/ArrayInputNode.js +3 -3
- package/examples/jsm/renderers/nodes/core/AttributeNode.js +6 -0
- package/examples/jsm/renderers/nodes/core/BypassNode.js +38 -0
- package/examples/jsm/renderers/nodes/core/CodeNode.js +3 -3
- package/examples/jsm/renderers/nodes/core/ContextNode.js +4 -19
- package/examples/jsm/renderers/nodes/core/ExpressionNode.js +13 -2
- package/examples/jsm/renderers/nodes/core/FunctionNode.js +19 -132
- package/examples/jsm/renderers/nodes/core/InputNode.js +13 -3
- package/examples/jsm/renderers/nodes/core/Node.js +32 -10
- package/examples/jsm/renderers/nodes/core/NodeBuilder.js +146 -128
- package/examples/jsm/renderers/nodes/core/NodeFunction.js +22 -0
- package/examples/jsm/renderers/nodes/core/NodeFunctionInput.js +4 -4
- package/examples/jsm/renderers/nodes/core/NodeKeywords.js +18 -179
- package/examples/jsm/renderers/nodes/core/NodeParser.js +11 -0
- package/examples/jsm/renderers/nodes/core/NodeVar.js +2 -2
- package/examples/jsm/renderers/nodes/core/PropertyNode.js +14 -2
- package/examples/jsm/renderers/nodes/core/TempNode.js +10 -13
- package/examples/jsm/renderers/nodes/core/VarNode.js +12 -7
- package/examples/jsm/renderers/nodes/core/VaryNode.js +23 -8
- package/examples/jsm/renderers/nodes/core/constants.js +2 -0
- package/examples/jsm/renderers/nodes/display/ColorSpaceNode.js +43 -63
- package/examples/jsm/renderers/nodes/display/NormalMapNode.js +21 -22
- package/examples/jsm/renderers/nodes/functions/BSDFs.js +64 -101
- package/examples/jsm/renderers/nodes/functions/PhysicalMaterialFunctions.js +27 -0
- package/examples/jsm/renderers/nodes/inputs/BufferNode.js +25 -0
- package/examples/jsm/renderers/nodes/inputs/IntNode.js +17 -0
- package/examples/jsm/renderers/nodes/inputs/TextureNode.js +13 -10
- package/examples/jsm/renderers/nodes/lights/LightContextNode.js +20 -14
- package/examples/jsm/renderers/nodes/lights/LightNode.js +32 -36
- package/examples/jsm/renderers/nodes/math/CondNode.js +60 -0
- package/examples/jsm/renderers/nodes/math/MathNode.js +91 -37
- package/examples/jsm/renderers/nodes/math/OperatorNode.js +124 -31
- package/examples/jsm/renderers/nodes/parsers/GLSLNodeFunction.js +137 -0
- package/examples/jsm/renderers/nodes/parsers/GLSLNodeParser.js +14 -0
- package/examples/jsm/renderers/nodes/parsers/WGSLNodeFunction.js +89 -0
- package/examples/jsm/renderers/nodes/parsers/WGSLNodeParser.js +14 -0
- package/examples/jsm/renderers/nodes/procedural/CheckerNode.js +7 -9
- package/examples/jsm/renderers/nodes/utils/ArrayElementNode.js +31 -0
- package/examples/jsm/renderers/nodes/utils/ConvertNode.js +33 -0
- package/examples/jsm/renderers/nodes/utils/JoinNode.js +7 -7
- package/examples/jsm/renderers/nodes/utils/OscNode.js +58 -0
- package/examples/jsm/renderers/nodes/utils/SplitNode.js +18 -8
- package/examples/jsm/renderers/nodes/utils/SpriteSheetUVNode.js +7 -7
- package/examples/jsm/renderers/nodes/utils/TimerNode.js +1 -1
- package/examples/jsm/renderers/webgl/nodes/SlotNode.js +22 -0
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +192 -95
- package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +2 -2
- package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPUBackground.js +1 -1
- package/examples/jsm/renderers/webgpu/WebGPUBindings.js +10 -9
- package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +2 -4
- package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -1
- package/examples/jsm/renderers/webgpu/WebGPUProgrammableStage.js +2 -4
- package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +15 -23
- package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +44 -65
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +13 -31
- package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +61 -28
- package/examples/jsm/renderers/webgpu/WebGPUTextures.js +35 -29
- package/examples/jsm/renderers/webgpu/constants.js +2 -2
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +459 -95
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
- package/examples/jsm/shaders/ConvolutionShader.js +0 -1
- package/examples/jsm/shaders/DigitalGlitch.js +3 -3
- package/examples/jsm/shaders/FXAAShader.js +1 -1
- package/examples/jsm/shaders/FilmShader.js +1 -1
- package/examples/jsm/shaders/GammaCorrectionShader.js +1 -1
- package/examples/jsm/shaders/HorizontalBlurShader.js +1 -2
- package/examples/jsm/shaders/MMDToonShader.js +0 -1
- package/examples/jsm/shaders/SSAOShader.js +1 -1
- package/examples/jsm/shaders/SSRShader.js +1 -1
- package/examples/jsm/shaders/SSRrShader.js +1 -1
- package/examples/jsm/shaders/VerticalBlurShader.js +1 -2
- package/examples/jsm/utils/GeometryUtils.js +1 -1
- package/examples/jsm/utils/LDrawUtils.js +195 -0
- package/examples/jsm/utils/WorkerPool.js +11 -11
- package/examples/jsm/webxr/OculusHandPointerModel.js +6 -6
- package/examples/jsm/webxr/VRButton.js +24 -0
- package/examples/jsm/webxr/XREstimatedLight.js +2 -0
- package/package.json +27 -18
- package/src/Three.Legacy.js +18 -0
- package/src/Three.js +1 -3
- package/src/animation/AnimationMixer.js +1 -0
- package/src/cameras/CubeCamera.js +2 -0
- package/src/cameras/StereoCamera.js +8 -7
- package/src/constants.js +3 -23
- package/src/core/Layers.js +7 -1
- package/src/core/Object3D.js +3 -1
- package/src/extras/ImageUtils.js +63 -0
- package/src/extras/PMREMGenerator.js +49 -185
- package/src/extras/core/Interpolations.js +1 -1
- package/src/geometries/LatheGeometry.js +70 -47
- package/src/helpers/CameraHelper.js +1 -1
- package/src/loaders/FileLoader.js +98 -144
- package/src/loaders/ImageLoader.js +9 -4
- package/src/loaders/LoaderUtils.js +26 -0
- package/src/loaders/MaterialLoader.js +8 -5
- package/src/loaders/ObjectLoader.js +2 -0
- package/src/materials/Material.js +8 -8
- package/src/materials/MeshPhysicalMaterial.js +20 -14
- package/src/math/Color.js +1 -39
- package/src/math/MathUtils.js +5 -16
- package/src/math/Quaternion.js +1 -1
- package/src/math/Ray.js +2 -2
- package/src/math/Sphere.js +10 -1
- package/src/objects/Skeleton.js +1 -0
- package/src/renderers/WebGLCubeRenderTarget.js +0 -2
- package/src/renderers/WebGLMultisampleRenderTarget.js +7 -1
- package/src/renderers/WebGLRenderer.js +106 -199
- package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +2 -24
- package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/encodings_pars_fragment.glsl.js +0 -78
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +19 -6
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +28 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +10 -3
- package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +1 -2
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +9 -8
- package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -3
- package/src/renderers/shaders/ShaderLib/equirect.glsl.js +1 -3
- package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +23 -5
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib.js +8 -6
- package/src/renderers/shaders/UniformsLib.js +1 -2
- package/src/renderers/webgl/WebGLCapabilities.js +0 -2
- package/src/renderers/webgl/WebGLCubeMaps.js +0 -4
- package/src/renderers/webgl/WebGLCubeUVMaps.js +29 -16
- package/src/renderers/webgl/WebGLExtensions.js +1 -0
- package/src/renderers/webgl/WebGLMaterials.js +27 -15
- package/src/renderers/webgl/WebGLMorphtargets.js +13 -0
- package/src/renderers/webgl/WebGLProgram.js +12 -37
- package/src/renderers/webgl/WebGLPrograms.js +192 -70
- package/src/renderers/webgl/WebGLRenderLists.js +4 -14
- package/src/renderers/webgl/WebGLShaderCache.js +120 -0
- package/src/renderers/webgl/WebGLShadowMap.js +14 -5
- package/src/renderers/webgl/WebGLState.js +157 -17
- package/src/renderers/webgl/WebGLTextures.js +442 -83
- package/src/renderers/webgl/WebGLUniforms.js +45 -1
- package/src/renderers/webgl/WebGLUtils.js +86 -28
- package/src/renderers/webxr/WebXRManager.js +77 -109
- package/src/scenes/Scene.js +1 -1
- package/src/textures/DataTexture.js +0 -2
- package/src/textures/DataTexture2DArray.js +0 -2
- package/src/textures/DataTexture3D.js +0 -2
- package/src/textures/FramebufferTexture.js +25 -0
- package/src/textures/Texture.js +8 -1
- package/src/textures/VideoTexture.js +1 -3
- package/examples/js/WebGL.js +0 -90
- package/examples/js/controls/DeviceOrientationControls.js +0 -147
- package/examples/js/libs/dat.gui.min.js +0 -14
- package/examples/js/utils/RoughnessMipmapper.js +0 -278
- package/examples/jsm/controls/DeviceOrientationControls.js +0 -153
- package/examples/jsm/libs/dat.gui.module.js +0 -3575
- package/examples/jsm/libs/glslang.js +0 -78
- package/examples/jsm/libs/glslang.wasm +0 -0
- package/examples/jsm/renderers/nodes/consts/MathConsts.js +0 -7
- package/examples/jsm/renderers/nodes/core/ConstNode.js +0 -39
- package/examples/jsm/renderers/nodes/core/NodeSlot.js +0 -13
- package/examples/jsm/renderers/nodes/core/StructNode.js +0 -80
- package/examples/jsm/renderers/nodes/core/StructVarNode.js +0 -75
- package/examples/jsm/renderers/nodes/functions/EncodingFunctions.js +0 -99
- package/examples/jsm/renderers/nodes/functions/MathFunctions.js +0 -47
- package/examples/jsm/renderers/webgpu/nodes/ShaderLib.js +0 -152
- package/examples/jsm/utils/RoughnessMipmapper.js +0 -300
- package/src/extras/objects/ImmediateRenderObject.js +0 -31
|
@@ -9,11 +9,10 @@
|
|
|
9
9
|
* Morph normals / blend shape normals
|
|
10
10
|
*
|
|
11
11
|
* FBX format references:
|
|
12
|
-
* https://
|
|
13
|
-
* http://help.autodesk.com/view/FBX/2017/ENU/?guid=__cpp_ref_index_html (C++ SDK reference)
|
|
12
|
+
* https://help.autodesk.com/view/FBX/2017/ENU/?guid=__cpp_ref_index_html (C++ SDK reference)
|
|
14
13
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
14
|
+
* Binary format specification:
|
|
15
|
+
* https://code.blender.org/2013/08/fbx-binary-file-format-specification/
|
|
17
16
|
*/
|
|
18
17
|
|
|
19
18
|
let fbxTree;
|
|
@@ -1310,7 +1309,7 @@
|
|
|
1310
1309
|
|
|
1311
1310
|
for ( const nodeID in BindPoseNode ) {
|
|
1312
1311
|
|
|
1313
|
-
if ( BindPoseNode[ nodeID ].attrType === 'BindPose' ) {
|
|
1312
|
+
if ( BindPoseNode[ nodeID ].attrType === 'BindPose' && BindPoseNode[ nodeID ].NbPoseNodes > 0 ) {
|
|
1314
1313
|
|
|
1315
1314
|
const poseNodes = BindPoseNode[ nodeID ].PoseNode;
|
|
1316
1315
|
|
|
@@ -23,6 +23,11 @@
|
|
|
23
23
|
|
|
24
24
|
return new GLTFTextureWebPExtension( parser );
|
|
25
25
|
|
|
26
|
+
} );
|
|
27
|
+
this.register( function ( parser ) {
|
|
28
|
+
|
|
29
|
+
return new GLTFMaterialsSheenExtension( parser );
|
|
30
|
+
|
|
26
31
|
} );
|
|
27
32
|
this.register( function ( parser ) {
|
|
28
33
|
|
|
@@ -291,6 +296,17 @@
|
|
|
291
296
|
|
|
292
297
|
}
|
|
293
298
|
|
|
299
|
+
parseAsync( data, path ) {
|
|
300
|
+
|
|
301
|
+
const scope = this;
|
|
302
|
+
return new Promise( function ( resolve, reject ) {
|
|
303
|
+
|
|
304
|
+
scope.parse( data, path, resolve, reject );
|
|
305
|
+
|
|
306
|
+
} );
|
|
307
|
+
|
|
308
|
+
}
|
|
309
|
+
|
|
294
310
|
}
|
|
295
311
|
/* GLTFREGISTRY */
|
|
296
312
|
|
|
@@ -336,6 +352,7 @@
|
|
|
336
352
|
KHR_MATERIALS_CLEARCOAT: 'KHR_materials_clearcoat',
|
|
337
353
|
KHR_MATERIALS_IOR: 'KHR_materials_ior',
|
|
338
354
|
KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness',
|
|
355
|
+
KHR_MATERIALS_SHEEN: 'KHR_materials_sheen',
|
|
339
356
|
KHR_MATERIALS_SPECULAR: 'KHR_materials_specular',
|
|
340
357
|
KHR_MATERIALS_TRANSMISSION: 'KHR_materials_transmission',
|
|
341
358
|
KHR_MATERIALS_UNLIT: 'KHR_materials_unlit',
|
|
@@ -592,6 +609,77 @@
|
|
|
592
609
|
|
|
593
610
|
}
|
|
594
611
|
|
|
612
|
+
}
|
|
613
|
+
/**
|
|
614
|
+
* Sheen Materials Extension
|
|
615
|
+
*
|
|
616
|
+
* Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_sheen
|
|
617
|
+
*/
|
|
618
|
+
|
|
619
|
+
|
|
620
|
+
class GLTFMaterialsSheenExtension {
|
|
621
|
+
|
|
622
|
+
constructor( parser ) {
|
|
623
|
+
|
|
624
|
+
this.parser = parser;
|
|
625
|
+
this.name = EXTENSIONS.KHR_MATERIALS_SHEEN;
|
|
626
|
+
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
getMaterialType( materialIndex ) {
|
|
630
|
+
|
|
631
|
+
const parser = this.parser;
|
|
632
|
+
const materialDef = parser.json.materials[ materialIndex ];
|
|
633
|
+
if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;
|
|
634
|
+
return THREE.MeshPhysicalMaterial;
|
|
635
|
+
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
extendMaterialParams( materialIndex, materialParams ) {
|
|
639
|
+
|
|
640
|
+
const parser = this.parser;
|
|
641
|
+
const materialDef = parser.json.materials[ materialIndex ];
|
|
642
|
+
|
|
643
|
+
if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {
|
|
644
|
+
|
|
645
|
+
return Promise.resolve();
|
|
646
|
+
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
const pending = [];
|
|
650
|
+
materialParams.sheenColor = new THREE.Color( 0, 0, 0 );
|
|
651
|
+
materialParams.sheenRoughness = 0;
|
|
652
|
+
materialParams.sheen = 1;
|
|
653
|
+
const extension = materialDef.extensions[ this.name ];
|
|
654
|
+
|
|
655
|
+
if ( extension.sheenColorFactor !== undefined ) {
|
|
656
|
+
|
|
657
|
+
materialParams.sheenColor.fromArray( extension.sheenColorFactor );
|
|
658
|
+
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
if ( extension.sheenRoughnessFactor !== undefined ) {
|
|
662
|
+
|
|
663
|
+
materialParams.sheenRoughness = extension.sheenRoughnessFactor;
|
|
664
|
+
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
if ( extension.sheenColorTexture !== undefined ) {
|
|
668
|
+
|
|
669
|
+
pending.push( parser.assignTexture( materialParams, 'sheenColorMap', extension.sheenColorTexture ) );
|
|
670
|
+
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
if ( extension.sheenRoughnessTexture !== undefined ) {
|
|
674
|
+
|
|
675
|
+
pending.push( parser.assignTexture( materialParams, 'sheenRoughnessMap', extension.sheenRoughnessTexture ) );
|
|
676
|
+
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
return Promise.all( pending );
|
|
680
|
+
|
|
681
|
+
}
|
|
682
|
+
|
|
595
683
|
}
|
|
596
684
|
/**
|
|
597
685
|
* Transmission Materials Extension
|
|
@@ -698,7 +786,7 @@
|
|
|
698
786
|
|
|
699
787
|
materialParams.attenuationDistance = extension.attenuationDistance || 0;
|
|
700
788
|
const colorArray = extension.attenuationColor || [ 1, 1, 1 ];
|
|
701
|
-
materialParams.
|
|
789
|
+
materialParams.attenuationColor = new THREE.Color( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ] );
|
|
702
790
|
return Promise.all( pending );
|
|
703
791
|
|
|
704
792
|
}
|
|
@@ -794,11 +882,11 @@
|
|
|
794
882
|
}
|
|
795
883
|
|
|
796
884
|
const colorArray = extension.specularColorFactor || [ 1, 1, 1 ];
|
|
797
|
-
materialParams.
|
|
885
|
+
materialParams.specularColor = new THREE.Color( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ] );
|
|
798
886
|
|
|
799
887
|
if ( extension.specularColorTexture !== undefined ) {
|
|
800
888
|
|
|
801
|
-
pending.push( parser.assignTexture( materialParams, '
|
|
889
|
+
pending.push( parser.assignTexture( materialParams, 'specularColorMap', extension.specularColorTexture ).then( function ( texture ) {
|
|
802
890
|
|
|
803
891
|
texture.encoding = THREE.sRGBEncoding;
|
|
804
892
|
|
|
@@ -1222,7 +1310,7 @@
|
|
|
1222
1310
|
/**
|
|
1223
1311
|
* Specular-Glossiness Extension
|
|
1224
1312
|
*
|
|
1225
|
-
* Specification: https://github.com/KhronosGroup/glTF/tree/
|
|
1313
|
+
* Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Archived/KHR_materials_pbrSpecularGlossiness
|
|
1226
1314
|
*/
|
|
1227
1315
|
|
|
1228
1316
|
/**
|
|
@@ -1241,7 +1329,7 @@
|
|
|
1241
1329
|
|
|
1242
1330
|
const specularMapParsFragmentChunk = [ '#ifdef USE_SPECULARMAP', ' uniform sampler2D specularMap;', '#endif' ].join( '\n' );
|
|
1243
1331
|
const glossinessMapParsFragmentChunk = [ '#ifdef USE_GLOSSINESSMAP', ' uniform sampler2D glossinessMap;', '#endif' ].join( '\n' );
|
|
1244
|
-
const specularMapFragmentChunk = [ 'vec3 specularFactor = specular;', '#ifdef USE_SPECULARMAP', ' vec4 texelSpecular = texture2D( specularMap, vUv );', '
|
|
1332
|
+
const specularMapFragmentChunk = [ 'vec3 specularFactor = specular;', '#ifdef USE_SPECULARMAP', ' vec4 texelSpecular = texture2D( specularMap, vUv );', ' // reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture', ' specularFactor *= texelSpecular.rgb;', '#endif' ].join( '\n' );
|
|
1245
1333
|
const glossinessMapFragmentChunk = [ 'float glossinessFactor = glossiness;', '#ifdef USE_GLOSSINESSMAP', ' vec4 texelGlossiness = texture2D( glossinessMap, vUv );', ' // reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture', ' glossinessFactor *= texelGlossiness.a;', '#endif' ].join( '\n' );
|
|
1246
1334
|
const lightPhysicalFragmentChunk = [ 'PhysicalMaterial material;', 'material.diffuseColor = diffuseColor.rgb * ( 1. - max( specularFactor.r, max( specularFactor.g, specularFactor.b ) ) );', 'vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );', 'float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );', 'material.roughness = max( 1.0 - glossinessFactor, 0.0525 ); // 0.0525 corresponds to the base mip of a 256 cubemap.', 'material.roughness += geometryRoughness;', 'material.roughness = min( material.roughness, 1.0 );', 'material.specularColor = specularFactor;' ].join( '\n' );
|
|
1247
1335
|
const uniforms = {
|
|
@@ -1658,34 +1746,10 @@
|
|
|
1658
1746
|
MASK: 'MASK',
|
|
1659
1747
|
BLEND: 'BLEND'
|
|
1660
1748
|
};
|
|
1661
|
-
/* UTILITY FUNCTIONS */
|
|
1662
|
-
|
|
1663
|
-
function resolveURL( url, path ) {
|
|
1664
|
-
|
|
1665
|
-
// Invalid URL
|
|
1666
|
-
if ( typeof url !== 'string' || url === '' ) return ''; // Host Relative URL
|
|
1667
|
-
|
|
1668
|
-
if ( /^https?:\/\//i.test( path ) && /^\//.test( url ) ) {
|
|
1669
|
-
|
|
1670
|
-
path = path.replace( /(^https?:\/\/[^\/]+).*/i, '$1' );
|
|
1671
|
-
|
|
1672
|
-
} // Absolute URL http://,https://,//
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
if ( /^(https?:)?\/\//i.test( url ) ) return url; // Data URI
|
|
1676
|
-
|
|
1677
|
-
if ( /^data:.*,.*$/i.test( url ) ) return url; // Blob URL
|
|
1678
|
-
|
|
1679
|
-
if ( /^blob:.*$/i.test( url ) ) return url; // Relative URL
|
|
1680
|
-
|
|
1681
|
-
return path + url;
|
|
1682
|
-
|
|
1683
|
-
}
|
|
1684
1749
|
/**
|
|
1685
1750
|
* Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material
|
|
1686
1751
|
*/
|
|
1687
1752
|
|
|
1688
|
-
|
|
1689
1753
|
function createDefaultMaterial( cache ) {
|
|
1690
1754
|
|
|
1691
1755
|
if ( cache[ 'DefaultMaterial' ] === undefined ) {
|
|
@@ -1942,7 +2006,7 @@
|
|
|
1942
2006
|
this.nodeNamesUsed = {}; // Use an THREE.ImageBitmapLoader if imageBitmaps are supported. Moves much of the
|
|
1943
2007
|
// expensive work of uploading a texture to the GPU off the main thread.
|
|
1944
2008
|
|
|
1945
|
-
if ( typeof createImageBitmap !== 'undefined' && /Firefox/.test( navigator.userAgent ) === false ) {
|
|
2009
|
+
if ( typeof createImageBitmap !== 'undefined' && /Firefox|Safari/.test( navigator.userAgent ) === false ) {
|
|
1946
2010
|
|
|
1947
2011
|
this.textureLoader = new THREE.ImageBitmapLoader( this.options.manager );
|
|
1948
2012
|
|
|
@@ -2312,7 +2376,7 @@
|
|
|
2312
2376
|
const options = this.options;
|
|
2313
2377
|
return new Promise( function ( resolve, reject ) {
|
|
2314
2378
|
|
|
2315
|
-
loader.load( resolveURL( bufferDef.uri, options.path ), resolve, undefined, function () {
|
|
2379
|
+
loader.load( THREE.LoaderUtils.resolveURL( bufferDef.uri, options.path ), resolve, undefined, function () {
|
|
2316
2380
|
|
|
2317
2381
|
reject( new Error( 'THREE.GLTFLoader: Failed to load buffer "' + bufferDef.uri + '".' ) );
|
|
2318
2382
|
|
|
@@ -2547,7 +2611,7 @@
|
|
|
2547
2611
|
|
|
2548
2612
|
}
|
|
2549
2613
|
|
|
2550
|
-
loader.load( resolveURL( sourceURI, options.path ), onLoad, undefined, reject );
|
|
2614
|
+
loader.load( THREE.LoaderUtils.resolveURL( sourceURI, options.path ), onLoad, undefined, reject );
|
|
2551
2615
|
|
|
2552
2616
|
} );
|
|
2553
2617
|
|
|
@@ -2820,8 +2884,8 @@
|
|
|
2820
2884
|
|
|
2821
2885
|
} else {
|
|
2822
2886
|
|
|
2823
|
-
materialParams.format = THREE.RGBFormat;
|
|
2824
2887
|
materialParams.transparent = false;
|
|
2888
|
+
materialParams.alphaWrite = false;
|
|
2825
2889
|
|
|
2826
2890
|
if ( alphaMode === ALPHA_MODES.MASK ) {
|
|
2827
2891
|
|
|
@@ -3255,10 +3319,9 @@
|
|
|
3255
3319
|
|
|
3256
3320
|
if ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) {
|
|
3257
3321
|
|
|
3258
|
-
// Node may be a THREE.Group (glTF mesh with several primitives) or a THREE.Mesh.
|
|
3259
3322
|
node.traverse( function ( object ) {
|
|
3260
3323
|
|
|
3261
|
-
if ( object.
|
|
3324
|
+
if ( object.morphTargetInfluences ) {
|
|
3262
3325
|
|
|
3263
3326
|
targetNames.push( object.name ? object.name : object.uuid );
|
|
3264
3327
|
|
|
@@ -28,17 +28,8 @@
|
|
|
28
28
|
|
|
29
29
|
switch ( texture.type ) {
|
|
30
30
|
|
|
31
|
-
case THREE.UnsignedByteType:
|
|
32
|
-
texture.encoding = THREE.RGBEEncoding;
|
|
33
|
-
texture.format = THREE.RGBAFormat;
|
|
34
|
-
texture.minFilter = THREE.NearestFilter;
|
|
35
|
-
texture.magFilter = THREE.NearestFilter;
|
|
36
|
-
texture.generateMipmaps = false;
|
|
37
|
-
break;
|
|
38
|
-
|
|
39
31
|
case THREE.FloatType:
|
|
40
32
|
texture.encoding = THREE.LinearEncoding;
|
|
41
|
-
texture.format = THREE.RGBFormat;
|
|
42
33
|
texture.minFilter = THREE.LinearFilter;
|
|
43
34
|
texture.magFilter = THREE.LinearFilter;
|
|
44
35
|
texture.generateMipmaps = false;
|
|
@@ -46,7 +37,6 @@
|
|
|
46
37
|
|
|
47
38
|
case THREE.HalfFloatType:
|
|
48
39
|
texture.encoding = THREE.LinearEncoding;
|
|
49
|
-
texture.format = THREE.RGBFormat;
|
|
50
40
|
texture.minFilter = THREE.LinearFilter;
|
|
51
41
|
texture.magFilter = THREE.LinearFilter;
|
|
52
42
|
texture.generateMipmaps = false;
|
|
@@ -17,6 +17,8 @@
|
|
|
17
17
|
|
|
18
18
|
const _taskCache = new WeakMap();
|
|
19
19
|
|
|
20
|
+
let _activeLoaders = 0;
|
|
21
|
+
|
|
20
22
|
class KTX2Loader extends THREE.Loader {
|
|
21
23
|
|
|
22
24
|
constructor( manager ) {
|
|
@@ -61,6 +63,14 @@
|
|
|
61
63
|
bptcSupported: renderer.extensions.has( 'EXT_texture_compression_bptc' ),
|
|
62
64
|
pvrtcSupported: renderer.extensions.has( 'WEBGL_compressed_texture_pvrtc' ) || renderer.extensions.has( 'WEBKIT_WEBGL_compressed_texture_pvrtc' )
|
|
63
65
|
};
|
|
66
|
+
|
|
67
|
+
if ( renderer.capabilities.isWebGL2 ) {
|
|
68
|
+
|
|
69
|
+
// https://github.com/mrdoob/three.js/pull/22928
|
|
70
|
+
this.workerConfig.etc1Supported = false;
|
|
71
|
+
|
|
72
|
+
}
|
|
73
|
+
|
|
64
74
|
return this;
|
|
65
75
|
|
|
66
76
|
}
|
|
@@ -109,6 +119,15 @@
|
|
|
109
119
|
|
|
110
120
|
} );
|
|
111
121
|
|
|
122
|
+
if ( _activeLoaders > 0 ) {
|
|
123
|
+
|
|
124
|
+
// Each instance loads a transcoder and allocates workers, increasing network and memory cost.
|
|
125
|
+
console.warn( 'THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues.' + ' Use a single KTX2Loader instance, or call .dispose() on old instances.' );
|
|
126
|
+
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
_activeLoaders ++;
|
|
130
|
+
|
|
112
131
|
}
|
|
113
132
|
|
|
114
133
|
return this.transcoderPending;
|
|
@@ -207,6 +226,7 @@
|
|
|
207
226
|
|
|
208
227
|
URL.revokeObjectURL( this.workerSourceURL );
|
|
209
228
|
this.workerPool.dispose();
|
|
229
|
+
_activeLoaders --;
|
|
210
230
|
return this;
|
|
211
231
|
|
|
212
232
|
}
|
|
@@ -475,8 +495,8 @@
|
|
|
475
495
|
}, {
|
|
476
496
|
if: 'etc1Supported',
|
|
477
497
|
basisFormat: [ BasisFormat.ETC1S, BasisFormat.UASTC_4x4 ],
|
|
478
|
-
transcoderFormat: [ TranscoderFormat.ETC1
|
|
479
|
-
engineFormat: [ EngineFormat.RGB_ETC1_Format
|
|
498
|
+
transcoderFormat: [ TranscoderFormat.ETC1 ],
|
|
499
|
+
engineFormat: [ EngineFormat.RGB_ETC1_Format ],
|
|
480
500
|
priorityETC1S: 2,
|
|
481
501
|
priorityUASTC: 4,
|
|
482
502
|
needsPowerOfTwo: false
|
|
@@ -511,6 +531,7 @@
|
|
|
511
531
|
const opt = options[ i ];
|
|
512
532
|
if ( ! config[ opt.if ] ) continue;
|
|
513
533
|
if ( ! opt.basisFormat.includes( basisFormat ) ) continue;
|
|
534
|
+
if ( hasAlpha && opt.transcoderFormat.length < 2 ) continue;
|
|
514
535
|
if ( opt.needsPowerOfTwo && ! ( isPowerOfTwo( width ) && isPowerOfTwo( height ) ) ) continue;
|
|
515
536
|
transcoderFormat = opt.transcoderFormat[ hasAlpha ? 1 : 0 ];
|
|
516
537
|
engineFormat = opt.engineFormat[ hasAlpha ? 1 : 0 ];
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* for description see https://www.khronos.org/opengles/sdk/tools/KTX/
|
|
5
5
|
* for file layout see https://www.khronos.org/opengles/sdk/tools/KTX/file_format_spec/
|
|
6
6
|
*
|
|
7
|
-
* ported from https://github.com/BabylonJS/Babylon.js/blob/master/src/
|
|
7
|
+
* ported from https://github.com/BabylonJS/Babylon.js/blob/master/src/Misc/khronosTextureContainer.ts
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
class KTXLoader extends THREE.CompressedTextureLoader {
|