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
|
@@ -28,7 +28,7 @@ class WebGPUUtils {
|
|
|
28
28
|
* Returns the depth/stencil GPU format for the given render context.
|
|
29
29
|
*
|
|
30
30
|
* @param {RenderContext} renderContext - The render context.
|
|
31
|
-
* @return {
|
|
31
|
+
* @return {string} The depth/stencil GPU texture format.
|
|
32
32
|
*/
|
|
33
33
|
getCurrentDepthStencilFormat( renderContext ) {
|
|
34
34
|
|
|
@@ -56,7 +56,7 @@ class WebGPUUtils {
|
|
|
56
56
|
* Returns the GPU format for the given texture.
|
|
57
57
|
*
|
|
58
58
|
* @param {Texture} texture - The texture.
|
|
59
|
-
* @return {
|
|
59
|
+
* @return {string} The GPU texture format.
|
|
60
60
|
*/
|
|
61
61
|
getTextureFormatGPU( texture ) {
|
|
62
62
|
|
|
@@ -104,7 +104,7 @@ class WebGPUUtils {
|
|
|
104
104
|
* Returns the default color attachment's GPU format of the current render context.
|
|
105
105
|
*
|
|
106
106
|
* @param {RenderContext} renderContext - The render context.
|
|
107
|
-
* @return {
|
|
107
|
+
* @return {string} The GPU texture format of the default color attachment.
|
|
108
108
|
*/
|
|
109
109
|
getCurrentColorFormat( renderContext ) {
|
|
110
110
|
|
|
@@ -128,7 +128,7 @@ class WebGPUUtils {
|
|
|
128
128
|
* Returns the output color space of the current render context.
|
|
129
129
|
*
|
|
130
130
|
* @param {RenderContext} renderContext - The render context.
|
|
131
|
-
* @return {
|
|
131
|
+
* @return {string} The output color space.
|
|
132
132
|
*/
|
|
133
133
|
getCurrentColorSpace( renderContext ) {
|
|
134
134
|
|
|
@@ -147,7 +147,7 @@ class WebGPUUtils {
|
|
|
147
147
|
*
|
|
148
148
|
* @param {Object3D} object - The 3D object.
|
|
149
149
|
* @param {Material} material - The material.
|
|
150
|
-
* @return {
|
|
150
|
+
* @return {string} The GPU primitive topology.
|
|
151
151
|
*/
|
|
152
152
|
getPrimitiveTopology( object, material ) {
|
|
153
153
|
|
|
@@ -163,8 +163,8 @@ class WebGPUUtils {
|
|
|
163
163
|
*
|
|
164
164
|
* That is required since WebGPU does not support arbitrary sample counts.
|
|
165
165
|
*
|
|
166
|
-
* @param {
|
|
167
|
-
* @return {
|
|
166
|
+
* @param {number} sampleCount - The input sample count.
|
|
167
|
+
* @return {number} The (potentially updated) output sample count.
|
|
168
168
|
*/
|
|
169
169
|
getSampleCount( sampleCount ) {
|
|
170
170
|
|
|
@@ -191,7 +191,7 @@ class WebGPUUtils {
|
|
|
191
191
|
* Returns the sample count of the given render context.
|
|
192
192
|
*
|
|
193
193
|
* @param {RenderContext} renderContext - The render context.
|
|
194
|
-
* @return {
|
|
194
|
+
* @return {number} The sample count.
|
|
195
195
|
*/
|
|
196
196
|
getSampleCountRenderContext( renderContext ) {
|
|
197
197
|
|
|
@@ -211,7 +211,7 @@ class WebGPUUtils {
|
|
|
211
211
|
* There is a separate method for this so it's possible to
|
|
212
212
|
* honor edge cases for specific devices.
|
|
213
213
|
*
|
|
214
|
-
* @return {
|
|
214
|
+
* @return {string} The GPU texture format of the canvas.
|
|
215
215
|
*/
|
|
216
216
|
getPreferredCanvasFormat() {
|
|
217
217
|
|
|
@@ -3,16 +3,56 @@ import { Group } from '../../objects/Group.js';
|
|
|
3
3
|
|
|
4
4
|
const _moveEvent = { type: 'move' };
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Class for representing a XR controller with its
|
|
8
|
+
* different coordinate systems.
|
|
9
|
+
*
|
|
10
|
+
* @private
|
|
11
|
+
*/
|
|
6
12
|
class WebXRController {
|
|
7
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Constructs a new XR controller.
|
|
16
|
+
*/
|
|
8
17
|
constructor() {
|
|
9
18
|
|
|
19
|
+
/**
|
|
20
|
+
* A group representing the target ray space
|
|
21
|
+
* of the XR controller.
|
|
22
|
+
*
|
|
23
|
+
* @private
|
|
24
|
+
* @type {?Group}
|
|
25
|
+
* @default null
|
|
26
|
+
*/
|
|
10
27
|
this._targetRay = null;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* A group representing the grip space
|
|
31
|
+
* of the XR controller.
|
|
32
|
+
*
|
|
33
|
+
* @private
|
|
34
|
+
* @type {?Group}
|
|
35
|
+
* @default null
|
|
36
|
+
*/
|
|
11
37
|
this._grip = null;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* A group representing the hand space
|
|
41
|
+
* of the XR controller.
|
|
42
|
+
*
|
|
43
|
+
* @private
|
|
44
|
+
* @type {?Group}
|
|
45
|
+
* @default null
|
|
46
|
+
*/
|
|
12
47
|
this._hand = null;
|
|
13
48
|
|
|
14
49
|
}
|
|
15
50
|
|
|
51
|
+
/**
|
|
52
|
+
* Returns a group representing the hand space of the XR controller.
|
|
53
|
+
*
|
|
54
|
+
* @return {Group} A group representing the hand space of the XR controller.
|
|
55
|
+
*/
|
|
16
56
|
getHandSpace() {
|
|
17
57
|
|
|
18
58
|
if ( this._hand === null ) {
|
|
@@ -30,6 +70,11 @@ class WebXRController {
|
|
|
30
70
|
|
|
31
71
|
}
|
|
32
72
|
|
|
73
|
+
/**
|
|
74
|
+
* Returns a group representing the target ray space of the XR controller.
|
|
75
|
+
*
|
|
76
|
+
* @return {Group} A group representing the target ray space of the XR controller.
|
|
77
|
+
*/
|
|
33
78
|
getTargetRaySpace() {
|
|
34
79
|
|
|
35
80
|
if ( this._targetRay === null ) {
|
|
@@ -48,6 +93,11 @@ class WebXRController {
|
|
|
48
93
|
|
|
49
94
|
}
|
|
50
95
|
|
|
96
|
+
/**
|
|
97
|
+
* Returns a group representing the grip space of the XR controller.
|
|
98
|
+
*
|
|
99
|
+
* @return {Group} A group representing the grip space of the XR controller.
|
|
100
|
+
*/
|
|
51
101
|
getGripSpace() {
|
|
52
102
|
|
|
53
103
|
if ( this._grip === null ) {
|
|
@@ -66,6 +116,13 @@ class WebXRController {
|
|
|
66
116
|
|
|
67
117
|
}
|
|
68
118
|
|
|
119
|
+
/**
|
|
120
|
+
* Dispatches the given event to the groups representing
|
|
121
|
+
* the different coordinate spaces of the XR controller.
|
|
122
|
+
*
|
|
123
|
+
* @param {Object} event - The event to dispatch.
|
|
124
|
+
* @return {WebXRController} A reference to this instance.
|
|
125
|
+
*/
|
|
69
126
|
dispatchEvent( event ) {
|
|
70
127
|
|
|
71
128
|
if ( this._targetRay !== null ) {
|
|
@@ -90,6 +147,12 @@ class WebXRController {
|
|
|
90
147
|
|
|
91
148
|
}
|
|
92
149
|
|
|
150
|
+
/**
|
|
151
|
+
* Connects the controller with the given XR input source.
|
|
152
|
+
*
|
|
153
|
+
* @param {XRInputSource} inputSource - The input source.
|
|
154
|
+
* @return {WebXRController} A reference to this instance.
|
|
155
|
+
*/
|
|
93
156
|
connect( inputSource ) {
|
|
94
157
|
|
|
95
158
|
if ( inputSource && inputSource.hand ) {
|
|
@@ -115,6 +178,12 @@ class WebXRController {
|
|
|
115
178
|
|
|
116
179
|
}
|
|
117
180
|
|
|
181
|
+
/**
|
|
182
|
+
* Disconnects the controller from the given XR input source.
|
|
183
|
+
*
|
|
184
|
+
* @param {XRInputSource} inputSource - The input source.
|
|
185
|
+
* @return {WebXRController} A reference to this instance.
|
|
186
|
+
*/
|
|
118
187
|
disconnect( inputSource ) {
|
|
119
188
|
|
|
120
189
|
this.dispatchEvent( { type: 'disconnected', data: inputSource } );
|
|
@@ -141,6 +210,16 @@ class WebXRController {
|
|
|
141
210
|
|
|
142
211
|
}
|
|
143
212
|
|
|
213
|
+
/**
|
|
214
|
+
* Updates the controller with the given input source, XR frame and reference space.
|
|
215
|
+
* This updates the transformations of the groups that represent the different
|
|
216
|
+
* coordinate systems of the controller.
|
|
217
|
+
*
|
|
218
|
+
* @param {XRInputSource} inputSource - The input source.
|
|
219
|
+
* @param {XRFrame} frame - The XR frame.
|
|
220
|
+
* @param {XRReferenceSpace} referenceSpace - The reference space.
|
|
221
|
+
* @return {WebXRController} A reference to this instance.
|
|
222
|
+
*/
|
|
144
223
|
update( inputSource, frame, referenceSpace ) {
|
|
145
224
|
|
|
146
225
|
let inputPose = null;
|
|
@@ -318,8 +397,14 @@ class WebXRController {
|
|
|
318
397
|
|
|
319
398
|
}
|
|
320
399
|
|
|
321
|
-
|
|
322
|
-
|
|
400
|
+
/**
|
|
401
|
+
* Returns a group representing the hand joint for the given input joint.
|
|
402
|
+
*
|
|
403
|
+
* @private
|
|
404
|
+
* @param {Group} hand - The group representing the hand space.
|
|
405
|
+
* @param {XRHandJoint} inputjoint - The XR frame.
|
|
406
|
+
* @return {Group} A group representing the hand joint for the given input joint.
|
|
407
|
+
*/
|
|
323
408
|
_getHandJoint( hand, inputjoint ) {
|
|
324
409
|
|
|
325
410
|
if ( hand.joints[ inputjoint.jointName ] === undefined ) {
|
|
@@ -31,18 +31,53 @@ void main() {
|
|
|
31
31
|
|
|
32
32
|
}`;
|
|
33
33
|
|
|
34
|
+
/**
|
|
35
|
+
* A XR module that manages the access to the Depth Sensing API.
|
|
36
|
+
*/
|
|
34
37
|
class WebXRDepthSensing {
|
|
35
38
|
|
|
39
|
+
/**
|
|
40
|
+
* Constructs a new depth sensing module.
|
|
41
|
+
*/
|
|
36
42
|
constructor() {
|
|
37
43
|
|
|
44
|
+
/**
|
|
45
|
+
* A texture representing the depth of the user's environment.
|
|
46
|
+
*
|
|
47
|
+
* @type {?Texture}
|
|
48
|
+
*/
|
|
38
49
|
this.texture = null;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* A plane mesh for visualizing the depth texture.
|
|
53
|
+
*
|
|
54
|
+
* @type {?Mesh}
|
|
55
|
+
*/
|
|
39
56
|
this.mesh = null;
|
|
40
57
|
|
|
58
|
+
/**
|
|
59
|
+
* The depth near value.
|
|
60
|
+
*
|
|
61
|
+
* @type {number}
|
|
62
|
+
*/
|
|
41
63
|
this.depthNear = 0;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* The depth near far.
|
|
67
|
+
*
|
|
68
|
+
* @type {number}
|
|
69
|
+
*/
|
|
42
70
|
this.depthFar = 0;
|
|
43
71
|
|
|
44
72
|
}
|
|
45
73
|
|
|
74
|
+
/**
|
|
75
|
+
* Inits the depth sensing module
|
|
76
|
+
*
|
|
77
|
+
* @param {WebGLRenderer} renderer - The renderer.
|
|
78
|
+
* @param {XRWebGLDepthInformation} depthData - The XR depth data.
|
|
79
|
+
* @param {XRRenderState} renderState - The XR render state.
|
|
80
|
+
*/
|
|
46
81
|
init( renderer, depthData, renderState ) {
|
|
47
82
|
|
|
48
83
|
if ( this.texture === null ) {
|
|
@@ -65,6 +100,12 @@ class WebXRDepthSensing {
|
|
|
65
100
|
|
|
66
101
|
}
|
|
67
102
|
|
|
103
|
+
/**
|
|
104
|
+
* Returns a plane mesh that visualizes the depth texture.
|
|
105
|
+
*
|
|
106
|
+
* @param {ArrayCamera} cameraXR - The XR camera.
|
|
107
|
+
* @return {?Mesh} The plane mesh.
|
|
108
|
+
*/
|
|
68
109
|
getMesh( cameraXR ) {
|
|
69
110
|
|
|
70
111
|
if ( this.texture !== null ) {
|
|
@@ -92,6 +133,9 @@ class WebXRDepthSensing {
|
|
|
92
133
|
|
|
93
134
|
}
|
|
94
135
|
|
|
136
|
+
/**
|
|
137
|
+
* Resets the module
|
|
138
|
+
*/
|
|
95
139
|
reset() {
|
|
96
140
|
|
|
97
141
|
this.texture = null;
|
|
@@ -99,6 +143,11 @@ class WebXRDepthSensing {
|
|
|
99
143
|
|
|
100
144
|
}
|
|
101
145
|
|
|
146
|
+
/**
|
|
147
|
+
* Returns a texture representing the depth of the user's environment.
|
|
148
|
+
*
|
|
149
|
+
* @return {?Texture} The depth texture.
|
|
150
|
+
*/
|
|
102
151
|
getDepthTexture() {
|
|
103
152
|
|
|
104
153
|
return this.texture;
|
|
@@ -13,8 +13,23 @@ import { DepthTexture } from '../../textures/DepthTexture.js';
|
|
|
13
13
|
import { DepthFormat, DepthStencilFormat, RGBAFormat, UnsignedByteType, UnsignedIntType, UnsignedInt248Type } from '../../constants.js';
|
|
14
14
|
import { WebXRDepthSensing } from './WebXRDepthSensing.js';
|
|
15
15
|
|
|
16
|
+
/**
|
|
17
|
+
* This class represents an abstraction of the WebXR Device API and is
|
|
18
|
+
* internally used by {@link WebGLRenderer}. `WebXRManager` also provides a public
|
|
19
|
+
* interface that allows users to enable/disable XR and perform XR related
|
|
20
|
+
* tasks like for instance retrieving controllers.
|
|
21
|
+
*
|
|
22
|
+
* @augments EventDispatcher
|
|
23
|
+
* @hideconstructor
|
|
24
|
+
*/
|
|
16
25
|
class WebXRManager extends EventDispatcher {
|
|
17
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Constructs a new WebGL renderer.
|
|
29
|
+
*
|
|
30
|
+
* @param {WebGLRenderer} renderer - The renderer.
|
|
31
|
+
* @param {WebGL2RenderingContext} gl - The rendering context.
|
|
32
|
+
*/
|
|
18
33
|
constructor( renderer, gl, extensions, useMultiview ) {
|
|
19
34
|
|
|
20
35
|
super();
|
|
@@ -67,11 +82,32 @@ class WebXRManager extends EventDispatcher {
|
|
|
67
82
|
let _currentDepthNear = null;
|
|
68
83
|
let _currentDepthFar = null;
|
|
69
84
|
|
|
70
|
-
|
|
85
|
+
/**
|
|
86
|
+
* Whether the manager's XR camera should be automatically updated or not.
|
|
87
|
+
*
|
|
88
|
+
* @type {boolean}
|
|
89
|
+
* @default true
|
|
90
|
+
*/
|
|
71
91
|
this.cameraAutoUpdate = true;
|
|
72
|
-
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* This flag notifies the renderer to be ready for XR rendering. Set it to `true`
|
|
95
|
+
* if you are going to use XR in your app.
|
|
96
|
+
*
|
|
97
|
+
* @type {boolean}
|
|
98
|
+
* @default false
|
|
99
|
+
*/
|
|
73
100
|
this.enabled = false;
|
|
74
101
|
|
|
102
|
+
this.layersEnabled = false;
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Whether XR presentation is active or not.
|
|
106
|
+
*
|
|
107
|
+
* @type {boolean}
|
|
108
|
+
* @readonly
|
|
109
|
+
* @default false
|
|
110
|
+
*/
|
|
75
111
|
this.isPresenting = false;
|
|
76
112
|
this.isMultiview = false;
|
|
77
113
|
|
|
@@ -81,6 +117,14 @@ class WebXRManager extends EventDispatcher {
|
|
|
81
117
|
|
|
82
118
|
};
|
|
83
119
|
|
|
120
|
+
/**
|
|
121
|
+
* Returns a group representing the `target ray` space of the XR controller.
|
|
122
|
+
* Use this space for visualizing 3D objects that support the user in pointing
|
|
123
|
+
* tasks like UI interaction.
|
|
124
|
+
*
|
|
125
|
+
* @param {number} index - The index of the controller.
|
|
126
|
+
* @return {Group} A group representing the `target ray` space.
|
|
127
|
+
*/
|
|
84
128
|
this.getController = function ( index ) {
|
|
85
129
|
|
|
86
130
|
let controller = controllers[ index ];
|
|
@@ -96,6 +140,21 @@ class WebXRManager extends EventDispatcher {
|
|
|
96
140
|
|
|
97
141
|
};
|
|
98
142
|
|
|
143
|
+
/**
|
|
144
|
+
* Returns a group representing the `grip` space of the XR controller.
|
|
145
|
+
* Use this space for visualizing 3D objects that support the user in pointing
|
|
146
|
+
* tasks like UI interaction.
|
|
147
|
+
*
|
|
148
|
+
* Note: If you want to show something in the user's hand AND offer a
|
|
149
|
+
* pointing ray at the same time, you'll want to attached the handheld object
|
|
150
|
+
* to the group returned by `getControllerGrip()` and the ray to the
|
|
151
|
+
* group returned by `getController()`. The idea is to have two
|
|
152
|
+
* different groups in two different coordinate spaces for the same WebXR
|
|
153
|
+
* controller.
|
|
154
|
+
*
|
|
155
|
+
* @param {number} index - The index of the controller.
|
|
156
|
+
* @return {Group} A group representing the `grip` space.
|
|
157
|
+
*/
|
|
99
158
|
this.getControllerGrip = function ( index ) {
|
|
100
159
|
|
|
101
160
|
let controller = controllers[ index ];
|
|
@@ -111,6 +170,14 @@ class WebXRManager extends EventDispatcher {
|
|
|
111
170
|
|
|
112
171
|
};
|
|
113
172
|
|
|
173
|
+
/**
|
|
174
|
+
* Returns a group representing the `hand` space of the XR controller.
|
|
175
|
+
* Use this space for visualizing 3D objects that support the user in pointing
|
|
176
|
+
* tasks like UI interaction.
|
|
177
|
+
*
|
|
178
|
+
* @param {number} index - The index of the controller.
|
|
179
|
+
* @return {Group} A group representing the `hand` space.
|
|
180
|
+
*/
|
|
114
181
|
this.getHand = function ( index ) {
|
|
115
182
|
|
|
116
183
|
let controller = controllers[ index ];
|
|
@@ -179,6 +246,8 @@ class WebXRManager extends EventDispatcher {
|
|
|
179
246
|
|
|
180
247
|
// restore framebuffer/rendering state
|
|
181
248
|
|
|
249
|
+
scope.isPresenting = false;
|
|
250
|
+
|
|
182
251
|
renderer.setRenderTarget( initialRenderTarget );
|
|
183
252
|
|
|
184
253
|
glBaseLayer = null;
|
|
@@ -191,8 +260,6 @@ class WebXRManager extends EventDispatcher {
|
|
|
191
260
|
|
|
192
261
|
animation.stop();
|
|
193
262
|
|
|
194
|
-
scope.isPresenting = false;
|
|
195
|
-
|
|
196
263
|
renderer.setPixelRatio( currentPixelRatio );
|
|
197
264
|
renderer.setSize( currentSize.width, currentSize.height, false );
|
|
198
265
|
|
|
@@ -200,6 +267,13 @@ class WebXRManager extends EventDispatcher {
|
|
|
200
267
|
|
|
201
268
|
}
|
|
202
269
|
|
|
270
|
+
/**
|
|
271
|
+
* Sets the framebuffer scale factor.
|
|
272
|
+
*
|
|
273
|
+
* This method can not be used during a XR session.
|
|
274
|
+
*
|
|
275
|
+
* @param {number} value - The framebuffer scale factor.
|
|
276
|
+
*/
|
|
203
277
|
this.setFramebufferScaleFactor = function ( value ) {
|
|
204
278
|
|
|
205
279
|
framebufferScaleFactor = value;
|
|
@@ -212,6 +286,15 @@ class WebXRManager extends EventDispatcher {
|
|
|
212
286
|
|
|
213
287
|
};
|
|
214
288
|
|
|
289
|
+
/**
|
|
290
|
+
* Sets the reference space type. Can be used to configure a spatial relationship with the user's physical
|
|
291
|
+
* environment. Depending on how the user moves in 3D space, setting an appropriate reference space can
|
|
292
|
+
* improve tracking. Default is `local-floor`.
|
|
293
|
+
*
|
|
294
|
+
* This method can not be used during a XR session.
|
|
295
|
+
*
|
|
296
|
+
* @param {string} value - The reference space type.
|
|
297
|
+
*/
|
|
215
298
|
this.setReferenceSpaceType = function ( value ) {
|
|
216
299
|
|
|
217
300
|
referenceSpaceType = value;
|
|
@@ -224,48 +307,87 @@ class WebXRManager extends EventDispatcher {
|
|
|
224
307
|
|
|
225
308
|
};
|
|
226
309
|
|
|
310
|
+
/**
|
|
311
|
+
* Returns the XR reference space.
|
|
312
|
+
*
|
|
313
|
+
* @return {XRReferenceSpace} The XR reference space.
|
|
314
|
+
*/
|
|
227
315
|
this.getReferenceSpace = function () {
|
|
228
316
|
|
|
229
317
|
return customReferenceSpace || referenceSpace;
|
|
230
318
|
|
|
231
319
|
};
|
|
232
320
|
|
|
321
|
+
/**
|
|
322
|
+
* Sets a custom XR reference space.
|
|
323
|
+
*
|
|
324
|
+
* @param {XRReferenceSpace} space - The XR reference space.
|
|
325
|
+
*/
|
|
233
326
|
this.setReferenceSpace = function ( space ) {
|
|
234
327
|
|
|
235
328
|
customReferenceSpace = space;
|
|
236
329
|
|
|
237
330
|
};
|
|
238
331
|
|
|
332
|
+
/**
|
|
333
|
+
* Returns the current base layer.
|
|
334
|
+
*
|
|
335
|
+
* @return {?(XRWebGLLayer|XRProjectionLayer)} The XR base layer.
|
|
336
|
+
*/
|
|
239
337
|
this.getBaseLayer = function () {
|
|
240
338
|
|
|
241
339
|
return glProjLayer !== null ? glProjLayer : glBaseLayer;
|
|
242
340
|
|
|
243
341
|
};
|
|
244
342
|
|
|
343
|
+
/**
|
|
344
|
+
* Returns the current XR binding.
|
|
345
|
+
*
|
|
346
|
+
* @return {?XRWebGLBinding} The XR binding.
|
|
347
|
+
*/
|
|
245
348
|
this.getBinding = function () {
|
|
246
349
|
|
|
247
350
|
return glBinding;
|
|
248
351
|
|
|
249
352
|
};
|
|
250
353
|
|
|
251
|
-
|
|
354
|
+
/**
|
|
355
|
+
* Returns the current XR frame.
|
|
356
|
+
*
|
|
357
|
+
* @return {?XRFrame} The XR frame. Returns `null` when used outside a XR session.
|
|
358
|
+
*/
|
|
359
|
+
this.getFrame = function () {
|
|
252
360
|
|
|
253
|
-
return
|
|
361
|
+
return xrFrame;
|
|
254
362
|
|
|
255
363
|
};
|
|
256
364
|
|
|
257
|
-
this.
|
|
365
|
+
this.getRenderTarget = function () {
|
|
258
366
|
|
|
259
|
-
return
|
|
367
|
+
return newRenderTarget;
|
|
260
368
|
|
|
261
369
|
};
|
|
262
370
|
|
|
371
|
+
/**
|
|
372
|
+
* Returns the current XR session.
|
|
373
|
+
*
|
|
374
|
+
* @return {?XRSession} The XR session. Returns `null` when used outside a XR session.
|
|
375
|
+
*/
|
|
263
376
|
this.getSession = function () {
|
|
264
377
|
|
|
265
378
|
return session;
|
|
266
379
|
|
|
267
380
|
};
|
|
268
381
|
|
|
382
|
+
/**
|
|
383
|
+
* After a XR session has been requested usually with one of the `*Button` modules, it
|
|
384
|
+
* is injected into the renderer with this method. This method triggers the start of
|
|
385
|
+
* the actual XR rendering.
|
|
386
|
+
*
|
|
387
|
+
* @async
|
|
388
|
+
* @param {XRSession} value - The XR session to set.
|
|
389
|
+
* @return {Promise} A Promise that resolves when the session has been set.
|
|
390
|
+
*/
|
|
269
391
|
this.setSession = async function ( value ) {
|
|
270
392
|
|
|
271
393
|
session = value;
|
|
@@ -320,7 +442,10 @@ class WebXRManager extends EventDispatcher {
|
|
|
320
442
|
format: RGBAFormat,
|
|
321
443
|
type: UnsignedByteType,
|
|
322
444
|
colorSpace: renderer.outputColorSpace,
|
|
323
|
-
stencilBuffer: attributes.stencil
|
|
445
|
+
stencilBuffer: attributes.stencil,
|
|
446
|
+
resolveDepthBuffer: ( glBaseLayer.ignoreDepthValues === false ),
|
|
447
|
+
resolveStencilBuffer: ( glBaseLayer.ignoreDepthValues === false )
|
|
448
|
+
|
|
324
449
|
}
|
|
325
450
|
);
|
|
326
451
|
|
|
@@ -368,7 +493,8 @@ class WebXRManager extends EventDispatcher {
|
|
|
368
493
|
stencilBuffer: attributes.stencil,
|
|
369
494
|
colorSpace: renderer.outputColorSpace,
|
|
370
495
|
samples: attributes.antialias ? 4 : 0,
|
|
371
|
-
resolveDepthBuffer: ( glProjLayer.ignoreDepthValues === false )
|
|
496
|
+
resolveDepthBuffer: ( glProjLayer.ignoreDepthValues === false ),
|
|
497
|
+
resolveStencilBuffer: ( glProjLayer.ignoreDepthValues === false )
|
|
372
498
|
};
|
|
373
499
|
|
|
374
500
|
if ( scope.isMultiview ) {
|
|
@@ -408,6 +534,11 @@ class WebXRManager extends EventDispatcher {
|
|
|
408
534
|
|
|
409
535
|
};
|
|
410
536
|
|
|
537
|
+
/**
|
|
538
|
+
* Returns the environment blend mode from the current XR session.
|
|
539
|
+
*
|
|
540
|
+
* @return {'opaque'|'additive'|'alpha-blend'|undefined} The environment blend mode. Returns `undefined` when used outside of a XR session.
|
|
541
|
+
*/
|
|
411
542
|
this.getEnvironmentBlendMode = function () {
|
|
412
543
|
|
|
413
544
|
if ( session !== null ) {
|
|
@@ -439,6 +570,11 @@ class WebXRManager extends EventDispatcher {
|
|
|
439
570
|
session.updateRenderState( { layers: layersCopy } );
|
|
440
571
|
}
|
|
441
572
|
|
|
573
|
+
/**
|
|
574
|
+
* Returns the current depth texture computed via depth sensing.
|
|
575
|
+
*
|
|
576
|
+
* @return {?Texture} The depth texture.
|
|
577
|
+
*/
|
|
442
578
|
this.getDepthTexture = function () {
|
|
443
579
|
|
|
444
580
|
return depthSensing.getDepthTexture();
|
|
@@ -611,6 +747,15 @@ class WebXRManager extends EventDispatcher {
|
|
|
611
747
|
|
|
612
748
|
};
|
|
613
749
|
|
|
750
|
+
/**
|
|
751
|
+
* Updates the state of the XR camera. Use this method on app level if you
|
|
752
|
+
* set cameraAutoUpdate` to `false`. The method requires the non-XR
|
|
753
|
+
* camera of the scene as a parameter. The passed in camera's transformation
|
|
754
|
+
* is automatically adjusted to the position of the XR camera when calling
|
|
755
|
+
* this method.
|
|
756
|
+
*
|
|
757
|
+
* @param {Camera} camera - The camera.
|
|
758
|
+
*/
|
|
614
759
|
this.updateCamera = function ( camera ) {
|
|
615
760
|
|
|
616
761
|
if ( session === null ) return;
|
|
@@ -707,12 +852,27 @@ class WebXRManager extends EventDispatcher {
|
|
|
707
852
|
|
|
708
853
|
}
|
|
709
854
|
|
|
855
|
+
/**
|
|
856
|
+
* Returns an instance of {@link ArrayCamera} which represents the XR camera
|
|
857
|
+
* of the active XR session. For each view it holds a separate camera object.
|
|
858
|
+
*
|
|
859
|
+
* The camera's `fov` is currently not used and does not reflect the fov of
|
|
860
|
+
* the XR camera. If you need the fov on app level, you have to compute in
|
|
861
|
+
* manually from the XR camera's projection matrices.
|
|
862
|
+
*
|
|
863
|
+
* @return {ArrayCamera} The XR camera.
|
|
864
|
+
*/
|
|
710
865
|
this.getCamera = function () {
|
|
711
866
|
|
|
712
867
|
return cameraXR;
|
|
713
868
|
|
|
714
869
|
};
|
|
715
870
|
|
|
871
|
+
/**
|
|
872
|
+
* Returns the amount of foveation used by the XR compositor for the projection layer.
|
|
873
|
+
*
|
|
874
|
+
* @return {number} The amount of foveation.
|
|
875
|
+
*/
|
|
716
876
|
this.getFoveation = function () {
|
|
717
877
|
|
|
718
878
|
if ( glProjLayer === null && glBaseLayer === null ) {
|
|
@@ -725,6 +885,12 @@ class WebXRManager extends EventDispatcher {
|
|
|
725
885
|
|
|
726
886
|
};
|
|
727
887
|
|
|
888
|
+
/**
|
|
889
|
+
* Sets the foveation value.
|
|
890
|
+
*
|
|
891
|
+
* @param {number} value - A number in the range `[0,1]` where `0` means no foveation (full resolution)
|
|
892
|
+
* and `1` means maximum foveation (the edges render at lower resolution).
|
|
893
|
+
*/
|
|
728
894
|
this.setFoveation = function ( value ) {
|
|
729
895
|
|
|
730
896
|
// 0 = no foveation = full resolution
|
|
@@ -746,12 +912,22 @@ class WebXRManager extends EventDispatcher {
|
|
|
746
912
|
|
|
747
913
|
};
|
|
748
914
|
|
|
915
|
+
/**
|
|
916
|
+
* Returns `true` if depth sensing is supported.
|
|
917
|
+
*
|
|
918
|
+
* @return {boolean} Whether depth sensing is supported or not.
|
|
919
|
+
*/
|
|
749
920
|
this.hasDepthSensing = function () {
|
|
750
921
|
|
|
751
922
|
return depthSensing.texture !== null;
|
|
752
923
|
|
|
753
924
|
};
|
|
754
925
|
|
|
926
|
+
/**
|
|
927
|
+
* Returns the depth sensing mesh.
|
|
928
|
+
*
|
|
929
|
+
* @return {Mesh} The depth sensing mesh.
|
|
930
|
+
*/
|
|
755
931
|
this.getDepthSensingMesh = function () {
|
|
756
932
|
|
|
757
933
|
return depthSensing.getMesh( cameraXR );
|
|
@@ -810,7 +986,7 @@ class WebXRManager extends EventDispatcher {
|
|
|
810
986
|
renderer.setRenderTargetTextures(
|
|
811
987
|
newRenderTarget,
|
|
812
988
|
glSubImage.colorTexture,
|
|
813
|
-
|
|
989
|
+
glSubImage.depthStencilTexture );
|
|
814
990
|
|
|
815
991
|
renderer.setRenderTarget( newRenderTarget );
|
|
816
992
|
|