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
|
@@ -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
|
/**
|
|
@@ -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
|
|
|
@@ -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,14 +28,6 @@
|
|
|
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
33
|
texture.format = THREE.RGBFormat;
|
|
@@ -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 {
|
|
@@ -916,11 +916,13 @@
|
|
|
916
916
|
mainEdgeColourCode: parentScope ? parentScope.mainEdgeColourCode : '24',
|
|
917
917
|
currentMatrix: new THREE.Matrix4(),
|
|
918
918
|
matrix: new THREE.Matrix4(),
|
|
919
|
+
type: 'Model',
|
|
920
|
+
groupObject: null,
|
|
919
921
|
// If false, it is a root material scope previous to parse
|
|
920
922
|
isFromParse: true,
|
|
921
|
-
faces:
|
|
922
|
-
lineSegments:
|
|
923
|
-
conditionalSegments:
|
|
923
|
+
faces: [],
|
|
924
|
+
lineSegments: [],
|
|
925
|
+
conditionalSegments: [],
|
|
924
926
|
totalFaces: 0,
|
|
925
927
|
// If true, this object is the start of a construction step
|
|
926
928
|
startingConstructionStep: false
|
|
@@ -1135,21 +1137,11 @@
|
|
|
1135
1137
|
break;
|
|
1136
1138
|
|
|
1137
1139
|
case FINISH_TYPE_PEARLESCENT:
|
|
1138
|
-
// Try to imitate pearlescency by
|
|
1139
|
-
|
|
1140
|
-
const hsl = specular.getHSL( {
|
|
1141
|
-
h: 0,
|
|
1142
|
-
s: 0,
|
|
1143
|
-
l: 0
|
|
1144
|
-
} );
|
|
1145
|
-
hsl.h = ( hsl.h + 0.5 ) % 1;
|
|
1146
|
-
hsl.l = Math.min( 1, hsl.l + ( 1 - hsl.l ) * 0.7 );
|
|
1147
|
-
specular.setHSL( hsl.h, hsl.s, hsl.l );
|
|
1148
|
-
material = new THREE.MeshPhongMaterial( {
|
|
1140
|
+
// Try to imitate pearlescency by making the surface glossy
|
|
1141
|
+
material = new THREE.MeshStandardMaterial( {
|
|
1149
1142
|
color: colour,
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
reflectivity: 0.3
|
|
1143
|
+
roughness: 0.3,
|
|
1144
|
+
metalness: 0.25
|
|
1153
1145
|
} );
|
|
1154
1146
|
break;
|
|
1155
1147
|
|
|
@@ -1375,21 +1367,9 @@
|
|
|
1375
1367
|
|
|
1376
1368
|
case '!LDRAW_ORG':
|
|
1377
1369
|
type = lp.getToken();
|
|
1378
|
-
currentParseScope.
|
|
1379
|
-
currentParseScope.lineSegments = [];
|
|
1380
|
-
currentParseScope.conditionalSegments = [];
|
|
1381
|
-
currentParseScope.type = type;
|
|
1382
|
-
const isRoot = ! parentParseScope.isFromParse;
|
|
1383
|
-
|
|
1384
|
-
if ( isRoot || scope.separateObjects && ! isPrimitiveType( type ) ) {
|
|
1385
|
-
|
|
1386
|
-
currentParseScope.groupObject = new THREE.Group();
|
|
1387
|
-
currentParseScope.groupObject.userData.startingConstructionStep = currentParseScope.startingConstructionStep;
|
|
1388
|
-
|
|
1389
|
-
} // If the scale of the object is negated then the triangle winding order
|
|
1370
|
+
currentParseScope.type = type; // If the scale of the object is negated then the triangle winding order
|
|
1390
1371
|
// needs to be flipped.
|
|
1391
1372
|
|
|
1392
|
-
|
|
1393
1373
|
if ( currentParseScope.matrix.determinant() < 0 && ( scope.separateObjects && isPrimitiveType( type ) || ! scope.separateObjects ) ) {
|
|
1394
1374
|
|
|
1395
1375
|
currentParseScope.inverted = ! currentParseScope.inverted;
|
|
@@ -1709,6 +1689,14 @@
|
|
|
1709
1689
|
currentParseScope.subobjects = subobjects;
|
|
1710
1690
|
currentParseScope.numSubobjects = subobjects.length;
|
|
1711
1691
|
currentParseScope.subobjectIndex = 0;
|
|
1692
|
+
const isRoot = ! parentParseScope.isFromParse;
|
|
1693
|
+
|
|
1694
|
+
if ( isRoot || scope.separateObjects && ! isPrimitiveType( type ) ) {
|
|
1695
|
+
|
|
1696
|
+
currentParseScope.groupObject = new THREE.Group();
|
|
1697
|
+
currentParseScope.groupObject.userData.startingConstructionStep = currentParseScope.startingConstructionStep;
|
|
1698
|
+
|
|
1699
|
+
}
|
|
1712
1700
|
|
|
1713
1701
|
}
|
|
1714
1702
|
|
|
@@ -1737,6 +1725,13 @@
|
|
|
1737
1725
|
|
|
1738
1726
|
finalizeObject( subobjectParseScope ) {
|
|
1739
1727
|
|
|
1728
|
+
// fail gracefully if an object could not be loaded
|
|
1729
|
+
if ( subobjectParseScope === null ) {
|
|
1730
|
+
|
|
1731
|
+
return;
|
|
1732
|
+
|
|
1733
|
+
}
|
|
1734
|
+
|
|
1740
1735
|
const parentParseScope = subobjectParseScope.parentScope; // Smooth the normals if this is a part or if this is a case where the subpart
|
|
1741
1736
|
// is added directly into the parent model (meaning it will never get smoothed by
|
|
1742
1737
|
// being added to a part)
|
|
@@ -1919,6 +1914,7 @@
|
|
|
1919
1914
|
} ).catch( function () {
|
|
1920
1915
|
|
|
1921
1916
|
console.warn( 'LDrawLoader: Subobject "' + subobject.fileName + '" could not be found.' );
|
|
1917
|
+
return null;
|
|
1922
1918
|
|
|
1923
1919
|
} );
|
|
1924
1920
|
|
|
@@ -102,6 +102,7 @@
|
|
|
102
102
|
texture.wrapS = THREE.ClampToEdgeWrapping;
|
|
103
103
|
texture.wrapT = THREE.ClampToEdgeWrapping;
|
|
104
104
|
texture.generateMipmaps = false;
|
|
105
|
+
texture.needsUpdate = true;
|
|
105
106
|
const texture3D = new THREE.DataTexture3D();
|
|
106
107
|
texture3D.image.data = data;
|
|
107
108
|
texture3D.image.width = size;
|
|
@@ -115,6 +116,7 @@
|
|
|
115
116
|
texture3D.wrapT = THREE.ClampToEdgeWrapping;
|
|
116
117
|
texture3D.wrapR = THREE.ClampToEdgeWrapping;
|
|
117
118
|
texture3D.generateMipmaps = false;
|
|
119
|
+
texture3D.needsUpdate = true;
|
|
118
120
|
return {
|
|
119
121
|
size,
|
|
120
122
|
texture,
|
|
@@ -108,6 +108,7 @@
|
|
|
108
108
|
texture.wrapS = THREE.ClampToEdgeWrapping;
|
|
109
109
|
texture.wrapT = THREE.ClampToEdgeWrapping;
|
|
110
110
|
texture.generateMipmaps = false;
|
|
111
|
+
texture.needsUpdate = true;
|
|
111
112
|
const texture3D = new THREE.DataTexture3D();
|
|
112
113
|
texture3D.image.data = data;
|
|
113
114
|
texture3D.image.width = size;
|
|
@@ -121,6 +122,7 @@
|
|
|
121
122
|
texture3D.wrapT = THREE.ClampToEdgeWrapping;
|
|
122
123
|
texture3D.wrapR = THREE.ClampToEdgeWrapping;
|
|
123
124
|
texture3D.generateMipmaps = false;
|
|
125
|
+
texture3D.needsUpdate = true;
|
|
124
126
|
return {
|
|
125
127
|
title,
|
|
126
128
|
size,
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
* @desc Load files in LWO3 and LWO2 format on Three.js
|
|
7
7
|
*
|
|
8
8
|
* LWO3 format specification:
|
|
9
|
-
*
|
|
9
|
+
* https://static.lightwave3d.com/sdk/2019/html/filefmts/lwo3.html
|
|
10
10
|
*
|
|
11
11
|
* LWO2 format specification:
|
|
12
|
-
*
|
|
12
|
+
* https://static.lightwave3d.com/sdk/2019/html/filefmts/lwo2.html
|
|
13
13
|
*
|
|
14
14
|
**/
|
|
15
15
|
|
|
@@ -391,7 +391,7 @@
|
|
|
391
391
|
|
|
392
392
|
case 'Roughness':
|
|
393
393
|
maps.roughnessMap = texture;
|
|
394
|
-
maps.roughness =
|
|
394
|
+
maps.roughness = 1;
|
|
395
395
|
break;
|
|
396
396
|
|
|
397
397
|
case 'Specular':
|
|
@@ -410,7 +410,7 @@
|
|
|
410
410
|
|
|
411
411
|
case 'Metallic':
|
|
412
412
|
maps.metalnessMap = texture;
|
|
413
|
-
maps.metalness =
|
|
413
|
+
maps.metalness = 1;
|
|
414
414
|
break;
|
|
415
415
|
|
|
416
416
|
case 'Transparency':
|
|
@@ -525,7 +525,7 @@
|
|
|
525
525
|
}
|
|
526
526
|
|
|
527
527
|
if ( attributes[ 'Bump Height' ] ) params.bumpScale = attributes[ 'Bump Height' ].value * 0.1;
|
|
528
|
-
if ( attributes[ 'Refraction Index' ] ) params.refractionRatio =
|
|
528
|
+
if ( attributes[ 'Refraction Index' ] ) params.refractionRatio = 0.98 / attributes[ 'Refraction Index' ].value;
|
|
529
529
|
this.parsePhysicalAttributes( params, attributes, maps );
|
|
530
530
|
this.parseStandardAttributes( params, attributes, maps );
|
|
531
531
|
this.parsePhongAttributes( params, attributes, maps );
|
|
@@ -639,10 +639,12 @@
|
|
|
639
639
|
|
|
640
640
|
if ( attributes.metalness !== undefined ) {
|
|
641
641
|
|
|
642
|
-
|
|
642
|
+
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
|
|
643
643
|
|
|
644
644
|
}
|
|
645
645
|
|
|
646
|
+
attributes.opacity = 1; // transparency fades out refraction, forcing opacity to 1 ensures a closer visual match to the material in Lightwave.
|
|
647
|
+
|
|
646
648
|
} else envMap.mapping = THREE.EquirectangularReflectionMapping;
|
|
647
649
|
|
|
648
650
|
maps.envMap = envMap;
|