@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
|
@@ -5,6 +5,7 @@ export { default as WebGPURenderer } from './renderers/webgpu/WebGPURenderer.Nod
|
|
|
5
5
|
export { default as WebGPUBackend } from './renderers/webgpu/WebGPUBackend.js';
|
|
6
6
|
export { default as WebGLBackend } from './renderers/webgl-fallback/WebGLBackend.js';
|
|
7
7
|
export { default as Lighting } from './renderers/common/Lighting.js';
|
|
8
|
+
export { default as StandardDrawingPipeline } from './renderers/common/StandardDrawingPipeline.js';
|
|
8
9
|
export { default as BundleGroup } from './renderers/common/BundleGroup.js';
|
|
9
10
|
export { default as QuadMesh } from './renderers/common/QuadMesh.js';
|
|
10
11
|
export { default as PMREMGenerator } from './renderers/common/extras/PMREMGenerator.js';
|
|
@@ -29,5 +30,5 @@ export { default as CanvasTarget } from './renderers/common/CanvasTarget.js';
|
|
|
29
30
|
export { default as BlendMode } from './renderers/common/BlendMode.js';
|
|
30
31
|
export { ClippingGroup } from './objects/ClippingGroup.js';
|
|
31
32
|
export * from './nodes/Nodes.js';
|
|
32
|
-
import * as TSL from './
|
|
33
|
+
import * as TSL from './Three.TSL.js';
|
|
33
34
|
export { TSL };
|
package/src/Three.WebGPU.js
CHANGED
|
@@ -8,6 +8,7 @@ export { default as Renderer } from './renderers/common/Renderer.js';
|
|
|
8
8
|
export { default as Backend } from './renderers/common/Backend.js';
|
|
9
9
|
export { default as WebGLCapabilities } from './renderers/webgl-fallback/utils/WebGLCapabilities.js';
|
|
10
10
|
export { default as Lighting } from './renderers/common/Lighting.js';
|
|
11
|
+
export { default as StandardDrawingPipeline } from './renderers/common/StandardDrawingPipeline.js';
|
|
11
12
|
export { default as BundleGroup } from './renderers/common/BundleGroup.js';
|
|
12
13
|
export { default as QuadMesh } from './renderers/common/QuadMesh.js';
|
|
13
14
|
export { default as PMREMGenerator } from './renderers/common/extras/PMREMGenerator.js';
|
|
@@ -39,5 +40,5 @@ export { default as StandardNodeLibrary } from './renderers/webgpu/nodes/Standar
|
|
|
39
40
|
export { default as WGSLNodeBuilder } from './renderers/webgpu/nodes/WGSLNodeBuilder.js';
|
|
40
41
|
export { ClippingGroup } from './objects/ClippingGroup.js';
|
|
41
42
|
export * from './nodes/Nodes.js';
|
|
42
|
-
import * as TSL from './
|
|
43
|
+
import * as TSL from './Three.TSL.js';
|
|
43
44
|
export { TSL };
|
|
@@ -326,10 +326,8 @@ function makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targe
|
|
|
326
326
|
|
|
327
327
|
// Interpolate to the reference value
|
|
328
328
|
const interpolant = referenceTrack.createInterpolant();
|
|
329
|
-
const startIndex = referenceOffset;
|
|
330
|
-
const endIndex = referenceValueSize - referenceOffset;
|
|
331
329
|
interpolant.evaluate( referenceTime );
|
|
332
|
-
referenceValue = interpolant.resultBuffer.slice(
|
|
330
|
+
referenceValue = interpolant.resultBuffer.slice();
|
|
333
331
|
|
|
334
332
|
}
|
|
335
333
|
|
|
@@ -305,6 +305,13 @@ class KeyframeTrack {
|
|
|
305
305
|
|
|
306
306
|
}
|
|
307
307
|
|
|
308
|
+
if ( AnimationUtils.hasTangents( this.settings ) ) {
|
|
309
|
+
|
|
310
|
+
shiftTangentTimes( this.settings.inTangents, timeOffset );
|
|
311
|
+
shiftTangentTimes( this.settings.outTangents, timeOffset );
|
|
312
|
+
|
|
313
|
+
}
|
|
314
|
+
|
|
308
315
|
}
|
|
309
316
|
|
|
310
317
|
return this;
|
|
@@ -626,6 +633,18 @@ class KeyframeTrack {
|
|
|
626
633
|
|
|
627
634
|
}
|
|
628
635
|
|
|
636
|
+
function shiftTangentTimes( tangents, timeOffset ) {
|
|
637
|
+
|
|
638
|
+
// tangents are [ time, value ] pairs, so only every second entry is a time
|
|
639
|
+
|
|
640
|
+
for ( let i = 0, n = tangents.length; i !== n; i += 2 ) {
|
|
641
|
+
|
|
642
|
+
tangents[ i ] += timeOffset;
|
|
643
|
+
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
}
|
|
647
|
+
|
|
629
648
|
function scaleTangentTimes( tangents, timeScale ) {
|
|
630
649
|
|
|
631
650
|
// tangents are [ time, value ] pairs, so only every second entry is a time
|
|
@@ -47,6 +47,18 @@ class ArrayCamera extends PerspectiveCamera {
|
|
|
47
47
|
*/
|
|
48
48
|
this.cameras = array;
|
|
49
49
|
|
|
50
|
+
/**
|
|
51
|
+
* Whether 3D objects are frustum culled per sub camera or not.
|
|
52
|
+
*
|
|
53
|
+
* Since this requires an additional frustum test per sub camera, it should only be
|
|
54
|
+
* enabled when the frustums of the sub cameras barely overlap. The property has
|
|
55
|
+
* no effect with multiview rendering.
|
|
56
|
+
*
|
|
57
|
+
* @type {boolean}
|
|
58
|
+
* @default false
|
|
59
|
+
*/
|
|
60
|
+
this.perCameraFrustumCulled = false;
|
|
61
|
+
|
|
50
62
|
}
|
|
51
63
|
|
|
52
64
|
}
|
|
@@ -199,9 +199,9 @@ class CubeCamera extends Object3D {
|
|
|
199
199
|
|
|
200
200
|
renderer.xr.enabled = false;
|
|
201
201
|
|
|
202
|
-
const
|
|
202
|
+
const mipmapsAutoUpdate = renderTarget.texture.mipmapsAutoUpdate;
|
|
203
203
|
|
|
204
|
-
renderTarget.texture.
|
|
204
|
+
renderTarget.texture.mipmapsAutoUpdate = false;
|
|
205
205
|
|
|
206
206
|
// https://github.com/mrdoob/three.js/issues/31413#issuecomment-3095966812
|
|
207
207
|
|
|
@@ -240,7 +240,7 @@ class CubeCamera extends Object3D {
|
|
|
240
240
|
// mipmaps are generated during the last call of render()
|
|
241
241
|
// at this point, all sides of the cube render target are defined
|
|
242
242
|
|
|
243
|
-
renderTarget.texture.
|
|
243
|
+
renderTarget.texture.mipmapsAutoUpdate = mipmapsAutoUpdate;
|
|
244
244
|
|
|
245
245
|
renderer.setRenderTarget( renderTarget, 5, activeMipmapLevel );
|
|
246
246
|
if ( reversedDepthBuffer && renderer.autoClear === false ) renderer.clearDepth();
|
package/src/constants.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const REVISION = '
|
|
1
|
+
export const REVISION = '187';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Represents mouse buttons and interaction types in context of controls.
|
|
@@ -539,14 +539,6 @@ export const EquirectangularReflectionMapping = 303;
|
|
|
539
539
|
*/
|
|
540
540
|
export const EquirectangularRefractionMapping = 304;
|
|
541
541
|
|
|
542
|
-
/**
|
|
543
|
-
* Reflection mapping for PMREM textures.
|
|
544
|
-
*
|
|
545
|
-
* @type {number}
|
|
546
|
-
* @constant
|
|
547
|
-
*/
|
|
548
|
-
export const CubeUVReflectionMapping = 306;
|
|
549
|
-
|
|
550
542
|
/**
|
|
551
543
|
* The texture will simply repeat to infinity.
|
|
552
544
|
*
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Vector3 } from '../math/Vector3.js';
|
|
2
2
|
import { Vector2 } from '../math/Vector2.js';
|
|
3
|
-
import { denormalize, normalize } from '../math/MathUtils.js';
|
|
3
|
+
import { denormalize, normalize, getNormalizationScale } from '../math/MathUtils.js';
|
|
4
4
|
import { StaticDrawUsage, FloatType } from '../constants.js';
|
|
5
5
|
import { fromHalfFloat, toHalfFloat } from '../extras/DataUtils.js';
|
|
6
6
|
import { EventDispatcher } from './EventDispatcher.js';
|
|
@@ -136,6 +136,14 @@ class BufferAttribute extends EventDispatcher {
|
|
|
136
136
|
*/
|
|
137
137
|
this.version = 0;
|
|
138
138
|
|
|
139
|
+
/**
|
|
140
|
+
* Cached normalization factor, see {@link MathUtils#getNormalizationScale}.
|
|
141
|
+
*
|
|
142
|
+
* @private
|
|
143
|
+
* @type {number|undefined}
|
|
144
|
+
*/
|
|
145
|
+
this._normalizationScale = array !== undefined ? getNormalizationScale( array ) : undefined;
|
|
146
|
+
|
|
139
147
|
}
|
|
140
148
|
|
|
141
149
|
/**
|
|
@@ -210,6 +218,8 @@ class BufferAttribute extends EventDispatcher {
|
|
|
210
218
|
this.usage = source.usage;
|
|
211
219
|
this.gpuType = source.gpuType;
|
|
212
220
|
|
|
221
|
+
this._normalizationScale = source._normalizationScale;
|
|
222
|
+
|
|
213
223
|
return this;
|
|
214
224
|
|
|
215
225
|
}
|
|
@@ -386,7 +396,7 @@ class BufferAttribute extends EventDispatcher {
|
|
|
386
396
|
|
|
387
397
|
let value = this.array[ index * this.itemSize + component ];
|
|
388
398
|
|
|
389
|
-
if ( this.normalized ) value =
|
|
399
|
+
if ( this.normalized ) value = this._denormalize( value );
|
|
390
400
|
|
|
391
401
|
return value;
|
|
392
402
|
|
|
@@ -402,7 +412,7 @@ class BufferAttribute extends EventDispatcher {
|
|
|
402
412
|
*/
|
|
403
413
|
setComponent( index, component, value ) {
|
|
404
414
|
|
|
405
|
-
if ( this.normalized ) value =
|
|
415
|
+
if ( this.normalized ) value = this._normalize( value );
|
|
406
416
|
|
|
407
417
|
this.array[ index * this.itemSize + component ] = value;
|
|
408
418
|
|
|
@@ -420,7 +430,7 @@ class BufferAttribute extends EventDispatcher {
|
|
|
420
430
|
|
|
421
431
|
let x = this.array[ index * this.itemSize ];
|
|
422
432
|
|
|
423
|
-
if ( this.normalized ) x =
|
|
433
|
+
if ( this.normalized ) x = this._denormalize( x );
|
|
424
434
|
|
|
425
435
|
return x;
|
|
426
436
|
|
|
@@ -435,7 +445,7 @@ class BufferAttribute extends EventDispatcher {
|
|
|
435
445
|
*/
|
|
436
446
|
setX( index, x ) {
|
|
437
447
|
|
|
438
|
-
if ( this.normalized ) x =
|
|
448
|
+
if ( this.normalized ) x = this._normalize( x );
|
|
439
449
|
|
|
440
450
|
this.array[ index * this.itemSize ] = x;
|
|
441
451
|
|
|
@@ -453,7 +463,7 @@ class BufferAttribute extends EventDispatcher {
|
|
|
453
463
|
|
|
454
464
|
let y = this.array[ index * this.itemSize + 1 ];
|
|
455
465
|
|
|
456
|
-
if ( this.normalized ) y =
|
|
466
|
+
if ( this.normalized ) y = this._denormalize( y );
|
|
457
467
|
|
|
458
468
|
return y;
|
|
459
469
|
|
|
@@ -468,7 +478,7 @@ class BufferAttribute extends EventDispatcher {
|
|
|
468
478
|
*/
|
|
469
479
|
setY( index, y ) {
|
|
470
480
|
|
|
471
|
-
if ( this.normalized ) y =
|
|
481
|
+
if ( this.normalized ) y = this._normalize( y );
|
|
472
482
|
|
|
473
483
|
this.array[ index * this.itemSize + 1 ] = y;
|
|
474
484
|
|
|
@@ -486,7 +496,7 @@ class BufferAttribute extends EventDispatcher {
|
|
|
486
496
|
|
|
487
497
|
let z = this.array[ index * this.itemSize + 2 ];
|
|
488
498
|
|
|
489
|
-
if ( this.normalized ) z =
|
|
499
|
+
if ( this.normalized ) z = this._denormalize( z );
|
|
490
500
|
|
|
491
501
|
return z;
|
|
492
502
|
|
|
@@ -501,7 +511,7 @@ class BufferAttribute extends EventDispatcher {
|
|
|
501
511
|
*/
|
|
502
512
|
setZ( index, z ) {
|
|
503
513
|
|
|
504
|
-
if ( this.normalized ) z =
|
|
514
|
+
if ( this.normalized ) z = this._normalize( z );
|
|
505
515
|
|
|
506
516
|
this.array[ index * this.itemSize + 2 ] = z;
|
|
507
517
|
|
|
@@ -519,7 +529,7 @@ class BufferAttribute extends EventDispatcher {
|
|
|
519
529
|
|
|
520
530
|
let w = this.array[ index * this.itemSize + 3 ];
|
|
521
531
|
|
|
522
|
-
if ( this.normalized ) w =
|
|
532
|
+
if ( this.normalized ) w = this._denormalize( w );
|
|
523
533
|
|
|
524
534
|
return w;
|
|
525
535
|
|
|
@@ -534,7 +544,7 @@ class BufferAttribute extends EventDispatcher {
|
|
|
534
544
|
*/
|
|
535
545
|
setW( index, w ) {
|
|
536
546
|
|
|
537
|
-
if ( this.normalized ) w =
|
|
547
|
+
if ( this.normalized ) w = this._normalize( w );
|
|
538
548
|
|
|
539
549
|
this.array[ index * this.itemSize + 3 ] = w;
|
|
540
550
|
|
|
@@ -556,8 +566,8 @@ class BufferAttribute extends EventDispatcher {
|
|
|
556
566
|
|
|
557
567
|
if ( this.normalized ) {
|
|
558
568
|
|
|
559
|
-
x =
|
|
560
|
-
y =
|
|
569
|
+
x = this._normalize( x );
|
|
570
|
+
y = this._normalize( y );
|
|
561
571
|
|
|
562
572
|
}
|
|
563
573
|
|
|
@@ -583,9 +593,9 @@ class BufferAttribute extends EventDispatcher {
|
|
|
583
593
|
|
|
584
594
|
if ( this.normalized ) {
|
|
585
595
|
|
|
586
|
-
x =
|
|
587
|
-
y =
|
|
588
|
-
z =
|
|
596
|
+
x = this._normalize( x );
|
|
597
|
+
y = this._normalize( y );
|
|
598
|
+
z = this._normalize( z );
|
|
589
599
|
|
|
590
600
|
}
|
|
591
601
|
|
|
@@ -613,10 +623,10 @@ class BufferAttribute extends EventDispatcher {
|
|
|
613
623
|
|
|
614
624
|
if ( this.normalized ) {
|
|
615
625
|
|
|
616
|
-
x =
|
|
617
|
-
y =
|
|
618
|
-
z =
|
|
619
|
-
w =
|
|
626
|
+
x = this._normalize( x );
|
|
627
|
+
y = this._normalize( y );
|
|
628
|
+
z = this._normalize( z );
|
|
629
|
+
w = this._normalize( w );
|
|
620
630
|
|
|
621
631
|
}
|
|
622
632
|
|
|
@@ -679,7 +689,7 @@ class BufferAttribute extends EventDispatcher {
|
|
|
679
689
|
}
|
|
680
690
|
|
|
681
691
|
/**
|
|
682
|
-
*
|
|
692
|
+
* Frees the GPU-related resources allocated by this instance. Available only in {@link WebGPURenderer}.
|
|
683
693
|
*/
|
|
684
694
|
dispose() {
|
|
685
695
|
|
|
@@ -687,6 +697,32 @@ class BufferAttribute extends EventDispatcher {
|
|
|
687
697
|
|
|
688
698
|
}
|
|
689
699
|
|
|
700
|
+
/**
|
|
701
|
+
* Denormalizes the value using cached normalization factor.
|
|
702
|
+
*
|
|
703
|
+
* @private
|
|
704
|
+
*/
|
|
705
|
+
_denormalize( value ) {
|
|
706
|
+
|
|
707
|
+
const scale = this._normalizationScale;
|
|
708
|
+
|
|
709
|
+
return scale !== undefined ? Math.max( value / scale, - 1.0 ) : denormalize( value, this.array );
|
|
710
|
+
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
/**
|
|
714
|
+
* Normalizes the value using cached normalization factor.
|
|
715
|
+
*
|
|
716
|
+
* @private
|
|
717
|
+
*/
|
|
718
|
+
_normalize( value ) {
|
|
719
|
+
|
|
720
|
+
const scale = this._normalizationScale;
|
|
721
|
+
|
|
722
|
+
return scale !== undefined ? Math.round( value * scale ) : normalize( value, this.array );
|
|
723
|
+
|
|
724
|
+
}
|
|
725
|
+
|
|
690
726
|
}
|
|
691
727
|
|
|
692
728
|
/**
|
|
@@ -866,6 +866,7 @@ class BufferGeometry extends EventDispatcher {
|
|
|
866
866
|
}
|
|
867
867
|
|
|
868
868
|
const tan1 = [], tan2 = [];
|
|
869
|
+
const used = new Uint8Array( positionAttribute.count );
|
|
869
870
|
|
|
870
871
|
for ( let i = 0; i < positionAttribute.count; i ++ ) {
|
|
871
872
|
|
|
@@ -887,6 +888,8 @@ class BufferGeometry extends EventDispatcher {
|
|
|
887
888
|
|
|
888
889
|
function handleTriangle( a, b, c ) {
|
|
889
890
|
|
|
891
|
+
used[ a ] = used[ b ] = used[ c ] = 1;
|
|
892
|
+
|
|
890
893
|
vA.fromBufferAttribute( positionAttribute, a );
|
|
891
894
|
vB.fromBufferAttribute( positionAttribute, b );
|
|
892
895
|
vC.fromBufferAttribute( positionAttribute, c );
|
|
@@ -975,20 +978,9 @@ class BufferGeometry extends EventDispatcher {
|
|
|
975
978
|
|
|
976
979
|
}
|
|
977
980
|
|
|
978
|
-
for ( let i = 0, il =
|
|
979
|
-
|
|
980
|
-
const group = groups[ i ];
|
|
981
|
+
for ( let i = 0, il = positionAttribute.count; i < il; ++ i ) {
|
|
981
982
|
|
|
982
|
-
|
|
983
|
-
const count = group.count;
|
|
984
|
-
|
|
985
|
-
for ( let j = start, jl = start + count; j < jl; j += 3 ) {
|
|
986
|
-
|
|
987
|
-
handleVertex( index.getX( j + 0 ) );
|
|
988
|
-
handleVertex( index.getX( j + 1 ) );
|
|
989
|
-
handleVertex( index.getX( j + 2 ) );
|
|
990
|
-
|
|
991
|
-
}
|
|
983
|
+
if ( used[ i ] ) handleVertex( i );
|
|
992
984
|
|
|
993
985
|
}
|
|
994
986
|
|
package/src/core/Clock.js
CHANGED
|
@@ -210,19 +210,15 @@ class InterleavedBuffer {
|
|
|
210
210
|
|
|
211
211
|
}
|
|
212
212
|
|
|
213
|
-
|
|
213
|
+
const key = getArrayKey( this.array );
|
|
214
214
|
|
|
215
|
-
|
|
215
|
+
if ( data.arrayBuffers[ key ] === undefined ) {
|
|
216
216
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
if ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {
|
|
220
|
-
|
|
221
|
-
data.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;
|
|
217
|
+
data.arrayBuffers[ key ] = this.array.slice( 0 ).buffer;
|
|
222
218
|
|
|
223
219
|
}
|
|
224
220
|
|
|
225
|
-
const array = new this.array.constructor( data.arrayBuffers[
|
|
221
|
+
const array = new this.array.constructor( data.arrayBuffers[ key ] );
|
|
226
222
|
|
|
227
223
|
const ib = new this.constructor( array, this.stride );
|
|
228
224
|
ib.setUsage( this.usage );
|
|
@@ -261,17 +257,11 @@ class InterleavedBuffer {
|
|
|
261
257
|
|
|
262
258
|
}
|
|
263
259
|
|
|
264
|
-
|
|
260
|
+
const key = getArrayKey( this.array );
|
|
265
261
|
|
|
266
|
-
if (
|
|
262
|
+
if ( data.arrayBuffers[ key ] === undefined ) {
|
|
267
263
|
|
|
268
|
-
this.array.buffer
|
|
269
|
-
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
if ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {
|
|
273
|
-
|
|
274
|
-
data.arrayBuffers[ this.array.buffer._uuid ] = Array.from( new Uint32Array( this.array.buffer ) );
|
|
264
|
+
data.arrayBuffers[ key ] = Array.from( new Uint32Array( this.array.slice( 0 ).buffer ) );
|
|
275
265
|
|
|
276
266
|
}
|
|
277
267
|
|
|
@@ -279,7 +269,7 @@ class InterleavedBuffer {
|
|
|
279
269
|
|
|
280
270
|
const json = {
|
|
281
271
|
uuid: this.uuid,
|
|
282
|
-
buffer:
|
|
272
|
+
buffer: key,
|
|
283
273
|
type: this.array.constructor.name,
|
|
284
274
|
stride: this.stride
|
|
285
275
|
};
|
|
@@ -292,4 +282,24 @@ class InterleavedBuffer {
|
|
|
292
282
|
|
|
293
283
|
}
|
|
294
284
|
|
|
285
|
+
// Returns the key under which the data of the given typed array is shared when cloning or serializing.
|
|
286
|
+
// Interleaved buffers can be views at different offsets into the same array buffer (e.g. the interleaved
|
|
287
|
+
// accessors of a glTF buffer view), so only views over the same range share their data.
|
|
288
|
+
|
|
289
|
+
function getArrayKey( array ) {
|
|
290
|
+
|
|
291
|
+
// generate UUID for array buffer if necessary
|
|
292
|
+
|
|
293
|
+
if ( array.buffer._uuid === undefined ) {
|
|
294
|
+
|
|
295
|
+
array.buffer._uuid = generateUUID();
|
|
296
|
+
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
if ( array.byteOffset === 0 && array.byteLength === array.buffer.byteLength ) return array.buffer._uuid;
|
|
300
|
+
|
|
301
|
+
return array.buffer._uuid + ':' + array.byteOffset + ':' + array.byteLength;
|
|
302
|
+
|
|
303
|
+
}
|
|
304
|
+
|
|
295
305
|
export { InterleavedBuffer };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Vector3 } from '../math/Vector3.js';
|
|
2
2
|
import { BufferAttribute } from './BufferAttribute.js';
|
|
3
|
-
import { denormalize, normalize } from '../math/MathUtils.js';
|
|
3
|
+
import { denormalize, normalize, getNormalizationScale } from '../math/MathUtils.js';
|
|
4
4
|
import { log } from '../utils.js';
|
|
5
5
|
|
|
6
6
|
const _vector = /*@__PURE__*/ new Vector3();
|
|
@@ -66,6 +66,14 @@ class InterleavedBufferAttribute {
|
|
|
66
66
|
*/
|
|
67
67
|
this.normalized = normalized;
|
|
68
68
|
|
|
69
|
+
/**
|
|
70
|
+
* Cached normalization factor, see {@link MathUtils#getNormalizationScale}.
|
|
71
|
+
*
|
|
72
|
+
* @private
|
|
73
|
+
* @type {number|undefined}
|
|
74
|
+
*/
|
|
75
|
+
this._normalizationScale = interleavedBuffer !== undefined ? getNormalizationScale( interleavedBuffer.array ) : undefined;
|
|
76
|
+
|
|
69
77
|
}
|
|
70
78
|
|
|
71
79
|
/**
|
|
@@ -185,7 +193,7 @@ class InterleavedBufferAttribute {
|
|
|
185
193
|
|
|
186
194
|
let value = this.array[ index * this.data.stride + this.offset + component ];
|
|
187
195
|
|
|
188
|
-
if ( this.normalized ) value =
|
|
196
|
+
if ( this.normalized ) value = this._denormalize( value );
|
|
189
197
|
|
|
190
198
|
return value;
|
|
191
199
|
|
|
@@ -201,7 +209,7 @@ class InterleavedBufferAttribute {
|
|
|
201
209
|
*/
|
|
202
210
|
setComponent( index, component, value ) {
|
|
203
211
|
|
|
204
|
-
if ( this.normalized ) value =
|
|
212
|
+
if ( this.normalized ) value = this._normalize( value );
|
|
205
213
|
|
|
206
214
|
this.data.array[ index * this.data.stride + this.offset + component ] = value;
|
|
207
215
|
|
|
@@ -218,7 +226,7 @@ class InterleavedBufferAttribute {
|
|
|
218
226
|
*/
|
|
219
227
|
setX( index, x ) {
|
|
220
228
|
|
|
221
|
-
if ( this.normalized ) x =
|
|
229
|
+
if ( this.normalized ) x = this._normalize( x );
|
|
222
230
|
|
|
223
231
|
this.data.array[ index * this.data.stride + this.offset ] = x;
|
|
224
232
|
|
|
@@ -235,7 +243,7 @@ class InterleavedBufferAttribute {
|
|
|
235
243
|
*/
|
|
236
244
|
setY( index, y ) {
|
|
237
245
|
|
|
238
|
-
if ( this.normalized ) y =
|
|
246
|
+
if ( this.normalized ) y = this._normalize( y );
|
|
239
247
|
|
|
240
248
|
this.data.array[ index * this.data.stride + this.offset + 1 ] = y;
|
|
241
249
|
|
|
@@ -252,7 +260,7 @@ class InterleavedBufferAttribute {
|
|
|
252
260
|
*/
|
|
253
261
|
setZ( index, z ) {
|
|
254
262
|
|
|
255
|
-
if ( this.normalized ) z =
|
|
263
|
+
if ( this.normalized ) z = this._normalize( z );
|
|
256
264
|
|
|
257
265
|
this.data.array[ index * this.data.stride + this.offset + 2 ] = z;
|
|
258
266
|
|
|
@@ -269,7 +277,7 @@ class InterleavedBufferAttribute {
|
|
|
269
277
|
*/
|
|
270
278
|
setW( index, w ) {
|
|
271
279
|
|
|
272
|
-
if ( this.normalized ) w =
|
|
280
|
+
if ( this.normalized ) w = this._normalize( w );
|
|
273
281
|
|
|
274
282
|
this.data.array[ index * this.data.stride + this.offset + 3 ] = w;
|
|
275
283
|
|
|
@@ -287,7 +295,7 @@ class InterleavedBufferAttribute {
|
|
|
287
295
|
|
|
288
296
|
let x = this.data.array[ index * this.data.stride + this.offset ];
|
|
289
297
|
|
|
290
|
-
if ( this.normalized ) x =
|
|
298
|
+
if ( this.normalized ) x = this._denormalize( x );
|
|
291
299
|
|
|
292
300
|
return x;
|
|
293
301
|
|
|
@@ -303,7 +311,7 @@ class InterleavedBufferAttribute {
|
|
|
303
311
|
|
|
304
312
|
let y = this.data.array[ index * this.data.stride + this.offset + 1 ];
|
|
305
313
|
|
|
306
|
-
if ( this.normalized ) y =
|
|
314
|
+
if ( this.normalized ) y = this._denormalize( y );
|
|
307
315
|
|
|
308
316
|
return y;
|
|
309
317
|
|
|
@@ -319,7 +327,7 @@ class InterleavedBufferAttribute {
|
|
|
319
327
|
|
|
320
328
|
let z = this.data.array[ index * this.data.stride + this.offset + 2 ];
|
|
321
329
|
|
|
322
|
-
if ( this.normalized ) z =
|
|
330
|
+
if ( this.normalized ) z = this._denormalize( z );
|
|
323
331
|
|
|
324
332
|
return z;
|
|
325
333
|
|
|
@@ -335,7 +343,7 @@ class InterleavedBufferAttribute {
|
|
|
335
343
|
|
|
336
344
|
let w = this.data.array[ index * this.data.stride + this.offset + 3 ];
|
|
337
345
|
|
|
338
|
-
if ( this.normalized ) w =
|
|
346
|
+
if ( this.normalized ) w = this._denormalize( w );
|
|
339
347
|
|
|
340
348
|
return w;
|
|
341
349
|
|
|
@@ -355,8 +363,8 @@ class InterleavedBufferAttribute {
|
|
|
355
363
|
|
|
356
364
|
if ( this.normalized ) {
|
|
357
365
|
|
|
358
|
-
x =
|
|
359
|
-
y =
|
|
366
|
+
x = this._normalize( x );
|
|
367
|
+
y = this._normalize( y );
|
|
360
368
|
|
|
361
369
|
}
|
|
362
370
|
|
|
@@ -382,9 +390,9 @@ class InterleavedBufferAttribute {
|
|
|
382
390
|
|
|
383
391
|
if ( this.normalized ) {
|
|
384
392
|
|
|
385
|
-
x =
|
|
386
|
-
y =
|
|
387
|
-
z =
|
|
393
|
+
x = this._normalize( x );
|
|
394
|
+
y = this._normalize( y );
|
|
395
|
+
z = this._normalize( z );
|
|
388
396
|
|
|
389
397
|
}
|
|
390
398
|
|
|
@@ -412,10 +420,10 @@ class InterleavedBufferAttribute {
|
|
|
412
420
|
|
|
413
421
|
if ( this.normalized ) {
|
|
414
422
|
|
|
415
|
-
x =
|
|
416
|
-
y =
|
|
417
|
-
z =
|
|
418
|
-
w =
|
|
423
|
+
x = this._normalize( x );
|
|
424
|
+
y = this._normalize( y );
|
|
425
|
+
z = this._normalize( z );
|
|
426
|
+
w = this._normalize( w );
|
|
419
427
|
|
|
420
428
|
}
|
|
421
429
|
|
|
@@ -543,6 +551,32 @@ class InterleavedBufferAttribute {
|
|
|
543
551
|
|
|
544
552
|
}
|
|
545
553
|
|
|
554
|
+
/**
|
|
555
|
+
* Denormalizes the value using cached normalization factor.
|
|
556
|
+
*
|
|
557
|
+
* @private
|
|
558
|
+
*/
|
|
559
|
+
_denormalize( value ) {
|
|
560
|
+
|
|
561
|
+
const scale = this._normalizationScale;
|
|
562
|
+
|
|
563
|
+
return scale !== undefined ? Math.max( value / scale, - 1.0 ) : denormalize( value, this.data.array );
|
|
564
|
+
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
/**
|
|
568
|
+
* Normalizes the value using cached normalization factor.
|
|
569
|
+
*
|
|
570
|
+
* @private
|
|
571
|
+
*/
|
|
572
|
+
_normalize( value ) {
|
|
573
|
+
|
|
574
|
+
const scale = this._normalizationScale;
|
|
575
|
+
|
|
576
|
+
return scale !== undefined ? Math.round( value * scale ) : normalize( value, this.data.array );
|
|
577
|
+
|
|
578
|
+
}
|
|
579
|
+
|
|
546
580
|
}
|
|
547
581
|
|
|
548
582
|
|