@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
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { SRGBColorSpace, LinearSRGBColorSpace, SRGBTransfer, LinearTransfer, NoColorSpace } from '../constants.js';
|
|
2
2
|
import { Matrix3 } from './Matrix3.js';
|
|
3
|
-
import { warnOnce } from '../utils.js';
|
|
4
3
|
|
|
5
4
|
const LINEAR_REC709_TO_XYZ = /*@__PURE__*/ new Matrix3().set(
|
|
6
5
|
0.4123908, 0.3575843, 0.1804808,
|
|
@@ -126,8 +125,8 @@ function createColorManagement() {
|
|
|
126
125
|
_getMatrix: function ( targetMatrix, sourceColorSpace, targetColorSpace ) {
|
|
127
126
|
|
|
128
127
|
return targetMatrix
|
|
129
|
-
.copy( this.spaces[
|
|
130
|
-
.multiply( this.spaces[
|
|
128
|
+
.copy( this.spaces[ targetColorSpace ].fromXYZ )
|
|
129
|
+
.multiply( this.spaces[ sourceColorSpace ].toXYZ );
|
|
131
130
|
|
|
132
131
|
},
|
|
133
132
|
|
|
@@ -143,24 +142,6 @@ function createColorManagement() {
|
|
|
143
142
|
|
|
144
143
|
},
|
|
145
144
|
|
|
146
|
-
// Deprecated
|
|
147
|
-
|
|
148
|
-
fromWorkingColorSpace: function ( color, targetColorSpace ) {
|
|
149
|
-
|
|
150
|
-
warnOnce( 'ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace().' ); // @deprecated, r177
|
|
151
|
-
|
|
152
|
-
return ColorManagement.workingToColorSpace( color, targetColorSpace );
|
|
153
|
-
|
|
154
|
-
},
|
|
155
|
-
|
|
156
|
-
toWorkingColorSpace: function ( color, sourceColorSpace ) {
|
|
157
|
-
|
|
158
|
-
warnOnce( 'ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking().' ); // @deprecated, r177
|
|
159
|
-
|
|
160
|
-
return ColorManagement.colorSpaceToWorking( color, sourceColorSpace );
|
|
161
|
-
|
|
162
|
-
},
|
|
163
|
-
|
|
164
145
|
};
|
|
165
146
|
|
|
166
147
|
/******************************************************************************
|
package/src/math/FrustumArray.js
CHANGED
|
@@ -75,6 +75,18 @@ class FrustumArray {
|
|
|
75
75
|
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
+
/**
|
|
79
|
+
* Returns the cached frustum for the sub-camera at the given index.
|
|
80
|
+
*
|
|
81
|
+
* @param {number} index - The sub-camera index.
|
|
82
|
+
* @return {Frustum|undefined} The cached frustum.
|
|
83
|
+
*/
|
|
84
|
+
getFrustum( index ) {
|
|
85
|
+
|
|
86
|
+
return this._frustums[ index ];
|
|
87
|
+
|
|
88
|
+
}
|
|
89
|
+
|
|
78
90
|
/**
|
|
79
91
|
* Returns `true` if the 3D object's bounding sphere is intersecting any cached frustum.
|
|
80
92
|
*
|
package/src/math/Interpolant.js
CHANGED
|
@@ -307,7 +307,7 @@ class Interpolant {
|
|
|
307
307
|
*
|
|
308
308
|
* @param {number} i1 - An index into the sample value buffer.
|
|
309
309
|
* @param {number} t0 - The previous interpolation factor.
|
|
310
|
-
* @param {number}
|
|
310
|
+
* @param {number} t1 - The next interpolation factor.
|
|
311
311
|
*/
|
|
312
312
|
intervalChanged_( /* i1, t0, t1 */ ) {
|
|
313
313
|
|
package/src/math/Line3.js
CHANGED
|
@@ -121,7 +121,7 @@ class Line3 {
|
|
|
121
121
|
*
|
|
122
122
|
* @param {number} t - A value between `[0,1]` to represent a position along the line segment.
|
|
123
123
|
* @param {Vector3} target - The target vector that is used to store the method's result.
|
|
124
|
-
* @return {Vector3} The
|
|
124
|
+
* @return {Vector3} The point along the line segment.
|
|
125
125
|
*/
|
|
126
126
|
at( t, target ) {
|
|
127
127
|
|
|
@@ -216,9 +216,7 @@ class Line3 {
|
|
|
216
216
|
c1.copy( p1 );
|
|
217
217
|
c2.copy( p2 );
|
|
218
218
|
|
|
219
|
-
c1.
|
|
220
|
-
|
|
221
|
-
return c1.dot( c1 );
|
|
219
|
+
return c1.distanceToSquared( c2 );
|
|
222
220
|
|
|
223
221
|
}
|
|
224
222
|
|
package/src/math/MathUtils.js
CHANGED
|
@@ -379,98 +379,84 @@ function setQuaternionFromProperEuler( q, a, b, c, order ) {
|
|
|
379
379
|
}
|
|
380
380
|
|
|
381
381
|
/**
|
|
382
|
-
*
|
|
382
|
+
* Returns the factor used by {@link normalize} and {@link denormalize} for the given typed array,
|
|
383
|
+
* or `undefined` if the values are not scaled (float arrays) or the array type is not supported.
|
|
383
384
|
*
|
|
384
|
-
* @param {number} value - The value to denormalize.
|
|
385
385
|
* @param {TypedArray} array - The typed array that defines the data type of the value.
|
|
386
|
-
* @return {number} The
|
|
386
|
+
* @return {number|undefined} The normalization factor.
|
|
387
387
|
*/
|
|
388
|
-
function
|
|
388
|
+
function getNormalizationScale( array ) {
|
|
389
389
|
|
|
390
390
|
switch ( array.constructor ) {
|
|
391
391
|
|
|
392
|
-
case Float32Array:
|
|
393
|
-
|
|
394
|
-
return value;
|
|
395
|
-
|
|
396
392
|
case Uint32Array:
|
|
397
393
|
|
|
398
|
-
return
|
|
394
|
+
return 4294967295.0;
|
|
399
395
|
|
|
400
396
|
case Uint16Array:
|
|
401
397
|
|
|
402
|
-
return
|
|
398
|
+
return 65535.0;
|
|
403
399
|
|
|
404
400
|
case Uint8Array:
|
|
405
401
|
case Uint8ClampedArray:
|
|
406
402
|
|
|
407
|
-
return
|
|
403
|
+
return 255.0;
|
|
408
404
|
|
|
409
405
|
case Int32Array:
|
|
410
406
|
|
|
411
|
-
return
|
|
407
|
+
return 2147483647.0;
|
|
412
408
|
|
|
413
409
|
case Int16Array:
|
|
414
410
|
|
|
415
|
-
return
|
|
411
|
+
return 32767.0;
|
|
416
412
|
|
|
417
413
|
case Int8Array:
|
|
418
414
|
|
|
419
|
-
return
|
|
415
|
+
return 127.0;
|
|
420
416
|
|
|
421
417
|
default:
|
|
422
418
|
|
|
423
|
-
|
|
419
|
+
return undefined;
|
|
424
420
|
|
|
425
421
|
}
|
|
426
422
|
|
|
427
423
|
}
|
|
428
424
|
|
|
429
425
|
/**
|
|
430
|
-
*
|
|
426
|
+
* Denormalizes the given value according to the given typed array.
|
|
431
427
|
*
|
|
432
|
-
* @param {number} value - The
|
|
428
|
+
* @param {number} value - The value to denormalize.
|
|
433
429
|
* @param {TypedArray} array - The typed array that defines the data type of the value.
|
|
434
|
-
* @return {number} The
|
|
430
|
+
* @return {number} The denormalized (float) value in the range `[0,1]` or `[-1,1]`
|
|
435
431
|
*/
|
|
436
|
-
function
|
|
437
|
-
|
|
438
|
-
switch ( array.constructor ) {
|
|
439
|
-
|
|
440
|
-
case Float32Array:
|
|
441
|
-
|
|
442
|
-
return value;
|
|
443
|
-
|
|
444
|
-
case Uint32Array:
|
|
445
|
-
|
|
446
|
-
return Math.round( value * 4294967295.0 );
|
|
447
|
-
|
|
448
|
-
case Uint16Array:
|
|
432
|
+
function denormalize( value, array ) {
|
|
449
433
|
|
|
450
|
-
|
|
434
|
+
if ( array.constructor === Float32Array ) return value;
|
|
451
435
|
|
|
452
|
-
|
|
453
|
-
case Uint8ClampedArray:
|
|
436
|
+
const scale = getNormalizationScale( array );
|
|
454
437
|
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
case Int32Array:
|
|
438
|
+
if ( scale === undefined ) throw new Error( 'THREE.MathUtils: Invalid component type.' );
|
|
458
439
|
|
|
459
|
-
|
|
440
|
+
return Math.max( value / scale, - 1.0 );
|
|
460
441
|
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
return Math.round( value * 32767.0 );
|
|
442
|
+
}
|
|
464
443
|
|
|
465
|
-
|
|
444
|
+
/**
|
|
445
|
+
* Normalizes the given value according to the given typed array.
|
|
446
|
+
*
|
|
447
|
+
* @param {number} value - The float value in the range `[0,1]` or `[-1,1]` to normalize.
|
|
448
|
+
* @param {TypedArray} array - The typed array that defines the data type of the value.
|
|
449
|
+
* @return {number} The normalized value.
|
|
450
|
+
*/
|
|
451
|
+
function normalize( value, array ) {
|
|
466
452
|
|
|
467
|
-
|
|
453
|
+
if ( array.constructor === Float32Array ) return value;
|
|
468
454
|
|
|
469
|
-
|
|
455
|
+
const scale = getNormalizationScale( array );
|
|
470
456
|
|
|
471
|
-
|
|
457
|
+
if ( scale === undefined ) throw new Error( 'THREE.MathUtils: Invalid component type.' );
|
|
472
458
|
|
|
473
|
-
|
|
459
|
+
return Math.round( value * scale );
|
|
474
460
|
|
|
475
461
|
}
|
|
476
462
|
|
|
@@ -749,5 +735,6 @@ export {
|
|
|
749
735
|
setQuaternionFromProperEuler,
|
|
750
736
|
normalize,
|
|
751
737
|
denormalize,
|
|
738
|
+
getNormalizationScale,
|
|
752
739
|
MathUtils
|
|
753
740
|
};
|
package/src/math/Matrix2.js
CHANGED
package/src/math/Matrix3.js
CHANGED
package/src/math/Matrix4.js
CHANGED
package/src/math/Triangle.js
CHANGED
|
@@ -473,7 +473,8 @@ class Triangle {
|
|
|
473
473
|
}
|
|
474
474
|
|
|
475
475
|
const vc = d1 * d4 - d3 * d2;
|
|
476
|
-
|
|
476
|
+
|
|
477
|
+
if ( vc <= 0 && d1 >= 0 && d3 <= 0 && d1 - d3 > 0 ) { // modification of the algorithm: d1 - d3 is the squared length of AB, so skip this region if a and b coincide
|
|
477
478
|
|
|
478
479
|
v = d1 / ( d1 - d3 );
|
|
479
480
|
// edge region of AB; barycentric coords (1-v, v, 0)
|
package/src/math/Vector2.js
CHANGED
package/src/math/Vector3.js
CHANGED
package/src/math/Vector4.js
CHANGED
package/src/nodes/Nodes.js
CHANGED
|
@@ -54,6 +54,7 @@ export { default as MaterialReferenceNode } from './accessors/MaterialReferenceN
|
|
|
54
54
|
export { default as ModelNode } from './accessors/ModelNode.js';
|
|
55
55
|
export { default as Object3DNode } from './accessors/Object3DNode.js';
|
|
56
56
|
export { default as PointUVNode } from './accessors/PointUVNode.js';
|
|
57
|
+
export { default as ReferenceAttributeNode } from './accessors/ReferenceAttributeNode.js';
|
|
57
58
|
export { default as ReferenceBaseNode } from './accessors/ReferenceBaseNode.js';
|
|
58
59
|
export { default as ReferenceElementNode } from './accessors/ReferenceElementNode.js';
|
|
59
60
|
export { default as ReferenceNode } from './accessors/ReferenceNode.js';
|
package/src/nodes/TSL.js
CHANGED
|
@@ -82,6 +82,7 @@ export * from './accessors/Normal.js';
|
|
|
82
82
|
export * from './accessors/Object3DNode.js';
|
|
83
83
|
export * from './accessors/PointUVNode.js';
|
|
84
84
|
export * from './accessors/Position.js';
|
|
85
|
+
export * from './accessors/ReferenceAttributeNode.js';
|
|
85
86
|
export * from './accessors/ReferenceNode.js';
|
|
86
87
|
export * from './accessors/ReflectVector.js';
|
|
87
88
|
export * from './accessors/Skinning.js';
|
|
@@ -162,6 +163,7 @@ export * from './shapes/Shapes.js';
|
|
|
162
163
|
export * from './materialx/MaterialXNodes.js';
|
|
163
164
|
|
|
164
165
|
// functions
|
|
166
|
+
export { default as BRDF_EON, EON_DirectionalAlbedo } from './functions/BSDF/BRDF_EON.js';
|
|
165
167
|
export { default as BRDF_GGX } from './functions/BSDF/BRDF_GGX.js';
|
|
166
168
|
export { default as BRDF_Lambert } from './functions/BSDF/BRDF_Lambert.js';
|
|
167
169
|
export { default as BRDF_Sheen } from './functions/BSDF/BRDF_Sheen.js';
|
|
@@ -29,7 +29,7 @@ export const attributeArray = ( count, type = 'float' ) => {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
const buffer = new StorageBufferAttribute( count, itemSize, typedArray );
|
|
32
|
-
const node = storage( buffer, type, count );
|
|
32
|
+
const node = storage( buffer, type, buffer.count );
|
|
33
33
|
|
|
34
34
|
return node;
|
|
35
35
|
|
|
@@ -7,11 +7,9 @@ import { textureSize } from './TextureSizeNode.js';
|
|
|
7
7
|
import { tangentLocal } from './Tangent.js';
|
|
8
8
|
import { instanceIndex, drawIndex } from '../core/IndexNode.js';
|
|
9
9
|
import { varyingProperty } from '../core/PropertyNode.js';
|
|
10
|
-
import { OnAfterObjectUpdate } from '../utils/EventNode.js';
|
|
10
|
+
import { OnObjectUpdate, OnAfterObjectUpdate } from '../utils/EventNode.js';
|
|
11
11
|
import { DataTexture } from '../../textures/DataTexture.js';
|
|
12
12
|
|
|
13
|
-
const _previousBatchingMatrices = /*@__PURE__*/ new WeakMap();
|
|
14
|
-
|
|
15
13
|
/**
|
|
16
14
|
* TSL function that retrieves the batching color for a given instance ID from a colors texture.
|
|
17
15
|
*
|
|
@@ -70,33 +68,28 @@ function createBatchingMatrixNode( matricesTexture, id ) {
|
|
|
70
68
|
}
|
|
71
69
|
|
|
72
70
|
/**
|
|
73
|
-
*
|
|
74
|
-
*
|
|
71
|
+
* Returns the batching matrices texture of the previous frame for motion vectors.
|
|
72
|
+
* It is created on first use and again after the batched mesh released it.
|
|
75
73
|
*
|
|
76
74
|
* @param {BatchedMesh} batchMesh - The batched mesh.
|
|
77
|
-
* @
|
|
78
|
-
* @returns {Node<mat4>} The previous frame batching matrix node.
|
|
75
|
+
* @returns {DataTexture} The previous frame matrices texture.
|
|
79
76
|
*/
|
|
80
|
-
function
|
|
81
|
-
|
|
82
|
-
let data = _previousBatchingMatrices.get( batchMesh );
|
|
77
|
+
function getPreviousMatricesTexture( batchMesh ) {
|
|
83
78
|
|
|
84
|
-
|
|
79
|
+
let previousMatricesTexture = batchMesh._previousMatricesTexture;
|
|
85
80
|
|
|
86
|
-
|
|
81
|
+
if ( previousMatricesTexture === null ) {
|
|
87
82
|
|
|
88
|
-
const
|
|
83
|
+
const { image, format, type, version } = batchMesh._matricesTexture;
|
|
89
84
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
node: createBatchingMatrixNode( previousMatricesTexture, id )
|
|
93
|
-
};
|
|
85
|
+
previousMatricesTexture = new DataTexture( image.data.slice(), image.width, image.height, format, type );
|
|
86
|
+
previousMatricesTexture.version = version;
|
|
94
87
|
|
|
95
|
-
|
|
88
|
+
batchMesh._previousMatricesTexture = previousMatricesTexture;
|
|
96
89
|
|
|
97
90
|
}
|
|
98
91
|
|
|
99
|
-
return
|
|
92
|
+
return previousMatricesTexture;
|
|
100
93
|
|
|
101
94
|
}
|
|
102
95
|
|
|
@@ -151,14 +144,19 @@ export const batch = /*@__PURE__*/ Fn( ( [ batchMesh ], builder ) => {
|
|
|
151
144
|
|
|
152
145
|
OnAfterObjectUpdate( ( { object } ) => {
|
|
153
146
|
|
|
154
|
-
const
|
|
147
|
+
const previousMatricesTexture = getPreviousMatricesTexture( object );
|
|
148
|
+
const matricesTexture = object._matricesTexture;
|
|
149
|
+
|
|
150
|
+
if ( previousMatricesTexture.version !== matricesTexture.version ) {
|
|
151
|
+
|
|
152
|
+
previousMatricesTexture.image.data.set( matricesTexture.image.data );
|
|
153
|
+
previousMatricesTexture.version = matricesTexture.version;
|
|
155
154
|
|
|
156
|
-
|
|
157
|
-
previousBatchData.previousMatricesTexture.needsUpdate = true;
|
|
155
|
+
}
|
|
158
156
|
|
|
159
157
|
} );
|
|
160
158
|
|
|
161
|
-
const previousBatchingMatrixNode =
|
|
159
|
+
const previousBatchingMatrixNode = createBatchingMatrixNode( getPreviousMatricesTexture( batchMesh ), indirectId );
|
|
162
160
|
positionPrevious.assign( previousBatchingMatrixNode.mul( positionPrevious ).xyz );
|
|
163
161
|
|
|
164
162
|
}
|
|
@@ -175,6 +173,14 @@ export const batch = /*@__PURE__*/ Fn( ( [ batchMesh ], builder ) => {
|
|
|
175
173
|
|
|
176
174
|
}
|
|
177
175
|
|
|
176
|
+
const drawFormat = builder.renderer.backend.isWebGPUBackend === true ? 'merged' : 'multiDraw';
|
|
177
|
+
|
|
178
|
+
OnObjectUpdate( ( { object, camera, material } ) => {
|
|
179
|
+
|
|
180
|
+
object._updateDrawParameters( camera, object.geometry, material, drawFormat );
|
|
181
|
+
|
|
182
|
+
} );
|
|
183
|
+
|
|
178
184
|
}, 'void' );
|
|
179
185
|
|
|
180
186
|
|
|
@@ -80,7 +80,7 @@ class BufferAttributeNode extends InputNode {
|
|
|
80
80
|
/**
|
|
81
81
|
* Constructs a new buffer attribute node.
|
|
82
82
|
*
|
|
83
|
-
* @param {BufferAttribute|InterleavedBuffer|TypedArray} value - The attribute data.
|
|
83
|
+
* @param {BufferAttribute|InterleavedBufferAttribute|InterleavedBuffer|TypedArray} value - The attribute data.
|
|
84
84
|
* @param {?string} [bufferType=null] - The buffer type (e.g. `'vec3'`).
|
|
85
85
|
* @param {number} [bufferStride=0] - The buffer stride.
|
|
86
86
|
* @param {number} [bufferOffset=0] - The buffer offset.
|
|
@@ -161,6 +161,13 @@ class BufferAttributeNode extends InputNode {
|
|
|
161
161
|
this.usage = value.usage;
|
|
162
162
|
this.instanced = value.isInstancedBufferAttribute;
|
|
163
163
|
|
|
164
|
+
} else if ( value && value.isInterleavedBufferAttribute === true ) {
|
|
165
|
+
|
|
166
|
+
// e.g. a column of a buffer attribute with an item size larger than four
|
|
167
|
+
|
|
168
|
+
this.attribute = value;
|
|
169
|
+
this.usage = value.data.usage;
|
|
170
|
+
|
|
164
171
|
}
|
|
165
172
|
|
|
166
173
|
}
|
|
@@ -355,6 +362,19 @@ class BufferAttributeNode extends InputNode {
|
|
|
355
362
|
|
|
356
363
|
}
|
|
357
364
|
|
|
365
|
+
/**
|
|
366
|
+
* Returns the buffer attribute to bind when rendering the given object. Nodes that
|
|
367
|
+
* bind attributes of the rendered object, like {@link ReferenceAttributeNode}, overwrite it.
|
|
368
|
+
*
|
|
369
|
+
* @param {Object3D} object - The rendered object.
|
|
370
|
+
* @return {?(BufferAttribute|InterleavedBufferAttribute)} The buffer attribute.
|
|
371
|
+
*/
|
|
372
|
+
getObjectAttribute( /*object*/ ) {
|
|
373
|
+
|
|
374
|
+
return this.attribute;
|
|
375
|
+
|
|
376
|
+
}
|
|
377
|
+
|
|
358
378
|
}
|
|
359
379
|
|
|
360
380
|
export default BufferAttributeNode;
|