super-three 0.133.2 → 0.135.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 +619 -538
- package/build/three.min.js +1 -1
- package/build/three.module.js +763 -616
- 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.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/controls/ArcballControls.js +68 -27
- 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/csm/CSM.js +2 -2
- package/examples/js/csm/CSMFrustum.js +133 -0
- package/examples/js/exporters/GLTFExporter.js +147 -63
- package/examples/js/exporters/USDZExporter.js +45 -26
- 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/ColladaLoader.js +61 -3
- package/examples/js/loaders/FBXLoader.js +1 -1
- package/examples/js/loaders/GLTFLoader.js +94 -31
- package/examples/js/loaders/KTX2Loader.js +12 -0
- package/examples/js/loaders/LWOLoader.js +8 -6
- package/examples/js/loaders/LogLuvLoader.js +766 -0
- package/examples/js/loaders/PLYLoader.js +32 -7
- package/examples/js/loaders/RGBELoader.js +2 -1
- package/examples/js/loaders/SVGLoader.js +7 -3
- package/examples/js/loaders/TDSLoader.js +237 -271
- package/examples/js/loaders/lwo/LWO2Parser.js +1 -0
- package/examples/js/loaders/lwo/LWO3Parser.js +4 -2
- package/examples/js/objects/MarchingCubes.js +42 -128
- package/examples/js/renderers/CSS2DRenderer.js +4 -4
- package/examples/js/renderers/CSS3DRenderer.js +4 -4
- package/examples/js/utils/RoughnessMipmapper.js +1 -0
- package/examples/jsm/controls/ArcballControls.js +61 -29
- 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/csm/CSM.js +3 -3
- package/examples/jsm/csm/{Frustum.js → CSMFrustum.js} +3 -3
- package/examples/jsm/exporters/GLTFExporter.js +160 -74
- package/examples/jsm/exporters/USDZExporter.js +47 -26
- package/examples/jsm/libs/flow.module.js +3218 -0
- package/examples/jsm/libs/lil-gui.module.min.js +8 -0
- package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -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/ColladaLoader.js +61 -3
- package/examples/jsm/loaders/FBXLoader.js +1 -1
- package/examples/jsm/loaders/GLTFLoader.js +99 -35
- package/examples/jsm/loaders/KTX2Loader.js +19 -0
- package/examples/jsm/loaders/LWOLoader.js +8 -6
- package/examples/jsm/loaders/LogLuvLoader.js +606 -0
- package/examples/jsm/loaders/PLYLoader.js +33 -7
- package/examples/jsm/loaders/SVGLoader.js +7 -4
- package/examples/jsm/loaders/TDSLoader.js +225 -285
- package/examples/jsm/loaders/lwo/LWO2Parser.js +1 -0
- package/examples/jsm/loaders/lwo/LWO3Parser.js +2 -2
- 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 +69 -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/materials/StandardNodeMaterial.js +1 -1
- package/examples/jsm/nodes/materials/nodes/StandardNode.js +6 -6
- package/examples/jsm/nodes/utils/ColorSpaceNode.js +1 -49
- package/examples/jsm/objects/MarchingCubes.js +46 -152
- 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 +1 -1
- 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 +1 -1
- package/examples/jsm/postprocessing/SMAAPass.js +1 -1
- package/examples/jsm/postprocessing/SSAARenderPass.js +1 -1
- package/examples/jsm/postprocessing/SSAOPass.js +1 -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 +14 -13
- package/examples/jsm/renderers/nodes/ShaderNode.js +193 -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 +47 -25
- 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/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 +87 -36
- 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/webgl/nodes/SlotNode.js +22 -0
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +191 -94
- 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 +3 -3
- 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 +3 -5
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +11 -27
- package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +62 -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 +430 -98
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
- package/examples/jsm/utils/RoughnessMipmapper.js +1 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +6 -6
- package/package.json +10 -10
- package/src/Three.Legacy.js +6 -0
- package/src/Three.js +0 -1
- package/src/cameras/StereoCamera.js +8 -7
- package/src/constants.js +1 -2
- package/src/core/Layers.js +7 -1
- package/src/core/Object3D.js +2 -0
- package/src/extras/PMREMGenerator.js +11 -6
- package/src/loaders/FileLoader.js +89 -152
- 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/MathUtils.js +5 -16
- package/src/renderers/WebGLMultisampleRenderTarget.js +7 -1
- package/src/renderers/WebGLRenderer.js +83 -117
- package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/encodings_pars_fragment.glsl.js +0 -27
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +19 -6
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
- 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 +13 -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/WebGLExtensions.js +1 -0
- package/src/renderers/webgl/WebGLMaterials.js +27 -15
- package/src/renderers/webgl/WebGLProgram.js +10 -6
- package/src/renderers/webgl/WebGLPrograms.js +17 -12
- package/src/renderers/webgl/WebGLShadowMap.js +14 -5
- package/src/renderers/webgl/WebGLState.js +31 -17
- package/src/renderers/webgl/WebGLTextures.js +188 -51
- package/src/renderers/webgl/WebGLUniforms.js +45 -1
- package/src/renderers/webxr/WebXRManager.js +71 -110
- package/src/textures/Texture.js +6 -0
- package/src/utils.js +37 -1
- 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
|
|
|
@@ -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
|
*/
|
|
@@ -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
|
|
|
@@ -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 ) {
|
|
@@ -154,6 +156,21 @@ class KTX2Loader extends Loader {
|
|
|
154
156
|
|
|
155
157
|
} );
|
|
156
158
|
|
|
159
|
+
if ( _activeLoaders > 0 ) {
|
|
160
|
+
|
|
161
|
+
// Each instance loads a transcoder and allocates workers, increasing network and memory cost.
|
|
162
|
+
|
|
163
|
+
console.warn(
|
|
164
|
+
|
|
165
|
+
'THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues.'
|
|
166
|
+
+ ' Use a single KTX2Loader instance, or call .dispose() on old instances.'
|
|
167
|
+
|
|
168
|
+
);
|
|
169
|
+
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
_activeLoaders++;
|
|
173
|
+
|
|
157
174
|
}
|
|
158
175
|
|
|
159
176
|
return this.transcoderPending;
|
|
@@ -248,6 +265,8 @@ class KTX2Loader extends Loader {
|
|
|
248
265
|
URL.revokeObjectURL( this.workerSourceURL );
|
|
249
266
|
this.workerPool.dispose();
|
|
250
267
|
|
|
268
|
+
_activeLoaders--;
|
|
269
|
+
|
|
251
270
|
return this;
|
|
252
271
|
|
|
253
272
|
}
|
|
@@ -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;
|