@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
|
@@ -2,10 +2,10 @@ import { Tab } from '../ui/Tab.js';
|
|
|
2
2
|
import { List } from '../ui/List.js';
|
|
3
3
|
import { Item } from '../ui/Item.js';
|
|
4
4
|
import { splitPath, splitCamelCase } from '../ui/utils.js';
|
|
5
|
-
import { getItem, setItem } from '../
|
|
5
|
+
import { getItem, setItem } from '../Storage.js';
|
|
6
6
|
|
|
7
7
|
import { RendererUtils, NoToneMapping, LinearSRGBColorSpace, QuadMesh, NodeMaterial, CanvasTarget, Vector2, Color } from 'three/webgpu';
|
|
8
|
-
import { renderOutput, vec2, vec3, vec4, Fn, screenUV, step, OnMaterialUpdate, uniform, float } from 'three/tsl';
|
|
8
|
+
import { renderOutput, rtt, vec2, vec3, vec4, Fn, screenUV, step, OnMaterialUpdate, uniform, float } from 'three/tsl';
|
|
9
9
|
|
|
10
10
|
const _size = /*@__PURE__*/ new Vector2();
|
|
11
11
|
|
|
@@ -746,16 +746,14 @@ class Viewer extends Tab {
|
|
|
746
746
|
this.splitUniforms.viewportWidth.value = rect.width;
|
|
747
747
|
|
|
748
748
|
// Recreate or setup material for split screen comparison
|
|
749
|
-
const
|
|
750
|
-
const target = node.context( { getUV: () => screenUV } );
|
|
749
|
+
const target = canvasData.inspectNode.context( { getUV: () => screenUV } );
|
|
751
750
|
const targetColor = renderOutput( vec4( vec3( target ), 1 ), NoToneMapping, renderer.outputColorSpace );
|
|
752
|
-
const targetColorCtx = targetColor.context( { inspector: true } );
|
|
753
751
|
|
|
754
752
|
let finalColor;
|
|
755
753
|
|
|
756
754
|
if ( this.splitFullscreen ) {
|
|
757
755
|
|
|
758
|
-
finalColor =
|
|
756
|
+
finalColor = targetColor;
|
|
759
757
|
|
|
760
758
|
} else {
|
|
761
759
|
|
|
@@ -763,7 +761,7 @@ class Viewer extends Tab {
|
|
|
763
761
|
|
|
764
762
|
screenUV.x.lessThan( this.splitUniforms.splitX ).discard();
|
|
765
763
|
|
|
766
|
-
return
|
|
764
|
+
return targetColor;
|
|
767
765
|
|
|
768
766
|
} )();
|
|
769
767
|
|
|
@@ -901,7 +899,21 @@ class Viewer extends Tab {
|
|
|
901
899
|
const canvasAspect = uniform( 1 );
|
|
902
900
|
const mask = float( 1 );
|
|
903
901
|
|
|
904
|
-
|
|
902
|
+
let inspectNode = node.callback !== null ? node.callback( node.node ) : node.node;
|
|
903
|
+
let rttNode = null;
|
|
904
|
+
|
|
905
|
+
if ( inspectNode.isTextureNode !== true && inspectNode.isPassNode !== true ) {
|
|
906
|
+
|
|
907
|
+
// render other nodes in the resolution of the renderer, e.g. screen-space nodes
|
|
908
|
+
|
|
909
|
+
rttNode = rtt( inspectNode );
|
|
910
|
+
rttNode.uvNode = null; // use the aspect ratio corrected uv of the viewer
|
|
911
|
+
|
|
912
|
+
inspectNode = rttNode;
|
|
913
|
+
|
|
914
|
+
}
|
|
915
|
+
|
|
916
|
+
const target = inspectNode.context( { getUV: ( textureNode ) => {
|
|
905
917
|
|
|
906
918
|
const uvData = aspectRatioUV( screenUV, textureNode, canvasAspect );
|
|
907
919
|
const correctedUV = uvData.xy;
|
|
@@ -913,7 +925,6 @@ class Viewer extends Tab {
|
|
|
913
925
|
|
|
914
926
|
let output = vec4( vec3( target ), 1 ).mul( mask );
|
|
915
927
|
output = renderOutput( output, NoToneMapping, renderer.outputColorSpace );
|
|
916
|
-
output = output.context( { inspector: true } );
|
|
917
928
|
|
|
918
929
|
const material = new NodeMaterial();
|
|
919
930
|
material.outputNode = output;
|
|
@@ -926,6 +937,8 @@ class Viewer extends Tab {
|
|
|
926
937
|
name,
|
|
927
938
|
path,
|
|
928
939
|
node,
|
|
940
|
+
inspectNode,
|
|
941
|
+
rttNode,
|
|
929
942
|
quad,
|
|
930
943
|
canvasTarget,
|
|
931
944
|
material,
|
|
@@ -1240,7 +1253,7 @@ class Viewer extends Tab {
|
|
|
1240
1253
|
|
|
1241
1254
|
const mainSize = previousCanvasTarget.getDrawingBufferSize( _size );
|
|
1242
1255
|
|
|
1243
|
-
canvasData.
|
|
1256
|
+
canvasData.inspectNode.traverse( ( child ) => {
|
|
1244
1257
|
|
|
1245
1258
|
if ( child.isRTTNode && child.autoResize === true ) {
|
|
1246
1259
|
|
|
@@ -1361,6 +1374,8 @@ class Viewer extends Tab {
|
|
|
1361
1374
|
canvasData.canvasTarget.dispose();
|
|
1362
1375
|
canvasData.material.dispose();
|
|
1363
1376
|
|
|
1377
|
+
if ( canvasData.rttNode !== null ) canvasData.rttNode.dispose();
|
|
1378
|
+
|
|
1364
1379
|
}
|
|
1365
1380
|
|
|
1366
1381
|
this.canvasNodes.clear();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EventDispatcher } from 'three';
|
|
2
2
|
import { Style } from './Style.js';
|
|
3
3
|
import { Graph } from './Graph.js';
|
|
4
|
-
import { getItem, setItem } from '../
|
|
4
|
+
import { getItem, setItem } from '../Storage.js';
|
|
5
5
|
|
|
6
6
|
export class Profiler extends EventDispatcher {
|
|
7
7
|
|
|
@@ -357,11 +357,6 @@ export class Style {
|
|
|
357
357
|
min-width: 0 !important;
|
|
358
358
|
}
|
|
359
359
|
|
|
360
|
-
.mini-panel-content .list-container.parameters .list-item-row,
|
|
361
|
-
.mini-panel-content .list-container.parameters .list-header {
|
|
362
|
-
grid-template-columns: minmax(0, .5fr) minmax(0, 1fr) !important;
|
|
363
|
-
}
|
|
364
|
-
|
|
365
360
|
}
|
|
366
361
|
|
|
367
362
|
.mini-panel-content .list-container.parameters {
|
|
@@ -1614,33 +1609,26 @@ export class Style {
|
|
|
1614
1609
|
margin-left: 2px;
|
|
1615
1610
|
}
|
|
1616
1611
|
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
min-width: 0;
|
|
1623
|
-
overflow: hidden;
|
|
1624
|
-
width: 100%;
|
|
1625
|
-
}
|
|
1626
|
-
|
|
1627
|
-
.mini-panel-content .list-item-cell:first-child .value {
|
|
1628
|
-
overflow: hidden;
|
|
1629
|
-
text-overflow: ellipsis;
|
|
1630
|
-
white-space: nowrap;
|
|
1631
|
-
flex: 1 1 0%;
|
|
1632
|
-
min-width: 0;
|
|
1633
|
-
}
|
|
1612
|
+
.list-container.parameters .list-item-cell:first-child .value {
|
|
1613
|
+
overflow: hidden;
|
|
1614
|
+
text-overflow: ellipsis;
|
|
1615
|
+
white-space: nowrap;
|
|
1616
|
+
}
|
|
1634
1617
|
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1618
|
+
.list-container.parameters .list-item-cell:first-child .value:has(> .info-icon) {
|
|
1619
|
+
position: relative;
|
|
1620
|
+
padding-right: 20px;
|
|
1621
|
+
}
|
|
1638
1622
|
|
|
1623
|
+
.list-container.parameters .list-item-cell:first-child .value > .info-icon {
|
|
1624
|
+
position: absolute;
|
|
1625
|
+
top: calc(50% - 8px);
|
|
1626
|
+
right: 0;
|
|
1639
1627
|
}
|
|
1640
1628
|
|
|
1641
1629
|
.mini-panel-content .custom-checkbox .checkmark {
|
|
1642
|
-
width:
|
|
1643
|
-
height:
|
|
1630
|
+
width: 11px;
|
|
1631
|
+
height: 11px;
|
|
1644
1632
|
margin-bottom: 2px;
|
|
1645
1633
|
will-change: transform;
|
|
1646
1634
|
}
|
|
@@ -1649,6 +1637,10 @@ export class Style {
|
|
|
1649
1637
|
margin-bottom: 2px;
|
|
1650
1638
|
}
|
|
1651
1639
|
|
|
1640
|
+
.mini-panel-content .list-container.parameters .list-item-wrapper:has(> .list-children-container.closed) + .list-item-wrapper {
|
|
1641
|
+
margin-top: 2px;
|
|
1642
|
+
}
|
|
1643
|
+
|
|
1652
1644
|
.mini-panel-content .list-container.parameters .list-children-container > .list-item-wrapper:first-child:has(> .list-item-row:not(.collapsible)) {
|
|
1653
1645
|
margin-top: 2px;
|
|
1654
1646
|
}
|
|
@@ -2117,6 +2109,8 @@ export class Style {
|
|
|
2117
2109
|
width: 1px;
|
|
2118
2110
|
left: 50%;
|
|
2119
2111
|
background-color: transparent;
|
|
2112
|
+
/*background-color: rgba(255, 255, 255, 0.25);
|
|
2113
|
+
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15);*/
|
|
2120
2114
|
cursor: ew-resize;
|
|
2121
2115
|
pointer-events: auto !important;
|
|
2122
2116
|
z-index: 10;
|
|
@@ -2141,32 +2135,6 @@ export class Style {
|
|
|
2141
2135
|
cursor: ew-resize;
|
|
2142
2136
|
}
|
|
2143
2137
|
|
|
2144
|
-
.split-screen-line::after {
|
|
2145
|
-
content: '';
|
|
2146
|
-
position: absolute;
|
|
2147
|
-
top: -1px;
|
|
2148
|
-
bottom: -1px;
|
|
2149
|
-
left: -5px;
|
|
2150
|
-
width: 11px;
|
|
2151
|
-
pointer-events: none;
|
|
2152
|
-
background-image:
|
|
2153
|
-
url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='7' viewBox='0 0 11 7'%3E%3Cpath d='M-0.5 -1 L5.5 7 L11.5 -1 Z' fill='rgba(30,30,36,0.85)' stroke='%234a4a5a' stroke-width='1' stroke-linejoin='round'/%3E%3C/svg%3E"),
|
|
2154
|
-
url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='7' viewBox='0 0 11 7'%3E%3Cpath d='M-0.5 8 L5.5 0 L11.5 8 Z' fill='rgba(30,30,36,0.85)' stroke='%234a4a5a' stroke-width='1' stroke-linejoin='round'/%3E%3C/svg%3E");
|
|
2155
|
-
background-position: top center, bottom center;
|
|
2156
|
-
background-repeat: no-repeat;
|
|
2157
|
-
opacity: 1;
|
|
2158
|
-
transition: opacity 0.15s ease-out;
|
|
2159
|
-
}
|
|
2160
|
-
|
|
2161
|
-
.split-screen-line:hover::after,
|
|
2162
|
-
.split-screen-line:active::after,
|
|
2163
|
-
.split-screen-line.active::after {
|
|
2164
|
-
opacity: 1;
|
|
2165
|
-
background-image:
|
|
2166
|
-
url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='7' viewBox='0 0 11 7'%3E%3Cpath d='M-0.5 -1 L5.5 7 L11.5 -1 Z' fill='%2300aaff' stroke='%2300aaff' stroke-width='1' stroke-linejoin='round'/%3E%3C/svg%3E"),
|
|
2167
|
-
url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='7' viewBox='0 0 11 7'%3E%3Cpath d='M-0.5 8 L5.5 0 L11.5 8 Z' fill='%2300aaff' stroke='%2300aaff' stroke-width='1' stroke-linejoin='round'/%3E%3C/svg%3E");
|
|
2168
|
-
}
|
|
2169
|
-
|
|
2170
2138
|
/* Grid Mode styles for List component */
|
|
2171
2139
|
.list-scroll-wrapper:has(> .list-container.grid-mode) {
|
|
2172
2140
|
width: 100% !important;
|
|
@@ -127,22 +127,45 @@ class ValueNumber extends Value {
|
|
|
127
127
|
|
|
128
128
|
addDragHandler() {
|
|
129
129
|
|
|
130
|
+
const threshold = 2;
|
|
131
|
+
|
|
132
|
+
let isPressed = false;
|
|
130
133
|
let isDragging = false;
|
|
131
|
-
let startY, startValue;
|
|
134
|
+
let startX, startY, startValue;
|
|
132
135
|
|
|
133
136
|
this.input.style.touchAction = 'none';
|
|
134
137
|
|
|
135
138
|
this.input.addEventListener( 'pointerdown', ( e ) => {
|
|
136
139
|
|
|
137
|
-
|
|
140
|
+
isPressed = true;
|
|
141
|
+
startX = e.clientX;
|
|
138
142
|
startY = e.clientY;
|
|
139
143
|
startValue = parseFloat( this.input.value );
|
|
140
|
-
document.body.style.cursor = 'ns-resize';
|
|
141
144
|
|
|
142
145
|
} );
|
|
143
146
|
|
|
144
147
|
document.addEventListener( 'pointermove', ( e ) => {
|
|
145
148
|
|
|
149
|
+
if ( isPressed ) {
|
|
150
|
+
|
|
151
|
+
// start dragging only after a vertical movement, a horizontal one selects text
|
|
152
|
+
|
|
153
|
+
if ( Math.abs( e.clientY - startY ) > threshold ) {
|
|
154
|
+
|
|
155
|
+
isPressed = false;
|
|
156
|
+
isDragging = true;
|
|
157
|
+
startY = e.clientY;
|
|
158
|
+
this.input.blur();
|
|
159
|
+
document.body.style.cursor = 'ns-resize';
|
|
160
|
+
|
|
161
|
+
} else if ( Math.abs( e.clientX - startX ) > threshold ) {
|
|
162
|
+
|
|
163
|
+
isPressed = false;
|
|
164
|
+
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
}
|
|
168
|
+
|
|
146
169
|
if ( isDragging ) {
|
|
147
170
|
|
|
148
171
|
const deltaY = startY - e.clientY;
|
|
@@ -176,6 +199,8 @@ class ValueNumber extends Value {
|
|
|
176
199
|
|
|
177
200
|
document.addEventListener( 'pointerup', () => {
|
|
178
201
|
|
|
202
|
+
isPressed = false;
|
|
203
|
+
|
|
179
204
|
if ( isDragging ) {
|
|
180
205
|
|
|
181
206
|
isDragging = false;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
fflate - fast JavaScript compression/decompression
|
|
3
3
|
<https://101arrowz.github.io/fflate>
|
|
4
4
|
Licensed under MIT. https://github.com/101arrowz/fflate/blob/master/LICENSE
|
|
5
|
-
version 0.8.
|
|
5
|
+
version 0.8.3
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
// DEFLATE is a complex format; to read this code, you should probably check the RFC first:
|
|
@@ -199,7 +199,7 @@ var ec = [
|
|
|
199
199
|
'invalid distance',
|
|
200
200
|
'stream finished',
|
|
201
201
|
'no stream handler',
|
|
202
|
-
,
|
|
202
|
+
, // determined by compression function
|
|
203
203
|
'no callback',
|
|
204
204
|
'invalid UTF-8 data',
|
|
205
205
|
'extra field too long',
|
|
@@ -916,12 +916,12 @@ var cbify = function (dat, opts, fns, init, id, cb) {
|
|
|
916
916
|
var astrm = function (strm) {
|
|
917
917
|
strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };
|
|
918
918
|
return function (ev) {
|
|
919
|
-
if (ev.data
|
|
919
|
+
if (ev.data[0]) {
|
|
920
920
|
strm.push(ev.data[0], ev.data[1]);
|
|
921
921
|
postMessage([ev.data[0].length]);
|
|
922
922
|
}
|
|
923
923
|
else
|
|
924
|
-
strm.flush();
|
|
924
|
+
strm.flush(ev.data[1]);
|
|
925
925
|
};
|
|
926
926
|
};
|
|
927
927
|
// async stream attach
|
|
@@ -951,17 +951,19 @@ var astrmify = function (fns, strm, opts, init, id, flush, ext) {
|
|
|
951
951
|
if (t)
|
|
952
952
|
strm.ondata(err(4, 0, 1), null, !!f);
|
|
953
953
|
strm.queuedSize += d.length;
|
|
954
|
-
|
|
954
|
+
// can fail for cross-realm Uint8Array, but ok - only a small performance penalty
|
|
955
|
+
w.postMessage([d, t = f], d.buffer instanceof ArrayBuffer ? [d.buffer] : []);
|
|
955
956
|
};
|
|
956
957
|
strm.terminate = function () { w.terminate(); };
|
|
957
958
|
if (flush) {
|
|
958
|
-
strm.flush = function () { w.postMessage([]); };
|
|
959
|
+
strm.flush = function (sync) { w.postMessage([0, sync]); };
|
|
959
960
|
}
|
|
960
961
|
};
|
|
961
962
|
// read 2 bytes
|
|
962
963
|
var b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };
|
|
963
964
|
// read 4 bytes
|
|
964
965
|
var b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };
|
|
966
|
+
// read 8 bytes
|
|
965
967
|
var b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };
|
|
966
968
|
// write bytes
|
|
967
969
|
var wbytes = function (d, b, v) {
|
|
@@ -1082,18 +1084,37 @@ var Deflate = /*#__PURE__*/ (function () {
|
|
|
1082
1084
|
this.p(this.b, final || false);
|
|
1083
1085
|
this.s.w = this.s.i, this.s.i -= 2;
|
|
1084
1086
|
}
|
|
1087
|
+
if (final) {
|
|
1088
|
+
// cleanup unneeded buffers/state to reduce memory usage
|
|
1089
|
+
this.s = this.o = {};
|
|
1090
|
+
this.b = et;
|
|
1091
|
+
}
|
|
1085
1092
|
};
|
|
1086
1093
|
/**
|
|
1087
1094
|
* Flushes buffered uncompressed data. Useful to immediately retrieve the
|
|
1088
1095
|
* deflated output for small inputs.
|
|
1096
|
+
* @param sync Whether to flush to a byte boundary. A sync flush takes 4-5
|
|
1097
|
+
* extra bytes, but guarantees all pushed data is immediately
|
|
1098
|
+
* decompressible. A separate DEFLATE stream may be concatenated
|
|
1099
|
+
* with the current output after a sync flush.
|
|
1089
1100
|
*/
|
|
1090
|
-
Deflate.prototype.flush = function () {
|
|
1101
|
+
Deflate.prototype.flush = function (sync) {
|
|
1091
1102
|
if (!this.ondata)
|
|
1092
1103
|
err(5);
|
|
1093
1104
|
if (this.s.l)
|
|
1094
1105
|
err(4);
|
|
1095
1106
|
this.p(this.b, false);
|
|
1096
1107
|
this.s.w = this.s.i, this.s.i -= 2;
|
|
1108
|
+
// could technically skip writing the type-0 block for (this.s.r & 7) == 0,
|
|
1109
|
+
// but the deterministic trailer (00 00 FF FF) is useful in some situations
|
|
1110
|
+
if (sync) {
|
|
1111
|
+
var c = new u8(6);
|
|
1112
|
+
c[0] = this.s.r >> 3;
|
|
1113
|
+
// write empty, non-final type-0 block
|
|
1114
|
+
var ep = wfblk(c, this.s.r, et);
|
|
1115
|
+
this.s.r = 0;
|
|
1116
|
+
this.ondata(c.subarray(0, ep >> 3), false);
|
|
1117
|
+
}
|
|
1097
1118
|
};
|
|
1098
1119
|
return Deflate;
|
|
1099
1120
|
}());
|
|
@@ -1204,12 +1225,6 @@ export function inflate(data, opts, cb) {
|
|
|
1204
1225
|
bInflt
|
|
1205
1226
|
], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);
|
|
1206
1227
|
}
|
|
1207
|
-
/**
|
|
1208
|
-
* Expands DEFLATE data with no wrapper
|
|
1209
|
-
* @param data The data to decompress
|
|
1210
|
-
* @param opts The decompression options
|
|
1211
|
-
* @returns The decompressed version of the data
|
|
1212
|
-
*/
|
|
1213
1228
|
export function inflateSync(data, opts) {
|
|
1214
1229
|
return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);
|
|
1215
1230
|
}
|
|
@@ -1245,9 +1260,12 @@ var Gzip = /*#__PURE__*/ (function () {
|
|
|
1245
1260
|
/**
|
|
1246
1261
|
* Flushes buffered uncompressed data. Useful to immediately retrieve the
|
|
1247
1262
|
* GZIPped output for small inputs.
|
|
1263
|
+
* @param sync Whether to flush to a byte boundary. A sync flush takes 4-5
|
|
1264
|
+
* extra bytes, but guarantees all pushed data is immediately
|
|
1265
|
+
* decompressible.
|
|
1248
1266
|
*/
|
|
1249
|
-
Gzip.prototype.flush = function () {
|
|
1250
|
-
Deflate.prototype.flush.call(this);
|
|
1267
|
+
Gzip.prototype.flush = function (sync) {
|
|
1268
|
+
Deflate.prototype.flush.call(this, sync);
|
|
1251
1269
|
};
|
|
1252
1270
|
return Gzip;
|
|
1253
1271
|
}());
|
|
@@ -1325,14 +1343,17 @@ var Gunzip = /*#__PURE__*/ (function () {
|
|
|
1325
1343
|
}
|
|
1326
1344
|
// necessary to prevent TS from using the closure value
|
|
1327
1345
|
// This allows for workerization to function correctly
|
|
1328
|
-
Inflate.prototype.c.call(this,
|
|
1346
|
+
Inflate.prototype.c.call(this, 0);
|
|
1329
1347
|
// process concatenated GZIP
|
|
1330
|
-
if (this.s.f && !this.s.l
|
|
1348
|
+
if (this.s.f && !this.s.l) {
|
|
1331
1349
|
this.v = shft(this.s.p) + 9;
|
|
1332
1350
|
this.s = { i: 0 };
|
|
1333
1351
|
this.o = new u8(0);
|
|
1334
1352
|
this.push(new u8(0), final);
|
|
1335
1353
|
}
|
|
1354
|
+
else if (final) {
|
|
1355
|
+
Inflate.prototype.c.call(this, final);
|
|
1356
|
+
}
|
|
1336
1357
|
};
|
|
1337
1358
|
return Gunzip;
|
|
1338
1359
|
}());
|
|
@@ -1367,12 +1388,6 @@ export function gunzip(data, opts, cb) {
|
|
|
1367
1388
|
function () { return [gunzipSync]; }
|
|
1368
1389
|
], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);
|
|
1369
1390
|
}
|
|
1370
|
-
/**
|
|
1371
|
-
* Expands GZIP data
|
|
1372
|
-
* @param data The data to decompress
|
|
1373
|
-
* @param opts The decompression options
|
|
1374
|
-
* @returns The decompressed version of the data
|
|
1375
|
-
*/
|
|
1376
1391
|
export function gunzipSync(data, opts) {
|
|
1377
1392
|
var st = gzs(data);
|
|
1378
1393
|
if (st + 8 > data.length)
|
|
@@ -1408,9 +1423,12 @@ var Zlib = /*#__PURE__*/ (function () {
|
|
|
1408
1423
|
/**
|
|
1409
1424
|
* Flushes buffered uncompressed data. Useful to immediately retrieve the
|
|
1410
1425
|
* zlibbed output for small inputs.
|
|
1426
|
+
* @param sync Whether to flush to a byte boundary. A sync flush takes 4-5
|
|
1427
|
+
* extra bytes, but guarantees all pushed data is immediately
|
|
1428
|
+
* decompressible.
|
|
1411
1429
|
*/
|
|
1412
|
-
Zlib.prototype.flush = function () {
|
|
1413
|
-
Deflate.prototype.flush.call(this);
|
|
1430
|
+
Zlib.prototype.flush = function (sync) {
|
|
1431
|
+
Deflate.prototype.flush.call(this, sync);
|
|
1414
1432
|
};
|
|
1415
1433
|
return Zlib;
|
|
1416
1434
|
}());
|
|
@@ -1517,12 +1535,6 @@ export function unzlib(data, opts, cb) {
|
|
|
1517
1535
|
function () { return [unzlibSync]; }
|
|
1518
1536
|
], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);
|
|
1519
1537
|
}
|
|
1520
|
-
/**
|
|
1521
|
-
* Expands Zlib data
|
|
1522
|
-
* @param data The data to decompress
|
|
1523
|
-
* @param opts The decompression options
|
|
1524
|
-
* @returns The decompressed version of the data
|
|
1525
|
-
*/
|
|
1526
1538
|
export function unzlibSync(data, opts) {
|
|
1527
1539
|
return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);
|
|
1528
1540
|
}
|
|
@@ -1643,7 +1655,7 @@ var fltn = function (d, p, t, o) {
|
|
|
1643
1655
|
var val = d[k], n = p + k, op = o;
|
|
1644
1656
|
if (Array.isArray(val))
|
|
1645
1657
|
op = mrg(o, val[1]), val = val[0];
|
|
1646
|
-
if (val
|
|
1658
|
+
if (ArrayBuffer.isView(val))
|
|
1647
1659
|
t[n] = [val, op];
|
|
1648
1660
|
else {
|
|
1649
1661
|
t[n += '/'] = [new u8(0), op];
|
|
@@ -1828,15 +1840,30 @@ var dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };
|
|
|
1828
1840
|
var slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };
|
|
1829
1841
|
// read zip header
|
|
1830
1842
|
var zh = function (d, b, z) {
|
|
1831
|
-
var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl
|
|
1832
|
-
var _a =
|
|
1833
|
-
return [b2(d, b + 10), sc, su, fn, es +
|
|
1843
|
+
var fnl = b2(d, b + 28), efl = b2(d, b + 30), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl;
|
|
1844
|
+
var _a = z64hs(d, es, efl, z, b4(d, b + 20), b4(d, b + 24), b4(d, b + 42)), sc = _a[0], su = _a[1], off = _a[2];
|
|
1845
|
+
return [b2(d, b + 10), sc, su, fn, es + efl + b2(d, b + 32), off];
|
|
1834
1846
|
};
|
|
1835
|
-
// read zip64
|
|
1836
|
-
var
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1847
|
+
// read zip64 header sizes
|
|
1848
|
+
var z64hs = function (d, b, l, z, sc, su, off) {
|
|
1849
|
+
var nsc = sc == 4294967295, nsu = su == 4294967295, noff = off == 4294967295, e = b + l;
|
|
1850
|
+
var nf = nsc + nsu + noff;
|
|
1851
|
+
if (z && nf) {
|
|
1852
|
+
for (; b + 4 < e; b += 4 + b2(d, b + 2)) {
|
|
1853
|
+
if (b2(d, b) == 1) {
|
|
1854
|
+
return [
|
|
1855
|
+
nsc ? b8(d, b + 4 + 8 * nsu) : sc,
|
|
1856
|
+
nsu ? b8(d, b + 4) : su,
|
|
1857
|
+
noff ? b8(d, b + 4 + 8 * (nsu + nsc)) : off,
|
|
1858
|
+
1
|
|
1859
|
+
];
|
|
1860
|
+
}
|
|
1861
|
+
}
|
|
1862
|
+
// z == 2 for unknown whether or not zip64
|
|
1863
|
+
if (z < 2)
|
|
1864
|
+
err(13);
|
|
1865
|
+
}
|
|
1866
|
+
return [sc, su, off, 0];
|
|
1840
1867
|
};
|
|
1841
1868
|
// extra field length
|
|
1842
1869
|
var exfl = function (ex) {
|
|
@@ -1938,6 +1965,8 @@ var ZipPassThrough = /*#__PURE__*/ (function () {
|
|
|
1938
1965
|
this.size += chunk.length;
|
|
1939
1966
|
if (final)
|
|
1940
1967
|
this.crc = this.c.d();
|
|
1968
|
+
// we shouldn't really do this cast, but properly handling ArrayBufferLike
|
|
1969
|
+
// makes the API unergonomic with Buffer
|
|
1941
1970
|
this.process(chunk, final || false);
|
|
1942
1971
|
};
|
|
1943
1972
|
return ZipPassThrough;
|
|
@@ -2317,8 +2346,9 @@ export function zipSync(data, opts) {
|
|
|
2317
2346
|
var UnzipPassThrough = /*#__PURE__*/ (function () {
|
|
2318
2347
|
function UnzipPassThrough() {
|
|
2319
2348
|
}
|
|
2320
|
-
UnzipPassThrough.prototype.push = function (
|
|
2321
|
-
|
|
2349
|
+
UnzipPassThrough.prototype.push = function (chunk, final) {
|
|
2350
|
+
// same as ZipPassThrough: cast to retain Buffer ergonomics
|
|
2351
|
+
this.ondata(null, chunk, final);
|
|
2322
2352
|
};
|
|
2323
2353
|
UnzipPassThrough.compression = 0;
|
|
2324
2354
|
return UnzipPassThrough;
|
|
@@ -2338,9 +2368,9 @@ var UnzipInflate = /*#__PURE__*/ (function () {
|
|
|
2338
2368
|
_this.ondata(null, dat, final);
|
|
2339
2369
|
});
|
|
2340
2370
|
}
|
|
2341
|
-
UnzipInflate.prototype.push = function (
|
|
2371
|
+
UnzipInflate.prototype.push = function (chunk, final) {
|
|
2342
2372
|
try {
|
|
2343
|
-
this.i.push(
|
|
2373
|
+
this.i.push(chunk, final);
|
|
2344
2374
|
}
|
|
2345
2375
|
catch (e) {
|
|
2346
2376
|
this.ondata(e, null, final);
|
|
@@ -2371,10 +2401,10 @@ var AsyncUnzipInflate = /*#__PURE__*/ (function () {
|
|
|
2371
2401
|
this.terminate = this.i.terminate;
|
|
2372
2402
|
}
|
|
2373
2403
|
}
|
|
2374
|
-
AsyncUnzipInflate.prototype.push = function (
|
|
2404
|
+
AsyncUnzipInflate.prototype.push = function (chunk, final) {
|
|
2375
2405
|
if (this.i.terminate)
|
|
2376
|
-
|
|
2377
|
-
this.i.push(
|
|
2406
|
+
chunk = slc(chunk, 0);
|
|
2407
|
+
this.i.push(chunk, final);
|
|
2378
2408
|
};
|
|
2379
2409
|
AsyncUnzipInflate.compression = 8;
|
|
2380
2410
|
return AsyncUnzipInflate;
|
|
@@ -2431,7 +2461,6 @@ var Unzip = /*#__PURE__*/ (function () {
|
|
|
2431
2461
|
}
|
|
2432
2462
|
var l = buf.length, oc = this.c, add = oc && this.d;
|
|
2433
2463
|
var _loop_2 = function () {
|
|
2434
|
-
var _a;
|
|
2435
2464
|
var sig = b4(buf, i);
|
|
2436
2465
|
if (sig == 0x4034B50) {
|
|
2437
2466
|
f = 1, is = i;
|
|
@@ -2442,13 +2471,11 @@ var Unzip = /*#__PURE__*/ (function () {
|
|
|
2442
2471
|
var chks_3 = [];
|
|
2443
2472
|
this_1.k.unshift(chks_3);
|
|
2444
2473
|
f = 2;
|
|
2445
|
-
var
|
|
2474
|
+
var lsc = b4(buf, i + 18), lsu = b4(buf, i + 22);
|
|
2446
2475
|
var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
else if (dd)
|
|
2451
|
-
sc_1 = -1;
|
|
2476
|
+
var _a = z64hs(buf, i, es, 2, lsc, lsu, 0), sc_1 = _a[0], su_1 = _a[1], z64 = _a[3];
|
|
2477
|
+
if (dd)
|
|
2478
|
+
sc_1 = -1 - z64;
|
|
2452
2479
|
i += es;
|
|
2453
2480
|
this_1.c = sc_1;
|
|
2454
2481
|
var d_1;
|
|
@@ -2561,7 +2588,7 @@ export function unzip(data, opts, cb) {
|
|
|
2561
2588
|
if (lft) {
|
|
2562
2589
|
var c = lft;
|
|
2563
2590
|
var o = b4(data, e + 16);
|
|
2564
|
-
var z =
|
|
2591
|
+
var z = b4(data, e - 20) == 0x7064B50;
|
|
2565
2592
|
if (z) {
|
|
2566
2593
|
var ze = b4(data, e - 12);
|
|
2567
2594
|
z = b4(data, ze) == 0x6064B50;
|
|
@@ -2641,7 +2668,7 @@ export function unzipSync(data, opts) {
|
|
|
2641
2668
|
if (!c)
|
|
2642
2669
|
return {};
|
|
2643
2670
|
var o = b4(data, e + 16);
|
|
2644
|
-
var z =
|
|
2671
|
+
var z = b4(data, e - 20) == 0x7064B50;
|
|
2645
2672
|
if (z) {
|
|
2646
2673
|
var ze = b4(data, e - 12);
|
|
2647
2674
|
z = b4(data, ze) == 0x6064B50;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# MikkTSpace
|
|
2
|
+
|
|
3
|
+
JavaScript port of [Morten S. Mikkelsen's MikkTSpace reference](https://github.com/mmikk/MikkTSpace/blob/3e895b49d05ea07e4c2133156cfa94369e19e409/mikktspace.c), specialized for the triangle input and tangent output used by `BufferGeometryUtils.computeMikkTSpaceTangents()`.
|
|
4
|
+
|
|
5
|
+
```js
|
|
6
|
+
import * as MikkTSpace from 'three/addons/libs/mikktspace.module.js';
|
|
7
|
+
|
|
8
|
+
const tangents = MikkTSpace.generateTangents( positions, normals, uvs );
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
The inputs are matching, non-indexed `Float32Array` attributes: three position and normal components, and two UV components per vertex. Input components should be finite and normals should be unit length. As in the reference, extreme magnitudes can overflow intermediate float32 arithmetic. The result contains four components per vertex: tangent XYZ and handedness W. `computeMikkTSpaceTangents()` handles indexed, normalized, and interleaved geometry attributes and negates W by default for conventions such as glTF.
|
|
12
|
+
|
|
13
|
+
There is no initialization or WebAssembly dependency. The `isReady` and `ready` exports remain available for existing callers; `isReady` is always `true` and `ready` is an already resolved promise. `dispose()` is retained as a no-op because there are no persistent buffers to release.
|
|
14
|
+
|
|
15
|
+
The port retains attribute welding, connected orientation groups, angular subgroups, corner-angle weighting, float32 arithmetic, and degenerate-triangle fallback. Typed hash tables replace sorting and linear lookups, and projected derivatives and corner angles are reused within each group. It supports the reference's default 180-degree threshold and basic tangent output. Quads, custom thresholds, and bitangent/magnitude output are not exposed by this API.
|
|
16
|
+
|
|
17
|
+
## Compatibility
|
|
18
|
+
|
|
19
|
+
This port intentionally corrects an edge-pairing defect in `BuildNeighborsFast()` in the upstream C revision linked above. Its two secondary sorting loops omit their final buckets. This can leave identical edges separated or use a different face order when pairing nonmanifold edges. The JavaScript implementation pairs all edges in face order.
|
|
20
|
+
|
|
21
|
+
This correction is part of the JavaScript port and is absent from the linked upstream C revision. For comparison, a local copy of that C revision was patched to add both missing final bucket sorts. The JavaScript output matches that locally patched copy on the tested inputs.
|
|
22
|
+
|
|
23
|
+
The bundled WASM implementation also contains this defect. Consequently, the new implementation can produce different tangents on affected meshes. For `ShaderBall.glb`, the preview mesh is identical; the calibration mesh changes at 129 corners, with a maximum angular difference of approximately 0.353 degrees and no handedness changes.
|
|
24
|
+
|
|
25
|
+
Completely collapsed triangles with no usable neighbor return the default `(1, 0, 0, -1)` already provided by the unmodified C reference. The previous WASM implementation could throw on these inputs. Empty input returns an empty array.
|
|
26
|
+
|
|
27
|
+
The original license is preserved in `mikktspace.module.js`, which is explicitly marked as an altered JavaScript port.
|