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
|
@@ -12,13 +12,15 @@
|
|
|
12
12
|
this.pointTopLeft = new THREE.Vector2();
|
|
13
13
|
this.pointBottomRight = new THREE.Vector2();
|
|
14
14
|
this.isDown = false;
|
|
15
|
-
|
|
15
|
+
|
|
16
|
+
this.onPointerDown = function ( event ) {
|
|
16
17
|
|
|
17
18
|
this.isDown = true;
|
|
18
19
|
this.onSelectStart( event );
|
|
19
20
|
|
|
20
|
-
}.bind( this )
|
|
21
|
-
|
|
21
|
+
}.bind( this );
|
|
22
|
+
|
|
23
|
+
this.onPointerMove = function ( event ) {
|
|
22
24
|
|
|
23
25
|
if ( this.isDown ) {
|
|
24
26
|
|
|
@@ -26,13 +28,26 @@
|
|
|
26
28
|
|
|
27
29
|
}
|
|
28
30
|
|
|
29
|
-
}.bind( this )
|
|
30
|
-
|
|
31
|
+
}.bind( this );
|
|
32
|
+
|
|
33
|
+
this.onPointerUp = function () {
|
|
31
34
|
|
|
32
35
|
this.isDown = false;
|
|
33
|
-
this.onSelectOver(
|
|
36
|
+
this.onSelectOver();
|
|
37
|
+
|
|
38
|
+
}.bind( this );
|
|
39
|
+
|
|
40
|
+
this.renderer.domElement.addEventListener( 'pointerdown', this.onPointerDown );
|
|
41
|
+
this.renderer.domElement.addEventListener( 'pointermove', this.onPointerMove );
|
|
42
|
+
this.renderer.domElement.addEventListener( 'pointerup', this.onPointerUp );
|
|
43
|
+
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
dispose() {
|
|
34
47
|
|
|
35
|
-
|
|
48
|
+
this.renderer.domElement.removeEventListener( 'pointerdown', this.onPointerDown );
|
|
49
|
+
this.renderer.domElement.removeEventListener( 'pointermove', this.onPointerMove );
|
|
50
|
+
this.renderer.domElement.removeEventListener( 'pointerup', this.onPointerUp );
|
|
36
51
|
|
|
37
52
|
}
|
|
38
53
|
|
|
@@ -28,6 +28,8 @@
|
|
|
28
28
|
const ltc_float_2 = new Float32Array( LTC_MAT_2 );
|
|
29
29
|
THREE.UniformsLib.LTC_FLOAT_1 = new THREE.DataTexture( ltc_float_1, 64, 64, THREE.RGBAFormat, THREE.FloatType, THREE.UVMapping, THREE.ClampToEdgeWrapping, THREE.ClampToEdgeWrapping, THREE.LinearFilter, THREE.NearestFilter, 1 );
|
|
30
30
|
THREE.UniformsLib.LTC_FLOAT_2 = new THREE.DataTexture( ltc_float_2, 64, 64, THREE.RGBAFormat, THREE.FloatType, THREE.UVMapping, THREE.ClampToEdgeWrapping, THREE.ClampToEdgeWrapping, THREE.LinearFilter, THREE.NearestFilter, 1 );
|
|
31
|
+
THREE.UniformsLib.LTC_FLOAT_1.needsUpdate = true;
|
|
32
|
+
THREE.UniformsLib.LTC_FLOAT_2.needsUpdate = true;
|
|
31
33
|
const ltc_half_1 = new Uint16Array( LTC_MAT_1.length );
|
|
32
34
|
LTC_MAT_1.forEach( function ( x, index ) {
|
|
33
35
|
|
|
@@ -42,6 +44,8 @@
|
|
|
42
44
|
} );
|
|
43
45
|
THREE.UniformsLib.LTC_HALF_1 = new THREE.DataTexture( ltc_half_1, 64, 64, THREE.RGBAFormat, THREE.HalfFloatType, THREE.UVMapping, THREE.ClampToEdgeWrapping, THREE.ClampToEdgeWrapping, THREE.LinearFilter, THREE.NearestFilter, 1 );
|
|
44
46
|
THREE.UniformsLib.LTC_HALF_2 = new THREE.DataTexture( ltc_half_2, 64, 64, THREE.RGBAFormat, THREE.HalfFloatType, THREE.UVMapping, THREE.ClampToEdgeWrapping, THREE.ClampToEdgeWrapping, THREE.LinearFilter, THREE.NearestFilter, 1 );
|
|
47
|
+
THREE.UniformsLib.LTC_HALF_1.needsUpdate = true;
|
|
48
|
+
THREE.UniformsLib.LTC_HALF_2.needsUpdate = true;
|
|
45
49
|
|
|
46
50
|
}
|
|
47
51
|
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* dashed: <boolean>,
|
|
8
8
|
* dashScale: <float>,
|
|
9
9
|
* dashSize: <float>,
|
|
10
|
+
* dashOffset: <float>,
|
|
10
11
|
* gapSize: <float>,
|
|
11
12
|
* resolution: <Vector2>, // to be set by renderer
|
|
12
13
|
* }
|
|
@@ -21,6 +22,9 @@
|
|
|
21
22
|
resolution: {
|
|
22
23
|
value: new THREE.Vector2( 1, 1 )
|
|
23
24
|
},
|
|
25
|
+
dashOffset: {
|
|
26
|
+
value: 0
|
|
27
|
+
},
|
|
24
28
|
dashScale: {
|
|
25
29
|
value: 1
|
|
26
30
|
},
|
|
@@ -52,10 +56,23 @@
|
|
|
52
56
|
attribute vec3 instanceColorStart;
|
|
53
57
|
attribute vec3 instanceColorEnd;
|
|
54
58
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
+
#ifdef WORLD_UNITS
|
|
60
|
+
|
|
61
|
+
varying vec4 worldPos;
|
|
62
|
+
varying vec3 worldStart;
|
|
63
|
+
varying vec3 worldEnd;
|
|
64
|
+
|
|
65
|
+
#ifdef USE_DASH
|
|
66
|
+
|
|
67
|
+
varying vec2 vUv;
|
|
68
|
+
|
|
69
|
+
#endif
|
|
70
|
+
|
|
71
|
+
#else
|
|
72
|
+
|
|
73
|
+
varying vec2 vUv;
|
|
74
|
+
|
|
75
|
+
#endif
|
|
59
76
|
|
|
60
77
|
#ifdef USE_DASH
|
|
61
78
|
|
|
@@ -92,19 +109,26 @@
|
|
|
92
109
|
#ifdef USE_DASH
|
|
93
110
|
|
|
94
111
|
vLineDistance = ( position.y < 0.5 ) ? dashScale * instanceDistanceStart : dashScale * instanceDistanceEnd;
|
|
112
|
+
vUv = uv;
|
|
95
113
|
|
|
96
114
|
#endif
|
|
97
115
|
|
|
98
116
|
float aspect = resolution.x / resolution.y;
|
|
99
117
|
|
|
100
|
-
vUv = uv;
|
|
101
|
-
|
|
102
118
|
// camera space
|
|
103
119
|
vec4 start = modelViewMatrix * vec4( instanceStart, 1.0 );
|
|
104
120
|
vec4 end = modelViewMatrix * vec4( instanceEnd, 1.0 );
|
|
105
121
|
|
|
106
|
-
|
|
107
|
-
|
|
122
|
+
#ifdef WORLD_UNITS
|
|
123
|
+
|
|
124
|
+
worldStart = start.xyz;
|
|
125
|
+
worldEnd = end.xyz;
|
|
126
|
+
|
|
127
|
+
#else
|
|
128
|
+
|
|
129
|
+
vUv = uv;
|
|
130
|
+
|
|
131
|
+
#endif
|
|
108
132
|
|
|
109
133
|
// special case for perspective projection, and segments that terminate either in, or behind, the camera plane
|
|
110
134
|
// clearly the gpu firmware has a way of addressing this issue when projecting into ndc space
|
|
@@ -254,15 +278,31 @@
|
|
|
254
278
|
|
|
255
279
|
#ifdef USE_DASH
|
|
256
280
|
|
|
281
|
+
uniform float dashOffset;
|
|
257
282
|
uniform float dashSize;
|
|
258
283
|
uniform float gapSize;
|
|
259
284
|
|
|
260
285
|
#endif
|
|
261
286
|
|
|
262
287
|
varying float vLineDistance;
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
288
|
+
|
|
289
|
+
#ifdef WORLD_UNITS
|
|
290
|
+
|
|
291
|
+
varying vec4 worldPos;
|
|
292
|
+
varying vec3 worldStart;
|
|
293
|
+
varying vec3 worldEnd;
|
|
294
|
+
|
|
295
|
+
#ifdef USE_DASH
|
|
296
|
+
|
|
297
|
+
varying vec2 vUv;
|
|
298
|
+
|
|
299
|
+
#endif
|
|
300
|
+
|
|
301
|
+
#else
|
|
302
|
+
|
|
303
|
+
varying vec2 vUv;
|
|
304
|
+
|
|
305
|
+
#endif
|
|
266
306
|
|
|
267
307
|
#include <common>
|
|
268
308
|
#include <color_pars_fragment>
|
|
@@ -270,8 +310,6 @@
|
|
|
270
310
|
#include <logdepthbuf_pars_fragment>
|
|
271
311
|
#include <clipping_planes_pars_fragment>
|
|
272
312
|
|
|
273
|
-
varying vec2 vUv;
|
|
274
|
-
|
|
275
313
|
vec2 closestLineToLine(vec3 p1, vec3 p2, vec3 p3, vec3 p4) {
|
|
276
314
|
|
|
277
315
|
float mua;
|
|
@@ -309,7 +347,7 @@
|
|
|
309
347
|
|
|
310
348
|
if ( vUv.y < - 1.0 || vUv.y > 1.0 ) discard; // discard endcaps
|
|
311
349
|
|
|
312
|
-
if ( mod( vLineDistance, dashSize + gapSize ) > dashSize ) discard; // todo - FIX
|
|
350
|
+
if ( mod( vLineDistance + dashOffset, dashSize + gapSize ) > dashSize ) discard; // todo - FIX
|
|
313
351
|
|
|
314
352
|
#endif
|
|
315
353
|
|
|
@@ -330,7 +368,7 @@
|
|
|
330
368
|
|
|
331
369
|
#ifndef USE_DASH
|
|
332
370
|
|
|
333
|
-
#ifdef
|
|
371
|
+
#ifdef USE_ALPHA_TO_COVERAGE
|
|
334
372
|
|
|
335
373
|
float dnorm = fwidth( norm );
|
|
336
374
|
alpha = 1.0 - smoothstep( 0.5 - dnorm, 0.5 + dnorm, norm );
|
|
@@ -349,7 +387,7 @@
|
|
|
349
387
|
|
|
350
388
|
#else
|
|
351
389
|
|
|
352
|
-
#ifdef
|
|
390
|
+
#ifdef USE_ALPHA_TO_COVERAGE
|
|
353
391
|
|
|
354
392
|
// artifacts appear on some hardware if a derivative is taken within a conditional
|
|
355
393
|
float a = vUv.x;
|
|
@@ -566,12 +604,12 @@
|
|
|
566
604
|
enumerable: true,
|
|
567
605
|
get: function () {
|
|
568
606
|
|
|
569
|
-
return Boolean( '
|
|
607
|
+
return Boolean( 'USE_ALPHA_TO_COVERAGE' in this.defines );
|
|
570
608
|
|
|
571
609
|
},
|
|
572
610
|
set: function ( value ) {
|
|
573
611
|
|
|
574
|
-
if ( Boolean( value ) !== Boolean( '
|
|
612
|
+
if ( Boolean( value ) !== Boolean( 'USE_ALPHA_TO_COVERAGE' in this.defines ) ) {
|
|
575
613
|
|
|
576
614
|
this.needsUpdate = true;
|
|
577
615
|
|
|
@@ -579,12 +617,12 @@
|
|
|
579
617
|
|
|
580
618
|
if ( value === true ) {
|
|
581
619
|
|
|
582
|
-
this.defines.
|
|
620
|
+
this.defines.USE_ALPHA_TO_COVERAGE = '';
|
|
583
621
|
this.extensions.derivatives = true;
|
|
584
622
|
|
|
585
623
|
} else {
|
|
586
624
|
|
|
587
|
-
delete this.defines.
|
|
625
|
+
delete this.defines.USE_ALPHA_TO_COVERAGE;
|
|
588
626
|
this.extensions.derivatives = false;
|
|
589
627
|
|
|
590
628
|
}
|
|
@@ -22,7 +22,29 @@
|
|
|
22
22
|
|
|
23
23
|
const _sphere = new THREE.Sphere();
|
|
24
24
|
|
|
25
|
-
const _clipToWorldVector = new THREE.Vector4();
|
|
25
|
+
const _clipToWorldVector = new THREE.Vector4(); // Returns the margin required to expand by in world space given the distance from the camera,
|
|
26
|
+
// line width, resolution, and camera projection
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
function getWorldSpaceHalfWidth( camera, distance, lineWidth, resolution ) {
|
|
30
|
+
|
|
31
|
+
// transform into clip space, adjust the x and y values by the pixel width offset, then
|
|
32
|
+
// transform back into world space to get world offset. Note clip space is [-1, 1] so full
|
|
33
|
+
// width does not need to be halved.
|
|
34
|
+
_clipToWorldVector.set( 0, 0, - distance, 1.0 ).applyMatrix4( camera.projectionMatrix );
|
|
35
|
+
|
|
36
|
+
_clipToWorldVector.multiplyScalar( 1.0 / _clipToWorldVector.w );
|
|
37
|
+
|
|
38
|
+
_clipToWorldVector.x = lineWidth / resolution.width;
|
|
39
|
+
_clipToWorldVector.y = lineWidth / resolution.height;
|
|
40
|
+
|
|
41
|
+
_clipToWorldVector.applyMatrix4( camera.projectionMatrixInverse );
|
|
42
|
+
|
|
43
|
+
_clipToWorldVector.multiplyScalar( 1.0 / _clipToWorldVector.w );
|
|
44
|
+
|
|
45
|
+
return Math.abs( Math.max( _clipToWorldVector.x, _clipToWorldVector.y ) );
|
|
46
|
+
|
|
47
|
+
}
|
|
26
48
|
|
|
27
49
|
class LineSegments2 extends THREE.Mesh {
|
|
28
50
|
|
|
@@ -84,10 +106,7 @@
|
|
|
84
106
|
const instanceStart = geometry.attributes.instanceStart;
|
|
85
107
|
const instanceEnd = geometry.attributes.instanceEnd; // camera forward is negative
|
|
86
108
|
|
|
87
|
-
const near = - camera.near; //
|
|
88
|
-
// width in clip space
|
|
89
|
-
|
|
90
|
-
const ssMaxWidth = 2.0 * Math.max( lineWidth / resolution.width, lineWidth / resolution.height ); //
|
|
109
|
+
const near = - camera.near; //
|
|
91
110
|
// check if we intersect the sphere bounds
|
|
92
111
|
|
|
93
112
|
if ( geometry.boundingSphere === null ) {
|
|
@@ -98,16 +117,9 @@
|
|
|
98
117
|
|
|
99
118
|
_sphere.copy( geometry.boundingSphere ).applyMatrix4( matrixWorld );
|
|
100
119
|
|
|
101
|
-
const distanceToSphere = Math.max( camera.near, _sphere.distanceToPoint( ray.origin ) ); //
|
|
102
|
-
|
|
103
|
-
_clipToWorldVector.set( 0, 0, - distanceToSphere, 1.0 ).applyMatrix4( camera.projectionMatrix );
|
|
104
|
-
|
|
105
|
-
_clipToWorldVector.multiplyScalar( 1.0 / _clipToWorldVector.w );
|
|
106
|
-
|
|
107
|
-
_clipToWorldVector.applyMatrix4( camera.projectionMatrixInverse ); // increase the sphere bounds by the worst case line screen space width
|
|
108
|
-
|
|
120
|
+
const distanceToSphere = Math.max( camera.near, _sphere.distanceToPoint( ray.origin ) ); // increase the sphere bounds by the worst case line screen space width
|
|
109
121
|
|
|
110
|
-
const sphereMargin =
|
|
122
|
+
const sphereMargin = getWorldSpaceHalfWidth( camera, distanceToSphere, lineWidth, resolution );
|
|
111
123
|
_sphere.radius += sphereMargin;
|
|
112
124
|
|
|
113
125
|
if ( raycaster.ray.intersectsSphere( _sphere ) === false ) {
|
|
@@ -126,16 +138,9 @@
|
|
|
126
138
|
|
|
127
139
|
_box.copy( geometry.boundingBox ).applyMatrix4( matrixWorld );
|
|
128
140
|
|
|
129
|
-
const distanceToBox = Math.max( camera.near, _box.distanceToPoint( ray.origin ) ); //
|
|
130
|
-
|
|
131
|
-
_clipToWorldVector.set( 0, 0, - distanceToBox, 1.0 ).applyMatrix4( camera.projectionMatrix );
|
|
132
|
-
|
|
133
|
-
_clipToWorldVector.multiplyScalar( 1.0 / _clipToWorldVector.w );
|
|
134
|
-
|
|
135
|
-
_clipToWorldVector.applyMatrix4( camera.projectionMatrixInverse ); // increase the sphere bounds by the worst case line screen space width
|
|
136
|
-
|
|
141
|
+
const distanceToBox = Math.max( camera.near, _box.distanceToPoint( ray.origin ) ); // increase the box bounds by the worst case line screen space width
|
|
137
142
|
|
|
138
|
-
const boxMargin =
|
|
143
|
+
const boxMargin = getWorldSpaceHalfWidth( camera, distanceToBox, lineWidth, resolution );
|
|
139
144
|
_box.max.x += boxMargin;
|
|
140
145
|
_box.max.y += boxMargin;
|
|
141
146
|
_box.max.z += boxMargin;
|
|
@@ -276,7 +281,7 @@
|
|
|
276
281
|
|
|
277
282
|
}
|
|
278
283
|
|
|
279
|
-
LineSegments2.prototype.
|
|
284
|
+
LineSegments2.prototype.isLineSegments2 = true;
|
|
280
285
|
|
|
281
286
|
THREE.LineSegments2 = LineSegments2;
|
|
282
287
|
|
|
@@ -231,6 +231,10 @@
|
|
|
231
231
|
|
|
232
232
|
}
|
|
233
233
|
|
|
234
|
+
map.wrapS = texture.wrapU === 0 ? THREE.RepeatWrapping : THREE.ClampToEdgeWrapping;
|
|
235
|
+
map.wrapT = texture.wrapV === 0 ? THREE.RepeatWrapping : THREE.ClampToEdgeWrapping;
|
|
236
|
+
map.repeat.set( texture.repeat[ 0 ], texture.repeat[ 1 ] );
|
|
237
|
+
|
|
234
238
|
}
|
|
235
239
|
|
|
236
240
|
}
|
|
@@ -778,7 +782,8 @@
|
|
|
778
782
|
const layers = [];
|
|
779
783
|
const views = [];
|
|
780
784
|
const namedViews = [];
|
|
781
|
-
const groups = [];
|
|
785
|
+
const groups = [];
|
|
786
|
+
const strings = []; //Handle objects
|
|
782
787
|
|
|
783
788
|
const objs = doc.objects();
|
|
784
789
|
const cnt = objs.count;
|
|
@@ -840,6 +845,13 @@
|
|
|
840
845
|
type: textureType
|
|
841
846
|
};
|
|
842
847
|
const image = doc.getEmbeddedFileAsBase64( _texture.fileName );
|
|
848
|
+
texture.wrapU = _texture.wrapU;
|
|
849
|
+
texture.wrapV = _texture.wrapV;
|
|
850
|
+
texture.wrapW = _texture.wrapW;
|
|
851
|
+
|
|
852
|
+
const uvw = _texture.uvwTransform.toFloatArray( true );
|
|
853
|
+
|
|
854
|
+
texture.repeat = [ uvw[ 0 ], uvw[ 5 ] ];
|
|
843
855
|
|
|
844
856
|
if ( image ) {
|
|
845
857
|
|
|
@@ -959,18 +971,18 @@
|
|
|
959
971
|
// console.log( `Dimstyle Count: ${doc.dimstyles().count()}` );
|
|
960
972
|
// Handle bitmaps
|
|
961
973
|
// console.log( `Bitmap Count: ${doc.bitmaps().count()}` );
|
|
962
|
-
// Handle strings
|
|
974
|
+
// Handle strings
|
|
963
975
|
// console.log( `Document Strings Count: ${doc.strings().count()}` );
|
|
976
|
+
// Note: doc.strings().documentUserTextCount() counts any doc.strings defined in a section
|
|
977
|
+
//console.log( `Document User Text Count: ${doc.strings().documentUserTextCount()}` );
|
|
978
|
+
|
|
979
|
+
const strings_count = doc.strings().count();
|
|
964
980
|
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
strings.push( string );
|
|
971
|
-
_string.delete();
|
|
972
|
-
}
|
|
973
|
-
*/
|
|
981
|
+
for ( let i = 0; i < strings_count; i ++ ) {
|
|
982
|
+
|
|
983
|
+
strings.push( doc.strings().get( i ) );
|
|
984
|
+
|
|
985
|
+
}
|
|
974
986
|
|
|
975
987
|
doc.delete();
|
|
976
988
|
return {
|
|
@@ -980,6 +992,7 @@
|
|
|
980
992
|
views,
|
|
981
993
|
namedViews,
|
|
982
994
|
groups,
|
|
995
|
+
strings,
|
|
983
996
|
settings
|
|
984
997
|
};
|
|
985
998
|
|
|
@@ -968,7 +968,7 @@
|
|
|
968
968
|
geometry.setIndex( new THREE.BufferAttribute( meshData[ 'triangles' ], 1 ) );
|
|
969
969
|
geometry.setAttribute( 'position', new THREE.BufferAttribute( meshData[ 'vertices' ], 3 ) );
|
|
970
970
|
const material = new THREE.MeshPhongMaterial( {
|
|
971
|
-
color:
|
|
971
|
+
color: 0xffffff,
|
|
972
972
|
flatShading: true
|
|
973
973
|
} );
|
|
974
974
|
const mesh = new THREE.Mesh( geometry, material );
|
|
@@ -1299,7 +1299,7 @@
|
|
|
1299
1299
|
for ( let i = 0; i < buildData.length; i ++ ) {
|
|
1300
1300
|
|
|
1301
1301
|
const buildItem = buildData[ i ];
|
|
1302
|
-
const object3D = objects[ buildItem[ 'objectId' ] ]; // apply transform
|
|
1302
|
+
const object3D = objects[ buildItem[ 'objectId' ] ].clone(); // apply transform
|
|
1303
1303
|
|
|
1304
1304
|
const transform = buildItem[ 'transform' ];
|
|
1305
1305
|
|
|
@@ -4,8 +4,6 @@
|
|
|
4
4
|
* Description: Early release of an AMF THREE.Loader following the pattern of the
|
|
5
5
|
* example loaders in the three.js project.
|
|
6
6
|
*
|
|
7
|
-
* More information about the AMF format: http://amf.wikispaces.com
|
|
8
|
-
*
|
|
9
7
|
* Usage:
|
|
10
8
|
* const loader = new AMFLoader();
|
|
11
9
|
* loader.load('/path/to/project.amf', function(objecttree) {
|
|
@@ -1110,6 +1110,10 @@
|
|
|
1110
1110
|
data.parameters = parseEffectParameters( child );
|
|
1111
1111
|
break;
|
|
1112
1112
|
|
|
1113
|
+
case 'extra':
|
|
1114
|
+
data.extra = parseEffectExtra( child );
|
|
1115
|
+
break;
|
|
1116
|
+
|
|
1113
1117
|
}
|
|
1114
1118
|
|
|
1115
1119
|
}
|
|
@@ -1141,7 +1145,7 @@
|
|
|
1141
1145
|
|
|
1142
1146
|
case 'transparent':
|
|
1143
1147
|
data[ child.nodeName ] = {
|
|
1144
|
-
opaque: child.getAttribute( 'opaque' ),
|
|
1148
|
+
opaque: child.hasAttribute( 'opaque' ) ? child.getAttribute( 'opaque' ) : 'A_ONE',
|
|
1145
1149
|
data: parseEffectParameter( child )
|
|
1146
1150
|
};
|
|
1147
1151
|
break;
|
|
@@ -1267,6 +1271,10 @@
|
|
|
1267
1271
|
|
|
1268
1272
|
break;
|
|
1269
1273
|
|
|
1274
|
+
case 'bump':
|
|
1275
|
+
data[ child.nodeName ] = parseEffectExtraTechniqueBump( child );
|
|
1276
|
+
break;
|
|
1277
|
+
|
|
1270
1278
|
}
|
|
1271
1279
|
|
|
1272
1280
|
}
|
|
@@ -1311,6 +1319,37 @@
|
|
|
1311
1319
|
data[ child.nodeName ] = parseInt( child.textContent );
|
|
1312
1320
|
break;
|
|
1313
1321
|
|
|
1322
|
+
case 'bump':
|
|
1323
|
+
data[ child.nodeName ] = parseEffectExtraTechniqueBump( child );
|
|
1324
|
+
break;
|
|
1325
|
+
|
|
1326
|
+
}
|
|
1327
|
+
|
|
1328
|
+
}
|
|
1329
|
+
|
|
1330
|
+
return data;
|
|
1331
|
+
|
|
1332
|
+
}
|
|
1333
|
+
|
|
1334
|
+
function parseEffectExtraTechniqueBump( xml ) {
|
|
1335
|
+
|
|
1336
|
+
var data = {};
|
|
1337
|
+
|
|
1338
|
+
for ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {
|
|
1339
|
+
|
|
1340
|
+
var child = xml.childNodes[ i ];
|
|
1341
|
+
if ( child.nodeType !== 1 ) continue;
|
|
1342
|
+
|
|
1343
|
+
switch ( child.nodeName ) {
|
|
1344
|
+
|
|
1345
|
+
case 'texture':
|
|
1346
|
+
data[ child.nodeName ] = {
|
|
1347
|
+
id: child.getAttribute( 'texture' ),
|
|
1348
|
+
texcoord: child.getAttribute( 'texcoord' ),
|
|
1349
|
+
extra: parseEffectParameterTexture( child )
|
|
1350
|
+
};
|
|
1351
|
+
break;
|
|
1352
|
+
|
|
1314
1353
|
}
|
|
1315
1354
|
|
|
1316
1355
|
}
|
|
@@ -1383,7 +1422,6 @@
|
|
|
1383
1422
|
|
|
1384
1423
|
const effect = getEffect( data.url );
|
|
1385
1424
|
const technique = effect.profile.technique;
|
|
1386
|
-
const extra = effect.profile.extra;
|
|
1387
1425
|
let material;
|
|
1388
1426
|
|
|
1389
1427
|
switch ( technique.type ) {
|
|
@@ -1570,9 +1608,28 @@
|
|
|
1570
1608
|
} //
|
|
1571
1609
|
|
|
1572
1610
|
|
|
1573
|
-
if ( extra !== undefined && extra.technique !== undefined
|
|
1611
|
+
if ( technique.extra !== undefined && technique.extra.technique !== undefined ) {
|
|
1612
|
+
|
|
1613
|
+
const techniques = technique.extra.technique;
|
|
1574
1614
|
|
|
1575
|
-
|
|
1615
|
+
for ( const k in techniques ) {
|
|
1616
|
+
|
|
1617
|
+
const v = techniques[ k ];
|
|
1618
|
+
|
|
1619
|
+
switch ( k ) {
|
|
1620
|
+
|
|
1621
|
+
case 'double_sided':
|
|
1622
|
+
material.side = v === 1 ? THREE.DoubleSide : THREE.FrontSide;
|
|
1623
|
+
break;
|
|
1624
|
+
|
|
1625
|
+
case 'bump':
|
|
1626
|
+
material.normalMap = getTexture( v.texture );
|
|
1627
|
+
material.normalScale = new THREE.Vector2( 1, 1 );
|
|
1628
|
+
break;
|
|
1629
|
+
|
|
1630
|
+
}
|
|
1631
|
+
|
|
1632
|
+
}
|
|
1576
1633
|
|
|
1577
1634
|
}
|
|
1578
1635
|
|