super-three 0.173.4 → 0.175.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/build/three.cjs +22198 -1564
- package/build/three.core.js +21287 -1346
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +882 -189
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +8 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +19358 -17482
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +19342 -17482
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +144 -42
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +194 -71
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +74 -30
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +51 -5
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +36 -1
- package/examples/jsm/loaders/DDSLoader.js +25 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +71 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +222 -9
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +87 -19
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +56 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +90 -70
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +105 -13
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +109 -73
- package/examples/jsm/misc/VolumeSlice.js +91 -48
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +75 -2
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +134 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +268 -134
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/AST.js +10 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +17 -3
- package/examples/jsm/transpiler/TSLEncoder.js +83 -15
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +24 -25
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +2 -3
- package/examples/jsm/tsl/display/AnamorphicNode.js +8 -9
- package/examples/jsm/tsl/display/BleachBypass.js +1 -2
- package/examples/jsm/tsl/display/BloomNode.js +15 -16
- package/examples/jsm/tsl/display/DenoiseNode.js +9 -10
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +5 -6
- package/examples/jsm/tsl/display/DotScreenNode.js +5 -6
- package/examples/jsm/tsl/display/FXAANode.js +2 -3
- package/examples/jsm/tsl/display/FilmNode.js +9 -8
- package/examples/jsm/tsl/display/GTAONode.js +11 -12
- package/examples/jsm/tsl/display/GaussianBlurNode.js +14 -14
- package/examples/jsm/tsl/display/LensflareNode.js +15 -16
- package/examples/jsm/tsl/display/Lut3DNode.js +4 -5
- package/examples/jsm/tsl/display/MotionBlur.js +1 -2
- package/examples/jsm/tsl/display/OutlineNode.js +7 -8
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -3
- package/examples/jsm/tsl/display/PixelationPassNode.js +14 -15
- package/examples/jsm/tsl/display/RGBShiftNode.js +5 -6
- package/examples/jsm/tsl/display/SMAANode.js +13 -7
- package/examples/jsm/tsl/display/SSAAPassNode.js +7 -7
- package/examples/jsm/tsl/display/SSRNode.js +6 -7
- package/examples/jsm/tsl/display/Sepia.js +1 -2
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -3
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +4 -4
- package/examples/jsm/tsl/display/StereoPassNode.js +2 -3
- package/examples/jsm/tsl/display/TRAAPassNode.js +11 -10
- package/examples/jsm/tsl/display/TransitionNode.js +4 -5
- package/examples/jsm/tsl/display/hashBlur.js +1 -2
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +33 -7
- package/examples/jsm/tsl/math/Bayer.js +31 -0
- package/examples/jsm/tsl/utils/Raymarching.js +67 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +3 -4
- package/src/Three.TSL.js +7 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +169 -19
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/Audio.js +339 -0
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +76 -0
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +28 -0
- package/src/cameras/Camera.js +47 -0
- package/src/cameras/CubeCamera.js +66 -0
- package/src/cameras/OrthographicCamera.js +109 -0
- package/src/cameras/PerspectiveCamera.js +163 -40
- package/src/cameras/StereoCamera.js +46 -0
- package/src/constants.js +1429 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/EventDispatcher.js +44 -2
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +593 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +170 -11
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +88 -1
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +13 -780
- package/src/extras/ImageUtils.js +20 -2
- package/src/extras/PMREMGenerator.js +41 -25
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +95 -15
- package/src/extras/core/Curve.js +150 -50
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +29 -3
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +63 -0
- package/src/extras/core/ShapePath.js +76 -0
- package/src/extras/curves/ArcCurve.js +22 -0
- package/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/src/extras/curves/CubicBezierCurve.js +67 -0
- package/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/src/extras/curves/EllipseCurve.js +102 -0
- package/src/extras/curves/LineCurve.js +36 -0
- package/src/extras/curves/LineCurve3.js +36 -0
- package/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/src/extras/curves/SplineCurve.js +48 -0
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/BoxGeometry.js +38 -0
- package/src/geometries/CapsuleGeometry.js +34 -0
- package/src/geometries/CircleGeometry.js +40 -0
- package/src/geometries/ConeGeometry.js +38 -0
- package/src/geometries/CylinderGeometry.js +39 -0
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +28 -0
- package/src/geometries/ExtrudeGeometry.js +112 -28
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +40 -0
- package/src/geometries/OctahedronGeometry.js +32 -0
- package/src/geometries/PlaneGeometry.js +34 -0
- package/src/geometries/PolyhedronGeometry.js +29 -0
- package/src/geometries/RingGeometry.js +36 -0
- package/src/geometries/ShapeGeometry.js +37 -0
- package/src/geometries/SphereGeometry.js +37 -0
- package/src/geometries/TetrahedronGeometry.js +32 -0
- package/src/geometries/TorusGeometry.js +35 -0
- package/src/geometries/TorusKnotGeometry.js +38 -0
- package/src/geometries/TubeGeometry.js +49 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +60 -3
- package/src/helpers/AxesHelper.js +28 -0
- package/src/helpers/Box3Helper.js +28 -0
- package/src/helpers/BoxHelper.js +43 -7
- package/src/helpers/CameraHelper.js +45 -5
- package/src/helpers/DirectionalLightHelper.js +52 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +39 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -0
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +39 -2
- package/src/helpers/SpotLightHelper.js +40 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +57 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +32 -0
- package/src/lights/Light.js +36 -0
- package/src/lights/LightProbe.js +43 -0
- package/src/lights/LightShadow.js +159 -0
- package/src/lights/PointLight.js +59 -0
- package/src/lights/PointLightShadow.js +21 -0
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +102 -0
- package/src/lights/SpotLightShadow.js +22 -0
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +130 -0
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +53 -0
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +13 -9
- package/src/loaders/nodes/NodeMaterialLoader.js +6 -6
- package/src/loaders/nodes/NodeObjectLoader.js +12 -12
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +481 -4
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +14 -14
- package/src/materials/nodes/LineBasicNodeMaterial.js +3 -3
- package/src/materials/nodes/LineDashedNodeMaterial.js +12 -12
- package/src/materials/nodes/MeshBasicNodeMaterial.js +7 -7
- package/src/materials/nodes/MeshLambertNodeMaterial.js +5 -5
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +3 -3
- package/src/materials/nodes/MeshNormalNodeMaterial.js +8 -4
- package/src/materials/nodes/MeshPhongNodeMaterial.js +9 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +43 -43
- package/src/materials/nodes/MeshSSSNodeMaterial.js +18 -21
- package/src/materials/nodes/MeshStandardNodeMaterial.js +11 -11
- package/src/materials/nodes/MeshToonNodeMaterial.js +4 -4
- package/src/materials/nodes/NodeMaterial.js +66 -47
- package/src/materials/nodes/PointsNodeMaterial.js +6 -6
- package/src/materials/nodes/ShadowNodeMaterial.js +13 -4
- package/src/materials/nodes/SpriteNodeMaterial.js +17 -9
- package/src/materials/nodes/VolumeNodeMaterial.js +25 -128
- package/src/materials/nodes/manager/NodeMaterialObserver.js +8 -8
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +137 -4
- package/src/math/Frustum.js +83 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +94 -0
- package/src/math/MathUtils.js +405 -19
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +368 -3
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +262 -6
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +70 -8
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +206 -2
- package/src/math/Vector2.js +388 -2
- package/src/math/Vector3.js +541 -4
- package/src/math/Vector4.js +393 -0
- package/src/math/interpolants/CubicInterpolant.js +10 -1
- package/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/src/math/interpolants/LinearInterpolant.js +13 -0
- package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/TSL.js +1 -0
- package/src/nodes/accessors/AccessorsUtils.js +4 -2
- package/src/nodes/accessors/Arrays.js +6 -6
- package/src/nodes/accessors/BatchNode.js +10 -11
- package/src/nodes/accessors/Bitangent.js +6 -2
- package/src/nodes/accessors/BufferAttributeNode.js +33 -31
- package/src/nodes/accessors/BufferNode.js +12 -13
- package/src/nodes/accessors/BuiltinNode.js +7 -8
- package/src/nodes/accessors/Camera.js +9 -2
- package/src/nodes/accessors/ClippingNode.js +4 -4
- package/src/nodes/accessors/CubeTextureNode.js +17 -19
- package/src/nodes/accessors/InstanceNode.js +10 -11
- package/src/nodes/accessors/InstancedMeshNode.js +3 -4
- package/src/nodes/accessors/Lights.js +12 -15
- package/src/nodes/accessors/MaterialNode.js +45 -9
- package/src/nodes/accessors/MaterialProperties.js +51 -2
- package/src/nodes/accessors/MaterialReferenceNode.js +11 -12
- package/src/nodes/accessors/ModelNode.js +20 -3
- package/src/nodes/accessors/ModelViewProjectionNode.js +1 -2
- package/src/nodes/accessors/MorphNode.js +29 -26
- package/src/nodes/accessors/Normal.js +11 -3
- package/src/nodes/accessors/Object3DNode.js +51 -16
- package/src/nodes/accessors/PointUVNode.js +2 -3
- package/src/nodes/accessors/Position.js +8 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +29 -29
- package/src/nodes/accessors/ReferenceNode.js +31 -31
- package/src/nodes/accessors/ReflectVector.js +4 -2
- package/src/nodes/accessors/RendererReferenceNode.js +9 -10
- package/src/nodes/accessors/SceneNode.js +5 -4
- package/src/nodes/accessors/SkinningNode.js +53 -44
- package/src/nodes/accessors/StorageBufferNode.js +24 -24
- package/src/nodes/accessors/StorageTextureNode.js +17 -17
- package/src/nodes/accessors/Tangent.js +6 -2
- package/src/nodes/accessors/Texture3DNode.js +11 -12
- package/src/nodes/accessors/TextureBicubic.js +2 -3
- package/src/nodes/accessors/TextureNode.js +68 -47
- package/src/nodes/accessors/TextureSizeNode.js +5 -6
- package/src/nodes/accessors/UV.js +2 -3
- package/src/nodes/accessors/UniformArrayNode.js +24 -24
- package/src/nodes/accessors/UserDataNode.js +11 -12
- package/src/nodes/accessors/VelocityNode.js +4 -5
- package/src/nodes/accessors/VertexColorNode.js +7 -8
- package/src/nodes/code/CodeNode.js +15 -13
- package/src/nodes/code/ExpressionNode.js +8 -9
- package/src/nodes/code/FunctionCallNode.js +29 -9
- package/src/nodes/code/FunctionNode.js +1 -1
- package/src/nodes/code/ScriptableNode.js +27 -28
- package/src/nodes/code/ScriptableValueNode.js +11 -12
- package/src/nodes/core/ArrayNode.js +29 -12
- package/src/nodes/core/AssignNode.js +4 -5
- package/src/nodes/core/AttributeNode.js +8 -9
- package/src/nodes/core/BypassNode.js +3 -4
- package/src/nodes/core/CacheNode.js +5 -6
- package/src/nodes/core/ConstNode.js +4 -4
- package/src/nodes/core/ContextNode.js +9 -9
- package/src/nodes/core/IndexNode.js +8 -4
- package/src/nodes/core/InputNode.js +7 -7
- package/src/nodes/core/LightingModel.js +17 -17
- package/src/nodes/core/MRTNode.js +9 -10
- package/src/nodes/core/Node.js +49 -37
- package/src/nodes/core/NodeAttribute.js +7 -7
- package/src/nodes/core/NodeBuilder.js +248 -175
- package/src/nodes/core/NodeCache.js +4 -4
- package/src/nodes/core/NodeCode.js +6 -6
- package/src/nodes/core/NodeFrame.js +10 -10
- package/src/nodes/core/NodeFunction.js +8 -8
- package/src/nodes/core/NodeFunctionInput.js +8 -8
- package/src/nodes/core/NodeParser.js +1 -1
- package/src/nodes/core/NodeUniform.js +7 -7
- package/src/nodes/core/NodeUtils.js +22 -24
- package/src/nodes/core/NodeVar.js +9 -9
- package/src/nodes/core/NodeVarying.js +4 -4
- package/src/nodes/core/OutputStructNode.js +2 -3
- package/src/nodes/core/ParameterNode.js +6 -7
- package/src/nodes/core/PropertyNode.js +41 -13
- package/src/nodes/core/StackNode.js +11 -12
- package/src/nodes/core/StructNode.js +2 -3
- package/src/nodes/core/StructTypeNode.js +10 -6
- package/src/nodes/core/TempNode.js +3 -3
- package/src/nodes/core/UniformGroupNode.js +15 -12
- package/src/nodes/core/UniformNode.js +9 -10
- package/src/nodes/core/VarNode.js +14 -18
- package/src/nodes/core/VaryingNode.js +10 -10
- package/src/nodes/core/constants.js +0 -2
- package/src/nodes/display/BlendModes.js +21 -14
- package/src/nodes/display/BumpMapNode.js +5 -6
- package/src/nodes/display/ColorAdjustment.js +13 -9
- package/src/nodes/display/ColorSpaceFunctions.js +4 -4
- package/src/nodes/display/ColorSpaceNode.js +15 -12
- package/src/nodes/display/FrontFacingNode.js +3 -3
- package/src/nodes/display/NormalMapNode.js +5 -6
- package/src/nodes/display/PassNode.js +122 -35
- package/src/nodes/display/PosterizeNode.js +2 -3
- package/src/nodes/display/RenderOutputNode.js +8 -9
- package/src/nodes/display/ScreenNode.js +16 -7
- package/src/nodes/display/ToneMappingFunctions.js +12 -8
- package/src/nodes/display/ToneMappingNode.js +8 -8
- package/src/nodes/display/ToonOutlinePassNode.js +3 -4
- package/src/nodes/display/ViewportDepthNode.js +15 -7
- package/src/nodes/display/ViewportDepthTextureNode.js +6 -7
- package/src/nodes/display/ViewportSharedTextureNode.js +6 -7
- package/src/nodes/display/ViewportTextureNode.js +16 -16
- package/src/nodes/fog/Fog.js +5 -2
- package/src/nodes/functions/BSDF/LTC.js +45 -1
- package/src/nodes/functions/BasicLightingModel.js +5 -8
- package/src/nodes/functions/PhongLightingModel.js +6 -8
- package/src/nodes/functions/PhysicalLightingModel.js +40 -42
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/ToonLightingModel.js +5 -6
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +8 -8
- package/src/nodes/geometry/RangeNode.js +4 -5
- package/src/nodes/gpgpu/AtomicFunctionNode.js +33 -48
- package/src/nodes/gpgpu/BarrierNode.js +6 -4
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +26 -31
- package/src/nodes/gpgpu/ComputeNode.js +43 -16
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +16 -17
- package/src/nodes/lighting/AONode.js +2 -2
- package/src/nodes/lighting/AmbientLightNode.js +1 -1
- package/src/nodes/lighting/AnalyticLightNode.js +50 -9
- package/src/nodes/lighting/BasicLightMapNode.js +2 -2
- package/src/nodes/lighting/DirectionalLightNode.js +3 -12
- package/src/nodes/lighting/EnvironmentNode.js +5 -8
- package/src/nodes/lighting/HemisphereLightNode.js +1 -1
- package/src/nodes/lighting/LightProbeNode.js +1 -1
- package/src/nodes/lighting/LightUtils.js +1 -5
- package/src/nodes/lighting/LightingContextNode.js +10 -10
- package/src/nodes/lighting/LightingNode.js +1 -1
- package/src/nodes/lighting/LightsNode.js +68 -25
- package/src/nodes/lighting/PointLightNode.js +12 -27
- package/src/nodes/lighting/PointShadowNode.js +5 -6
- package/src/nodes/lighting/RectAreaLightNode.js +5 -10
- package/src/nodes/lighting/ShadowBaseNode.js +8 -9
- package/src/nodes/lighting/ShadowNode.js +28 -15
- package/src/nodes/lighting/SpotLightNode.js +8 -19
- package/src/nodes/math/ConditionalNode.js +26 -9
- package/src/nodes/math/Hash.js +2 -3
- package/src/nodes/math/MathNode.js +217 -150
- package/src/nodes/math/MathUtils.js +8 -6
- package/src/nodes/math/OperatorNode.js +198 -89
- package/src/nodes/math/TriNoise3D.js +2 -3
- package/src/nodes/parsers/GLSLNodeFunction.js +3 -3
- package/src/nodes/parsers/GLSLNodeParser.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +61 -37
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/procedural/Checker.js +2 -3
- package/src/nodes/shapes/Shapes.js +2 -3
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +117 -19
- package/src/nodes/utils/ArrayElementNode.js +5 -3
- package/src/nodes/utils/ConvertNode.js +3 -3
- package/src/nodes/utils/CubeMapNode.js +7 -8
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/Discard.js +5 -5
- package/src/nodes/utils/EquirectUVNode.js +3 -4
- package/src/nodes/utils/FlipNode.js +3 -3
- package/src/nodes/utils/FunctionOverloadingNode.js +3 -4
- package/src/nodes/utils/JoinNode.js +29 -4
- package/src/nodes/utils/LoopNode.js +67 -35
- package/src/nodes/utils/MatcapUVNode.js +1 -2
- package/src/nodes/utils/MaxMipLevelNode.js +4 -5
- package/src/nodes/utils/MemberNode.js +2 -2
- package/src/nodes/utils/Oscillators.js +8 -6
- package/src/nodes/utils/Packing.js +4 -4
- package/src/nodes/utils/PostProcessingUtils.js +6 -5
- package/src/nodes/utils/RTTNode.js +19 -19
- package/src/nodes/utils/ReflectorNode.js +35 -25
- package/src/nodes/utils/RemapNode.js +9 -9
- package/src/nodes/utils/RotateNode.js +3 -4
- package/src/nodes/utils/SetNode.js +3 -3
- package/src/nodes/utils/SplitNode.js +5 -5
- package/src/nodes/utils/SpriteSheetUVNode.js +4 -5
- package/src/nodes/utils/SpriteUtils.js +5 -6
- package/src/nodes/utils/StorageArrayElementNode.js +3 -4
- package/src/nodes/utils/Timer.js +9 -5
- package/src/nodes/utils/TriplanarTexturesNode.js +20 -20
- package/src/nodes/utils/UVUtils.js +4 -4
- package/src/nodes/utils/ViewportUtils.js +3 -4
- package/src/objects/BatchedMesh.js +319 -32
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +4 -4
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +99 -5
- package/src/objects/Line.js +82 -0
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +75 -0
- package/src/objects/Points.js +60 -0
- package/src/objects/Skeleton.js +105 -0
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +622 -83
- package/src/renderers/common/Animation.js +6 -6
- package/src/renderers/common/Attributes.js +3 -3
- package/src/renderers/common/Backend.js +40 -31
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/BindGroup.js +5 -5
- package/src/renderers/common/Binding.js +4 -4
- package/src/renderers/common/Bindings.js +10 -0
- package/src/renderers/common/Buffer.js +5 -5
- package/src/renderers/common/BufferUtils.js +7 -9
- package/src/renderers/common/BundleGroup.js +6 -6
- package/src/renderers/common/ChainMap.js +3 -3
- package/src/renderers/common/ClippingContext.js +8 -8
- package/src/renderers/common/Color4.js +8 -8
- package/src/renderers/common/ComputePipeline.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/DataMap.js +2 -2
- package/src/renderers/common/Geometries.js +6 -6
- package/src/renderers/common/IndirectStorageBufferAttribute.js +3 -3
- package/src/renderers/common/Info.js +17 -17
- package/src/renderers/common/Pipeline.js +3 -3
- package/src/renderers/common/Pipelines.js +12 -12
- package/src/renderers/common/PostProcessing.js +13 -1
- package/src/renderers/common/ProgrammableStage.js +11 -11
- package/src/renderers/common/QuadMesh.js +5 -3
- package/src/renderers/common/RenderContext.js +24 -24
- package/src/renderers/common/RenderContexts.js +4 -4
- package/src/renderers/common/RenderList.js +16 -16
- package/src/renderers/common/RenderObject.js +27 -27
- package/src/renderers/common/RenderObjects.js +4 -4
- package/src/renderers/common/RenderPipeline.js +1 -1
- package/src/renderers/common/Renderer.js +272 -200
- package/src/renderers/common/RendererUtils.js +0 -2
- package/src/renderers/common/SampledTexture.js +20 -20
- package/src/renderers/common/Sampler.js +5 -5
- package/src/renderers/common/StorageBuffer.js +2 -2
- package/src/renderers/common/StorageBufferAttribute.js +4 -4
- package/src/renderers/common/StorageInstancedBufferAttribute.js +4 -4
- package/src/renderers/common/StorageTexture.js +6 -6
- package/src/renderers/common/Textures.js +6 -6
- package/src/renderers/common/TimestampQueryPool.js +66 -7
- package/src/renderers/common/Uniform.js +26 -26
- package/src/renderers/common/UniformBuffer.js +2 -2
- package/src/renderers/common/UniformsGroup.js +18 -18
- package/src/renderers/common/XRManager.js +369 -54
- package/src/renderers/common/XRRenderTarget.js +5 -5
- package/src/renderers/common/extras/PMREMGenerator.js +62 -37
- package/src/renderers/common/nodes/NodeBuilderState.js +7 -7
- package/src/renderers/common/nodes/NodeLibrary.js +13 -13
- package/src/renderers/common/nodes/NodeSampledTexture.js +12 -12
- package/src/renderers/common/nodes/NodeSampler.js +1 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
- package/src/renderers/common/nodes/NodeUniform.js +9 -9
- package/src/renderers/common/nodes/NodeUniformsGroup.js +3 -3
- package/src/renderers/common/nodes/Nodes.js +13 -13
- package/src/renderers/shaders/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLState.js +19 -19
- package/src/renderers/webgl-fallback/WebGLBackend.js +163 -146
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +4 -4
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +89 -99
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +5 -5
- package/src/renderers/webgl-fallback/utils/WebGLState.js +97 -47
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +79 -31
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +37 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -3
- package/src/renderers/webgpu/WebGPUBackend.js +200 -119
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +3 -13
- package/src/renderers/webgpu/WebGPURenderer.js +19 -13
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +171 -178
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -3
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +43 -9
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +2 -2
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +18 -10
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +9 -9
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +37 -37
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +31 -18
- package/src/renderers/webgpu/utils/WebGPUUtils.js +9 -9
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +187 -11
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +88 -0
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +61 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +362 -3
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -151,7 +151,7 @@ class WGSLNodeFunction extends NodeFunction {
|
|
|
151
151
|
/**
|
|
152
152
|
* Constructs a new WGSL node function.
|
|
153
153
|
*
|
|
154
|
-
* @param {
|
|
154
|
+
* @param {string} source - The WGSL source.
|
|
155
155
|
*/
|
|
156
156
|
constructor( source ) {
|
|
157
157
|
|
|
@@ -168,8 +168,8 @@ class WGSLNodeFunction extends NodeFunction {
|
|
|
168
168
|
/**
|
|
169
169
|
* This method returns the WGSL code of the node function.
|
|
170
170
|
*
|
|
171
|
-
* @param {
|
|
172
|
-
* @return {
|
|
171
|
+
* @param {string} [name=this.name] - The function's name.
|
|
172
|
+
* @return {string} The shader code.
|
|
173
173
|
*/
|
|
174
174
|
getCode( name = this.name ) {
|
|
175
175
|
|
|
@@ -11,7 +11,7 @@ class WGSLNodeParser extends NodeParser {
|
|
|
11
11
|
/**
|
|
12
12
|
* The method parses the given WGSL code an returns a node function.
|
|
13
13
|
*
|
|
14
|
-
* @param {
|
|
14
|
+
* @param {string} source - The WGSL code.
|
|
15
15
|
* @return {WGSLNodeFunction} A node function.
|
|
16
16
|
*/
|
|
17
17
|
parseFunction( source ) {
|
|
@@ -71,11 +71,11 @@ class WebGPUAttributeUtils {
|
|
|
71
71
|
// patch for INT16 and UINT16
|
|
72
72
|
if ( attribute.normalized === false ) {
|
|
73
73
|
|
|
74
|
-
if ( array.constructor === Int16Array ) {
|
|
74
|
+
if ( array.constructor === Int16Array || array.constructor === Int8Array ) {
|
|
75
75
|
|
|
76
76
|
array = new Int32Array( array );
|
|
77
77
|
|
|
78
|
-
} else if ( array.constructor === Uint16Array ) {
|
|
78
|
+
} else if ( array.constructor === Uint16Array || array.constructor === Uint8Array ) {
|
|
79
79
|
|
|
80
80
|
array = new Uint32Array( array );
|
|
81
81
|
|
|
@@ -109,6 +109,8 @@ class WebGPUAttributeUtils {
|
|
|
109
109
|
bufferAttribute.itemSize = 4;
|
|
110
110
|
bufferAttribute.array = array;
|
|
111
111
|
|
|
112
|
+
bufferData._force3to4BytesAlignment = true;
|
|
113
|
+
|
|
112
114
|
}
|
|
113
115
|
|
|
114
116
|
const size = array.byteLength + ( ( 4 - ( array.byteLength % 4 ) ) % 4 ); // ensure 4 byte alignment, see #20441
|
|
@@ -142,9 +144,27 @@ class WebGPUAttributeUtils {
|
|
|
142
144
|
const backend = this.backend;
|
|
143
145
|
const device = backend.device;
|
|
144
146
|
|
|
147
|
+
const bufferData = backend.get( bufferAttribute );
|
|
145
148
|
const buffer = backend.get( bufferAttribute ).buffer;
|
|
146
149
|
|
|
147
|
-
|
|
150
|
+
let array = bufferAttribute.array;
|
|
151
|
+
|
|
152
|
+
// if storage buffer ensure 4 byte alignment
|
|
153
|
+
if ( bufferData._force3to4BytesAlignment === true ) {
|
|
154
|
+
|
|
155
|
+
array = new array.constructor( bufferAttribute.count * 4 );
|
|
156
|
+
|
|
157
|
+
for ( let i = 0; i < bufferAttribute.count; i ++ ) {
|
|
158
|
+
|
|
159
|
+
array.set( bufferAttribute.array.subarray( i * 3, i * 3 + 3 ), i * 4 );
|
|
160
|
+
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
bufferAttribute.array = array;
|
|
164
|
+
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
|
|
148
168
|
const isTypedArray = this._isTypedArray( array );
|
|
149
169
|
const updateRanges = bufferAttribute.updateRanges;
|
|
150
170
|
|
|
@@ -166,13 +186,27 @@ class WebGPUAttributeUtils {
|
|
|
166
186
|
for ( let i = 0, l = updateRanges.length; i < l; i ++ ) {
|
|
167
187
|
|
|
168
188
|
const range = updateRanges[ i ];
|
|
189
|
+
let dataOffset, size;
|
|
190
|
+
|
|
191
|
+
if ( bufferData._force3to4BytesAlignment === true ) {
|
|
192
|
+
|
|
193
|
+
const vertexStart = Math.floor( range.start / 3 );
|
|
194
|
+
const vertexCount = Math.ceil( range.count / 3 );
|
|
195
|
+
dataOffset = vertexStart * 4 * byteOffsetFactor;
|
|
196
|
+
size = vertexCount * 4 * byteOffsetFactor;
|
|
197
|
+
|
|
198
|
+
} else {
|
|
199
|
+
|
|
200
|
+
dataOffset = range.start * byteOffsetFactor;
|
|
201
|
+
size = range.count * byteOffsetFactor;
|
|
202
|
+
|
|
203
|
+
}
|
|
169
204
|
|
|
170
|
-
const
|
|
171
|
-
const size = range.count * byteOffsetFactor;
|
|
205
|
+
const bufferOffset = dataOffset * ( isTypedArray ? array.BYTES_PER_ELEMENT : 1 ); // bufferOffset is always in bytes
|
|
172
206
|
|
|
173
207
|
device.queue.writeBuffer(
|
|
174
208
|
buffer,
|
|
175
|
-
|
|
209
|
+
bufferOffset,
|
|
176
210
|
array,
|
|
177
211
|
dataOffset,
|
|
178
212
|
size
|
|
@@ -325,7 +359,7 @@ class WebGPUAttributeUtils {
|
|
|
325
359
|
*
|
|
326
360
|
* @private
|
|
327
361
|
* @param {BufferAttribute} geometryAttribute - The buffer attribute.
|
|
328
|
-
* @return {
|
|
362
|
+
* @return {string|undefined} The vertex format (e.g. 'float32x3').
|
|
329
363
|
*/
|
|
330
364
|
_getVertexFormat( geometryAttribute ) {
|
|
331
365
|
|
|
@@ -376,8 +410,8 @@ class WebGPUAttributeUtils {
|
|
|
376
410
|
* Returns `true` if the given array is a typed array.
|
|
377
411
|
*
|
|
378
412
|
* @private
|
|
379
|
-
* @param {
|
|
380
|
-
* @return {
|
|
413
|
+
* @param {any} array - The array.
|
|
414
|
+
* @return {boolean} Whether the given array is a typed array or not.
|
|
381
415
|
*/
|
|
382
416
|
_isTypedArray( array ) {
|
|
383
417
|
|
|
@@ -220,8 +220,8 @@ class WebGPUBindingUtils {
|
|
|
220
220
|
*
|
|
221
221
|
* @param {BindGroup} bindGroup - The bind group.
|
|
222
222
|
* @param {Array<BindGroup>} bindings - Array of bind groups.
|
|
223
|
-
* @param {
|
|
224
|
-
* @param {
|
|
223
|
+
* @param {number} cacheIndex - The cache index.
|
|
224
|
+
* @param {number} version - The version.
|
|
225
225
|
*/
|
|
226
226
|
createBindings( bindGroup, bindings, cacheIndex, version = 0 ) {
|
|
227
227
|
|
|
@@ -43,7 +43,7 @@ class WebGPUPipelineUtils {
|
|
|
43
43
|
*
|
|
44
44
|
* @private
|
|
45
45
|
* @param {RenderContext} renderContext - The render context.
|
|
46
|
-
* @return {
|
|
46
|
+
* @return {number} The sample count.
|
|
47
47
|
*/
|
|
48
48
|
_getSampleCount( renderContext ) {
|
|
49
49
|
|
|
@@ -188,6 +188,14 @@ class WebGPUPipelineUtils {
|
|
|
188
188
|
|
|
189
189
|
}
|
|
190
190
|
|
|
191
|
+
if ( material.polygonOffset === true ) {
|
|
192
|
+
|
|
193
|
+
depthStencil.depthBias = material.polygonOffsetUnits;
|
|
194
|
+
depthStencil.depthBiasSlopeScale = material.polygonOffsetFactor;
|
|
195
|
+
depthStencil.depthBiasClamp = 0; // three.js does not provide an API to configure this value
|
|
196
|
+
|
|
197
|
+
}
|
|
198
|
+
|
|
191
199
|
pipelineDescriptor.depthStencil = depthStencil;
|
|
192
200
|
|
|
193
201
|
}
|
|
@@ -397,8 +405,8 @@ class WebGPUPipelineUtils {
|
|
|
397
405
|
* Returns the GPU blend factor which is required for the pipeline creation.
|
|
398
406
|
*
|
|
399
407
|
* @private
|
|
400
|
-
* @param {
|
|
401
|
-
* @return {
|
|
408
|
+
* @param {number} blend - The blend factor as a three.js constant.
|
|
409
|
+
* @return {string} The GPU blend factor.
|
|
402
410
|
*/
|
|
403
411
|
_getBlendFactor( blend ) {
|
|
404
412
|
|
|
@@ -472,7 +480,7 @@ class WebGPUPipelineUtils {
|
|
|
472
480
|
*
|
|
473
481
|
* @private
|
|
474
482
|
* @param {Material} material - The material.
|
|
475
|
-
* @return {
|
|
483
|
+
* @return {string} The GPU stencil compare function.
|
|
476
484
|
*/
|
|
477
485
|
_getStencilCompare( material ) {
|
|
478
486
|
|
|
@@ -527,8 +535,8 @@ class WebGPUPipelineUtils {
|
|
|
527
535
|
* Returns the GPU stencil operation which is required for the pipeline creation.
|
|
528
536
|
*
|
|
529
537
|
* @private
|
|
530
|
-
* @param {
|
|
531
|
-
* @return {
|
|
538
|
+
* @param {number} op - A three.js constant defining the stencil operation.
|
|
539
|
+
* @return {string} The GPU stencil operation.
|
|
532
540
|
*/
|
|
533
541
|
_getStencilOperation( op ) {
|
|
534
542
|
|
|
@@ -581,8 +589,8 @@ class WebGPUPipelineUtils {
|
|
|
581
589
|
* Returns the GPU blend operation which is required for the pipeline creation.
|
|
582
590
|
*
|
|
583
591
|
* @private
|
|
584
|
-
* @param {
|
|
585
|
-
* @return {
|
|
592
|
+
* @param {number} blendEquation - A three.js constant defining the blend equation.
|
|
593
|
+
* @return {string} The GPU blend operation.
|
|
586
594
|
*/
|
|
587
595
|
_getBlendOperation( blendEquation ) {
|
|
588
596
|
|
|
@@ -674,7 +682,7 @@ class WebGPUPipelineUtils {
|
|
|
674
682
|
*
|
|
675
683
|
* @private
|
|
676
684
|
* @param {Material} material - The material.
|
|
677
|
-
* @return {
|
|
685
|
+
* @return {string} The GPU color write mask.
|
|
678
686
|
*/
|
|
679
687
|
_getColorWriteMask( material ) {
|
|
680
688
|
|
|
@@ -687,7 +695,7 @@ class WebGPUPipelineUtils {
|
|
|
687
695
|
*
|
|
688
696
|
* @private
|
|
689
697
|
* @param {Material} material - The material.
|
|
690
|
-
* @return {
|
|
698
|
+
* @return {string} The GPU depth compare function.
|
|
691
699
|
*/
|
|
692
700
|
_getDepthCompare( material ) {
|
|
693
701
|
|
|
@@ -105,7 +105,7 @@ fn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {
|
|
|
105
105
|
* A cache for GPU render pipelines used for copy/transfer passes.
|
|
106
106
|
* Every texture format requires a unique pipeline.
|
|
107
107
|
*
|
|
108
|
-
* @type {Object<
|
|
108
|
+
* @type {Object<string,GPURenderPipeline>}
|
|
109
109
|
*/
|
|
110
110
|
this.transferPipelines = {};
|
|
111
111
|
|
|
@@ -113,7 +113,7 @@ fn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {
|
|
|
113
113
|
* A cache for GPU render pipelines used for flipY passes.
|
|
114
114
|
* Every texture format requires a unique pipeline.
|
|
115
115
|
*
|
|
116
|
-
* @type {Object<
|
|
116
|
+
* @type {Object<string,GPURenderPipeline>}
|
|
117
117
|
*/
|
|
118
118
|
this.flipYPipelines = {};
|
|
119
119
|
|
|
@@ -153,7 +153,7 @@ fn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {
|
|
|
153
153
|
* Returns a render pipeline for the internal copy render pass. The pass
|
|
154
154
|
* requires a unique render pipeline for each texture format.
|
|
155
155
|
*
|
|
156
|
-
* @param {
|
|
156
|
+
* @param {string} format - The GPU texture format
|
|
157
157
|
* @return {GPURenderPipeline} The GPU render pipeline.
|
|
158
158
|
*/
|
|
159
159
|
getTransferPipeline( format ) {
|
|
@@ -192,7 +192,7 @@ fn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {
|
|
|
192
192
|
* Returns a render pipeline for the flipY render pass. The pass
|
|
193
193
|
* requires a unique render pipeline for each texture format.
|
|
194
194
|
*
|
|
195
|
-
* @param {
|
|
195
|
+
* @param {string} format - The GPU texture format
|
|
196
196
|
* @return {GPURenderPipeline} The GPU render pipeline.
|
|
197
197
|
*/
|
|
198
198
|
getFlipYPipeline( format ) {
|
|
@@ -232,7 +232,7 @@ fn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {
|
|
|
232
232
|
*
|
|
233
233
|
* @param {GPUTexture} textureGPU - The GPU texture object.
|
|
234
234
|
* @param {Object} textureGPUDescriptor - The texture descriptor.
|
|
235
|
-
* @param {
|
|
235
|
+
* @param {number} [baseArrayLayer=0] - The index of the first array layer accessible to the texture view.
|
|
236
236
|
*/
|
|
237
237
|
flipY( textureGPU, textureGPUDescriptor, baseArrayLayer = 0 ) {
|
|
238
238
|
|
|
@@ -309,7 +309,7 @@ fn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {
|
|
|
309
309
|
*
|
|
310
310
|
* @param {GPUTexture} textureGPU - The GPU texture object.
|
|
311
311
|
* @param {Object} textureGPUDescriptor - The texture descriptor.
|
|
312
|
-
* @param {
|
|
312
|
+
* @param {number} [baseArrayLayer=0] - The index of the first array layer accessible to the texture view.
|
|
313
313
|
*/
|
|
314
314
|
generateMipmaps( textureGPU, textureGPUDescriptor, baseArrayLayer = 0 ) {
|
|
315
315
|
|
|
@@ -342,8 +342,8 @@ fn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {
|
|
|
342
342
|
*
|
|
343
343
|
* @param {GPUTexture} textureGPU - The GPU texture object.
|
|
344
344
|
* @param {Object} textureGPUDescriptor - The texture descriptor.
|
|
345
|
-
* @param {
|
|
346
|
-
* @return {Array} An array of render bundles.
|
|
345
|
+
* @param {number} baseArrayLayer - The index of the first array layer accessible to the texture view.
|
|
346
|
+
* @return {Array<Object>} An array of render bundles.
|
|
347
347
|
*/
|
|
348
348
|
_mipmapCreateBundles( textureGPU, textureGPUDescriptor, baseArrayLayer ) {
|
|
349
349
|
|
|
@@ -414,7 +414,7 @@ fn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {
|
|
|
414
414
|
* Executes the render bundles.
|
|
415
415
|
*
|
|
416
416
|
* @param {GPUCommandEncoder} commandEncoder - The GPU command encoder.
|
|
417
|
-
* @param {Array} passes - An array of render bundles.
|
|
417
|
+
* @param {Array<Object>} passes - An array of render bundles.
|
|
418
418
|
*/
|
|
419
419
|
_mipmapRunBundles( commandEncoder, passes ) {
|
|
420
420
|
|
|
@@ -56,7 +56,7 @@ class WebGPUTextureUtils {
|
|
|
56
56
|
/**
|
|
57
57
|
* A reference to the pass utils.
|
|
58
58
|
*
|
|
59
|
-
* @type {WebGPUTexturePassUtils
|
|
59
|
+
* @type {?WebGPUTexturePassUtils}
|
|
60
60
|
* @default null
|
|
61
61
|
*/
|
|
62
62
|
this._passUtils = null;
|
|
@@ -65,7 +65,7 @@ class WebGPUTextureUtils {
|
|
|
65
65
|
* A dictionary for managing default textures. The key
|
|
66
66
|
* is the texture format, the value the texture object.
|
|
67
67
|
*
|
|
68
|
-
* @type {Object<
|
|
68
|
+
* @type {Object<string,Texture>}
|
|
69
69
|
*/
|
|
70
70
|
this.defaultTexture = {};
|
|
71
71
|
|
|
@@ -73,14 +73,14 @@ class WebGPUTextureUtils {
|
|
|
73
73
|
* A dictionary for managing default cube textures. The key
|
|
74
74
|
* is the texture format, the value the texture object.
|
|
75
75
|
*
|
|
76
|
-
* @type {Object<
|
|
76
|
+
* @type {Object<string,CubeTexture>}
|
|
77
77
|
*/
|
|
78
78
|
this.defaultCubeTexture = {};
|
|
79
79
|
|
|
80
80
|
/**
|
|
81
81
|
* A default video frame.
|
|
82
82
|
*
|
|
83
|
-
* @type {VideoFrame
|
|
83
|
+
* @type {?VideoFrame}
|
|
84
84
|
* @default null
|
|
85
85
|
*/
|
|
86
86
|
this.defaultVideoFrame = null;
|
|
@@ -88,7 +88,7 @@ class WebGPUTextureUtils {
|
|
|
88
88
|
/**
|
|
89
89
|
* Represents the color attachment of the default framebuffer.
|
|
90
90
|
*
|
|
91
|
-
* @type {GPUTexture
|
|
91
|
+
* @type {?GPUTexture}
|
|
92
92
|
* @default null
|
|
93
93
|
*/
|
|
94
94
|
this.colorBuffer = null;
|
|
@@ -178,7 +178,6 @@ class WebGPUTextureUtils {
|
|
|
178
178
|
*
|
|
179
179
|
* @param {Texture} texture - The texture.
|
|
180
180
|
* @param {Object} [options={}] - Optional configuration parameter.
|
|
181
|
-
* @return {undefined}
|
|
182
181
|
*/
|
|
183
182
|
createTexture( texture, options = {} ) {
|
|
184
183
|
|
|
@@ -266,7 +265,8 @@ class WebGPUTextureUtils {
|
|
|
266
265
|
|
|
267
266
|
console.warn( 'WebGPURenderer: Texture format not supported.' );
|
|
268
267
|
|
|
269
|
-
|
|
268
|
+
this.createDefaultTexture( texture );
|
|
269
|
+
return;
|
|
270
270
|
|
|
271
271
|
}
|
|
272
272
|
|
|
@@ -387,8 +387,8 @@ class WebGPUTextureUtils {
|
|
|
387
387
|
* Returns the depth buffer representing the depth
|
|
388
388
|
* attachment of the default framebuffer.
|
|
389
389
|
*
|
|
390
|
-
* @param {
|
|
391
|
-
* @param {
|
|
390
|
+
* @param {boolean} [depth=true] - Whether depth is enabled or not.
|
|
391
|
+
* @param {boolean} [stencil=false] - Whether stencil is enabled or not.
|
|
392
392
|
* @return {GPUTexture} The depth buffer.
|
|
393
393
|
*/
|
|
394
394
|
getDepthBuffer( depth = true, stencil = false ) {
|
|
@@ -499,11 +499,11 @@ class WebGPUTextureUtils {
|
|
|
499
499
|
*
|
|
500
500
|
* @async
|
|
501
501
|
* @param {Texture} texture - The texture to copy.
|
|
502
|
-
* @param {
|
|
503
|
-
* @param {
|
|
504
|
-
* @param {
|
|
505
|
-
* @param {
|
|
506
|
-
* @param {
|
|
502
|
+
* @param {number} x - The x coordinate of the copy origin.
|
|
503
|
+
* @param {number} y - The y coordinate of the copy origin.
|
|
504
|
+
* @param {number} width - The width of the copy.
|
|
505
|
+
* @param {number} height - The height of the copy.
|
|
506
|
+
* @param {number} faceIndex - The face index.
|
|
507
507
|
* @return {Promise<TypedArray>} A Promise that resolves with a typed array when the copy operation has finished.
|
|
508
508
|
*/
|
|
509
509
|
async copyTextureToBuffer( texture, x, y, width, height, faceIndex ) {
|
|
@@ -560,7 +560,7 @@ class WebGPUTextureUtils {
|
|
|
560
560
|
*
|
|
561
561
|
* @private
|
|
562
562
|
* @param {Texture} texture - The texture.
|
|
563
|
-
* @return {
|
|
563
|
+
* @return {boolean} Whether the given texture is an environment map or not.
|
|
564
564
|
*/
|
|
565
565
|
_isEnvironmentTexture( texture ) {
|
|
566
566
|
|
|
@@ -574,7 +574,7 @@ class WebGPUTextureUtils {
|
|
|
574
574
|
* Returns the default GPU texture for the given format.
|
|
575
575
|
*
|
|
576
576
|
* @private
|
|
577
|
-
* @param {
|
|
577
|
+
* @param {string} format - The GPU format.
|
|
578
578
|
* @return {GPUTexture} The GPU texture.
|
|
579
579
|
*/
|
|
580
580
|
_getDefaultTextureGPU( format ) {
|
|
@@ -601,7 +601,7 @@ class WebGPUTextureUtils {
|
|
|
601
601
|
* Returns the default GPU cube texture for the given format.
|
|
602
602
|
*
|
|
603
603
|
* @private
|
|
604
|
-
* @param {
|
|
604
|
+
* @param {string} format - The GPU format.
|
|
605
605
|
* @return {GPUTexture} The GPU texture.
|
|
606
606
|
*/
|
|
607
607
|
_getDefaultCubeTextureGPU( format ) {
|
|
@@ -658,7 +658,7 @@ class WebGPUTextureUtils {
|
|
|
658
658
|
* @param {Array} images - The cube image data.
|
|
659
659
|
* @param {GPUTexture} textureGPU - The GPU texture.
|
|
660
660
|
* @param {Object} textureDescriptorGPU - The GPU texture descriptor.
|
|
661
|
-
* @param {
|
|
661
|
+
* @param {boolean} flipY - Whether to flip texture data along their vertical axis or not.
|
|
662
662
|
*/
|
|
663
663
|
_copyCubeMapToTexture( images, textureGPU, textureDescriptorGPU, flipY ) {
|
|
664
664
|
|
|
@@ -689,8 +689,8 @@ class WebGPUTextureUtils {
|
|
|
689
689
|
* @param {HTMLImageElement|ImageBitmap|HTMLCanvasElement} image - The image data.
|
|
690
690
|
* @param {GPUTexture} textureGPU - The GPU texture.
|
|
691
691
|
* @param {Object} textureDescriptorGPU - The GPU texture descriptor.
|
|
692
|
-
* @param {
|
|
693
|
-
* @param {
|
|
692
|
+
* @param {number} originDepth - The origin depth.
|
|
693
|
+
* @param {boolean} flipY - Whether to flip texture data along their vertical axis or not.
|
|
694
694
|
*/
|
|
695
695
|
_copyImageToTexture( image, textureGPU, textureDescriptorGPU, originDepth, flipY ) {
|
|
696
696
|
|
|
@@ -739,7 +739,7 @@ class WebGPUTextureUtils {
|
|
|
739
739
|
* @private
|
|
740
740
|
* @param {GPUTexture} textureGPU - The GPU texture object.
|
|
741
741
|
* @param {Object} textureDescriptorGPU - The texture descriptor.
|
|
742
|
-
* @param {
|
|
742
|
+
* @param {number} [baseArrayLayer=0] - The index of the first array layer accessible to the texture view.
|
|
743
743
|
*/
|
|
744
744
|
_generateMipmaps( textureGPU, textureDescriptorGPU, baseArrayLayer = 0 ) {
|
|
745
745
|
|
|
@@ -753,7 +753,7 @@ class WebGPUTextureUtils {
|
|
|
753
753
|
* @private
|
|
754
754
|
* @param {GPUTexture} textureGPU - The GPU texture object.
|
|
755
755
|
* @param {Object} textureDescriptorGPU - The texture descriptor.
|
|
756
|
-
* @param {
|
|
756
|
+
* @param {number} [originDepth=0] - The origin depth.
|
|
757
757
|
*/
|
|
758
758
|
_flipY( textureGPU, textureDescriptorGPU, originDepth = 0 ) {
|
|
759
759
|
|
|
@@ -768,9 +768,9 @@ class WebGPUTextureUtils {
|
|
|
768
768
|
* @param {Object} image - An object defining the image buffer data.
|
|
769
769
|
* @param {GPUTexture} textureGPU - The GPU texture.
|
|
770
770
|
* @param {Object} textureDescriptorGPU - The GPU texture descriptor.
|
|
771
|
-
* @param {
|
|
772
|
-
* @param {
|
|
773
|
-
* @param {
|
|
771
|
+
* @param {number} originDepth - The origin depth.
|
|
772
|
+
* @param {boolean} flipY - Whether to flip texture data along their vertical axis or not.
|
|
773
|
+
* @param {number} [depth=0] - TODO.
|
|
774
774
|
*/
|
|
775
775
|
_copyBufferToTexture( image, textureGPU, textureDescriptorGPU, originDepth, flipY, depth = 0 ) {
|
|
776
776
|
|
|
@@ -869,7 +869,7 @@ class WebGPUTextureUtils {
|
|
|
869
869
|
* data descriptor for the given GPU compressed texture format.
|
|
870
870
|
*
|
|
871
871
|
* @private
|
|
872
|
-
* @param {
|
|
872
|
+
* @param {string} format - The GPU compressed texture format.
|
|
873
873
|
* @return {Object} The block data descriptor.
|
|
874
874
|
*/
|
|
875
875
|
_getBlockData( format ) {
|
|
@@ -877,7 +877,7 @@ class WebGPUTextureUtils {
|
|
|
877
877
|
if ( format === GPUTextureFormat.BC1RGBAUnorm || format === GPUTextureFormat.BC1RGBAUnormSRGB ) return { byteLength: 8, width: 4, height: 4 }; // DXT1
|
|
878
878
|
if ( format === GPUTextureFormat.BC2RGBAUnorm || format === GPUTextureFormat.BC2RGBAUnormSRGB ) return { byteLength: 16, width: 4, height: 4 }; // DXT3
|
|
879
879
|
if ( format === GPUTextureFormat.BC3RGBAUnorm || format === GPUTextureFormat.BC3RGBAUnormSRGB ) return { byteLength: 16, width: 4, height: 4 }; // DXT5
|
|
880
|
-
if ( format === GPUTextureFormat.BC4RUnorm || format === GPUTextureFormat.
|
|
880
|
+
if ( format === GPUTextureFormat.BC4RUnorm || format === GPUTextureFormat.BC4RSnorm ) return { byteLength: 8, width: 4, height: 4 }; // RGTC1
|
|
881
881
|
if ( format === GPUTextureFormat.BC5RGUnorm || format === GPUTextureFormat.BC5RGSnorm ) return { byteLength: 16, width: 4, height: 4 }; // RGTC2
|
|
882
882
|
if ( format === GPUTextureFormat.BC6HRGBUFloat || format === GPUTextureFormat.BC6HRGBFloat ) return { byteLength: 16, width: 4, height: 4 }; // BPTC (float)
|
|
883
883
|
if ( format === GPUTextureFormat.BC7RGBAUnorm || format === GPUTextureFormat.BC7RGBAUnormSRGB ) return { byteLength: 16, width: 4, height: 4 }; // BPTC (unorm)
|
|
@@ -911,8 +911,8 @@ class WebGPUTextureUtils {
|
|
|
911
911
|
* Converts the three.js uv wrapping constants to GPU address mode constants.
|
|
912
912
|
*
|
|
913
913
|
* @private
|
|
914
|
-
* @param {
|
|
915
|
-
* @return {
|
|
914
|
+
* @param {number} value - The three.js constant defining a uv wrapping mode.
|
|
915
|
+
* @return {string} The GPU address mode.
|
|
916
916
|
*/
|
|
917
917
|
_convertAddressMode( value ) {
|
|
918
918
|
|
|
@@ -936,8 +936,8 @@ class WebGPUTextureUtils {
|
|
|
936
936
|
* Converts the three.js filter constants to GPU filter constants.
|
|
937
937
|
*
|
|
938
938
|
* @private
|
|
939
|
-
* @param {
|
|
940
|
-
* @return {
|
|
939
|
+
* @param {number} value - The three.js constant defining a filter mode.
|
|
940
|
+
* @return {string} The GPU filter mode.
|
|
941
941
|
*/
|
|
942
942
|
_convertFilterMode( value ) {
|
|
943
943
|
|
|
@@ -957,8 +957,8 @@ class WebGPUTextureUtils {
|
|
|
957
957
|
* Returns the bytes-per-texel value for the given GPU texture format.
|
|
958
958
|
*
|
|
959
959
|
* @private
|
|
960
|
-
* @param {
|
|
961
|
-
* @return {
|
|
960
|
+
* @param {string} format - The GPU texture format.
|
|
961
|
+
* @return {number} The bytes-per-texel.
|
|
962
962
|
*/
|
|
963
963
|
_getBytesPerTexel( format ) {
|
|
964
964
|
|
|
@@ -1020,7 +1020,7 @@ class WebGPUTextureUtils {
|
|
|
1020
1020
|
* Returns the corresponding typed array type for the given GPU texture format.
|
|
1021
1021
|
*
|
|
1022
1022
|
* @private
|
|
1023
|
-
* @param {
|
|
1023
|
+
* @param {string} format - The GPU texture format.
|
|
1024
1024
|
* @return {TypedArray.constructor} The typed array type.
|
|
1025
1025
|
*/
|
|
1026
1026
|
_getTypedArrayType( format ) {
|
|
@@ -1078,7 +1078,7 @@ class WebGPUTextureUtils {
|
|
|
1078
1078
|
*
|
|
1079
1079
|
* @private
|
|
1080
1080
|
* @param {Texture} texture - The texture.
|
|
1081
|
-
* @return {
|
|
1081
|
+
* @return {string} The GPU dimension.
|
|
1082
1082
|
*/
|
|
1083
1083
|
_getDimension( texture ) {
|
|
1084
1084
|
|
|
@@ -1104,9 +1104,9 @@ class WebGPUTextureUtils {
|
|
|
1104
1104
|
* Returns the GPU format for the given texture.
|
|
1105
1105
|
*
|
|
1106
1106
|
* @param {Texture} texture - The texture.
|
|
1107
|
-
* @param {GPUDevice
|
|
1107
|
+
* @param {?GPUDevice} [device=null] - The GPU device which is used for feature detection.
|
|
1108
1108
|
* It is not necessary to apply the device for most formats.
|
|
1109
|
-
* @return {
|
|
1109
|
+
* @return {string} The GPU format.
|
|
1110
1110
|
*/
|
|
1111
1111
|
export function getFormat( texture, device = null ) {
|
|
1112
1112
|
|
|
@@ -4,16 +4,18 @@ import TimestampQueryPool from '../../common/TimestampQueryPool.js';
|
|
|
4
4
|
/**
|
|
5
5
|
* Manages a pool of WebGPU timestamp queries for performance measurement.
|
|
6
6
|
* Extends the base TimestampQueryPool to provide WebGPU-specific implementation.
|
|
7
|
-
*
|
|
7
|
+
*
|
|
8
|
+
* @augments TimestampQueryPool
|
|
8
9
|
*/
|
|
9
10
|
class WebGPUTimestampQueryPool extends TimestampQueryPool {
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
* Creates a new WebGPU timestamp query pool.
|
|
14
|
+
*
|
|
15
|
+
* @param {GPUDevice} device - The WebGPU device to create queries on.
|
|
16
|
+
* @param {string} type - The type identifier for this query pool.
|
|
17
|
+
* @param {number} [maxQueries=2048] - Maximum number of queries this pool can hold.
|
|
18
|
+
*/
|
|
17
19
|
constructor( device, type, maxQueries = 2048 ) {
|
|
18
20
|
|
|
19
21
|
super( maxQueries );
|
|
@@ -42,10 +44,11 @@ class WebGPUTimestampQueryPool extends TimestampQueryPool {
|
|
|
42
44
|
}
|
|
43
45
|
|
|
44
46
|
/**
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
* Allocates a pair of queries for a given render context.
|
|
48
|
+
*
|
|
49
|
+
* @param {Object} renderContext - The render context to allocate queries for.
|
|
50
|
+
* @returns {?number} The base offset for the allocated queries, or null if allocation failed.
|
|
51
|
+
*/
|
|
49
52
|
allocateQueriesForContext( renderContext ) {
|
|
50
53
|
|
|
51
54
|
if ( ! this.trackTimestamp || this.isDisposed ) return null;
|
|
@@ -66,10 +69,12 @@ class WebGPUTimestampQueryPool extends TimestampQueryPool {
|
|
|
66
69
|
}
|
|
67
70
|
|
|
68
71
|
/**
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
72
|
+
* Asynchronously resolves all pending queries and returns the total duration.
|
|
73
|
+
* If there's already a pending resolve operation, returns that promise instead.
|
|
74
|
+
*
|
|
75
|
+
* @async
|
|
76
|
+
* @returns {Promise<number>} The total duration in milliseconds, or the last valid value if resolution fails.
|
|
77
|
+
*/
|
|
73
78
|
async resolveQueriesAsync() {
|
|
74
79
|
|
|
75
80
|
if ( ! this.trackTimestamp || this.currentQueryIndex === 0 || this.isDisposed ) {
|
|
@@ -100,10 +105,12 @@ class WebGPUTimestampQueryPool extends TimestampQueryPool {
|
|
|
100
105
|
}
|
|
101
106
|
|
|
102
107
|
/**
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
108
|
+
* Internal method to resolve queries and calculate total duration.
|
|
109
|
+
*
|
|
110
|
+
* @async
|
|
111
|
+
* @private
|
|
112
|
+
* @returns {Promise<number>} The total duration in milliseconds.
|
|
113
|
+
*/
|
|
107
114
|
async _resolveQueries() {
|
|
108
115
|
|
|
109
116
|
if ( this.isDisposed ) {
|
|
@@ -202,6 +209,12 @@ class WebGPUTimestampQueryPool extends TimestampQueryPool {
|
|
|
202
209
|
|
|
203
210
|
}
|
|
204
211
|
|
|
212
|
+
/**
|
|
213
|
+
* Dispose of the query pool.
|
|
214
|
+
*
|
|
215
|
+
* @async
|
|
216
|
+
* @returns {Promise} A Promise that resolves when the dispose has been executed.
|
|
217
|
+
*/
|
|
205
218
|
async dispose() {
|
|
206
219
|
|
|
207
220
|
if ( this.isDisposed ) {
|