super-three 0.181.0 → 0.185.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +3 -4
- package/build/three.cjs +21332 -19201
- package/build/three.core.js +20908 -19853
- package/build/three.core.min.js +2 -2
- package/build/three.module.js +1947 -862
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +37 -16
- package/build/three.tsl.min.js +2 -2
- package/build/three.webgpu.js +33628 -25197
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +33394 -25000
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/jsm/Addons.js +14 -3
- package/examples/jsm/animation/CCDIKSolver.js +7 -3
- package/examples/jsm/controls/ArcballControls.js +13 -6
- package/examples/jsm/controls/DragControls.js +2 -2
- package/examples/jsm/controls/FirstPersonControls.js +127 -86
- package/examples/jsm/controls/FlyControls.js +4 -0
- package/examples/jsm/controls/MapControls.js +55 -1
- package/examples/jsm/controls/OrbitControls.js +111 -8
- package/examples/jsm/controls/TrackballControls.js +8 -8
- package/examples/jsm/controls/TransformControls.js +102 -17
- package/examples/jsm/csm/CSM.js +2 -1
- package/examples/jsm/csm/CSMFrustum.js +31 -6
- package/examples/jsm/csm/CSMShadowNode.js +10 -3
- package/examples/jsm/effects/AnaglyphEffect.js +102 -7
- package/examples/jsm/effects/AsciiEffect.js +14 -1
- package/examples/jsm/environments/ColorEnvironment.js +59 -0
- package/examples/jsm/environments/RoomEnvironment.js +3 -0
- package/examples/jsm/exporters/DRACOExporter.js +27 -6
- package/examples/jsm/exporters/EXRExporter.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +266 -21
- package/examples/jsm/exporters/PLYExporter.js +286 -73
- package/examples/jsm/exporters/USDZExporter.js +353 -99
- package/examples/jsm/generators/CityGenerator.js +346 -0
- package/examples/jsm/generators/ForestGenerator.js +347 -0
- package/examples/jsm/generators/TerrainGenerator.js +504 -0
- package/examples/jsm/generators/TreeGenerator.js +377 -0
- package/examples/jsm/generators/city/SidewalkGenerator.js +253 -0
- package/examples/jsm/generators/city/SkyscraperGenerator.js +1357 -0
- package/examples/jsm/geometries/DecalGeometry.js +1 -1
- package/examples/jsm/geometries/LoftGeometry.js +355 -0
- package/examples/jsm/geometries/TextGeometry.js +18 -0
- package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
- package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
- package/examples/jsm/helpers/LightProbeHelper.js +5 -4
- package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
- package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
- package/examples/jsm/helpers/ViewHelper.js +83 -14
- package/examples/jsm/inspector/Extension.js +13 -0
- package/examples/jsm/inspector/Inspector.js +244 -91
- package/examples/jsm/inspector/RendererInspector.js +165 -39
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
- package/examples/jsm/inspector/tabs/Console.js +241 -25
- package/examples/jsm/inspector/tabs/Memory.js +136 -0
- package/examples/jsm/inspector/tabs/Parameters.js +115 -7
- package/examples/jsm/inspector/tabs/Performance.js +24 -9
- package/examples/jsm/inspector/tabs/Settings.js +306 -0
- package/examples/jsm/inspector/tabs/Timeline.js +1696 -0
- package/examples/jsm/inspector/tabs/Viewer.js +723 -9
- package/examples/jsm/inspector/ui/Graph.js +162 -25
- package/examples/jsm/inspector/ui/Item.js +92 -13
- package/examples/jsm/inspector/ui/List.js +2 -2
- package/examples/jsm/inspector/ui/Profiler.js +1991 -44
- package/examples/jsm/inspector/ui/Style.js +1943 -543
- package/examples/jsm/inspector/ui/Tab.js +226 -5
- package/examples/jsm/inspector/ui/Values.js +126 -8
- package/examples/jsm/inspector/ui/utils.js +143 -10
- package/examples/jsm/interaction/InteractionManager.js +226 -0
- package/examples/jsm/libs/basis/README.md +0 -1
- package/examples/jsm/libs/demuxer_mp4.js +3 -3
- package/examples/jsm/libs/draco/README.md +0 -1
- package/examples/jsm/libs/meshopt_clusterizer.module.js +421 -0
- package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
- package/examples/jsm/libs/meshopt_simplifier.module.js +627 -0
- package/examples/jsm/libs/mikktspace.module.js +34 -9
- package/examples/jsm/lighting/ClusteredLighting.js +55 -0
- package/examples/jsm/lighting/DynamicLighting.js +82 -0
- package/examples/jsm/lighting/LightProbeGrid.js +681 -0
- package/examples/jsm/lines/LineMaterial.js +45 -16
- package/examples/jsm/lines/LineSegments2.js +8 -0
- package/examples/jsm/lines/webgpu/LineSegments2.js +8 -0
- package/examples/jsm/loaders/3DMLoader.js +6 -5
- package/examples/jsm/loaders/3MFLoader.js +2 -2
- package/examples/jsm/loaders/AMFLoader.js +2 -2
- package/examples/jsm/loaders/ColladaLoader.js +24 -4026
- package/examples/jsm/loaders/DRACOLoader.js +51 -18
- package/examples/jsm/loaders/EXRLoader.js +701 -90
- package/examples/jsm/loaders/FBXLoader.js +235 -37
- package/examples/jsm/loaders/GCodeLoader.js +34 -8
- package/examples/jsm/loaders/GLTFLoader.js +146 -178
- package/examples/jsm/loaders/HDRLoader.js +7 -30
- package/examples/jsm/loaders/KMZLoader.js +5 -5
- package/examples/jsm/loaders/KTX2Loader.js +58 -17
- package/examples/jsm/loaders/LDrawLoader.js +49 -58
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +2 -2
- package/examples/jsm/loaders/LWOLoader.js +11 -39
- package/examples/jsm/loaders/LottieLoader.js +1 -1
- package/examples/jsm/loaders/MaterialXLoader.js +31 -9
- package/examples/jsm/loaders/NRRDLoader.js +5 -5
- package/examples/jsm/loaders/PCDLoader.js +11 -9
- package/examples/jsm/loaders/PLYLoader.js +218 -55
- package/examples/jsm/loaders/SVGLoader.js +549 -497
- package/examples/jsm/loaders/TDSLoader.js +0 -2
- package/examples/jsm/loaders/TGALoader.js +0 -2
- package/examples/jsm/loaders/TTFLoader.js +1 -1
- package/examples/jsm/loaders/USDLoader.js +127 -43
- package/examples/jsm/loaders/UltraHDRLoader.js +285 -160
- package/examples/jsm/loaders/VOXLoader.js +660 -117
- package/examples/jsm/loaders/VRMLLoader.js +80 -3
- package/examples/jsm/loaders/VTKLoader.js +42 -25
- package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
- package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
- package/examples/jsm/loaders/usd/USDAParser.js +504 -344
- package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
- package/examples/jsm/loaders/usd/USDComposer.js +4627 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
- package/examples/jsm/materials/WoodNodeMaterial.js +11 -11
- package/examples/jsm/math/Octree.js +131 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
- package/examples/jsm/misc/RollerCoaster.js +42 -4
- package/examples/jsm/misc/TileCreasedNormalsPlugin.js +270 -0
- package/examples/jsm/misc/Volume.js +2 -3
- package/examples/jsm/misc/VolumeSlice.js +0 -1
- package/examples/jsm/modifiers/TessellateModifier.js +1 -1
- package/examples/jsm/objects/GroundedSkybox.js +1 -1
- package/examples/jsm/objects/LensflareMesh.js +1 -1
- package/examples/jsm/objects/Reflector.js +72 -25
- package/examples/jsm/objects/Sky.js +90 -6
- package/examples/jsm/objects/SkyMesh.js +150 -16
- package/examples/jsm/objects/Water.js +4 -3
- package/examples/jsm/objects/Water2.js +5 -3
- package/examples/jsm/objects/Water2Mesh.js +1 -1
- package/examples/jsm/objects/WaterMesh.js +5 -7
- package/examples/jsm/physics/AmmoPhysics.js +27 -15
- package/examples/jsm/physics/JoltPhysics.js +10 -6
- package/examples/jsm/physics/RapierPhysics.js +36 -7
- package/examples/jsm/postprocessing/EffectComposer.js +7 -5
- package/examples/jsm/postprocessing/OutputPass.js +9 -0
- package/examples/jsm/postprocessing/RenderPass.js +10 -0
- package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
- package/examples/jsm/postprocessing/UnrealBloomPass.js +48 -18
- package/examples/jsm/renderers/CSS3DRenderer.js +1 -1
- package/examples/jsm/renderers/Projector.js +246 -28
- package/examples/jsm/renderers/SVGRenderer.js +174 -60
- package/examples/jsm/shaders/GTAOShader.js +19 -6
- package/examples/jsm/shaders/HalftoneShader.js +12 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +6 -2
- package/examples/jsm/shaders/SAOShader.js +17 -4
- package/examples/jsm/shaders/SSAOShader.js +11 -1
- package/examples/jsm/shaders/SSRShader.js +6 -5
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +2 -4
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/shaders/VolumeShader.js +31 -44
- package/examples/jsm/transpiler/AST.js +44 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +65 -8
- package/examples/jsm/transpiler/Linker.js +1 -1
- package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
- package/examples/jsm/transpiler/TSLEncoder.js +46 -3
- package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
- package/examples/jsm/transpiler/WGSLEncoder.js +27 -0
- package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +11 -1
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
- package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
- package/examples/jsm/tsl/display/BloomNode.js +75 -25
- package/examples/jsm/tsl/display/CRT.js +150 -0
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +3 -36
- package/examples/jsm/tsl/display/DenoiseNode.js +1 -1
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +3 -3
- package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
- package/examples/jsm/tsl/display/FSR1Node.js +477 -0
- package/examples/jsm/tsl/display/FXAANode.js +13 -14
- package/examples/jsm/tsl/display/GTAONode.js +40 -17
- package/examples/jsm/tsl/display/GaussianBlurNode.js +21 -2
- package/examples/jsm/tsl/display/GodraysNode.js +615 -0
- package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +560 -0
- package/examples/jsm/tsl/display/LensflareNode.js +1 -1
- package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
- package/examples/jsm/tsl/display/OutlineNode.js +69 -19
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
- package/examples/jsm/tsl/display/PixelationPassNode.js +9 -8
- package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
- package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +912 -0
- package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
- package/examples/jsm/tsl/display/SMAANode.js +2 -2
- package/examples/jsm/tsl/display/SSAAPassNode.js +15 -27
- package/examples/jsm/tsl/display/SSGINode.js +96 -62
- package/examples/jsm/tsl/display/SSRNode.js +831 -134
- package/examples/jsm/tsl/display/SSSNode.js +8 -6
- package/examples/jsm/tsl/display/Shape.js +29 -0
- package/examples/jsm/tsl/display/SharpenNode.js +283 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
- package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
- package/examples/jsm/tsl/display/TAAUNode.js +835 -0
- package/examples/jsm/tsl/display/TRAANode.js +315 -126
- package/examples/jsm/tsl/display/TemporalReprojectNode.js +1023 -0
- package/examples/jsm/tsl/display/TransitionNode.js +1 -1
- package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
- package/examples/jsm/tsl/display/radialBlur.js +68 -0
- package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +622 -0
- package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
- package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
- package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
- package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
- package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
- package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
- package/examples/jsm/tsl/math/Bayer.js +53 -3
- package/examples/jsm/tsl/math/curlNoise.js +107 -0
- package/examples/jsm/tsl/shadows/TileShadowNode.js +1 -1
- package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +3 -3
- package/examples/jsm/tsl/utils/GroundedSkybox.js +62 -0
- package/examples/jsm/tsl/utils/RNoise.js +51 -0
- package/examples/jsm/tsl/utils/SpecularHelpers.js +325 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +128 -62
- package/examples/jsm/utils/ColorUtils.js +76 -0
- package/examples/jsm/utils/GeometryCompressionUtils.js +1 -1
- package/examples/jsm/utils/LDrawUtils.js +1 -1
- package/examples/jsm/utils/SceneOptimizer.js +1 -1
- package/examples/jsm/utils/ShadowMapViewer.js +24 -10
- package/examples/jsm/utils/ShadowMapViewerGPU.js +1 -1
- package/examples/jsm/utils/SkeletonUtils.js +14 -8
- package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
- package/examples/jsm/webxr/ARButton.js +1 -1
- package/examples/jsm/webxr/WebGLXRFallback.js +89 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +2 -2
- package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -1
- package/package.json +28 -34
- package/src/Three.Core.js +3 -1
- package/src/Three.TSL.js +35 -14
- package/src/Three.WebGPU.Nodes.js +5 -0
- package/src/Three.WebGPU.js +13 -0
- package/src/Three.js +1 -0
- package/src/animation/AnimationAction.js +18 -4
- package/src/animation/AnimationClip.js +0 -139
- package/src/animation/AnimationMixer.js +6 -0
- package/src/animation/AnimationUtils.js +1 -12
- package/src/animation/KeyframeTrack.js +47 -8
- package/src/animation/PropertyBinding.js +2 -2
- package/src/animation/PropertyMixer.js +4 -4
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
- package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
- package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
- package/src/audio/Audio.js +1 -1
- package/src/audio/AudioContext.js +2 -2
- package/src/audio/AudioListener.js +5 -3
- package/src/cameras/Camera.js +34 -4
- package/src/cameras/CubeCamera.js +20 -0
- package/src/cameras/StereoCamera.js +5 -2
- package/src/constants.js +90 -5
- package/src/core/BufferAttribute.js +13 -1
- package/src/core/BufferGeometry.js +43 -9
- package/src/core/Clock.js +7 -0
- package/src/core/Object3D.js +69 -11
- package/src/core/Raycaster.js +3 -3
- package/src/core/RenderTarget.js +19 -6
- package/src/extras/PMREMGenerator.js +13 -22
- package/src/extras/TextureUtils.js +6 -2
- package/src/extras/core/ShapePath.js +149 -160
- package/src/extras/curves/CatmullRomCurve3.js +3 -2
- package/src/geometries/ExtrudeGeometry.js +2 -2
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/SphereGeometry.js +8 -3
- package/src/geometries/TorusGeometry.js +8 -3
- package/src/helpers/CameraHelper.js +3 -0
- package/src/helpers/DirectionalLightHelper.js +6 -1
- package/src/helpers/HemisphereLightHelper.js +5 -0
- package/src/helpers/PointLightHelper.js +3 -25
- package/src/helpers/SpotLightHelper.js +4 -1
- package/src/lights/DirectionalLight.js +13 -0
- package/src/lights/HemisphereLight.js +10 -0
- package/src/lights/Light.js +1 -11
- package/src/lights/LightProbe.js +0 -15
- package/src/lights/LightShadow.js +15 -6
- package/src/lights/PointLight.js +15 -0
- package/src/lights/PointLightShadow.js +0 -86
- package/src/lights/SpotLight.js +22 -1
- package/src/lights/webgpu/IESSpotLight.js +2 -1
- package/src/loaders/AudioLoader.js +11 -1
- package/src/loaders/Cache.js +28 -0
- package/src/loaders/DataTextureLoader.js +75 -42
- package/src/loaders/FileLoader.js +2 -3
- package/src/loaders/ImageBitmapLoader.js +12 -9
- package/src/loaders/Loader.js +6 -0
- package/src/loaders/LoadingManager.js +5 -0
- package/src/loaders/MaterialLoader.js +37 -266
- package/src/loaders/ObjectLoader.js +48 -6
- package/src/loaders/nodes/NodeLoader.js +2 -2
- package/src/loaders/nodes/NodeObjectLoader.js +18 -0
- package/src/materials/LineBasicMaterial.js +4 -0
- package/src/materials/Material.js +198 -1
- package/src/materials/MeshBasicMaterial.js +24 -0
- package/src/materials/MeshDepthMaterial.js +10 -0
- package/src/materials/MeshDistanceMaterial.js +10 -0
- package/src/materials/MeshLambertMaterial.js +49 -1
- package/src/materials/MeshMatcapMaterial.js +25 -1
- package/src/materials/MeshNormalMaterial.js +9 -1
- package/src/materials/MeshPhongMaterial.js +49 -1
- package/src/materials/MeshPhysicalMaterial.js +38 -0
- package/src/materials/MeshStandardMaterial.js +42 -1
- package/src/materials/MeshToonMaterial.js +35 -2
- package/src/materials/PointsMaterial.js +7 -0
- package/src/materials/ShaderMaterial.js +106 -1
- package/src/materials/SpriteMaterial.js +7 -0
- package/src/materials/nodes/Line2NodeMaterial.js +380 -297
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +0 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +3 -30
- package/src/materials/nodes/MeshSSSNodeMaterial.js +0 -13
- package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -15
- package/src/materials/nodes/NodeMaterial.js +153 -89
- package/src/materials/nodes/SpriteNodeMaterial.js +0 -10
- package/src/materials/nodes/manager/NodeMaterialObserver.js +234 -100
- package/src/math/Box3.js +5 -0
- package/src/math/FrustumArray.js +103 -133
- package/src/math/Interpolant.js +1 -1
- package/src/math/Line3.js +6 -5
- package/src/math/MathUtils.js +12 -12
- package/src/math/Matrix2.js +13 -9
- package/src/math/Matrix3.js +24 -9
- package/src/math/Matrix4.js +112 -74
- package/src/math/Plane.js +4 -3
- package/src/math/Quaternion.js +3 -29
- package/src/math/Sphere.js +1 -1
- package/src/math/Triangle.js +1 -1
- package/src/math/Vector2.js +13 -9
- package/src/math/Vector3.js +17 -15
- package/src/math/Vector4.js +15 -11
- package/src/math/interpolants/BezierInterpolant.js +106 -0
- package/src/nodes/Nodes.js +86 -71
- package/src/nodes/TSL.js +15 -13
- package/src/nodes/accessors/Arrays.js +5 -5
- package/src/nodes/accessors/Batch.js +108 -0
- package/src/nodes/accessors/Bitangent.js +7 -7
- package/src/nodes/accessors/BufferAttributeNode.js +120 -17
- package/src/nodes/accessors/BufferNode.js +29 -2
- package/src/nodes/accessors/Camera.js +149 -28
- package/src/nodes/accessors/ClippingNode.js +5 -5
- package/src/nodes/accessors/CubeTextureNode.js +27 -2
- package/src/nodes/accessors/Instance.js +264 -0
- package/src/nodes/accessors/MaterialNode.js +27 -3
- package/src/nodes/accessors/MaterialProperties.js +6 -8
- package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
- package/src/nodes/accessors/ModelNode.js +1 -1
- package/src/nodes/accessors/{MorphNode.js → Morph.js} +99 -112
- package/src/nodes/accessors/Normal.js +24 -24
- package/src/nodes/accessors/Object3DNode.js +1 -1
- package/src/nodes/accessors/Position.js +39 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +6 -6
- package/src/nodes/accessors/ReferenceNode.js +9 -8
- package/src/nodes/accessors/ReflectVector.js +3 -3
- package/src/nodes/accessors/RendererReferenceNode.js +1 -2
- package/src/nodes/accessors/SceneProperties.js +47 -0
- package/src/nodes/accessors/Skinning.js +263 -0
- package/src/nodes/accessors/StorageBufferNode.js +16 -27
- package/src/nodes/accessors/StorageTexture3DNode.js +100 -0
- package/src/nodes/accessors/StorageTextureNode.js +74 -11
- package/src/nodes/accessors/Tangent.js +8 -18
- package/src/nodes/accessors/Texture3DNode.js +32 -35
- package/src/nodes/accessors/TextureNode.js +124 -25
- package/src/nodes/accessors/UniformArrayNode.js +6 -4
- package/src/nodes/accessors/UserDataNode.js +1 -2
- package/src/nodes/accessors/VertexColorNode.js +1 -2
- package/src/nodes/code/FunctionCallNode.js +1 -1
- package/src/nodes/code/FunctionNode.js +4 -19
- package/src/nodes/core/ArrayNode.js +21 -2
- package/src/nodes/core/AssignNode.js +3 -3
- package/src/nodes/core/AttributeNode.js +3 -3
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/ContextNode.js +104 -5
- package/src/nodes/core/IndexNode.js +2 -1
- package/src/nodes/core/InputNode.js +1 -1
- package/src/nodes/core/InspectorNode.js +1 -1
- package/src/nodes/core/IsolateNode.js +1 -1
- package/src/nodes/core/MRTNode.js +55 -4
- package/src/nodes/core/Node.js +151 -17
- package/src/nodes/core/NodeBuilder.js +479 -101
- package/src/nodes/core/NodeError.js +28 -0
- package/src/nodes/core/NodeFrame.js +12 -4
- package/src/nodes/core/NodeUtils.js +20 -18
- package/src/nodes/core/OutputStructNode.js +13 -11
- package/src/nodes/core/OverrideContextNode.js +153 -0
- package/src/nodes/core/ParameterNode.js +4 -4
- package/src/nodes/core/PropertyNode.js +66 -4
- package/src/nodes/core/StackNode.js +91 -20
- package/src/nodes/core/StackTrace.js +139 -0
- package/src/nodes/core/StructNode.js +20 -8
- package/src/nodes/core/StructTypeNode.js +17 -23
- package/src/nodes/core/SubBuildNode.js +2 -2
- package/src/nodes/core/UniformGroupNode.js +36 -6
- package/src/nodes/core/UniformNode.js +21 -5
- package/src/nodes/core/VarNode.js +56 -23
- package/src/nodes/core/VaryingNode.js +14 -21
- package/src/nodes/display/BlendModes.js +1 -105
- package/src/nodes/display/BumpMapNode.js +6 -1
- package/src/nodes/display/ColorAdjustment.js +27 -9
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/FrontFacingNode.js +38 -9
- package/src/nodes/display/NormalMapNode.js +41 -6
- package/src/nodes/display/PassNode.js +157 -56
- package/src/nodes/display/PremultiplyAlphaFunctions.js +39 -0
- package/src/nodes/display/RenderOutputNode.js +19 -10
- package/src/nodes/display/ScreenNode.js +4 -2
- package/src/nodes/display/ToneMappingNode.js +1 -1
- package/src/nodes/display/ToonOutlinePassNode.js +2 -2
- package/src/nodes/display/ViewportDepthNode.js +52 -4
- package/src/nodes/display/ViewportDepthTextureNode.js +11 -15
- package/src/nodes/display/ViewportTextureNode.js +39 -11
- package/src/nodes/fog/Fog.js +18 -35
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +3 -3
- package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/PhysicalLightingModel.js +126 -45
- package/src/nodes/functions/VolumetricLightingModel.js +40 -7
- package/src/nodes/geometry/RangeNode.js +5 -3
- package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
- package/src/nodes/gpgpu/BarrierNode.js +9 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -3
- package/src/nodes/gpgpu/ComputeNode.js +74 -48
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +2 -2
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +5 -5
- package/src/nodes/lighting/AnalyticLightNode.js +53 -0
- package/src/nodes/lighting/EnvironmentNode.js +30 -5
- package/src/nodes/lighting/IESSpotLightNode.js +40 -2
- package/src/nodes/lighting/LightingContextNode.js +10 -2
- package/src/nodes/lighting/LightsNode.js +97 -65
- package/src/nodes/lighting/PointShadowNode.js +166 -148
- package/src/nodes/lighting/ShadowFilterNode.js +74 -117
- package/src/nodes/lighting/ShadowNode.js +149 -51
- package/src/nodes/materialx/lib/mx_noise.js +2 -2
- package/src/nodes/math/BitcastNode.js +1 -1
- package/src/nodes/math/BitcountNode.js +433 -0
- package/src/nodes/math/ConditionalNode.js +6 -6
- package/src/nodes/math/MathNode.js +115 -52
- package/src/nodes/math/OperatorNode.js +24 -23
- package/src/nodes/math/PackFloatNode.js +98 -0
- package/src/nodes/math/UnpackFloatNode.js +96 -0
- package/src/nodes/parsers/GLSLNodeFunction.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +34 -3
- package/src/nodes/pmrem/PMREMUtils.js +9 -15
- package/src/nodes/tsl/TSLBase.js +1 -1
- package/src/nodes/tsl/TSLCore.js +99 -33
- package/src/nodes/utils/ArrayElementNode.js +14 -1
- package/src/nodes/utils/ConvertNode.js +1 -1
- package/src/nodes/utils/DebugNode.js +12 -12
- package/src/nodes/utils/EquirectUV.js +30 -5
- package/src/nodes/utils/EventNode.js +31 -2
- package/src/nodes/utils/FlipNode.js +1 -1
- package/src/nodes/utils/FunctionOverloadingNode.js +2 -2
- package/src/nodes/utils/JoinNode.js +3 -3
- package/src/nodes/utils/LoopNode.js +1 -1
- package/src/nodes/utils/MemberNode.js +2 -2
- package/src/nodes/utils/Packing.js +48 -5
- package/src/nodes/utils/PostProcessingUtils.js +33 -1
- package/src/nodes/utils/RTTNode.js +41 -25
- package/src/nodes/utils/ReflectorNode.js +4 -4
- package/src/nodes/utils/Remap.js +48 -0
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SampleNode.js +1 -1
- package/src/nodes/utils/SetNode.js +1 -1
- package/src/nodes/utils/SplitNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUV.js +35 -0
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/nodes/utils/UVUtils.js +28 -0
- package/src/objects/BatchedMesh.js +66 -30
- package/src/objects/InstancedMesh.js +19 -3
- package/src/objects/Line.js +1 -1
- package/src/objects/Mesh.js +1 -1
- package/src/objects/Points.js +1 -1
- package/src/objects/SkinnedMesh.js +26 -9
- package/src/renderers/WebGLRenderer.js +344 -156
- package/src/renderers/common/Animation.js +3 -3
- package/src/renderers/common/Attributes.js +15 -1
- package/src/renderers/common/Backend.js +78 -13
- package/src/renderers/common/Background.js +26 -13
- package/src/renderers/common/BindGroup.js +1 -16
- package/src/renderers/common/Binding.js +11 -0
- package/src/renderers/common/Bindings.js +141 -57
- package/src/renderers/common/BlendMode.js +143 -0
- package/src/renderers/common/Buffer.js +49 -0
- package/src/renderers/common/BundleGroup.js +1 -1
- package/src/renderers/common/ChainMap.js +30 -6
- package/src/renderers/common/ClippingContext.js +10 -2
- package/src/renderers/common/ComputePipeline.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +51 -7
- package/src/renderers/common/Geometries.js +29 -3
- package/src/renderers/common/Info.js +374 -4
- package/src/renderers/common/InspectorBase.js +6 -1
- package/src/renderers/common/Lighting.js +51 -19
- package/src/renderers/common/Pipelines.js +40 -7
- package/src/renderers/common/PostProcessing.js +8 -206
- package/src/renderers/common/ReadbackBuffer.js +78 -0
- package/src/renderers/common/RenderBundle.js +3 -1
- package/src/renderers/common/RenderBundles.js +7 -3
- package/src/renderers/common/RenderContext.js +16 -0
- package/src/renderers/common/RenderContexts.js +33 -49
- package/src/renderers/common/RenderList.js +41 -4
- package/src/renderers/common/RenderLists.js +2 -1
- package/src/renderers/common/RenderObject.js +88 -16
- package/src/renderers/common/RenderObjectPipeline.js +40 -0
- package/src/renderers/common/RenderObjects.js +21 -5
- package/src/renderers/common/RenderPipeline.js +232 -17
- package/src/renderers/common/Renderer.js +700 -163
- package/src/renderers/common/Sampler.js +16 -48
- package/src/renderers/common/StorageBuffer.js +13 -1
- package/src/renderers/common/Textures.js +121 -9
- package/src/renderers/common/TimestampQueryPool.js +6 -4
- package/src/renderers/common/Uniform.js +8 -0
- package/src/renderers/common/UniformsGroup.js +84 -1
- package/src/renderers/common/XRManager.js +377 -51
- package/src/renderers/common/extras/PMREMGenerator.js +40 -61
- package/src/renderers/common/nodes/NodeBuilderState.js +10 -2
- package/src/renderers/common/nodes/NodeLibrary.js +4 -4
- package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +298 -106
- package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +65 -0
- package/src/renderers/shaders/DFGLUTData.js +19 -34
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +13 -4
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +0 -6
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +9 -13
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
- package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +3 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +112 -53
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
- package/src/renderers/shaders/ShaderChunk/normal_vertex.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +225 -186
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk.js +5 -3
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +3 -0
- package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +2 -3
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib.js +7 -6
- package/src/renderers/shaders/UniformsLib.js +7 -5
- package/src/renderers/shaders/UniformsUtils.js +27 -5
- package/src/renderers/webgl/WebGLAnimation.js +2 -1
- package/src/renderers/webgl/WebGLBackground.js +15 -15
- package/src/renderers/webgl/WebGLBindingStates.js +99 -27
- package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLCapabilities.js +9 -4
- package/src/renderers/webgl/WebGLEnvironments.js +228 -0
- package/src/renderers/webgl/WebGLGeometries.js +10 -7
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLLights.js +18 -1
- package/src/renderers/webgl/WebGLMaterials.js +24 -13
- package/src/renderers/webgl/WebGLObjects.js +3 -1
- package/src/renderers/webgl/WebGLOutput.js +271 -0
- package/src/renderers/webgl/WebGLProgram.js +54 -113
- package/src/renderers/webgl/WebGLPrograms.js +74 -55
- package/src/renderers/webgl/WebGLRenderLists.js +24 -1
- package/src/renderers/webgl/WebGLRenderStates.js +13 -2
- package/src/renderers/webgl/WebGLShaderCache.js +5 -11
- package/src/renderers/webgl/WebGLShadowMap.js +188 -24
- package/src/renderers/webgl/WebGLState.js +75 -37
- package/src/renderers/webgl/WebGLTextures.js +230 -56
- package/src/renderers/webgl/WebGLUniforms.js +40 -3
- package/src/renderers/webgl/WebGLUniformsGroups.js +82 -35
- package/src/renderers/webgl/WebGLUtils.js +6 -2
- package/src/renderers/webgl-fallback/WebGLBackend.js +322 -92
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +295 -66
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +223 -6
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +118 -73
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +10 -10
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +9 -3
- package/src/renderers/webgpu/WebGPUBackend.js +733 -302
- package/src/renderers/webgpu/WebGPURenderer.js +2 -1
- package/src/renderers/webgpu/descriptors/GPUBindGroupDescriptor.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUBufferDescriptor.js +57 -0
- package/src/renderers/webgpu/descriptors/GPUCommandEncoderDescriptor.js +30 -0
- package/src/renderers/webgpu/descriptors/GPUComputePassDescriptor.js +38 -0
- package/src/renderers/webgpu/descriptors/GPUComputePipelineDescriptor.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUCopyExternalImageDestInfo.js +47 -0
- package/src/renderers/webgpu/descriptors/GPUCopyExternalImageSourceInfo.js +50 -0
- package/src/renderers/webgpu/descriptors/GPUExtent3D.js +51 -0
- package/src/renderers/webgpu/descriptors/GPUPipelineLayoutDescriptor.js +39 -0
- package/src/renderers/webgpu/descriptors/GPUQuerySetDescriptor.js +47 -0
- package/src/renderers/webgpu/descriptors/GPURenderBundleEncoderDescriptor.js +74 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassColorAttachment.js +72 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassDepthStencilAttachment.js +99 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassDescriptor.js +72 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassTimestampWrites.js +49 -0
- package/src/renderers/webgpu/descriptors/GPURenderPipelineDescriptor.js +130 -0
- package/src/renderers/webgpu/descriptors/GPUSamplerDescriptor.js +119 -0
- package/src/renderers/webgpu/descriptors/GPUShaderModuleDescriptor.js +46 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferInfo.js +57 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferLayout.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyTextureInfo.js +61 -0
- package/src/renderers/webgpu/descriptors/GPUTextureDescriptor.js +99 -0
- package/src/renderers/webgpu/descriptors/GPUTextureViewDescriptor.js +108 -0
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +0 -1
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +526 -93
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +194 -61
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +395 -234
- package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
- package/src/renderers/webgpu/utils/WebGPUConstants.js +10 -0
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +224 -91
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +228 -213
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +428 -175
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +40 -25
- package/src/renderers/webgpu/utils/WebGPUUtils.js +70 -13
- package/src/renderers/webxr/WebXRController.js +12 -0
- package/src/renderers/webxr/WebXRManager.js +4 -2
- package/src/textures/CubeDepthTexture.js +76 -0
- package/src/textures/DepthTexture.js +1 -1
- package/src/textures/ExternalTexture.js +0 -3
- package/src/textures/HTMLTexture.js +74 -0
- package/src/textures/Source.js +2 -2
- package/src/textures/Texture.js +16 -5
- package/src/utils.js +280 -3
- package/examples/fonts/LICENSE +0 -13
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +0 -91
- package/examples/fonts/README.md +0 -11
- package/examples/fonts/droid/NOTICE +0 -190
- package/examples/fonts/droid/README.txt +0 -18
- package/examples/fonts/droid/droid_sans_bold.typeface.json +0 -1
- package/examples/fonts/droid/droid_sans_mono_regular.typeface.json +0 -1
- package/examples/fonts/droid/droid_sans_regular.typeface.json +0 -1
- package/examples/fonts/droid/droid_serif_bold.typeface.json +0 -1
- package/examples/fonts/droid/droid_serif_regular.typeface.json +0 -1
- package/examples/fonts/gentilis_bold.typeface.json +0 -1
- package/examples/fonts/gentilis_regular.typeface.json +0 -1
- package/examples/fonts/helvetiker_bold.typeface.json +0 -1
- package/examples/fonts/helvetiker_regular.typeface.json +0 -1
- package/examples/fonts/optimer_bold.typeface.json +0 -1
- package/examples/fonts/optimer_regular.typeface.json +0 -1
- package/examples/fonts/ttf/README.md +0 -9
- package/examples/fonts/ttf/kenpixel.ttf +0 -0
- package/examples/jsm/libs/ammo.wasm.js +0 -822
- package/examples/jsm/libs/ammo.wasm.wasm +0 -0
- package/examples/jsm/libs/draco/draco_encoder.js +0 -33
- package/examples/jsm/libs/draco/gltf/draco_encoder.js +0 -33
- package/examples/jsm/libs/lottie_canvas.module.js +0 -14849
- package/examples/jsm/libs/opentype.module.js +0 -14506
- package/examples/jsm/libs/rhino3dm/rhino3dm.js +0 -21
- package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +0 -16
- package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
- package/examples/jsm/lighting/TiledLighting.js +0 -42
- package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
- package/examples/jsm/shaders/GodRaysShader.js +0 -333
- package/examples/jsm/tsl/display/AnamorphicNode.js +0 -282
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +0 -442
- package/src/nodes/accessors/BatchNode.js +0 -163
- package/src/nodes/accessors/InstanceNode.js +0 -244
- package/src/nodes/accessors/InstancedMeshNode.js +0 -50
- package/src/nodes/accessors/SceneNode.js +0 -145
- package/src/nodes/accessors/SkinningNode.js +0 -327
- package/src/nodes/code/ScriptableNode.js +0 -726
- package/src/nodes/code/ScriptableValueNode.js +0 -253
- package/src/nodes/display/PosterizeNode.js +0 -65
- package/src/nodes/functions/BSDF/DFGApprox.js +0 -71
- package/src/nodes/utils/RemapNode.js +0 -125
- package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
- package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
- package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
|
@@ -13,7 +13,7 @@ class Bindings extends DataMap {
|
|
|
13
13
|
* Constructs a new bindings management component.
|
|
14
14
|
*
|
|
15
15
|
* @param {Backend} backend - The renderer's backend.
|
|
16
|
-
* @param {
|
|
16
|
+
* @param {NodeManager} nodes - Renderer component for managing nodes related logic.
|
|
17
17
|
* @param {Textures} textures - Renderer component for managing textures.
|
|
18
18
|
* @param {Attributes} attributes - Renderer component for managing attributes.
|
|
19
19
|
* @param {Pipelines} pipelines - Renderer component for managing pipelines.
|
|
@@ -54,7 +54,7 @@ class Bindings extends DataMap {
|
|
|
54
54
|
/**
|
|
55
55
|
* Renderer component for managing nodes related logic.
|
|
56
56
|
*
|
|
57
|
-
* @type {
|
|
57
|
+
* @type {NodeManager}
|
|
58
58
|
*/
|
|
59
59
|
this.nodes = nodes;
|
|
60
60
|
|
|
@@ -79,21 +79,15 @@ class Bindings extends DataMap {
|
|
|
79
79
|
|
|
80
80
|
const bindings = renderObject.getBindings();
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
const renderObjectData = this.get( renderObject );
|
|
83
83
|
|
|
84
|
-
|
|
84
|
+
if ( renderObjectData.initialized !== true ) {
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
// bind groups are created once per object
|
|
87
87
|
|
|
88
|
-
|
|
88
|
+
this._createBindings( bindings );
|
|
89
89
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
this.backend.createBindings( bindGroup, bindings, 0 );
|
|
93
|
-
|
|
94
|
-
groupData.bindGroup = bindGroup;
|
|
95
|
-
|
|
96
|
-
}
|
|
90
|
+
renderObjectData.initialized = true;
|
|
97
91
|
|
|
98
92
|
}
|
|
99
93
|
|
|
@@ -110,20 +104,22 @@ class Bindings extends DataMap {
|
|
|
110
104
|
getForCompute( computeNode ) {
|
|
111
105
|
|
|
112
106
|
const bindings = this.nodes.getForCompute( computeNode ).bindings;
|
|
107
|
+
const computeNodeData = this.get( computeNode );
|
|
113
108
|
|
|
114
|
-
|
|
109
|
+
if ( computeNodeData.initialized !== true || computeNodeData.bindings !== bindings ) {
|
|
115
110
|
|
|
116
|
-
|
|
111
|
+
// bind groups are created once per compute node version
|
|
117
112
|
|
|
118
|
-
if (
|
|
113
|
+
if ( computeNodeData.bindings !== undefined ) {
|
|
119
114
|
|
|
120
|
-
this.
|
|
115
|
+
this._destroyBindings( computeNodeData.bindings );
|
|
121
116
|
|
|
122
|
-
|
|
117
|
+
}
|
|
123
118
|
|
|
124
|
-
|
|
119
|
+
this._createBindings( bindings );
|
|
125
120
|
|
|
126
|
-
|
|
121
|
+
computeNodeData.initialized = true;
|
|
122
|
+
computeNodeData.bindings = bindings;
|
|
127
123
|
|
|
128
124
|
}
|
|
129
125
|
|
|
@@ -160,13 +156,12 @@ class Bindings extends DataMap {
|
|
|
160
156
|
*/
|
|
161
157
|
deleteForCompute( computeNode ) {
|
|
162
158
|
|
|
163
|
-
const
|
|
159
|
+
const computeNodeData = this.get( computeNode );
|
|
160
|
+
const bindings = computeNodeData.bindings || this.nodes.getForCompute( computeNode ).bindings;
|
|
164
161
|
|
|
165
|
-
|
|
162
|
+
this._destroyBindings( bindings );
|
|
166
163
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
}
|
|
164
|
+
this.delete( computeNode );
|
|
170
165
|
|
|
171
166
|
}
|
|
172
167
|
|
|
@@ -179,52 +174,113 @@ class Bindings extends DataMap {
|
|
|
179
174
|
|
|
180
175
|
const bindings = renderObject.getBindings();
|
|
181
176
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
this.delete( bindGroup );
|
|
177
|
+
this._destroyBindings( bindings );
|
|
185
178
|
|
|
186
|
-
|
|
179
|
+
this.delete( renderObject );
|
|
187
180
|
|
|
188
181
|
}
|
|
189
182
|
|
|
190
183
|
/**
|
|
191
|
-
*
|
|
184
|
+
* Creates the bindings for the given array of bindings.
|
|
192
185
|
*
|
|
193
186
|
* @param {Array<BindGroup>} bindings - The bind groups.
|
|
194
187
|
*/
|
|
195
|
-
|
|
188
|
+
_createBindings( bindings ) {
|
|
196
189
|
|
|
197
190
|
for ( const bindGroup of bindings ) {
|
|
198
191
|
|
|
199
|
-
|
|
192
|
+
// binding group
|
|
193
|
+
|
|
194
|
+
const groupData = this.get( bindGroup );
|
|
195
|
+
|
|
196
|
+
if ( groupData.bindGroup === undefined ) {
|
|
197
|
+
|
|
198
|
+
// initialize
|
|
199
|
+
|
|
200
|
+
for ( const binding of bindGroup.bindings ) {
|
|
201
|
+
|
|
202
|
+
if ( binding.isUniformBuffer ) {
|
|
203
|
+
|
|
204
|
+
this.backend.createUniformBuffer( binding );
|
|
205
|
+
this.info.createUniformBuffer( binding );
|
|
206
|
+
|
|
207
|
+
} else if ( binding.isSampledTexture ) {
|
|
208
|
+
|
|
209
|
+
this.textures.updateTexture( binding.texture );
|
|
210
|
+
|
|
211
|
+
} else if ( binding.isSampler ) {
|
|
212
|
+
|
|
213
|
+
this.textures.updateSampler( binding );
|
|
214
|
+
|
|
215
|
+
} else if ( binding.isStorageBuffer ) {
|
|
216
|
+
|
|
217
|
+
const attribute = binding.attribute;
|
|
218
|
+
const attributeType = attribute.isIndirectStorageBufferAttribute ? AttributeType.INDIRECT : AttributeType.STORAGE;
|
|
219
|
+
|
|
220
|
+
this.attributes.update( attribute, attributeType );
|
|
221
|
+
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
// each object defines an array of bindings (ubos, textures, samplers etc.)
|
|
227
|
+
|
|
228
|
+
this.backend.createBindings( bindGroup, bindings, 0 );
|
|
229
|
+
|
|
230
|
+
groupData.bindGroup = bindGroup;
|
|
231
|
+
groupData.usedTimes = 1;
|
|
232
|
+
|
|
233
|
+
} else {
|
|
234
|
+
|
|
235
|
+
groupData.usedTimes ++;
|
|
236
|
+
|
|
237
|
+
}
|
|
200
238
|
|
|
201
239
|
}
|
|
202
240
|
|
|
203
241
|
}
|
|
204
242
|
|
|
205
243
|
/**
|
|
206
|
-
*
|
|
244
|
+
* Deletes the given array of bindings.
|
|
207
245
|
*
|
|
208
|
-
* @param {BindGroup}
|
|
246
|
+
* @param {Array<BindGroup>} bindings - The bind groups.
|
|
209
247
|
*/
|
|
210
|
-
|
|
248
|
+
_destroyBindings( bindings ) {
|
|
211
249
|
|
|
212
|
-
for ( const
|
|
250
|
+
for ( const bindGroup of bindings ) {
|
|
213
251
|
|
|
214
|
-
|
|
252
|
+
const groupData = this.get( bindGroup );
|
|
253
|
+
groupData.usedTimes --;
|
|
215
254
|
|
|
216
|
-
|
|
255
|
+
if ( groupData.usedTimes === 0 ) {
|
|
217
256
|
|
|
218
|
-
|
|
257
|
+
for ( const binding of bindGroup.bindings ) {
|
|
219
258
|
|
|
220
|
-
|
|
259
|
+
if ( binding.isUniformBuffer ) {
|
|
221
260
|
|
|
222
|
-
|
|
261
|
+
this.backend.destroyUniformBuffer( binding );
|
|
262
|
+
this.info.destroyUniformBuffer( binding );
|
|
223
263
|
|
|
224
|
-
|
|
225
|
-
const attributeType = attribute.isIndirectStorageBufferAttribute ? AttributeType.INDIRECT : AttributeType.STORAGE;
|
|
264
|
+
// release arrays
|
|
226
265
|
|
|
227
|
-
|
|
266
|
+
binding.release();
|
|
267
|
+
|
|
268
|
+
} else if ( binding.isSampler ) {
|
|
269
|
+
|
|
270
|
+
if ( binding.isSampledTexture !== true ) {
|
|
271
|
+
|
|
272
|
+
this.backend.destroySampler( binding );
|
|
273
|
+
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
binding.release();
|
|
277
|
+
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
this.backend.deleteBindGroupData( bindGroup );
|
|
283
|
+
this.delete( bindGroup );
|
|
228
284
|
|
|
229
285
|
}
|
|
230
286
|
|
|
@@ -232,6 +288,21 @@ class Bindings extends DataMap {
|
|
|
232
288
|
|
|
233
289
|
}
|
|
234
290
|
|
|
291
|
+
/**
|
|
292
|
+
* Updates the given array of bindings.
|
|
293
|
+
*
|
|
294
|
+
* @param {Array<BindGroup>} bindings - The bind groups.
|
|
295
|
+
*/
|
|
296
|
+
_updateBindings( bindings ) {
|
|
297
|
+
|
|
298
|
+
for ( const bindGroup of bindings ) {
|
|
299
|
+
|
|
300
|
+
this._update( bindGroup, bindings );
|
|
301
|
+
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
}
|
|
305
|
+
|
|
235
306
|
/**
|
|
236
307
|
* Updates the given bind group.
|
|
237
308
|
*
|
|
@@ -251,24 +322,31 @@ class Bindings extends DataMap {
|
|
|
251
322
|
|
|
252
323
|
for ( const binding of bindGroup.bindings ) {
|
|
253
324
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
const updated = this.nodes.updateGroup( binding );
|
|
325
|
+
const updatedGroup = this.nodes.updateGroup( binding );
|
|
257
326
|
|
|
258
|
-
|
|
259
|
-
|
|
327
|
+
// every uniforms group is a uniform buffer. So if no update is required,
|
|
328
|
+
// we move one with the next binding. Otherwise the next if block will update the group.
|
|
260
329
|
|
|
261
|
-
|
|
330
|
+
if ( updatedGroup === false ) continue;
|
|
262
331
|
|
|
263
|
-
|
|
332
|
+
//
|
|
264
333
|
|
|
265
334
|
if ( binding.isStorageBuffer ) {
|
|
266
335
|
|
|
267
336
|
const attribute = binding.attribute;
|
|
268
337
|
const attributeType = attribute.isIndirectStorageBufferAttribute ? AttributeType.INDIRECT : AttributeType.STORAGE;
|
|
269
338
|
|
|
339
|
+
const bindingData = backend.get( binding );
|
|
340
|
+
|
|
270
341
|
this.attributes.update( attribute, attributeType );
|
|
271
342
|
|
|
343
|
+
if ( bindingData.attribute !== attribute ) {
|
|
344
|
+
|
|
345
|
+
bindingData.attribute = attribute;
|
|
346
|
+
|
|
347
|
+
needsBindingsUpdate = true;
|
|
348
|
+
|
|
349
|
+
}
|
|
272
350
|
|
|
273
351
|
}
|
|
274
352
|
|
|
@@ -297,7 +375,7 @@ class Bindings extends DataMap {
|
|
|
297
375
|
|
|
298
376
|
this.textures.updateTexture( texture );
|
|
299
377
|
|
|
300
|
-
// generation: update the bindings if a
|
|
378
|
+
// generation: update the bindings if the binding refers to a different texture object
|
|
301
379
|
|
|
302
380
|
if ( binding.generation !== texturesTextureData.generation ) {
|
|
303
381
|
|
|
@@ -305,10 +383,12 @@ class Bindings extends DataMap {
|
|
|
305
383
|
|
|
306
384
|
needsBindingsUpdate = true;
|
|
307
385
|
|
|
308
|
-
cacheBindings = false;
|
|
309
|
-
|
|
310
386
|
}
|
|
311
387
|
|
|
388
|
+
// keep track which bind groups refer to the current texture (this is needed for dispose)
|
|
389
|
+
|
|
390
|
+
texturesTextureData.bindGroups.add( bindGroup );
|
|
391
|
+
|
|
312
392
|
}
|
|
313
393
|
|
|
314
394
|
const textureData = backend.get( texture );
|
|
@@ -348,7 +428,7 @@ class Bindings extends DataMap {
|
|
|
348
428
|
|
|
349
429
|
if ( updated ) {
|
|
350
430
|
|
|
351
|
-
const samplerKey = this.textures.updateSampler( binding
|
|
431
|
+
const samplerKey = this.textures.updateSampler( binding );
|
|
352
432
|
|
|
353
433
|
if ( binding.samplerKey !== samplerKey ) {
|
|
354
434
|
|
|
@@ -356,14 +436,18 @@ class Bindings extends DataMap {
|
|
|
356
436
|
|
|
357
437
|
needsBindingsUpdate = true;
|
|
358
438
|
|
|
359
|
-
cacheBindings = false;
|
|
360
|
-
|
|
361
439
|
}
|
|
362
440
|
|
|
363
441
|
}
|
|
364
442
|
|
|
365
443
|
}
|
|
366
444
|
|
|
445
|
+
if ( binding.isBuffer && binding.updateRanges.length > 0 ) {
|
|
446
|
+
|
|
447
|
+
binding.clearUpdateRanges();
|
|
448
|
+
|
|
449
|
+
}
|
|
450
|
+
|
|
367
451
|
}
|
|
368
452
|
|
|
369
453
|
if ( needsBindingsUpdate === true ) {
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { NormalBlending, AddEquation, SrcAlphaFactor, OneMinusSrcAlphaFactor } from '../../constants.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Represents blending configuration.
|
|
5
|
+
*
|
|
6
|
+
* This class encapsulates all blending-related properties that control how
|
|
7
|
+
* a material's colors are combined with the colors already in the frame buffer.
|
|
8
|
+
*/
|
|
9
|
+
class BlendMode {
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new blending configuration.
|
|
13
|
+
*
|
|
14
|
+
* @param {(NoBlending|NormalBlending|AdditiveBlending|SubtractiveBlending|MultiplyBlending|CustomBlending|MaterialBlending)} [blending=NormalBlending] - The blending mode.
|
|
15
|
+
*/
|
|
16
|
+
constructor( blending = NormalBlending ) {
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Defines the blending type.
|
|
20
|
+
*
|
|
21
|
+
* It must be set to `CustomBlending` if custom blending properties like
|
|
22
|
+
* {@link BlendMode#blendSrc}, {@link BlendMode#blendDst} or {@link BlendMode#blendEquation}
|
|
23
|
+
* should have any effect.
|
|
24
|
+
*
|
|
25
|
+
* @type {(NoBlending|NormalBlending|AdditiveBlending|SubtractiveBlending|MultiplyBlending|CustomBlending|MaterialBlending)}
|
|
26
|
+
* @default NormalBlending
|
|
27
|
+
*/
|
|
28
|
+
this.blending = blending;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Defines the blending source factor.
|
|
32
|
+
*
|
|
33
|
+
* This determines how the source (incoming) fragment color is factored before being added
|
|
34
|
+
* to the destination (existing) fragment color in the frame buffer.
|
|
35
|
+
*
|
|
36
|
+
* @type {(ZeroFactor|OneFactor|SrcColorFactor|OneMinusSrcColorFactor|SrcAlphaFactor|OneMinusSrcAlphaFactor|DstAlphaFactor|OneMinusDstAlphaFactor|DstColorFactor|OneMinusDstColorFactor|SrcAlphaSaturateFactor|ConstantColorFactor|OneMinusConstantColorFactor|ConstantAlphaFactor|OneMinusConstantAlphaFactor)}
|
|
37
|
+
* @default SrcAlphaFactor
|
|
38
|
+
*/
|
|
39
|
+
this.blendSrc = SrcAlphaFactor;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Defines the blending destination factor.
|
|
43
|
+
*
|
|
44
|
+
* This determines how the destination (existing) fragment color in the frame buffer
|
|
45
|
+
* is factored before being combined with the source (incoming) fragment color.
|
|
46
|
+
*
|
|
47
|
+
* @type {(ZeroFactor|OneFactor|SrcColorFactor|OneMinusSrcColorFactor|SrcAlphaFactor|OneMinusSrcAlphaFactor|DstAlphaFactor|OneMinusDstAlphaFactor|DstColorFactor|OneMinusDstColorFactor|SrcAlphaSaturateFactor|ConstantColorFactor|OneMinusConstantColorFactor|ConstantAlphaFactor|OneMinusConstantAlphaFactor)}
|
|
48
|
+
* @default OneMinusSrcAlphaFactor
|
|
49
|
+
*/
|
|
50
|
+
this.blendDst = OneMinusSrcAlphaFactor;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Defines the blending equation.
|
|
54
|
+
*
|
|
55
|
+
* This determines how the source and destination colors are combined.
|
|
56
|
+
*
|
|
57
|
+
* @type {(AddEquation|SubtractEquation|ReverseSubtractEquation|MinEquation|MaxEquation)}
|
|
58
|
+
* @default AddEquation
|
|
59
|
+
*/
|
|
60
|
+
this.blendEquation = AddEquation;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Defines the blending source alpha factor.
|
|
64
|
+
*
|
|
65
|
+
* When set, this allows separate control of the alpha channel's source blending factor.
|
|
66
|
+
* If `null`, {@link BlendMode#blendSrc} is used for the alpha channel as well.
|
|
67
|
+
*
|
|
68
|
+
* @type {?(ZeroFactor|OneFactor|SrcColorFactor|OneMinusSrcColorFactor|SrcAlphaFactor|OneMinusSrcAlphaFactor|DstAlphaFactor|OneMinusDstAlphaFactor|DstColorFactor|OneMinusDstColorFactor|SrcAlphaSaturateFactor|ConstantColorFactor|OneMinusConstantColorFactor|ConstantAlphaFactor|OneMinusConstantAlphaFactor)}
|
|
69
|
+
* @default null
|
|
70
|
+
*/
|
|
71
|
+
this.blendSrcAlpha = null;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Defines the blending destination alpha factor.
|
|
75
|
+
*
|
|
76
|
+
* When set, this allows separate control of the alpha channel's destination blending factor.
|
|
77
|
+
* If `null`, {@link BlendMode#blendDst} is used for the alpha channel as well.
|
|
78
|
+
*
|
|
79
|
+
* @type {?(ZeroFactor|OneFactor|SrcColorFactor|OneMinusSrcColorFactor|SrcAlphaFactor|OneMinusSrcAlphaFactor|DstAlphaFactor|OneMinusDstAlphaFactor|DstColorFactor|OneMinusDstColorFactor|SrcAlphaSaturateFactor|ConstantColorFactor|OneMinusConstantColorFactor|ConstantAlphaFactor|OneMinusConstantAlphaFactor)}
|
|
80
|
+
* @default null
|
|
81
|
+
*/
|
|
82
|
+
this.blendDstAlpha = null;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Defines the blending equation of the alpha channel.
|
|
86
|
+
*
|
|
87
|
+
* When set, this allows separate control of the alpha channel's blending equation.
|
|
88
|
+
* If `null`, {@link BlendMode#blendEquation} is used for the alpha channel as well.
|
|
89
|
+
*
|
|
90
|
+
* @type {?(AddEquation|SubtractEquation|ReverseSubtractEquation|MinEquation|MaxEquation)}
|
|
91
|
+
* @default null
|
|
92
|
+
*/
|
|
93
|
+
this.blendEquationAlpha = null;
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Defines whether to premultiply the alpha (transparency) value.
|
|
97
|
+
*
|
|
98
|
+
* If `true`, the RGB color of the texture or material is multiplied by its alpha value.
|
|
99
|
+
* This is useful for transparent textures/materials where the color data
|
|
100
|
+
* should already include the transparency information.
|
|
101
|
+
*
|
|
102
|
+
* @type {boolean}
|
|
103
|
+
* @default false
|
|
104
|
+
*/
|
|
105
|
+
this.premultiplyAlpha = false;
|
|
106
|
+
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Copies the blending properties from the given source to this instance.
|
|
111
|
+
*
|
|
112
|
+
* @param {BlendMode} source - The blending configuration to copy from.
|
|
113
|
+
* @return {BlendMode} A reference to this instance.
|
|
114
|
+
*/
|
|
115
|
+
copy( source ) {
|
|
116
|
+
|
|
117
|
+
this.blending = source.blending;
|
|
118
|
+
this.blendSrc = source.blendSrc;
|
|
119
|
+
this.blendDst = source.blendDst;
|
|
120
|
+
this.blendEquation = source.blendEquation;
|
|
121
|
+
this.blendSrcAlpha = source.blendSrcAlpha;
|
|
122
|
+
this.blendDstAlpha = source.blendDstAlpha;
|
|
123
|
+
this.blendEquationAlpha = source.blendEquationAlpha;
|
|
124
|
+
this.premultiplyAlpha = source.premultiplyAlpha;
|
|
125
|
+
|
|
126
|
+
return this;
|
|
127
|
+
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Returns a clone of this blending configuration.
|
|
132
|
+
*
|
|
133
|
+
* @return {BlendMode} A new Blending instance with the same properties.
|
|
134
|
+
*/
|
|
135
|
+
clone() {
|
|
136
|
+
|
|
137
|
+
return new this.constructor().copy( this );
|
|
138
|
+
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
export default BlendMode;
|
|
@@ -44,6 +44,46 @@ class Buffer extends Binding {
|
|
|
44
44
|
*/
|
|
45
45
|
this._buffer = buffer;
|
|
46
46
|
|
|
47
|
+
/**
|
|
48
|
+
* An array of update ranges.
|
|
49
|
+
*
|
|
50
|
+
* @private
|
|
51
|
+
* @type {Array<{start: number, count: number}>}
|
|
52
|
+
*/
|
|
53
|
+
this._updateRanges = [];
|
|
54
|
+
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* The array of update ranges.
|
|
59
|
+
*
|
|
60
|
+
* @type {Array<{start: number, count: number}>}
|
|
61
|
+
*/
|
|
62
|
+
get updateRanges() {
|
|
63
|
+
|
|
64
|
+
return this._updateRanges;
|
|
65
|
+
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Adds an update range.
|
|
70
|
+
*
|
|
71
|
+
* @param {number} start - The start index.
|
|
72
|
+
* @param {number} count - The number of elements.
|
|
73
|
+
*/
|
|
74
|
+
addUpdateRange( start, count ) {
|
|
75
|
+
|
|
76
|
+
this.updateRanges.push( { start, count } );
|
|
77
|
+
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Clears all update ranges.
|
|
82
|
+
*/
|
|
83
|
+
clearUpdateRanges() {
|
|
84
|
+
|
|
85
|
+
this.updateRanges.length = 0;
|
|
86
|
+
|
|
47
87
|
}
|
|
48
88
|
|
|
49
89
|
/**
|
|
@@ -82,6 +122,15 @@ class Buffer extends Binding {
|
|
|
82
122
|
|
|
83
123
|
}
|
|
84
124
|
|
|
125
|
+
/**
|
|
126
|
+
* Releases the buffer.
|
|
127
|
+
*/
|
|
128
|
+
release() {
|
|
129
|
+
|
|
130
|
+
this._buffer = null;
|
|
131
|
+
|
|
132
|
+
}
|
|
133
|
+
|
|
85
134
|
}
|
|
86
135
|
|
|
87
136
|
export default Buffer;
|
|
@@ -44,7 +44,7 @@ class BundleGroup extends Group {
|
|
|
44
44
|
/**
|
|
45
45
|
* Whether the bundle is static or not. When set to `true`, the structure
|
|
46
46
|
* is assumed to be static and does not change. E.g. no new objects are
|
|
47
|
-
* added to the group
|
|
47
|
+
* added to the group.
|
|
48
48
|
*
|
|
49
49
|
* If a change is required, an update can still be forced by setting the
|
|
50
50
|
* `needsUpdate` flag to `true`.
|
|
@@ -14,11 +14,35 @@ class ChainMap {
|
|
|
14
14
|
constructor() {
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* A map of Weak Maps by their key length.
|
|
18
18
|
*
|
|
19
|
-
* @type {
|
|
19
|
+
* @type {Object<number, WeakMap>}
|
|
20
20
|
*/
|
|
21
|
-
this.
|
|
21
|
+
this.weakMaps = {};
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Returns the Weak Map for the given keys.
|
|
28
|
+
*
|
|
29
|
+
* @param {Array<Object>} keys - List of keys.
|
|
30
|
+
* @return {WeakMap} The weak map.
|
|
31
|
+
*/
|
|
32
|
+
_getWeakMap( keys ) {
|
|
33
|
+
|
|
34
|
+
const length = keys.length;
|
|
35
|
+
|
|
36
|
+
let weakMap = this.weakMaps[ length ];
|
|
37
|
+
|
|
38
|
+
if ( weakMap === undefined ) {
|
|
39
|
+
|
|
40
|
+
weakMap = new WeakMap();
|
|
41
|
+
this.weakMaps[ length ] = weakMap;
|
|
42
|
+
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return weakMap;
|
|
22
46
|
|
|
23
47
|
}
|
|
24
48
|
|
|
@@ -30,7 +54,7 @@ class ChainMap {
|
|
|
30
54
|
*/
|
|
31
55
|
get( keys ) {
|
|
32
56
|
|
|
33
|
-
let map = this.
|
|
57
|
+
let map = this._getWeakMap( keys );
|
|
34
58
|
|
|
35
59
|
for ( let i = 0; i < keys.length - 1; i ++ ) {
|
|
36
60
|
|
|
@@ -53,7 +77,7 @@ class ChainMap {
|
|
|
53
77
|
*/
|
|
54
78
|
set( keys, value ) {
|
|
55
79
|
|
|
56
|
-
let map = this.
|
|
80
|
+
let map = this._getWeakMap( keys );
|
|
57
81
|
|
|
58
82
|
for ( let i = 0; i < keys.length - 1; i ++ ) {
|
|
59
83
|
|
|
@@ -79,7 +103,7 @@ class ChainMap {
|
|
|
79
103
|
*/
|
|
80
104
|
delete( keys ) {
|
|
81
105
|
|
|
82
|
-
let map = this.
|
|
106
|
+
let map = this._getWeakMap( keys );
|
|
83
107
|
|
|
84
108
|
for ( let i = 0; i < keys.length - 1; i ++ ) {
|
|
85
109
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Matrix3 } from '../../math/Matrix3.js';
|
|
2
|
+
import { Matrix4 } from '../../math/Matrix4.js';
|
|
2
3
|
import { Plane } from '../../math/Plane.js';
|
|
3
4
|
import { Vector4 } from '../../math/Vector4.js';
|
|
4
5
|
|
|
@@ -52,6 +53,13 @@ class ClippingContext {
|
|
|
52
53
|
*/
|
|
53
54
|
this.shadowPass = false;
|
|
54
55
|
|
|
56
|
+
/**
|
|
57
|
+
* The view matrix.
|
|
58
|
+
*
|
|
59
|
+
* @type {Matrix4}
|
|
60
|
+
*/
|
|
61
|
+
this.viewMatrix = new Matrix4();
|
|
62
|
+
|
|
55
63
|
/**
|
|
56
64
|
* The view normal matrix.
|
|
57
65
|
*
|
|
@@ -90,11 +98,11 @@ class ClippingContext {
|
|
|
90
98
|
|
|
91
99
|
if ( parentContext !== null ) {
|
|
92
100
|
|
|
101
|
+
this.viewMatrix = parentContext.viewMatrix;
|
|
93
102
|
this.viewNormalMatrix = parentContext.viewNormalMatrix;
|
|
94
103
|
this.clippingGroupContexts = parentContext.clippingGroupContexts;
|
|
95
104
|
|
|
96
105
|
this.shadowPass = parentContext.shadowPass;
|
|
97
|
-
this.viewMatrix = parentContext.viewMatrix;
|
|
98
106
|
|
|
99
107
|
}
|
|
100
108
|
|
|
@@ -137,8 +145,8 @@ class ClippingContext {
|
|
|
137
145
|
updateGlobal( scene, camera ) {
|
|
138
146
|
|
|
139
147
|
this.shadowPass = ( scene.overrideMaterial !== null && scene.overrideMaterial.isShadowPassMaterial );
|
|
140
|
-
this.viewMatrix = camera.matrixWorldInverse;
|
|
141
148
|
|
|
149
|
+
this.viewMatrix.copy( camera.matrixWorldInverse );
|
|
142
150
|
this.viewNormalMatrix.getNormalMatrix( this.viewMatrix );
|
|
143
151
|
|
|
144
152
|
}
|
|
@@ -9,7 +9,7 @@ import Pipeline from './Pipeline.js';
|
|
|
9
9
|
class ComputePipeline extends Pipeline {
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
* Constructs a new
|
|
12
|
+
* Constructs a new compute pipeline.
|
|
13
13
|
*
|
|
14
14
|
* @param {string} cacheKey - The pipeline's cache key.
|
|
15
15
|
* @param {ProgrammableStage} computeProgram - The pipeline's compute shader.
|