@unikia/upe-renderer 0.186.110 → 0.187.11
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/README.md +5 -7
- package/UPSTREAM.md +4 -4
- package/build/three.core.js +853 -277
- package/build/three.module.js +1098 -1280
- package/build/three.tsl.js +41938 -686
- package/build/three.webgpu.js +10604 -49055
- package/build/three.webgpu.nodes.js +9249 -5788
- package/examples/jsm/Addons.js +2 -0
- package/examples/jsm/animation/CCDIKSolver.js +17 -5
- package/examples/jsm/controls/FirstPersonControls.js +1 -1
- package/examples/jsm/controls/OrbitControls.js +27 -14
- package/examples/jsm/csm/CSMShader.js +74 -3
- package/examples/jsm/curves/CurveExtras.js +4 -4
- package/examples/jsm/curves/NURBSCurve.js +14 -0
- package/examples/jsm/exporters/EXRExporter.js +673 -16
- package/examples/jsm/exporters/GLTFExporter.js +4 -4
- package/examples/jsm/exporters/KTX2Exporter.js +1 -1
- package/examples/jsm/exporters/OBJExporter.js +48 -5
- package/examples/jsm/exporters/PLYExporter.js +22 -11
- package/examples/jsm/generators/CityGenerator.js +3 -2
- package/examples/jsm/generators/city/SkyscraperGenerator.js +63 -21
- package/examples/jsm/gpgpu/BitonicSort.js +30 -23
- package/examples/jsm/helpers/VertexTangentsHelper.js +1 -1
- package/examples/jsm/inspector/Extension.js +1 -1
- package/examples/jsm/inspector/Inspector.js +6 -46
- package/examples/jsm/inspector/RendererInspector.js +43 -8
- package/examples/jsm/inspector/Storage.js +49 -0
- package/examples/jsm/inspector/extensions/color-grading/ColorGrading.js +32 -27
- package/examples/jsm/inspector/tabs/Parameters.js +5 -1
- package/examples/jsm/inspector/tabs/Performance.js +22 -7
- package/examples/jsm/inspector/tabs/Settings.js +1 -1
- package/examples/jsm/inspector/tabs/Timeline.js +83 -7
- package/examples/jsm/inspector/tabs/Viewer.js +25 -10
- package/examples/jsm/inspector/ui/Profiler.js +1 -1
- package/examples/jsm/inspector/ui/Style.js +21 -53
- package/examples/jsm/inspector/ui/Values.js +28 -3
- package/examples/jsm/libs/fflate.module.js +83 -56
- package/examples/jsm/libs/mikktspace.README.md +27 -0
- package/examples/jsm/libs/mikktspace.module.js +721 -109
- package/examples/jsm/lighting/ClusteredLighting.js +100 -2
- package/examples/jsm/lighting/LightMapper.js +295 -0
- package/examples/jsm/lighting/LightProbeGrid.js +242 -139
- package/examples/jsm/lighting/LightProbeGridWebGL.js +30 -14
- package/examples/jsm/lighting/vxgi/VXGIConeTracer.js +54 -5
- package/examples/jsm/lighting/vxgi/VXGIIrradiance.js +43 -0
- package/examples/jsm/lighting/vxgi/VXGINode.js +13 -56
- package/examples/jsm/lighting/vxgi/VXGISceneCollector.js +316 -1
- package/examples/jsm/lighting/vxgi/VXGIVolume.js +69 -59
- package/examples/jsm/lights/SunLight.js +9 -4
- package/examples/jsm/lights/SunLightNode.js +3 -3
- package/examples/jsm/lines/LineMaterial.js +26 -10
- package/examples/jsm/loaders/3DMLoader.js +10 -1
- package/examples/jsm/loaders/3MFLoader.js +5 -1
- package/examples/jsm/loaders/AMFLoader.js +2 -0
- package/examples/jsm/loaders/BVHLoader.js +2 -0
- package/examples/jsm/loaders/ColladaLoader.js +8 -0
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +5 -1
- package/examples/jsm/loaders/EXRLoader.js +120 -104
- package/examples/jsm/loaders/FBXLoader.js +4 -0
- package/examples/jsm/loaders/FontLoader.js +2 -0
- package/examples/jsm/loaders/GCodeLoader.js +5 -9
- package/examples/jsm/loaders/GLTFLoader.js +112 -31
- package/examples/jsm/loaders/GaussianSplatPLYLoader.js +2 -0
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +3 -0
- package/examples/jsm/loaders/IESLoader.js +46 -12
- package/examples/jsm/loaders/JXLLoader.js +159 -0
- package/examples/jsm/loaders/KMZLoader.js +6 -0
- package/examples/jsm/loaders/KSPLATLoader.js +2 -0
- package/examples/jsm/loaders/KTX2Loader.js +49 -4
- package/examples/jsm/loaders/KTXLoader.js +5 -3
- package/examples/jsm/loaders/LDrawLoader.js +15 -22
- package/examples/jsm/loaders/LUT3dlLoader.js +5 -1
- package/examples/jsm/loaders/LUTCubeLoader.js +6 -2
- package/examples/jsm/loaders/LUTImageLoader.js +2 -0
- package/examples/jsm/loaders/LWOLoader.js +6 -0
- package/examples/jsm/loaders/MD2Loader.js +2 -0
- package/examples/jsm/loaders/MDDLoader.js +4 -0
- package/examples/jsm/loaders/MTLLoader.js +8 -0
- package/examples/jsm/loaders/MaterialXLoader.js +57 -5
- package/examples/jsm/loaders/NRRDLoader.js +4 -2
- package/examples/jsm/loaders/OBJLoader.js +10 -4
- package/examples/jsm/loaders/PCDLoader.js +6 -2
- package/examples/jsm/loaders/PDBLoader.js +5 -3
- package/examples/jsm/loaders/PLYLoader.js +39 -15
- package/examples/jsm/loaders/PVRLoader.js +2 -2
- package/examples/jsm/loaders/SPLATLoader.js +2 -0
- package/examples/jsm/loaders/SPZLoader.js +2 -0
- package/examples/jsm/loaders/STLLoader.js +3 -1
- package/examples/jsm/loaders/SVGLoader.js +27 -49
- package/examples/jsm/loaders/TDSLoader.js +4 -0
- package/examples/jsm/loaders/TGALoader.js +6 -5
- package/examples/jsm/loaders/TTFLoader.js +2 -0
- package/examples/jsm/loaders/USDLoader.js +14 -0
- package/examples/jsm/loaders/UltraHDRLoader.js +2 -0
- package/examples/jsm/loaders/VOXLoader.js +3 -0
- package/examples/jsm/loaders/VRMLLoader.js +4 -0
- package/examples/jsm/loaders/VTKLoader.js +2 -0
- package/examples/jsm/loaders/XYZLoader.js +2 -0
- package/examples/jsm/loaders/collada/ColladaComposer.js +15 -8
- package/examples/jsm/loaders/materialx/MaterialXDocument.js +610 -138
- package/examples/jsm/loaders/materialx/MaterialXInterfaceValidation.js +12 -95
- package/examples/jsm/loaders/materialx/MaterialXLog.js +4 -0
- package/examples/jsm/loaders/materialx/MaterialXNodeDefs.js +99 -0
- package/examples/jsm/loaders/materialx/MaterialXNodeInterfaceRegistry.js +760 -1
- package/examples/jsm/loaders/materialx/MaterialXNodeLibrary.js +222 -372
- package/examples/jsm/loaders/materialx/MaterialXSurfaceMappings.js +163 -259
- package/examples/jsm/loaders/materialx/MaterialXUtils.js +25 -0
- package/examples/jsm/loaders/materialx/compile/MaterialXCompileRegistry.js +161 -159
- package/examples/jsm/loaders/usd/USDAParser.js +56 -47
- package/examples/jsm/loaders/usd/USDComposer.js +25 -30
- package/examples/jsm/math/ColorConverter.js +7 -3
- package/examples/jsm/math/Lut.js +2 -2
- package/examples/jsm/math/OBB.js +3 -3
- package/examples/jsm/math/Octree.js +20 -17
- package/examples/jsm/objects/GaussianSplat.js +5 -4
- package/examples/jsm/objects/Reflector.js +5 -0
- package/examples/jsm/objects/SkyMesh.js +14 -7
- package/examples/jsm/objects/Water2Mesh.js +2 -2
- package/examples/jsm/physics/RapierPhysics.js +2 -2
- package/examples/jsm/pipelines/MeshletDrawingPipeline.js +5571 -0
- package/examples/jsm/pipelines/VisibilityBufferDrawingPipeline.js +954 -0
- package/examples/jsm/postprocessing/BokehPass.js +1 -1
- package/examples/jsm/postprocessing/GTAOPass.js +26 -18
- package/examples/jsm/renderers/SVGRenderer.js +3 -2
- package/examples/jsm/shaders/GTAOShader.js +7 -4
- package/examples/jsm/shaders/PoissonDenoiseShader.js +1 -10
- package/examples/jsm/tsl/WebGLNodesHandler.js +21 -9
- package/examples/jsm/tsl/display/AfterImageNode.js +3 -3
- package/examples/jsm/tsl/display/BilateralBlurNode.js +3 -3
- package/examples/jsm/tsl/display/BloomNode.js +3 -3
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +8 -19
- package/examples/jsm/tsl/display/DenoiseNode.js +5 -5
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +3 -3
- package/examples/jsm/tsl/display/DotScreenNode.js +3 -3
- package/examples/jsm/tsl/display/FSR1Node.js +3 -3
- package/examples/jsm/tsl/display/FXAANode.js +3 -10
- package/examples/jsm/tsl/display/FilmNode.js +3 -3
- package/examples/jsm/tsl/display/GTAONode.js +33 -25
- package/examples/jsm/tsl/display/GaussianBlurNode.js +3 -3
- package/examples/jsm/tsl/display/GodraysNode.js +5 -19
- package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +8 -4
- package/examples/jsm/tsl/display/LensflareNode.js +3 -3
- package/examples/jsm/tsl/display/Lut3DNode.js +3 -3
- package/examples/jsm/tsl/display/OITPassNode.js +0 -11
- package/examples/jsm/tsl/display/OutlineNode.js +107 -5
- package/examples/jsm/tsl/display/PixelationPassNode.js +85 -193
- package/examples/jsm/tsl/display/RGBShiftNode.js +3 -3
- package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +23 -126
- package/examples/jsm/tsl/display/SMAANode.js +3 -3
- package/examples/jsm/tsl/display/SSAONode.js +6 -20
- package/examples/jsm/tsl/display/SSGINode.js +36 -29
- package/examples/jsm/tsl/display/SSRNode.js +135 -63
- package/examples/jsm/tsl/display/SSSNode.js +6 -20
- package/examples/jsm/tsl/display/SharpenNode.js +3 -3
- package/examples/jsm/tsl/display/SobelOperatorNode.js +3 -3
- package/examples/jsm/tsl/display/TAAUNode.js +10 -42
- package/examples/jsm/tsl/display/TRAANode.js +11 -43
- package/examples/jsm/tsl/display/TemporalReprojectNode.js +42 -47
- package/examples/jsm/tsl/display/TransitionNode.js +3 -3
- package/examples/jsm/tsl/display/lensDirt.js +30 -0
- package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +482 -121
- package/examples/jsm/tsl/lighting/DynamicLightsNode.js +41 -140
- package/examples/jsm/tsl/lighting/LightProbeGridNode.js +72 -25
- package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +6 -0
- package/examples/jsm/tsl/shadows/TileShadowNode.js +102 -14
- package/examples/jsm/tsl/utils/Raymarching.js +1 -1
- package/examples/jsm/tsl/utils/SoftParticles.js +5 -12
- package/examples/jsm/tsl/utils/SpecularHelpers.js +47 -70
- package/examples/jsm/tsl/utils/TAAUtils.js +6 -17
- package/examples/jsm/utils/BufferGeometryUtils.js +110 -88
- package/examples/jsm/utils/MeshletGeometryUtils.js +417 -0
- package/examples/jsm/utils/SceneOptimizer.js +2 -1
- package/examples/jsm/utils/SceneUtils.js +1 -1
- package/examples/jsm/utils/unwrapUVs.js +865 -0
- package/examples/jsm/webxr/XREstimatedLight.js +11 -4
- package/package.json +3 -3
- package/src/Three.TSL.js +2 -683
- package/src/Three.WebGPU.Nodes.js +2 -1
- package/src/Three.WebGPU.js +2 -1
- package/src/animation/AnimationAction.js +1 -1
- package/src/animation/AnimationUtils.js +1 -3
- package/src/animation/KeyframeTrack.js +19 -0
- package/src/cameras/ArrayCamera.js +12 -0
- package/src/cameras/CubeCamera.js +3 -3
- package/src/constants.js +1 -9
- package/src/core/BufferAttribute.js +57 -21
- package/src/core/BufferGeometry.js +5 -13
- package/src/core/Clock.js +1 -1
- package/src/core/InterleavedBuffer.js +28 -18
- package/src/core/InterleavedBufferAttribute.js +54 -20
- package/src/core/Object3D.js +19 -9
- package/src/core/Raycaster.js +2 -0
- package/src/core/RenderTarget.js +11 -5
- package/src/core/UniformsGroup.js +7 -3
- package/src/extras/PMREMGenerator.js +392 -685
- package/src/extras/core/Curve.js +4 -0
- package/src/extras/core/CurvePath.js +13 -0
- package/src/extras/core/ShapePath.js +1 -1
- package/src/geometries/EdgesGeometry.js +12 -10
- package/src/geometries/LatheGeometry.js +2 -0
- package/src/helpers/PolarGridHelper.js +1 -1
- package/src/lights/Light.js +11 -0
- package/src/lights/LightProbe.js +2 -0
- package/src/lights/LightShadow.js +2 -0
- package/src/loaders/AnimationLoader.js +2 -0
- package/src/loaders/AudioLoader.js +2 -0
- package/src/loaders/BufferGeometryLoader.js +2 -0
- package/src/loaders/CompressedTextureLoader.js +2 -0
- package/src/loaders/CubeTextureLoader.js +2 -0
- package/src/loaders/DataTextureLoader.js +2 -0
- package/src/loaders/FileLoader.js +2 -0
- package/src/loaders/ImageBitmapLoader.js +3 -1
- package/src/loaders/ImageLoader.js +1 -0
- package/src/loaders/Loader.js +47 -0
- package/src/loaders/MaterialLoader.js +2 -0
- package/src/loaders/ObjectLoader.js +27 -8
- package/src/loaders/TextureLoader.js +5 -3
- package/src/loaders/nodes/NodeLoader.js +2 -0
- package/src/materials/Material.js +21 -2
- package/src/materials/MeshDepthMaterial.js +1 -1
- package/src/materials/MeshDistanceMaterial.js +1 -1
- package/src/materials/MeshLambertMaterial.js +1 -1
- package/src/materials/MeshMatcapMaterial.js +1 -1
- package/src/materials/MeshNormalMaterial.js +1 -1
- package/src/materials/MeshPhongMaterial.js +1 -1
- package/src/materials/MeshPhysicalMaterial.js +90 -11
- package/src/materials/MeshStandardMaterial.js +1 -1
- package/src/materials/MeshToonMaterial.js +1 -1
- package/src/materials/nodes/Line2NodeMaterial.js +32 -10
- package/src/materials/nodes/MeshLambertNodeMaterial.js +13 -0
- package/src/materials/nodes/MeshPhongNodeMaterial.js +13 -0
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +40 -5
- package/src/materials/nodes/MeshToonNodeMaterial.js +13 -0
- package/src/materials/nodes/NodeMaterial.js +36 -16
- package/src/materials/nodes/NodeMaterialInstance.js +193 -0
- package/src/materials/nodes/NodeMaterials.js +1 -0
- package/src/materials/nodes/PointsNodeMaterial.js +1 -1
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -3
- package/src/materials/nodes/manager/NodeMaterialObserver.js +191 -22
- package/src/math/Box3.js +2 -2
- package/src/math/Color.js +8 -8
- package/src/math/ColorManagement.js +2 -21
- package/src/math/FrustumArray.js +12 -0
- package/src/math/Interpolant.js +1 -1
- package/src/math/Line3.js +2 -4
- package/src/math/MathUtils.js +33 -46
- package/src/math/Matrix2.js +1 -1
- package/src/math/Matrix3.js +1 -1
- package/src/math/Matrix4.js +1 -1
- package/src/math/Triangle.js +2 -1
- package/src/math/Vector2.js +1 -1
- package/src/math/Vector3.js +1 -1
- package/src/math/Vector4.js +1 -1
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/TSL.js +2 -0
- package/src/nodes/accessors/Arrays.js +1 -1
- package/src/nodes/accessors/Batch.js +29 -23
- package/src/nodes/accessors/BufferAttributeNode.js +21 -1
- package/src/nodes/accessors/BuiltinNode.js +6 -0
- package/src/nodes/accessors/Camera.js +100 -93
- package/src/nodes/accessors/ClippingNode.js +17 -6
- package/src/nodes/accessors/CubeTextureNode.js +12 -24
- package/src/nodes/accessors/Instance.js +198 -160
- package/src/nodes/accessors/Lights.js +19 -6
- package/src/nodes/accessors/MaterialNode.js +33 -4
- package/src/nodes/accessors/Morph.js +81 -22
- package/src/nodes/accessors/Normal.js +0 -42
- package/src/nodes/accessors/Object3DNode.js +6 -0
- package/src/nodes/accessors/PointUVNode.js +6 -0
- package/src/nodes/accessors/ReferenceAttributeNode.js +279 -0
- package/src/nodes/accessors/ReferenceBaseNode.js +6 -0
- package/src/nodes/accessors/ReferenceNode.js +6 -0
- package/src/nodes/accessors/Skinning.js +57 -52
- package/src/nodes/accessors/StorageBufferNode.js +3 -12
- package/src/nodes/accessors/TextureBicubic.js +30 -27
- package/src/nodes/accessors/TextureNode.js +164 -78
- package/src/nodes/accessors/TextureSizeNode.js +6 -0
- package/src/nodes/accessors/UniformArrayNode.js +8 -15
- package/src/nodes/accessors/VelocityNode.js +13 -8
- package/src/nodes/code/CodeNode.js +6 -0
- package/src/nodes/code/ExpressionNode.js +6 -0
- package/src/nodes/code/FunctionCallNode.js +3 -3
- package/src/nodes/code/FunctionNode.js +15 -13
- package/src/nodes/core/ArrayNode.js +3 -3
- package/src/nodes/core/AssignNode.js +10 -9
- package/src/nodes/core/AttributeNode.js +39 -0
- package/src/nodes/core/BypassNode.js +6 -0
- package/src/nodes/core/ConstNode.js +31 -1
- package/src/nodes/core/ContextNode.js +11 -6
- package/src/nodes/core/IndexNode.js +6 -0
- package/src/nodes/core/InputNode.js +6 -0
- package/src/nodes/core/InspectorNode.js +17 -31
- package/src/nodes/core/IsolateNode.js +8 -0
- package/src/nodes/core/Node.js +367 -67
- package/src/nodes/core/NodeBuilder.js +664 -222
- package/src/nodes/core/NodeUtils.js +25 -0
- package/src/nodes/core/NodeVar.js +10 -1
- package/src/nodes/core/OutputStructNode.js +6 -0
- package/src/nodes/core/OverrideContextNode.js +38 -37
- package/src/nodes/core/PropertyNode.js +14 -0
- package/src/nodes/core/StackNode.js +33 -21
- package/src/nodes/core/StructNode.js +6 -0
- package/src/nodes/core/StructTypeNode.js +6 -0
- package/src/nodes/core/SubBuildNode.js +8 -0
- package/src/nodes/core/TempNode.js +10 -35
- package/src/nodes/core/UniformGroupNode.js +6 -0
- package/src/nodes/core/VarNode.js +43 -135
- package/src/nodes/core/VaryingNode.js +33 -2
- package/src/nodes/display/BlendModes.js +5 -40
- package/src/nodes/display/BumpMapNode.js +17 -7
- package/src/nodes/display/ColorAdjustment.js +22 -10
- package/src/nodes/display/ColorSpaceFunctions.js +2 -14
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/FrontFacingNode.js +6 -0
- package/src/nodes/display/NormalMapNode.js +3 -3
- package/src/nodes/display/PassNode.js +75 -16
- package/src/nodes/display/RenderOutputNode.js +22 -5
- package/src/nodes/display/ScreenNode.js +6 -0
- package/src/nodes/display/ToneMappingFunctions.js +9 -51
- package/src/nodes/display/ToneMappingNode.js +3 -3
- package/src/nodes/display/ToonOutlinePassNode.js +66 -2
- package/src/nodes/display/ViewportDepthNode.js +34 -4
- package/src/nodes/functions/BSDF/BRDF_EON.js +65 -0
- package/src/nodes/functions/BSDF/BRDF_GGX.js +5 -3
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +2 -16
- package/src/nodes/functions/BSDF/D_GGX.js +1 -8
- package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +7 -10
- package/src/nodes/functions/BSDF/LTC.js +20 -47
- package/src/nodes/functions/BSDF/Schlick_to_F0.js +1 -9
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +1 -9
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +10 -13
- package/src/nodes/functions/PhysicalLightingModel.js +84 -51
- package/src/nodes/functions/VolumetricLightingModel.js +1 -1
- package/src/nodes/functions/material/getAlphaHashThreshold.js +3 -9
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +10 -11
- package/src/nodes/functions/material/getRoughness.js +3 -1
- package/src/nodes/geometry/RangeNode.js +52 -69
- package/src/nodes/gpgpu/AtomicFunctionNode.js +11 -6
- package/src/nodes/gpgpu/BarrierNode.js +6 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +6 -0
- package/src/nodes/gpgpu/ComputeNode.js +6 -0
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +38 -29
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +6 -0
- package/src/nodes/lighting/AnalyticLightNode.js +7 -14
- package/src/nodes/lighting/BasicEnvironmentNode.js +5 -1
- package/src/nodes/lighting/EnvironmentNode.js +58 -8
- package/src/nodes/lighting/IESSpotLightNode.js +19 -4
- package/src/nodes/lighting/LightProbeNode.js +2 -1
- package/src/nodes/lighting/LightUtils.js +2 -2
- package/src/nodes/lighting/LightingNode.js +6 -0
- package/src/nodes/lighting/LightsNode.js +26 -32
- package/src/nodes/lighting/PointShadowNode.js +92 -48
- package/src/nodes/lighting/ProjectorLightNode.js +1 -1
- package/src/nodes/lighting/RectAreaLightNode.js +13 -14
- package/src/nodes/lighting/ShadowBaseNode.js +9 -17
- package/src/nodes/lighting/ShadowFilterNode.js +26 -3
- package/src/nodes/lighting/ShadowNode.js +13 -11
- package/src/nodes/materialx/MaterialXColor.js +2 -14
- package/src/nodes/materialx/MaterialXColorTransform.js +1 -7
- package/src/nodes/materialx/MaterialXNodes.js +8 -11
- package/src/nodes/materialx/MaterialXNoise.js +195 -454
- package/src/nodes/math/BitcastNode.js +5 -5
- package/src/nodes/math/BitcountNode.js +18 -46
- package/src/nodes/math/ConditionalNode.js +92 -22
- package/src/nodes/math/Hash.js +1 -1
- package/src/nodes/math/MathNode.js +86 -64
- package/src/nodes/math/MathUtils.js +2 -2
- package/src/nodes/math/OperatorNode.js +42 -59
- package/src/nodes/math/PackFloatNode.js +9 -9
- package/src/nodes/math/Packed4x8IntegerNode.js +20 -52
- package/src/nodes/math/TriNoise3D.js +3 -23
- package/src/nodes/math/UnpackFloatNode.js +9 -9
- package/src/nodes/pmrem/PMREMNode.js +38 -75
- package/src/nodes/pmrem/PMREMUtils.js +108 -272
- package/src/nodes/procedural/Checker.js +1 -1
- package/src/nodes/tsl/TSLCore.js +199 -74
- package/src/nodes/utils/ArrayElementNode.js +19 -1
- package/src/nodes/utils/CubeMapNode.js +3 -3
- package/src/nodes/utils/DebugNode.js +2 -2
- package/src/nodes/utils/EventNode.js +6 -0
- package/src/nodes/utils/FlipNode.js +3 -3
- package/src/nodes/utils/FunctionOverloadingNode.js +7 -1
- package/src/nodes/utils/JoinNode.js +3 -3
- package/src/nodes/utils/LoopNode.js +14 -9
- package/src/nodes/utils/MemberNode.js +18 -0
- package/src/nodes/utils/PostProcessingUtils.js +20 -25
- package/src/nodes/utils/RTTNode.js +2 -0
- package/src/nodes/utils/ReflectorNode.js +24 -0
- package/src/nodes/utils/RotateNode.js +3 -3
- package/src/nodes/utils/SampleNode.js +6 -0
- package/src/nodes/utils/SetNode.js +3 -3
- package/src/nodes/utils/SplitNode.js +6 -0
- package/src/nodes/utils/UVUtils.js +2 -2
- package/src/objects/BatchedMesh.js +146 -15
- package/src/objects/InstancedMesh.js +12 -4
- package/src/objects/Line.js +20 -0
- package/src/objects/Mesh.js +8 -0
- package/src/objects/Points.js +20 -0
- package/src/objects/Skeleton.js +26 -0
- package/src/objects/SkinnedMesh.js +3 -3
- package/src/objects/Sprite.js +10 -0
- package/src/renderers/WebGLRenderer.js +104 -70
- package/src/renderers/common/Animation.js +5 -1
- package/src/renderers/common/Attributes.js +67 -57
- package/src/renderers/common/Backend.js +78 -3
- package/src/renderers/common/BindGroup.js +11 -0
- package/src/renderers/common/Binding.js +0 -11
- package/src/renderers/common/Bindings.js +116 -10
- package/src/renderers/common/Buffer.js +1 -1
- package/src/renderers/common/ClippingContext.js +12 -1
- package/src/renderers/common/ComputePipeline.js +17 -1
- package/src/renderers/common/DirectRenderPipeline.js +7 -3
- package/src/renderers/common/Geometries.js +170 -132
- package/src/renderers/common/Info.js +1 -1
- package/src/renderers/common/InspectorBase.js +5 -5
- package/src/renderers/common/Lighting.js +59 -0
- package/src/renderers/common/Pipelines.js +26 -12
- package/src/renderers/common/ProgrammableStage.js +1 -17
- package/src/renderers/common/RenderContext.js +21 -0
- package/src/renderers/common/RenderContexts.js +13 -4
- package/src/renderers/common/RenderObject.js +111 -35
- package/src/renderers/common/RenderObjects.js +37 -19
- package/src/renderers/common/Renderer.js +537 -295
- package/src/renderers/common/RendererUtils.js +15 -0
- package/src/renderers/common/StandardDrawingPipeline.js +343 -0
- package/src/renderers/common/Storage3DTexture.js +11 -0
- package/src/renderers/common/StorageArrayTexture.js +10 -0
- package/src/renderers/common/StorageTexture.js +0 -9
- package/src/renderers/common/Textures.js +144 -37
- package/src/renderers/common/UniformsGroup.js +19 -0
- package/src/renderers/common/XRManager.js +10 -91
- package/src/renderers/common/extras/PMREMGenerator.js +298 -576
- package/src/renderers/common/nodes/NodeBuilderState.js +7 -5
- package/src/renderers/common/nodes/NodeLibrary.js +11 -35
- package/src/renderers/common/nodes/NodeManager.js +80 -31
- package/src/renderers/common/nodes/NodeSampledTexture.js +14 -0
- package/src/renderers/common/nodes/NodeSampler.js +14 -0
- package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
- package/src/renderers/common/nodes/NodeUniformBuffer.js +1 -14
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +13 -4
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +8 -8
- package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +23 -11
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +21 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +18 -2
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +104 -7
- package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +11 -2
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +36 -20
- package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk.js +0 -2
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +4 -18
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +8 -1
- package/src/renderers/shaders/ShaderLib.js +3 -0
- package/src/renderers/shaders/UniformsLib.js +4 -5
- package/src/renderers/webgl/WebGLBackground.js +3 -3
- package/src/renderers/webgl/WebGLBindingStates.js +4 -2
- package/src/renderers/webgl/WebGLCapabilities.js +7 -1
- package/src/renderers/webgl/WebGLEnvironments.js +2 -2
- package/src/renderers/webgl/WebGLGeometries.js +42 -14
- package/src/renderers/webgl/WebGLMaterials.js +15 -2
- package/src/renderers/webgl/WebGLOutput.js +37 -1
- package/src/renderers/webgl/WebGLProgram.js +13 -54
- package/src/renderers/webgl/WebGLPrograms.js +22 -8
- package/src/renderers/webgl/WebGLRenderStates.js +11 -8
- package/src/renderers/webgl/WebGLShadowMap.js +6 -4
- package/src/renderers/webgl/WebGLState.js +10 -6
- package/src/renderers/webgl/WebGLTextures.js +129 -77
- package/src/renderers/webgl/WebGLUniforms.js +44 -6
- package/src/renderers/webgl/WebGLUniformsGroups.js +75 -69
- package/src/renderers/webgl-fallback/WebGLBackend.js +206 -278
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +154 -20
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +45 -42
- package/src/renderers/webgl-fallback/utils/WebGLState.js +29 -4
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +129 -49
- package/src/renderers/webgl-fallback/utils/WebGLVertexArrayUtils.js +346 -0
- package/src/renderers/webgpu/WebGPUBackend.js +140 -82
- package/src/renderers/webgpu/WebGPURenderer.js +1 -1
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +10 -10
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +10 -10
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +135 -60
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +128 -55
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +15 -12
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +55 -19
- package/src/renderers/webgpu/utils/WebGPUUtils.js +20 -3
- package/src/renderers/webxr/WebXRController.js +3 -3
- package/src/renderers/webxr/WebXRManager.js +5 -90
- package/src/scenes/Scene.js +4 -4
- package/src/textures/CompressedTexture.js +2 -2
- package/src/textures/DepthTexture.js +2 -2
- package/src/textures/FramebufferTexture.js +11 -0
- package/src/textures/Texture.js +29 -1
- package/src/textures/TextureSource.js +1 -1
- package/src/upe.js +1 -1
- package/src/utils.js +4 -4
- package/examples/jsm/libs/surfaceNet.js +0 -201
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +0 -186
|
@@ -55,6 +55,8 @@ class MTLLoader extends Loader {
|
|
|
55
55
|
const path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;
|
|
56
56
|
|
|
57
57
|
const loader = new FileLoader( this.manager );
|
|
58
|
+
loader.setPriority( this.priority );
|
|
59
|
+
loader.setCache( this.cache );
|
|
58
60
|
loader.setPath( this.path );
|
|
59
61
|
loader.setRequestHeader( this.requestHeader );
|
|
60
62
|
loader.setWithCredentials( this.withCredentials );
|
|
@@ -158,6 +160,8 @@ class MTLLoader extends Loader {
|
|
|
158
160
|
const materialCreator = new MaterialCreator( this.resourcePath || path, this.materialOptions );
|
|
159
161
|
materialCreator.setCrossOrigin( this.crossOrigin );
|
|
160
162
|
materialCreator.setManager( this.manager );
|
|
163
|
+
materialCreator.priority = this.priority;
|
|
164
|
+
materialCreator.cache = this.cache;
|
|
161
165
|
materialCreator.setMaterials( materialsInfo );
|
|
162
166
|
return materialCreator;
|
|
163
167
|
|
|
@@ -187,6 +191,8 @@ class MaterialCreator {
|
|
|
187
191
|
this.nameLookup = {};
|
|
188
192
|
|
|
189
193
|
this.crossOrigin = 'anonymous';
|
|
194
|
+
this.priority = 'auto';
|
|
195
|
+
this.cache = 'default';
|
|
190
196
|
|
|
191
197
|
this.side = ( this.options.side !== undefined ) ? this.options.side : FrontSide;
|
|
192
198
|
this.wrap = ( this.options.wrap !== undefined ) ? this.options.wrap : RepeatWrapping;
|
|
@@ -575,6 +581,8 @@ class MaterialCreator {
|
|
|
575
581
|
if ( loader === null ) {
|
|
576
582
|
|
|
577
583
|
loader = new TextureLoader( manager );
|
|
584
|
+
loader.setPriority( this.priority );
|
|
585
|
+
loader.setCache( this.cache );
|
|
578
586
|
|
|
579
587
|
}
|
|
580
588
|
|
|
@@ -82,7 +82,7 @@ class MaterialXLoader extends Loader {
|
|
|
82
82
|
*/
|
|
83
83
|
load( url, onLoad, onProgress, onError, options = {} ) {
|
|
84
84
|
|
|
85
|
-
const _onError =
|
|
85
|
+
const _onError = ( e ) => {
|
|
86
86
|
|
|
87
87
|
if ( onError ) {
|
|
88
88
|
|
|
@@ -94,16 +94,37 @@ class MaterialXLoader extends Loader {
|
|
|
94
94
|
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
+
this.manager.itemError( url );
|
|
98
|
+
this.manager.itemEnd( url );
|
|
99
|
+
|
|
97
100
|
};
|
|
98
101
|
|
|
102
|
+
// Keep the LoadingManager active until parsing and dependent resources
|
|
103
|
+
// have finished, matching the lifecycle used by GLTFLoader.
|
|
104
|
+
this.manager.itemStart( url );
|
|
105
|
+
|
|
99
106
|
new FileLoader( this.manager )
|
|
107
|
+
.setPriority( this.priority )
|
|
108
|
+
.setCache( this.cache )
|
|
100
109
|
.setPath( this.path )
|
|
110
|
+
.setRequestHeader( this.requestHeader )
|
|
111
|
+
.setWithCredentials( this.withCredentials )
|
|
101
112
|
.setResponseType( 'arraybuffer' )
|
|
102
113
|
.load( url, ( data ) => {
|
|
103
114
|
|
|
104
115
|
try {
|
|
105
116
|
|
|
106
|
-
|
|
117
|
+
const parsed = this._parseBuffer( data, url, options );
|
|
118
|
+
|
|
119
|
+
parsed.document.waitForResources().then( () => {
|
|
120
|
+
|
|
121
|
+
parsed.result.errors = parsed.log.errors;
|
|
122
|
+
parsed.result.warnings = parsed.log.warnings;
|
|
123
|
+
this._throwOnErrors( parsed.log, options );
|
|
124
|
+
onLoad( parsed.result );
|
|
125
|
+
this.manager.itemEnd( url );
|
|
126
|
+
|
|
127
|
+
} ).catch( _onError );
|
|
107
128
|
|
|
108
129
|
} catch ( e ) {
|
|
109
130
|
|
|
@@ -153,6 +174,14 @@ class MaterialXLoader extends Loader {
|
|
|
153
174
|
*/
|
|
154
175
|
parseBuffer( data, url = '', options = {} ) {
|
|
155
176
|
|
|
177
|
+
const parsed = this._parseBuffer( data, url, options );
|
|
178
|
+
this._throwOnErrors( parsed.log, options );
|
|
179
|
+
return parsed.result;
|
|
180
|
+
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
_parseBuffer( data, url = '', options = {} ) {
|
|
184
|
+
|
|
156
185
|
this.dispose();
|
|
157
186
|
|
|
158
187
|
let text;
|
|
@@ -181,7 +210,7 @@ class MaterialXLoader extends Loader {
|
|
|
181
210
|
|
|
182
211
|
}
|
|
183
212
|
|
|
184
|
-
return this.
|
|
213
|
+
return this._parse( text, {
|
|
185
214
|
...options,
|
|
186
215
|
archiveResolver,
|
|
187
216
|
path: options.path || getResourcePath( this.path, url )
|
|
@@ -199,18 +228,43 @@ class MaterialXLoader extends Loader {
|
|
|
199
228
|
* @param {string} [options.materialName] - Only translate the material with this name. Defaults to all materials.
|
|
200
229
|
* @param {string} [options.uvSpace='bottom-left'] - The UV space of the document's textures, `'bottom-left'` or `'top-left'`.
|
|
201
230
|
* @param {Function} [options.interfaceValidator] - Validates node interfaces, see `createStrictInterfaceValidator()` in `MaterialXInterfaceValidation.js`.
|
|
231
|
+
* @param {function(Object, ?string): ?Node} [options.nodeResolver] - Builds the TSL node of a MaterialX node before the built-in node library. Called with the node and the requested output (`null` for the default output); returns the node, or `null` to leave it to the loader. For channel outputs such as `outx`, the loader takes the channel of the returned node.
|
|
202
232
|
* @param {boolean} [options.throwOnErrors=true] - Whether translation errors throw or are only reported in the log.
|
|
203
233
|
* @return {{materials: Object<string,NodeMaterial>, log: Array<Object>, errors: Array<Object>, warnings: Array<Object>}} The materials keyed by name and the translation log.
|
|
204
234
|
*/
|
|
205
235
|
parse( text, options = {} ) {
|
|
206
236
|
|
|
237
|
+
const parsed = this._parse( text, options );
|
|
238
|
+
this._throwOnErrors( parsed.log, options );
|
|
239
|
+
return parsed.result;
|
|
240
|
+
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
_parse( text, options = {} ) {
|
|
244
|
+
|
|
207
245
|
const log = new MaterialXLog();
|
|
208
246
|
|
|
209
247
|
const document = new MaterialXDocument( this.manager, options.path || this.path, log, options.archiveResolver || null, options.uvSpace );
|
|
248
|
+
document.imageLoader.setPriority( this.priority );
|
|
249
|
+
document.imageLoader.setCache( this.cache );
|
|
250
|
+
document.textureLoader.setPriority( this.priority );
|
|
251
|
+
document.textureLoader.setCache( this.cache );
|
|
252
|
+
document.imageLoader.setCrossOrigin( this.crossOrigin );
|
|
253
|
+
document.textureLoader.setCrossOrigin( this.crossOrigin );
|
|
254
|
+
document.textureLoader.setRequestHeader( this.requestHeader );
|
|
255
|
+
document.textureLoader.setWithCredentials( this.withCredentials );
|
|
256
|
+
|
|
210
257
|
const result = document.parse( text, options.materialName || null, {
|
|
211
258
|
interfaceValidator: options.interfaceValidator,
|
|
259
|
+
nodeResolver: options.nodeResolver,
|
|
212
260
|
} );
|
|
213
261
|
|
|
262
|
+
return { document, log, result };
|
|
263
|
+
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
_throwOnErrors( log, options ) {
|
|
267
|
+
|
|
214
268
|
if ( options.throwOnErrors !== false && log.errors.length > 0 ) {
|
|
215
269
|
|
|
216
270
|
const details = log.errors.map( ( error ) => error.message ).join( ' ' );
|
|
@@ -218,8 +272,6 @@ class MaterialXLoader extends Loader {
|
|
|
218
272
|
|
|
219
273
|
}
|
|
220
274
|
|
|
221
|
-
return result;
|
|
222
|
-
|
|
223
275
|
}
|
|
224
276
|
|
|
225
277
|
}
|
|
@@ -45,6 +45,8 @@ class NRRDLoader extends Loader {
|
|
|
45
45
|
const scope = this;
|
|
46
46
|
|
|
47
47
|
const loader = new FileLoader( scope.manager );
|
|
48
|
+
loader.setPriority( scope.priority );
|
|
49
|
+
loader.setCache( scope.cache );
|
|
48
50
|
loader.setPath( scope.path );
|
|
49
51
|
loader.setResponseType( 'arraybuffer' );
|
|
50
52
|
loader.setRequestHeader( scope.requestHeader );
|
|
@@ -202,7 +204,7 @@ class NRRDLoader extends Loader {
|
|
|
202
204
|
|
|
203
205
|
headerObject.isNrrd = true;
|
|
204
206
|
|
|
205
|
-
} else if ( ! l.match( /^#/ ) && ( m = l.match(
|
|
207
|
+
} else if ( ! l.match( /^#/ ) && ( m = l.match( /^(.*):(.*)/ ) ) ) {
|
|
206
208
|
|
|
207
209
|
field = m[ 1 ].trim();
|
|
208
210
|
data = m[ 2 ].trim();
|
|
@@ -339,7 +341,7 @@ class NRRDLoader extends Loader {
|
|
|
339
341
|
|
|
340
342
|
// we found two line breaks in a row
|
|
341
343
|
// now we know what the header is
|
|
342
|
-
_header = this._parseChars( _bytes, 0, i -
|
|
344
|
+
_header = this._parseChars( _bytes, 0, i - 1 );
|
|
343
345
|
// this is were the data starts
|
|
344
346
|
_data_start = i + 1;
|
|
345
347
|
break;
|
|
@@ -410,15 +410,19 @@ function ParserState() {
|
|
|
410
410
|
const vLen = this.vertices.length;
|
|
411
411
|
const uvLen = this.uvs.length;
|
|
412
412
|
|
|
413
|
-
|
|
413
|
+
// a line statement defines a polyline, so convert it to pairs of vertices for line segments
|
|
414
|
+
|
|
415
|
+
for ( let vi = 0, l = vertices.length - 1; vi < l; vi ++ ) {
|
|
414
416
|
|
|
415
417
|
this.addVertexLine( this.parseVertexIndex( vertices[ vi ], vLen ) );
|
|
418
|
+
this.addVertexLine( this.parseVertexIndex( vertices[ vi + 1 ], vLen ) );
|
|
416
419
|
|
|
417
420
|
}
|
|
418
421
|
|
|
419
|
-
for ( let uvi = 0, l = uvs.length; uvi < l; uvi ++ ) {
|
|
422
|
+
for ( let uvi = 0, l = uvs.length - 1; uvi < l; uvi ++ ) {
|
|
420
423
|
|
|
421
424
|
this.addUVLine( this.parseUVIndex( uvs[ uvi ], uvLen ) );
|
|
425
|
+
this.addUVLine( this.parseUVIndex( uvs[ uvi + 1 ], uvLen ) );
|
|
422
426
|
|
|
423
427
|
}
|
|
424
428
|
|
|
@@ -485,6 +489,8 @@ class OBJLoader extends Loader {
|
|
|
485
489
|
const scope = this;
|
|
486
490
|
|
|
487
491
|
const loader = new FileLoader( this.manager );
|
|
492
|
+
loader.setPriority( this.priority );
|
|
493
|
+
loader.setCache( this.cache );
|
|
488
494
|
loader.setPath( this.path );
|
|
489
495
|
loader.setRequestHeader( this.requestHeader );
|
|
490
496
|
loader.setWithCredentials( this.withCredentials );
|
|
@@ -654,7 +660,7 @@ class OBJLoader extends Loader {
|
|
|
654
660
|
|
|
655
661
|
} else if ( lineFirstChar === 'l' ) {
|
|
656
662
|
|
|
657
|
-
const lineParts = line.substring( 1 ).trim().split(
|
|
663
|
+
const lineParts = line.substring( 1 ).trim().split( _face_vertex_data_separator_pattern );
|
|
658
664
|
let lineVertices = [];
|
|
659
665
|
const lineUVs = [];
|
|
660
666
|
|
|
@@ -680,7 +686,7 @@ class OBJLoader extends Loader {
|
|
|
680
686
|
} else if ( lineFirstChar === 'p' ) {
|
|
681
687
|
|
|
682
688
|
const lineData = line.slice( 1 ).trim();
|
|
683
|
-
const pointData = lineData.split(
|
|
689
|
+
const pointData = lineData.split( _face_vertex_data_separator_pattern );
|
|
684
690
|
|
|
685
691
|
state.addPointGeometry( pointData );
|
|
686
692
|
|
|
@@ -67,6 +67,8 @@ class PCDLoader extends Loader {
|
|
|
67
67
|
const scope = this;
|
|
68
68
|
|
|
69
69
|
const loader = new FileLoader( scope.manager );
|
|
70
|
+
loader.setPriority( scope.priority );
|
|
71
|
+
loader.setCache( scope.cache );
|
|
70
72
|
loader.setPath( scope.path );
|
|
71
73
|
loader.setResponseType( 'arraybuffer' );
|
|
72
74
|
loader.setRequestHeader( scope.requestHeader );
|
|
@@ -341,12 +343,14 @@ class PCDLoader extends Loader {
|
|
|
341
343
|
PCDheader.offset = {};
|
|
342
344
|
|
|
343
345
|
let sizeSum = 0;
|
|
346
|
+
let countSum = 0;
|
|
344
347
|
|
|
345
348
|
for ( let i = 0, l = PCDheader.fields.length; i < l; i ++ ) {
|
|
346
349
|
|
|
347
350
|
if ( PCDheader.data === 'ascii' ) {
|
|
348
351
|
|
|
349
|
-
PCDheader.offset[ PCDheader.fields[ i ] ] =
|
|
352
|
+
PCDheader.offset[ PCDheader.fields[ i ] ] = countSum;
|
|
353
|
+
countSum += PCDheader.count[ i ];
|
|
350
354
|
|
|
351
355
|
} else {
|
|
352
356
|
|
|
@@ -392,7 +396,7 @@ class PCDLoader extends Loader {
|
|
|
392
396
|
|
|
393
397
|
if ( lines[ i ] === '' ) continue;
|
|
394
398
|
|
|
395
|
-
const line = lines[ i ].split(
|
|
399
|
+
const line = lines[ i ].trim().split( /\s+/ );
|
|
396
400
|
|
|
397
401
|
if ( offset.x !== undefined ) {
|
|
398
402
|
|
|
@@ -52,6 +52,8 @@ class PDBLoader extends Loader {
|
|
|
52
52
|
const scope = this;
|
|
53
53
|
|
|
54
54
|
const loader = new FileLoader( scope.manager );
|
|
55
|
+
loader.setPriority( scope.priority );
|
|
56
|
+
loader.setCache( scope.cache );
|
|
55
57
|
loader.setPath( scope.path );
|
|
56
58
|
loader.setRequestHeader( scope.requestHeader );
|
|
57
59
|
loader.setWithCredentials( scope.withCredentials );
|
|
@@ -230,9 +232,9 @@ class PDBLoader extends Loader {
|
|
|
230
232
|
|
|
231
233
|
if ( lines[ i ].slice( 0, 4 ) === 'ATOM' || lines[ i ].slice( 0, 6 ) === 'HETATM' ) {
|
|
232
234
|
|
|
233
|
-
const x = parseFloat( lines[ i ].slice( 30,
|
|
234
|
-
const y = parseFloat( lines[ i ].slice( 38,
|
|
235
|
-
const z = parseFloat( lines[ i ].slice( 46,
|
|
235
|
+
const x = parseFloat( lines[ i ].slice( 30, 38 ) );
|
|
236
|
+
const y = parseFloat( lines[ i ].slice( 38, 46 ) );
|
|
237
|
+
const z = parseFloat( lines[ i ].slice( 46, 54 ) );
|
|
236
238
|
const index = parseInt( lines[ i ].slice( 6, 11 ) ) - 1;
|
|
237
239
|
|
|
238
240
|
let e = trim( lines[ i ].slice( 76, 78 ) ).toLowerCase();
|
|
@@ -64,6 +64,8 @@ class PLYLoader extends Loader {
|
|
|
64
64
|
const scope = this;
|
|
65
65
|
|
|
66
66
|
const loader = new FileLoader( this.manager );
|
|
67
|
+
loader.setPriority( this.priority );
|
|
68
|
+
loader.setCache( this.cache );
|
|
67
69
|
loader.setPath( this.path );
|
|
68
70
|
loader.setResponseType( 'arraybuffer' );
|
|
69
71
|
loader.setRequestHeader( this.requestHeader );
|
|
@@ -542,6 +544,19 @@ class PLYLoader extends Loader {
|
|
|
542
544
|
|
|
543
545
|
}
|
|
544
546
|
|
|
547
|
+
// custom buffer data
|
|
548
|
+
|
|
549
|
+
for ( const customProperty of Object.keys( scope.customPropertyMapping ) ) {
|
|
550
|
+
|
|
551
|
+
if ( buffer[ customProperty ].length > 0 ) {
|
|
552
|
+
|
|
553
|
+
const CustomClass = getBufferAttributeClass( vertexDescriptor.custom[ customProperty ].type );
|
|
554
|
+
geometry.setAttribute( customProperty, new CustomClass( buffer[ customProperty ], scope.customPropertyMapping[ customProperty ].length ) );
|
|
555
|
+
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
}
|
|
559
|
+
|
|
545
560
|
if ( buffer.faceVertexUvs.length > 0 || buffer.faceVertexColors.length > 0 ) {
|
|
546
561
|
|
|
547
562
|
geometry = geometry.toNonIndexed();
|
|
@@ -565,19 +580,6 @@ class PLYLoader extends Loader {
|
|
|
565
580
|
|
|
566
581
|
}
|
|
567
582
|
|
|
568
|
-
// custom buffer data
|
|
569
|
-
|
|
570
|
-
for ( const customProperty of Object.keys( scope.customPropertyMapping ) ) {
|
|
571
|
-
|
|
572
|
-
if ( buffer[ customProperty ].length > 0 ) {
|
|
573
|
-
|
|
574
|
-
const CustomClass = getBufferAttributeClass( vertexDescriptor.custom[ customProperty ].type );
|
|
575
|
-
geometry.setAttribute( customProperty, new CustomClass( buffer[ customProperty ], scope.customPropertyMapping[ customProperty ].length ) );
|
|
576
|
-
|
|
577
|
-
}
|
|
578
|
-
|
|
579
|
-
}
|
|
580
|
-
|
|
581
583
|
geometry.computeBoundingSphere();
|
|
582
584
|
|
|
583
585
|
return geometry;
|
|
@@ -674,8 +676,22 @@ class PLYLoader extends Loader {
|
|
|
674
676
|
|
|
675
677
|
} else if ( vertex_indices.length === 4 ) {
|
|
676
678
|
|
|
677
|
-
|
|
678
|
-
|
|
679
|
+
// according to the spec, quads need to be split along a specific rule
|
|
680
|
+
// 4 0 1 2 3 results in 0,1,2 and 0,2,3
|
|
681
|
+
|
|
682
|
+
buffer.indices.push( vertex_indices[ 0 ], vertex_indices[ 1 ], vertex_indices[ 2 ] );
|
|
683
|
+
buffer.indices.push( vertex_indices[ 0 ], vertex_indices[ 2 ], vertex_indices[ 3 ] );
|
|
684
|
+
|
|
685
|
+
if ( texcoord && texcoord.length === 8 ) {
|
|
686
|
+
|
|
687
|
+
buffer.faceVertexUvs.push( texcoord[ 0 ], texcoord[ 1 ] );
|
|
688
|
+
buffer.faceVertexUvs.push( texcoord[ 2 ], texcoord[ 3 ] );
|
|
689
|
+
buffer.faceVertexUvs.push( texcoord[ 4 ], texcoord[ 5 ] );
|
|
690
|
+
buffer.faceVertexUvs.push( texcoord[ 0 ], texcoord[ 1 ] );
|
|
691
|
+
buffer.faceVertexUvs.push( texcoord[ 4 ], texcoord[ 5 ] );
|
|
692
|
+
buffer.faceVertexUvs.push( texcoord[ 6 ], texcoord[ 7 ] );
|
|
693
|
+
|
|
694
|
+
}
|
|
679
695
|
|
|
680
696
|
}
|
|
681
697
|
|
|
@@ -708,6 +724,14 @@ class PLYLoader extends Loader {
|
|
|
708
724
|
buffer.faceVertexColors.push( r, g, b );
|
|
709
725
|
buffer.faceVertexColors.push( r, g, b );
|
|
710
726
|
|
|
727
|
+
if ( vertex_indices.length === 4 ) {
|
|
728
|
+
|
|
729
|
+
buffer.faceVertexColors.push( r, g, b );
|
|
730
|
+
buffer.faceVertexColors.push( r, g, b );
|
|
731
|
+
buffer.faceVertexColors.push( r, g, b );
|
|
732
|
+
|
|
733
|
+
}
|
|
734
|
+
|
|
711
735
|
}
|
|
712
736
|
|
|
713
737
|
}
|
|
@@ -231,8 +231,8 @@ function _extract( pvrDatas ) {
|
|
|
231
231
|
|
|
232
232
|
while ( mipLevel < pvrDatas.numMipmaps ) {
|
|
233
233
|
|
|
234
|
-
const sWidth = pvrDatas.width >> mipLevel,
|
|
235
|
-
sHeight = pvrDatas.height >> mipLevel;
|
|
234
|
+
const sWidth = Math.max( pvrDatas.width >> mipLevel, 1 ),
|
|
235
|
+
sHeight = Math.max( pvrDatas.height >> mipLevel, 1 );
|
|
236
236
|
|
|
237
237
|
widthBlocks = sWidth / blockWidth;
|
|
238
238
|
heightBlocks = sHeight / blockHeight;
|
|
@@ -50,6 +50,8 @@ class SPLATLoader extends Loader {
|
|
|
50
50
|
const scope = this;
|
|
51
51
|
|
|
52
52
|
const loader = new FileLoader( this.manager );
|
|
53
|
+
loader.setPriority( this.priority );
|
|
54
|
+
loader.setCache( this.cache );
|
|
53
55
|
loader.setPath( this.path );
|
|
54
56
|
loader.setResponseType( 'arraybuffer' );
|
|
55
57
|
loader.setRequestHeader( this.requestHeader );
|
|
@@ -90,6 +90,8 @@ class SPZLoader extends Loader {
|
|
|
90
90
|
const scope = this;
|
|
91
91
|
|
|
92
92
|
const loader = new FileLoader( this.manager );
|
|
93
|
+
loader.setPriority( this.priority );
|
|
94
|
+
loader.setCache( this.cache );
|
|
93
95
|
loader.setPath( this.path );
|
|
94
96
|
loader.setResponseType( 'arraybuffer' );
|
|
95
97
|
loader.setRequestHeader( this.requestHeader );
|
|
@@ -78,6 +78,8 @@ class STLLoader extends Loader {
|
|
|
78
78
|
const scope = this;
|
|
79
79
|
|
|
80
80
|
const loader = new FileLoader( this.manager );
|
|
81
|
+
loader.setPriority( this.priority );
|
|
82
|
+
loader.setCache( this.cache );
|
|
81
83
|
loader.setPath( this.path );
|
|
82
84
|
loader.setResponseType( 'arraybuffer' );
|
|
83
85
|
loader.setRequestHeader( this.requestHeader );
|
|
@@ -181,7 +183,7 @@ class STLLoader extends Loader {
|
|
|
181
183
|
// process STL header
|
|
182
184
|
// check for default color in header ("COLOR=rgba" sequence).
|
|
183
185
|
|
|
184
|
-
for ( let index = 0; index
|
|
186
|
+
for ( let index = 0; index <= 80 - 10; index ++ ) {
|
|
185
187
|
|
|
186
188
|
if ( ( reader.getUint32( index, false ) == 0x434F4C4F /*COLO*/ ) &&
|
|
187
189
|
( reader.getUint8( index + 4 ) == 0x52 /*'R'*/ ) &&
|
|
@@ -106,6 +106,8 @@ class SVGLoader extends Loader {
|
|
|
106
106
|
const scope = this;
|
|
107
107
|
|
|
108
108
|
const loader = new FileLoader( scope.manager );
|
|
109
|
+
loader.setPriority( scope.priority );
|
|
110
|
+
loader.setCache( scope.cache );
|
|
109
111
|
loader.setPath( scope.path );
|
|
110
112
|
loader.setRequestHeader( scope.requestHeader );
|
|
111
113
|
loader.setWithCredentials( scope.withCredentials );
|
|
@@ -218,7 +220,7 @@ class SVGLoader extends Loader {
|
|
|
218
220
|
case 'use':
|
|
219
221
|
style = parseStyle( node, style );
|
|
220
222
|
|
|
221
|
-
const href = node.getAttributeNS( 'http://www.w3.org/1999/xlink', 'href' ) || '';
|
|
223
|
+
const href = node.getAttributeNS( 'http://www.w3.org/1999/xlink', 'href' ) || node.getAttribute( 'href' ) || '';
|
|
222
224
|
const usedNodeId = href.substring( 1 );
|
|
223
225
|
const usedNode = node.viewportElement.getElementById( usedNodeId );
|
|
224
226
|
if ( usedNode ) {
|
|
@@ -303,8 +305,7 @@ class SVGLoader extends Loader {
|
|
|
303
305
|
const control = new Vector2();
|
|
304
306
|
|
|
305
307
|
const firstPoint = new Vector2();
|
|
306
|
-
let
|
|
307
|
-
let doSetFirstPoint = false;
|
|
308
|
+
let isPathClosed = false;
|
|
308
309
|
|
|
309
310
|
const d = node.getAttribute( 'd' );
|
|
310
311
|
|
|
@@ -321,10 +322,17 @@ class SVGLoader extends Loader {
|
|
|
321
322
|
const type = command.charAt( 0 );
|
|
322
323
|
const data = command.slice( 1 ).trim();
|
|
323
324
|
|
|
324
|
-
if (
|
|
325
|
+
if ( isPathClosed === true ) {
|
|
325
326
|
|
|
326
|
-
|
|
327
|
-
|
|
327
|
+
// commands after Z without M start a new subpath at the initial point
|
|
328
|
+
|
|
329
|
+
if ( type !== 'M' && type !== 'm' && type !== 'Z' && type !== 'z' ) {
|
|
330
|
+
|
|
331
|
+
path.moveTo( firstPoint.x, firstPoint.y );
|
|
332
|
+
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
isPathClosed = false;
|
|
328
336
|
|
|
329
337
|
}
|
|
330
338
|
|
|
@@ -367,8 +375,6 @@ class SVGLoader extends Loader {
|
|
|
367
375
|
control.y = point.y;
|
|
368
376
|
path.lineTo( point.x, point.y );
|
|
369
377
|
|
|
370
|
-
if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
|
|
371
|
-
|
|
372
378
|
}
|
|
373
379
|
|
|
374
380
|
break;
|
|
@@ -383,8 +389,6 @@ class SVGLoader extends Loader {
|
|
|
383
389
|
control.y = point.y;
|
|
384
390
|
path.lineTo( point.x, point.y );
|
|
385
391
|
|
|
386
|
-
if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
|
|
387
|
-
|
|
388
392
|
}
|
|
389
393
|
|
|
390
394
|
break;
|
|
@@ -400,8 +404,6 @@ class SVGLoader extends Loader {
|
|
|
400
404
|
control.y = point.y;
|
|
401
405
|
path.lineTo( point.x, point.y );
|
|
402
406
|
|
|
403
|
-
if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
|
|
404
|
-
|
|
405
407
|
}
|
|
406
408
|
|
|
407
409
|
break;
|
|
@@ -424,8 +426,6 @@ class SVGLoader extends Loader {
|
|
|
424
426
|
point.x = numbers[ j + 4 ];
|
|
425
427
|
point.y = numbers[ j + 5 ];
|
|
426
428
|
|
|
427
|
-
if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
|
|
428
|
-
|
|
429
429
|
}
|
|
430
430
|
|
|
431
431
|
break;
|
|
@@ -448,8 +448,6 @@ class SVGLoader extends Loader {
|
|
|
448
448
|
point.x = numbers[ j + 2 ];
|
|
449
449
|
point.y = numbers[ j + 3 ];
|
|
450
450
|
|
|
451
|
-
if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
|
|
452
|
-
|
|
453
451
|
}
|
|
454
452
|
|
|
455
453
|
break;
|
|
@@ -470,8 +468,6 @@ class SVGLoader extends Loader {
|
|
|
470
468
|
point.x = numbers[ j + 2 ];
|
|
471
469
|
point.y = numbers[ j + 3 ];
|
|
472
470
|
|
|
473
|
-
if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
|
|
474
|
-
|
|
475
471
|
}
|
|
476
472
|
|
|
477
473
|
break;
|
|
@@ -494,8 +490,6 @@ class SVGLoader extends Loader {
|
|
|
494
490
|
point.x = numbers[ j + 0 ];
|
|
495
491
|
point.y = numbers[ j + 1 ];
|
|
496
492
|
|
|
497
|
-
if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
|
|
498
|
-
|
|
499
493
|
}
|
|
500
494
|
|
|
501
495
|
break;
|
|
@@ -517,8 +511,6 @@ class SVGLoader extends Loader {
|
|
|
517
511
|
path, numbers[ j ], numbers[ j + 1 ], numbers[ j + 2 ], numbers[ j + 3 ], numbers[ j + 4 ], start, point
|
|
518
512
|
);
|
|
519
513
|
|
|
520
|
-
if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
|
|
521
|
-
|
|
522
514
|
}
|
|
523
515
|
|
|
524
516
|
break;
|
|
@@ -559,8 +551,6 @@ class SVGLoader extends Loader {
|
|
|
559
551
|
control.y = point.y;
|
|
560
552
|
path.lineTo( point.x, point.y );
|
|
561
553
|
|
|
562
|
-
if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
|
|
563
|
-
|
|
564
554
|
}
|
|
565
555
|
|
|
566
556
|
break;
|
|
@@ -575,8 +565,6 @@ class SVGLoader extends Loader {
|
|
|
575
565
|
control.y = point.y;
|
|
576
566
|
path.lineTo( point.x, point.y );
|
|
577
567
|
|
|
578
|
-
if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
|
|
579
|
-
|
|
580
568
|
}
|
|
581
569
|
|
|
582
570
|
break;
|
|
@@ -592,8 +580,6 @@ class SVGLoader extends Loader {
|
|
|
592
580
|
control.y = point.y;
|
|
593
581
|
path.lineTo( point.x, point.y );
|
|
594
582
|
|
|
595
|
-
if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
|
|
596
|
-
|
|
597
583
|
}
|
|
598
584
|
|
|
599
585
|
break;
|
|
@@ -616,8 +602,6 @@ class SVGLoader extends Loader {
|
|
|
616
602
|
point.x += numbers[ j + 4 ];
|
|
617
603
|
point.y += numbers[ j + 5 ];
|
|
618
604
|
|
|
619
|
-
if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
|
|
620
|
-
|
|
621
605
|
}
|
|
622
606
|
|
|
623
607
|
break;
|
|
@@ -640,8 +624,6 @@ class SVGLoader extends Loader {
|
|
|
640
624
|
point.x += numbers[ j + 2 ];
|
|
641
625
|
point.y += numbers[ j + 3 ];
|
|
642
626
|
|
|
643
|
-
if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
|
|
644
|
-
|
|
645
627
|
}
|
|
646
628
|
|
|
647
629
|
break;
|
|
@@ -662,8 +644,6 @@ class SVGLoader extends Loader {
|
|
|
662
644
|
point.x += numbers[ j + 2 ];
|
|
663
645
|
point.y += numbers[ j + 3 ];
|
|
664
646
|
|
|
665
|
-
if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
|
|
666
|
-
|
|
667
647
|
}
|
|
668
648
|
|
|
669
649
|
break;
|
|
@@ -686,8 +666,6 @@ class SVGLoader extends Loader {
|
|
|
686
666
|
point.x = point.x + numbers[ j + 0 ];
|
|
687
667
|
point.y = point.y + numbers[ j + 1 ];
|
|
688
668
|
|
|
689
|
-
if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
|
|
690
|
-
|
|
691
669
|
}
|
|
692
670
|
|
|
693
671
|
break;
|
|
@@ -709,8 +687,6 @@ class SVGLoader extends Loader {
|
|
|
709
687
|
path, numbers[ j ], numbers[ j + 1 ], numbers[ j + 2 ], numbers[ j + 3 ], numbers[ j + 4 ], start, point
|
|
710
688
|
);
|
|
711
689
|
|
|
712
|
-
if ( j === 0 && doSetFirstPoint === true ) firstPoint.copy( point );
|
|
713
|
-
|
|
714
690
|
}
|
|
715
691
|
|
|
716
692
|
break;
|
|
@@ -724,7 +700,7 @@ class SVGLoader extends Loader {
|
|
|
724
700
|
// Reset point to beginning of Path
|
|
725
701
|
point.copy( firstPoint );
|
|
726
702
|
path.currentPath.currentPoint.copy( point );
|
|
727
|
-
|
|
703
|
+
isPathClosed = true;
|
|
728
704
|
|
|
729
705
|
}
|
|
730
706
|
|
|
@@ -737,8 +713,6 @@ class SVGLoader extends Loader {
|
|
|
737
713
|
|
|
738
714
|
// console.log( type, parseFloats( data ), parseFloats( data ).length )
|
|
739
715
|
|
|
740
|
-
doSetFirstPoint = false;
|
|
741
|
-
|
|
742
716
|
}
|
|
743
717
|
|
|
744
718
|
return path;
|
|
@@ -760,12 +734,16 @@ class SVGLoader extends Loader {
|
|
|
760
734
|
.filter( Boolean )
|
|
761
735
|
.map( i => i.trim() );
|
|
762
736
|
|
|
763
|
-
|
|
737
|
+
const definitions = {};
|
|
764
738
|
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
);
|
|
739
|
+
for ( let j = 0; j < stylesheet.style.length; j ++ ) {
|
|
740
|
+
|
|
741
|
+
const property = stylesheet.style[ j ];
|
|
742
|
+
definitions[ property ] = stylesheet.style.getPropertyValue( property );
|
|
743
|
+
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
for ( let j = 0; j < selectorList.length; j ++ ) {
|
|
769
747
|
|
|
770
748
|
stylesheets[ selectorList[ j ] ] = Object.assign(
|
|
771
749
|
stylesheets[ selectorList[ j ] ] || {},
|
|
@@ -959,7 +937,7 @@ class SVGLoader extends Loader {
|
|
|
959
937
|
|
|
960
938
|
}
|
|
961
939
|
|
|
962
|
-
const regex = /([+-]
|
|
940
|
+
const regex = /([+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?)(?:,|\s)([+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?)/g;
|
|
963
941
|
|
|
964
942
|
const path = new ShapePath();
|
|
965
943
|
|
|
@@ -994,7 +972,7 @@ class SVGLoader extends Loader {
|
|
|
994
972
|
|
|
995
973
|
}
|
|
996
974
|
|
|
997
|
-
const regex = /([+-]
|
|
975
|
+
const regex = /([+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?)(?:,|\s)([+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?)/g;
|
|
998
976
|
|
|
999
977
|
const path = new ShapePath();
|
|
1000
978
|
|
|
@@ -1235,7 +1213,7 @@ class SVGLoader extends Loader {
|
|
|
1235
1213
|
};
|
|
1236
1214
|
|
|
1237
1215
|
if ( node.hasAttribute( svgName ) ) style[ jsName ] = adjustFunction( node.getAttribute( svgName ) );
|
|
1238
|
-
if ( stylesheetStyles[
|
|
1216
|
+
if ( stylesheetStyles[ svgName ] ) style[ jsName ] = adjustFunction( stylesheetStyles[ svgName ] );
|
|
1239
1217
|
if ( node.style && node.style[ svgName ] !== '' ) style[ jsName ] = adjustFunction( node.style[ svgName ] );
|
|
1240
1218
|
|
|
1241
1219
|
}
|