super-three 0.133.3 → 0.136.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.js +1059 -783
- package/build/three.min.js +1 -1
- package/build/three.module.js +1424 -895
- 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 +1 -3
- 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/USDZExporter.js +45 -26
- 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/ColladaLoader.js +61 -4
- package/examples/js/loaders/EXRLoader.js +185 -262
- package/examples/js/loaders/FBXLoader.js +4 -5
- package/examples/js/loaders/GLTFLoader.js +96 -33
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -8
- package/examples/js/loaders/KTX2Loader.js +23 -2
- package/examples/js/loaders/KTXLoader.js +1 -1
- package/examples/js/loaders/LDrawLoader.js +26 -30
- package/examples/js/loaders/LUT3dlLoader.js +2 -0
- package/examples/js/loaders/LUTCubeLoader.js +2 -0
- 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 +2 -16
- package/examples/js/loaders/RGBMLoader.js +55 -5
- package/examples/js/loaders/SVGLoader.js +9 -5
- package/examples/js/loaders/TDSLoader.js +237 -271
- package/examples/js/loaders/VOXLoader.js +1 -0
- package/examples/js/loaders/VRMLLoader.js +2 -1
- package/examples/js/loaders/lwo/LWO2Parser.js +1 -0
- package/examples/js/loaders/lwo/LWO3Parser.js +4 -2
- package/examples/js/math/ImprovedNoise.js +1 -1
- package/examples/js/misc/GPUComputationRenderer.js +3 -1
- package/examples/js/objects/Lensflare.js +2 -10
- package/examples/js/objects/MarchingCubes.js +42 -128
- package/examples/js/objects/Reflector.js +7 -0
- package/examples/js/objects/Refractor.js +7 -0
- package/examples/js/objects/Sky.js +1 -1
- package/examples/js/objects/Water.js +2 -2
- package/examples/js/objects/Water2.js +4 -7
- package/examples/js/postprocessing/GlitchPass.js +3 -1
- package/examples/js/postprocessing/SSAOPass.js +1 -0
- 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/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/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/js/utils/RoughnessMipmapper.js +18 -28
- package/examples/jsm/animation/CCDIKSolver.js +0 -1
- package/examples/jsm/animation/MMDPhysics.js +0 -2
- 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 +161 -75
- package/examples/jsm/exporters/USDZExporter.js +47 -26
- 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/ColladaLoader.js +61 -4
- package/examples/jsm/loaders/EXRLoader.js +184 -293
- package/examples/jsm/loaders/FBXLoader.js +4 -5
- package/examples/jsm/loaders/GLTFLoader.js +101 -37
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -14
- package/examples/jsm/loaders/KTX2Loader.js +30 -2
- package/examples/jsm/loaders/KTXLoader.js +1 -1
- package/examples/jsm/loaders/LDrawLoader.js +23 -24
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -0
- package/examples/jsm/loaders/LUTCubeLoader.js +2 -0
- 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 +0 -20
- package/examples/jsm/loaders/RGBMLoader.js +61 -7
- package/examples/jsm/loaders/SVGLoader.js +9 -6
- package/examples/jsm/loaders/TDSLoader.js +236 -275
- package/examples/jsm/loaders/VOXLoader.js +1 -0
- package/examples/jsm/loaders/VRMLLoader.js +2 -1
- package/examples/jsm/loaders/lwo/LWO2Parser.js +1 -0
- package/examples/jsm/loaders/lwo/LWO3Parser.js +2 -2
- package/examples/jsm/math/ImprovedNoise.js +1 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +3 -1
- package/examples/jsm/node-editor/NodeEditor.js +456 -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 +1 -164
- package/examples/jsm/objects/Lensflare.js +3 -14
- package/examples/jsm/objects/MarchingCubes.js +46 -152
- package/examples/jsm/objects/Reflector.js +7 -0
- package/examples/jsm/objects/Refractor.js +7 -0
- package/examples/jsm/objects/Sky.js +1 -1
- package/examples/jsm/objects/Water.js +2 -2
- 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 +4 -2
- 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 +1 -1
- package/examples/jsm/postprocessing/SSAARenderPass.js +1 -1
- package/examples/jsm/postprocessing/SSAOPass.js +2 -1
- package/examples/jsm/postprocessing/SSRPass.js +1 -1
- package/examples/jsm/postprocessing/SSRrPass.js +1 -1
- package/examples/jsm/postprocessing/SavePass.js +1 -1
- 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 +15 -13
- package/examples/jsm/renderers/nodes/ShaderNode.js +194 -41
- 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 +60 -43
- 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 +10 -2
- 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 +90 -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/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 +12 -28
- package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +61 -28
- package/examples/jsm/renderers/webgpu/WebGPUTextures.js +34 -27
- package/examples/jsm/renderers/webgpu/constants.js +2 -2
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +453 -95
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
- package/examples/jsm/shaders/ConvolutionShader.js +0 -1
- 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/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/RoughnessMipmapper.js +19 -31
- package/examples/jsm/utils/WorkerPool.js +11 -11
- package/examples/jsm/webxr/OculusHandPointerModel.js +6 -6
- package/package.json +24 -18
- package/src/Three.Legacy.js +18 -0
- package/src/Three.js +1 -3
- package/src/cameras/StereoCamera.js +8 -7
- package/src/constants.js +1 -8
- package/src/core/Layers.js +7 -1
- package/src/core/Object3D.js +3 -1
- package/src/extras/PMREMGenerator.js +23 -109
- 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 +7 -4
- package/src/loaders/ObjectLoader.js +2 -0
- package/src/materials/Material.js +4 -4
- package/src/materials/MeshPhysicalMaterial.js +20 -14
- package/src/math/Color.js +0 -38
- package/src/math/MathUtils.js +5 -16
- package/src/math/Ray.js +2 -2
- package/src/math/Sphere.js +10 -1
- package/src/objects/Skeleton.js +1 -0
- package/src/renderers/WebGLMultisampleRenderTarget.js +7 -1
- package/src/renderers/WebGLRenderer.js +105 -132
- 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/encodings_pars_fragment.glsl.js +0 -74
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.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/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 +1 -1
- 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 +6 -4
- package/src/renderers/shaders/UniformsLib.js +1 -2
- package/src/renderers/webgl/WebGLCapabilities.js +0 -2
- package/src/renderers/webgl/WebGLExtensions.js +1 -0
- package/src/renderers/webgl/WebGLMaterials.js +27 -15
- package/src/renderers/webgl/WebGLMorphtargets.js +1 -0
- package/src/renderers/webgl/WebGLProgram.js +11 -24
- package/src/renderers/webgl/WebGLPrograms.js +194 -33
- 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 +76 -17
- package/src/renderers/webgl/WebGLTextures.js +367 -61
- package/src/renderers/webgl/WebGLUniforms.js +45 -1
- 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 +6 -0
- package/examples/js/controls/DeviceOrientationControls.js +0 -147
- package/examples/js/libs/dat.gui.min.js +0 -14
- 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/src/extras/objects/ImmediateRenderObject.js +0 -31
|
@@ -94,6 +94,12 @@ class GLTFLoader extends Loader {
|
|
|
94
94
|
|
|
95
95
|
} );
|
|
96
96
|
|
|
97
|
+
this.register( function ( parser ) {
|
|
98
|
+
|
|
99
|
+
return new GLTFMaterialsSheenExtension( parser );
|
|
100
|
+
|
|
101
|
+
} );
|
|
102
|
+
|
|
97
103
|
this.register( function ( parser ) {
|
|
98
104
|
|
|
99
105
|
return new GLTFMaterialsTransmissionExtension( parser );
|
|
@@ -379,6 +385,18 @@ class GLTFLoader extends Loader {
|
|
|
379
385
|
|
|
380
386
|
}
|
|
381
387
|
|
|
388
|
+
parseAsync( data, path ) {
|
|
389
|
+
|
|
390
|
+
const scope = this;
|
|
391
|
+
|
|
392
|
+
return new Promise( function ( resolve, reject ) {
|
|
393
|
+
|
|
394
|
+
scope.parse( data, path, resolve, reject );
|
|
395
|
+
|
|
396
|
+
} );
|
|
397
|
+
|
|
398
|
+
}
|
|
399
|
+
|
|
382
400
|
}
|
|
383
401
|
|
|
384
402
|
/* GLTFREGISTRY */
|
|
@@ -428,6 +446,7 @@ const EXTENSIONS = {
|
|
|
428
446
|
KHR_MATERIALS_CLEARCOAT: 'KHR_materials_clearcoat',
|
|
429
447
|
KHR_MATERIALS_IOR: 'KHR_materials_ior',
|
|
430
448
|
KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness',
|
|
449
|
+
KHR_MATERIALS_SHEEN: 'KHR_materials_sheen',
|
|
431
450
|
KHR_MATERIALS_SPECULAR: 'KHR_materials_specular',
|
|
432
451
|
KHR_MATERIALS_TRANSMISSION: 'KHR_materials_transmission',
|
|
433
452
|
KHR_MATERIALS_UNLIT: 'KHR_materials_unlit',
|
|
@@ -704,6 +723,80 @@ class GLTFMaterialsClearcoatExtension {
|
|
|
704
723
|
|
|
705
724
|
}
|
|
706
725
|
|
|
726
|
+
/**
|
|
727
|
+
* Sheen Materials Extension
|
|
728
|
+
*
|
|
729
|
+
* Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Khronos/KHR_materials_sheen
|
|
730
|
+
*/
|
|
731
|
+
class GLTFMaterialsSheenExtension {
|
|
732
|
+
|
|
733
|
+
constructor( parser ) {
|
|
734
|
+
|
|
735
|
+
this.parser = parser;
|
|
736
|
+
this.name = EXTENSIONS.KHR_MATERIALS_SHEEN;
|
|
737
|
+
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
getMaterialType( materialIndex ) {
|
|
741
|
+
|
|
742
|
+
const parser = this.parser;
|
|
743
|
+
const materialDef = parser.json.materials[ materialIndex ];
|
|
744
|
+
|
|
745
|
+
if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;
|
|
746
|
+
|
|
747
|
+
return MeshPhysicalMaterial;
|
|
748
|
+
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
extendMaterialParams( materialIndex, materialParams ) {
|
|
752
|
+
|
|
753
|
+
const parser = this.parser;
|
|
754
|
+
const materialDef = parser.json.materials[ materialIndex ];
|
|
755
|
+
|
|
756
|
+
if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {
|
|
757
|
+
|
|
758
|
+
return Promise.resolve();
|
|
759
|
+
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
const pending = [];
|
|
763
|
+
|
|
764
|
+
materialParams.sheenColor = new Color( 0, 0, 0 );
|
|
765
|
+
materialParams.sheenRoughness = 0;
|
|
766
|
+
materialParams.sheen = 1;
|
|
767
|
+
|
|
768
|
+
const extension = materialDef.extensions[ this.name ];
|
|
769
|
+
|
|
770
|
+
if ( extension.sheenColorFactor !== undefined ) {
|
|
771
|
+
|
|
772
|
+
materialParams.sheenColor.fromArray( extension.sheenColorFactor );
|
|
773
|
+
|
|
774
|
+
}
|
|
775
|
+
|
|
776
|
+
if ( extension.sheenRoughnessFactor !== undefined ) {
|
|
777
|
+
|
|
778
|
+
materialParams.sheenRoughness = extension.sheenRoughnessFactor;
|
|
779
|
+
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
if ( extension.sheenColorTexture !== undefined ) {
|
|
783
|
+
|
|
784
|
+
pending.push( parser.assignTexture( materialParams, 'sheenColorMap', extension.sheenColorTexture ) );
|
|
785
|
+
|
|
786
|
+
}
|
|
787
|
+
|
|
788
|
+
if ( extension.sheenRoughnessTexture !== undefined ) {
|
|
789
|
+
|
|
790
|
+
pending.push( parser.assignTexture( materialParams, 'sheenRoughnessMap', extension.sheenRoughnessTexture ) );
|
|
791
|
+
|
|
792
|
+
}
|
|
793
|
+
|
|
794
|
+
return Promise.all( pending );
|
|
795
|
+
|
|
796
|
+
}
|
|
797
|
+
|
|
798
|
+
}
|
|
799
|
+
|
|
707
800
|
/**
|
|
708
801
|
* Transmission Materials Extension
|
|
709
802
|
*
|
|
@@ -814,7 +907,7 @@ class GLTFMaterialsVolumeExtension {
|
|
|
814
907
|
materialParams.attenuationDistance = extension.attenuationDistance || 0;
|
|
815
908
|
|
|
816
909
|
const colorArray = extension.attenuationColor || [ 1, 1, 1 ];
|
|
817
|
-
materialParams.
|
|
910
|
+
materialParams.attenuationColor = new Color( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ] );
|
|
818
911
|
|
|
819
912
|
return Promise.all( pending );
|
|
820
913
|
|
|
@@ -917,11 +1010,11 @@ class GLTFMaterialsSpecularExtension {
|
|
|
917
1010
|
}
|
|
918
1011
|
|
|
919
1012
|
const colorArray = extension.specularColorFactor || [ 1, 1, 1 ];
|
|
920
|
-
materialParams.
|
|
1013
|
+
materialParams.specularColor = new Color( colorArray[ 0 ], colorArray[ 1 ], colorArray[ 2 ] );
|
|
921
1014
|
|
|
922
1015
|
if ( extension.specularColorTexture !== undefined ) {
|
|
923
1016
|
|
|
924
|
-
pending.push( parser.assignTexture( materialParams, '
|
|
1017
|
+
pending.push( parser.assignTexture( materialParams, 'specularColorMap', extension.specularColorTexture ).then( function ( texture ) {
|
|
925
1018
|
|
|
926
1019
|
texture.encoding = sRGBEncoding;
|
|
927
1020
|
|
|
@@ -1352,7 +1445,7 @@ class GLTFTextureTransformExtension {
|
|
|
1352
1445
|
/**
|
|
1353
1446
|
* Specular-Glossiness Extension
|
|
1354
1447
|
*
|
|
1355
|
-
* Specification: https://github.com/KhronosGroup/glTF/tree/
|
|
1448
|
+
* Specification: https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Archived/KHR_materials_pbrSpecularGlossiness
|
|
1356
1449
|
*/
|
|
1357
1450
|
|
|
1358
1451
|
/**
|
|
@@ -1887,34 +1980,6 @@ const ALPHA_MODES = {
|
|
|
1887
1980
|
BLEND: 'BLEND'
|
|
1888
1981
|
};
|
|
1889
1982
|
|
|
1890
|
-
/* UTILITY FUNCTIONS */
|
|
1891
|
-
|
|
1892
|
-
function resolveURL( url, path ) {
|
|
1893
|
-
|
|
1894
|
-
// Invalid URL
|
|
1895
|
-
if ( typeof url !== 'string' || url === '' ) return '';
|
|
1896
|
-
|
|
1897
|
-
// Host Relative URL
|
|
1898
|
-
if ( /^https?:\/\//i.test( path ) && /^\//.test( url ) ) {
|
|
1899
|
-
|
|
1900
|
-
path = path.replace( /(^https?:\/\/[^\/]+).*/i, '$1' );
|
|
1901
|
-
|
|
1902
|
-
}
|
|
1903
|
-
|
|
1904
|
-
// Absolute URL http://,https://,//
|
|
1905
|
-
if ( /^(https?:)?\/\//i.test( url ) ) return url;
|
|
1906
|
-
|
|
1907
|
-
// Data URI
|
|
1908
|
-
if ( /^data:.*,.*$/i.test( url ) ) return url;
|
|
1909
|
-
|
|
1910
|
-
// Blob URL
|
|
1911
|
-
if ( /^blob:.*$/i.test( url ) ) return url;
|
|
1912
|
-
|
|
1913
|
-
// Relative URL
|
|
1914
|
-
return path + url;
|
|
1915
|
-
|
|
1916
|
-
}
|
|
1917
|
-
|
|
1918
1983
|
/**
|
|
1919
1984
|
* Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material
|
|
1920
1985
|
*/
|
|
@@ -2188,7 +2253,7 @@ class GLTFParser {
|
|
|
2188
2253
|
|
|
2189
2254
|
// Use an ImageBitmapLoader if imageBitmaps are supported. Moves much of the
|
|
2190
2255
|
// expensive work of uploading a texture to the GPU off the main thread.
|
|
2191
|
-
if ( typeof createImageBitmap !== 'undefined' && /Firefox/.test( navigator.userAgent ) === false ) {
|
|
2256
|
+
if ( typeof createImageBitmap !== 'undefined' && /Firefox|Safari/.test( navigator.userAgent ) === false ) {
|
|
2192
2257
|
|
|
2193
2258
|
this.textureLoader = new ImageBitmapLoader( this.options.manager );
|
|
2194
2259
|
|
|
@@ -2574,7 +2639,7 @@ class GLTFParser {
|
|
|
2574
2639
|
|
|
2575
2640
|
return new Promise( function ( resolve, reject ) {
|
|
2576
2641
|
|
|
2577
|
-
loader.load( resolveURL( bufferDef.uri, options.path ), resolve, undefined, function () {
|
|
2642
|
+
loader.load( LoaderUtils.resolveURL( bufferDef.uri, options.path ), resolve, undefined, function () {
|
|
2578
2643
|
|
|
2579
2644
|
reject( new Error( 'THREE.GLTFLoader: Failed to load buffer "' + bufferDef.uri + '".' ) );
|
|
2580
2645
|
|
|
@@ -2820,7 +2885,7 @@ class GLTFParser {
|
|
|
2820
2885
|
|
|
2821
2886
|
}
|
|
2822
2887
|
|
|
2823
|
-
loader.load( resolveURL( sourceURI, options.path ), onLoad, undefined, reject );
|
|
2888
|
+
loader.load( LoaderUtils.resolveURL( sourceURI, options.path ), onLoad, undefined, reject );
|
|
2824
2889
|
|
|
2825
2890
|
} );
|
|
2826
2891
|
|
|
@@ -3590,10 +3655,9 @@ class GLTFParser {
|
|
|
3590
3655
|
|
|
3591
3656
|
if ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) {
|
|
3592
3657
|
|
|
3593
|
-
// Node may be a Group (glTF mesh with several primitives) or a Mesh.
|
|
3594
3658
|
node.traverse( function ( object ) {
|
|
3595
3659
|
|
|
3596
|
-
if ( object.
|
|
3660
|
+
if ( object.morphTargetInfluences ) {
|
|
3597
3661
|
|
|
3598
3662
|
targetNames.push( object.name ? object.name : object.uuid );
|
|
3599
3663
|
|
|
@@ -7,11 +7,7 @@ import {
|
|
|
7
7
|
LinearEncoding,
|
|
8
8
|
LinearFilter,
|
|
9
9
|
Loader,
|
|
10
|
-
|
|
11
|
-
RGBAFormat,
|
|
12
|
-
RGBEEncoding,
|
|
13
|
-
RGBFormat,
|
|
14
|
-
UnsignedByteType
|
|
10
|
+
RGBFormat
|
|
15
11
|
} from 'three';
|
|
16
12
|
import { RGBELoader } from '../loaders/RGBELoader.js';
|
|
17
13
|
|
|
@@ -47,15 +43,6 @@ class HDRCubeTextureLoader extends Loader {
|
|
|
47
43
|
|
|
48
44
|
switch ( texture.type ) {
|
|
49
45
|
|
|
50
|
-
case UnsignedByteType:
|
|
51
|
-
|
|
52
|
-
texture.encoding = RGBEEncoding;
|
|
53
|
-
texture.format = RGBAFormat;
|
|
54
|
-
texture.minFilter = NearestFilter;
|
|
55
|
-
texture.magFilter = NearestFilter;
|
|
56
|
-
texture.generateMipmaps = false;
|
|
57
|
-
break;
|
|
58
|
-
|
|
59
46
|
case FloatType:
|
|
60
47
|
|
|
61
48
|
texture.encoding = LinearEncoding;
|
|
@@ -37,6 +37,8 @@ const KTX2TransferSRGB = 2;
|
|
|
37
37
|
const KTX2_ALPHA_PREMULTIPLIED = 1;
|
|
38
38
|
const _taskCache = new WeakMap();
|
|
39
39
|
|
|
40
|
+
let _activeLoaders = 0;
|
|
41
|
+
|
|
40
42
|
class KTX2Loader extends Loader {
|
|
41
43
|
|
|
42
44
|
constructor( manager ) {
|
|
@@ -92,6 +94,14 @@ class KTX2Loader extends Loader {
|
|
|
92
94
|
|| renderer.extensions.has( 'WEBKIT_WEBGL_compressed_texture_pvrtc' )
|
|
93
95
|
};
|
|
94
96
|
|
|
97
|
+
|
|
98
|
+
if ( renderer.capabilities.isWebGL2 ) {
|
|
99
|
+
|
|
100
|
+
// https://github.com/mrdoob/three.js/pull/22928
|
|
101
|
+
this.workerConfig.etc1Supported = false;
|
|
102
|
+
|
|
103
|
+
}
|
|
104
|
+
|
|
95
105
|
return this;
|
|
96
106
|
|
|
97
107
|
}
|
|
@@ -154,6 +164,21 @@ class KTX2Loader extends Loader {
|
|
|
154
164
|
|
|
155
165
|
} );
|
|
156
166
|
|
|
167
|
+
if ( _activeLoaders > 0 ) {
|
|
168
|
+
|
|
169
|
+
// Each instance loads a transcoder and allocates workers, increasing network and memory cost.
|
|
170
|
+
|
|
171
|
+
console.warn(
|
|
172
|
+
|
|
173
|
+
'THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues.'
|
|
174
|
+
+ ' Use a single KTX2Loader instance, or call .dispose() on old instances.'
|
|
175
|
+
|
|
176
|
+
);
|
|
177
|
+
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
_activeLoaders ++;
|
|
181
|
+
|
|
157
182
|
}
|
|
158
183
|
|
|
159
184
|
return this.transcoderPending;
|
|
@@ -248,6 +273,8 @@ class KTX2Loader extends Loader {
|
|
|
248
273
|
URL.revokeObjectURL( this.workerSourceURL );
|
|
249
274
|
this.workerPool.dispose();
|
|
250
275
|
|
|
276
|
+
_activeLoaders --;
|
|
277
|
+
|
|
251
278
|
return this;
|
|
252
279
|
|
|
253
280
|
}
|
|
@@ -500,8 +527,8 @@ KTX2Loader.BasisWorker = function () {
|
|
|
500
527
|
{
|
|
501
528
|
if: 'etc1Supported',
|
|
502
529
|
basisFormat: [ BasisFormat.ETC1S, BasisFormat.UASTC_4x4 ],
|
|
503
|
-
transcoderFormat: [ TranscoderFormat.ETC1
|
|
504
|
-
engineFormat: [ EngineFormat.RGB_ETC1_Format
|
|
530
|
+
transcoderFormat: [ TranscoderFormat.ETC1 ],
|
|
531
|
+
engineFormat: [ EngineFormat.RGB_ETC1_Format ],
|
|
505
532
|
priorityETC1S: 2,
|
|
506
533
|
priorityUASTC: 4,
|
|
507
534
|
needsPowerOfTwo: false,
|
|
@@ -541,6 +568,7 @@ KTX2Loader.BasisWorker = function () {
|
|
|
541
568
|
|
|
542
569
|
if ( ! config[ opt.if ] ) continue;
|
|
543
570
|
if ( ! opt.basisFormat.includes( basisFormat ) ) continue;
|
|
571
|
+
if ( hasAlpha && opt.transcoderFormat.length < 2 ) continue;
|
|
544
572
|
if ( opt.needsPowerOfTwo && ! ( isPowerOfTwo( width ) && isPowerOfTwo( height ) ) ) continue;
|
|
545
573
|
|
|
546
574
|
transcoderFormat = opt.transcoderFormat[ hasAlpha ? 1 : 0 ];
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
* for description see https://www.khronos.org/opengles/sdk/tools/KTX/
|
|
7
7
|
* for file layout see https://www.khronos.org/opengles/sdk/tools/KTX/file_format_spec/
|
|
8
8
|
*
|
|
9
|
-
* ported from https://github.com/BabylonJS/Babylon.js/blob/master/src/
|
|
9
|
+
* ported from https://github.com/BabylonJS/Babylon.js/blob/master/src/Misc/khronosTextureContainer.ts
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
|
|
@@ -9,7 +9,6 @@ import {
|
|
|
9
9
|
Loader,
|
|
10
10
|
Matrix4,
|
|
11
11
|
Mesh,
|
|
12
|
-
MeshPhongMaterial,
|
|
13
12
|
MeshStandardMaterial,
|
|
14
13
|
ShaderMaterial,
|
|
15
14
|
UniformsLib,
|
|
@@ -967,13 +966,15 @@ class LDrawLoader extends Loader {
|
|
|
967
966
|
mainEdgeColourCode: parentScope ? parentScope.mainEdgeColourCode : '24',
|
|
968
967
|
currentMatrix: new Matrix4(),
|
|
969
968
|
matrix: new Matrix4(),
|
|
969
|
+
type: 'Model',
|
|
970
|
+
groupObject: null,
|
|
970
971
|
|
|
971
972
|
// If false, it is a root material scope previous to parse
|
|
972
973
|
isFromParse: true,
|
|
973
974
|
|
|
974
|
-
faces:
|
|
975
|
-
lineSegments:
|
|
976
|
-
conditionalSegments:
|
|
975
|
+
faces: [],
|
|
976
|
+
lineSegments: [],
|
|
977
|
+
conditionalSegments: [],
|
|
977
978
|
totalFaces: 0,
|
|
978
979
|
|
|
979
980
|
// If true, this object is the start of a construction step
|
|
@@ -1200,14 +1201,8 @@ class LDrawLoader extends Loader {
|
|
|
1200
1201
|
|
|
1201
1202
|
case FINISH_TYPE_PEARLESCENT:
|
|
1202
1203
|
|
|
1203
|
-
// Try to imitate pearlescency by
|
|
1204
|
-
|
|
1205
|
-
const hsl = specular.getHSL( { h: 0, s: 0, l: 0 } );
|
|
1206
|
-
hsl.h = ( hsl.h + 0.5 ) % 1;
|
|
1207
|
-
hsl.l = Math.min( 1, hsl.l + ( 1 - hsl.l ) * 0.7 );
|
|
1208
|
-
specular.setHSL( hsl.h, hsl.s, hsl.l );
|
|
1209
|
-
|
|
1210
|
-
material = new MeshPhongMaterial( { color: colour, specular: specular, shininess: 10, reflectivity: 0.3 } );
|
|
1204
|
+
// Try to imitate pearlescency by making the surface glossy
|
|
1205
|
+
material = new MeshStandardMaterial( { color: colour, roughness: 0.3, metalness: 0.25 } );
|
|
1211
1206
|
break;
|
|
1212
1207
|
|
|
1213
1208
|
case FINISH_TYPE_CHROME:
|
|
@@ -1443,20 +1438,8 @@ class LDrawLoader extends Loader {
|
|
|
1443
1438
|
|
|
1444
1439
|
type = lp.getToken();
|
|
1445
1440
|
|
|
1446
|
-
currentParseScope.faces = [];
|
|
1447
|
-
currentParseScope.lineSegments = [];
|
|
1448
|
-
currentParseScope.conditionalSegments = [];
|
|
1449
1441
|
currentParseScope.type = type;
|
|
1450
1442
|
|
|
1451
|
-
const isRoot = ! parentParseScope.isFromParse;
|
|
1452
|
-
if ( isRoot || scope.separateObjects && ! isPrimitiveType( type ) ) {
|
|
1453
|
-
|
|
1454
|
-
currentParseScope.groupObject = new Group();
|
|
1455
|
-
|
|
1456
|
-
currentParseScope.groupObject.userData.startingConstructionStep = currentParseScope.startingConstructionStep;
|
|
1457
|
-
|
|
1458
|
-
}
|
|
1459
|
-
|
|
1460
1443
|
// If the scale of the object is negated then the triangle winding order
|
|
1461
1444
|
// needs to be flipped.
|
|
1462
1445
|
if (
|
|
@@ -1826,6 +1809,14 @@ class LDrawLoader extends Loader {
|
|
|
1826
1809
|
currentParseScope.numSubobjects = subobjects.length;
|
|
1827
1810
|
currentParseScope.subobjectIndex = 0;
|
|
1828
1811
|
|
|
1812
|
+
const isRoot = ! parentParseScope.isFromParse;
|
|
1813
|
+
if ( isRoot || scope.separateObjects && ! isPrimitiveType( type ) ) {
|
|
1814
|
+
|
|
1815
|
+
currentParseScope.groupObject = new Group();
|
|
1816
|
+
currentParseScope.groupObject.userData.startingConstructionStep = currentParseScope.startingConstructionStep;
|
|
1817
|
+
|
|
1818
|
+
}
|
|
1819
|
+
|
|
1829
1820
|
}
|
|
1830
1821
|
|
|
1831
1822
|
computeConstructionSteps( model ) {
|
|
@@ -1856,6 +1847,13 @@ class LDrawLoader extends Loader {
|
|
|
1856
1847
|
|
|
1857
1848
|
finalizeObject( subobjectParseScope ) {
|
|
1858
1849
|
|
|
1850
|
+
// fail gracefully if an object could not be loaded
|
|
1851
|
+
if ( subobjectParseScope === null ) {
|
|
1852
|
+
|
|
1853
|
+
return;
|
|
1854
|
+
|
|
1855
|
+
}
|
|
1856
|
+
|
|
1859
1857
|
const parentParseScope = subobjectParseScope.parentScope;
|
|
1860
1858
|
|
|
1861
1859
|
// Smooth the normals if this is a part or if this is a case where the subpart
|
|
@@ -2045,6 +2043,7 @@ class LDrawLoader extends Loader {
|
|
|
2045
2043
|
} ).catch( function () {
|
|
2046
2044
|
|
|
2047
2045
|
console.warn( 'LDrawLoader: Subobject "' + subobject.fileName + '" could not be found.' );
|
|
2046
|
+
return null;
|
|
2048
2047
|
|
|
2049
2048
|
} );
|
|
2050
2049
|
|
|
@@ -118,6 +118,7 @@ export class LUT3dlLoader extends Loader {
|
|
|
118
118
|
texture.wrapS = ClampToEdgeWrapping;
|
|
119
119
|
texture.wrapT = ClampToEdgeWrapping;
|
|
120
120
|
texture.generateMipmaps = false;
|
|
121
|
+
texture.needsUpdate = true;
|
|
121
122
|
|
|
122
123
|
const texture3D = new DataTexture3D();
|
|
123
124
|
texture3D.image.data = data;
|
|
@@ -132,6 +133,7 @@ export class LUT3dlLoader extends Loader {
|
|
|
132
133
|
texture3D.wrapT = ClampToEdgeWrapping;
|
|
133
134
|
texture3D.wrapR = ClampToEdgeWrapping;
|
|
134
135
|
texture3D.generateMipmaps = false;
|
|
136
|
+
texture3D.needsUpdate = true;
|
|
135
137
|
|
|
136
138
|
return {
|
|
137
139
|
size,
|
|
@@ -124,6 +124,7 @@ export class LUTCubeLoader extends Loader {
|
|
|
124
124
|
texture.wrapS = ClampToEdgeWrapping;
|
|
125
125
|
texture.wrapT = ClampToEdgeWrapping;
|
|
126
126
|
texture.generateMipmaps = false;
|
|
127
|
+
texture.needsUpdate = true;
|
|
127
128
|
|
|
128
129
|
const texture3D = new DataTexture3D();
|
|
129
130
|
texture3D.image.data = data;
|
|
@@ -138,6 +139,7 @@ export class LUTCubeLoader extends Loader {
|
|
|
138
139
|
texture3D.wrapT = ClampToEdgeWrapping;
|
|
139
140
|
texture3D.wrapR = ClampToEdgeWrapping;
|
|
140
141
|
texture3D.generateMipmaps = false;
|
|
142
|
+
texture3D.needsUpdate = true;
|
|
141
143
|
|
|
142
144
|
return {
|
|
143
145
|
title,
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
* @desc Load files in LWO3 and LWO2 format on Three.js
|
|
5
5
|
*
|
|
6
6
|
* LWO3 format specification:
|
|
7
|
-
*
|
|
7
|
+
* https://static.lightwave3d.com/sdk/2019/html/filefmts/lwo3.html
|
|
8
8
|
*
|
|
9
9
|
* LWO2 format specification:
|
|
10
|
-
*
|
|
10
|
+
* https://static.lightwave3d.com/sdk/2019/html/filefmts/lwo2.html
|
|
11
11
|
*
|
|
12
12
|
**/
|
|
13
13
|
|
|
@@ -465,7 +465,7 @@ class MaterialParser {
|
|
|
465
465
|
break;
|
|
466
466
|
case 'Roughness':
|
|
467
467
|
maps.roughnessMap = texture;
|
|
468
|
-
maps.roughness =
|
|
468
|
+
maps.roughness = 1;
|
|
469
469
|
break;
|
|
470
470
|
case 'Specular':
|
|
471
471
|
maps.specularMap = texture;
|
|
@@ -480,7 +480,7 @@ class MaterialParser {
|
|
|
480
480
|
break;
|
|
481
481
|
case 'Metallic':
|
|
482
482
|
maps.metalnessMap = texture;
|
|
483
|
-
maps.metalness =
|
|
483
|
+
maps.metalness = 1;
|
|
484
484
|
break;
|
|
485
485
|
case 'Transparency':
|
|
486
486
|
case 'Alpha':
|
|
@@ -591,7 +591,7 @@ class MaterialParser {
|
|
|
591
591
|
|
|
592
592
|
if ( attributes[ 'Bump Height' ] ) params.bumpScale = attributes[ 'Bump Height' ].value * 0.1;
|
|
593
593
|
|
|
594
|
-
if ( attributes[ 'Refraction Index' ] ) params.refractionRatio =
|
|
594
|
+
if ( attributes[ 'Refraction Index' ] ) params.refractionRatio = 0.98 / attributes[ 'Refraction Index' ].value;
|
|
595
595
|
|
|
596
596
|
this.parsePhysicalAttributes( params, attributes, maps );
|
|
597
597
|
this.parseStandardAttributes( params, attributes, maps );
|
|
@@ -707,10 +707,12 @@ class MaterialParser {
|
|
|
707
707
|
|
|
708
708
|
if ( attributes.metalness !== undefined ) {
|
|
709
709
|
|
|
710
|
-
|
|
710
|
+
attributes.metalness = 1; // For most transparent materials metalness should be set to 1 if not otherwise defined. If set to 0 no refraction will be visible
|
|
711
711
|
|
|
712
712
|
}
|
|
713
713
|
|
|
714
|
+
attributes.opacity = 1; // transparency fades out refraction, forcing opacity to 1 ensures a closer visual match to the material in Lightwave.
|
|
715
|
+
|
|
714
716
|
} else envMap.mapping = EquirectangularReflectionMapping;
|
|
715
717
|
|
|
716
718
|
maps.envMap = envMap;
|