@plastic-software/three 0.174.0 → 0.175.1
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 +10744 -1476
- package/build/three.core.js +9633 -1096
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +918 -189
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +4 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +2658 -1697
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +2654 -1709
- 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 +93 -39
- 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 +171 -48
- 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 +71 -29
- 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 +41 -3
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +35 -0
- package/examples/jsm/loaders/DDSLoader.js +24 -0
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +42 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +218 -5
- 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 +86 -18
- 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 +38 -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 +81 -61
- 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 +79 -2
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +108 -72
- package/examples/jsm/misc/VolumeSlice.js +88 -45
- 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 +70 -0
- 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 +131 -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 +266 -133
- 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/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
- package/examples/jsm/tsl/display/BloomNode.js +1 -1
- package/examples/jsm/tsl/display/PixelationPassNode.js +4 -4
- package/examples/jsm/tsl/display/SSRNode.js +1 -1
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +29 -3
- package/examples/jsm/tsl/math/Bayer.js +14 -1
- package/examples/jsm/tsl/utils/Raymarching.js +4 -2
- 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 +1 -1
- package/src/Three.TSL.js +3 -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 +168 -18
- 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/AudioAnalyser.js +1 -1
- package/src/audio/AudioListener.js +2 -2
- package/src/audio/PositionalAudio.js +5 -5
- package/src/constants.js +1432 -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/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 +23 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +166 -7
- 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 +16 -1
- package/src/extras/Earcut.js +3 -781
- package/src/extras/ImageUtils.js +3 -2
- package/src/extras/PMREMGenerator.js +22 -17
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/core/Path.js +1 -1
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/ConeGeometry.js +2 -2
- package/src/geometries/CylinderGeometry.js +2 -2
- package/src/geometries/ExtrudeGeometry.js +71 -39
- package/src/geometries/LatheGeometry.js +1 -1
- package/src/lights/LightShadow.js +1 -1
- package/src/lights/webgpu/IESSpotLight.js +1 -1
- 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 +4 -6
- 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 +58 -1
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +6 -2
- package/src/loaders/nodes/NodeMaterialLoader.js +1 -1
- package/src/loaders/nodes/NodeObjectLoader.js +3 -3
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +18 -3
- 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 +1 -1
- package/src/materials/nodes/LineBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshLambertNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshStandardNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshToonNodeMaterial.js +2 -2
- package/src/materials/nodes/NodeMaterial.js +7 -3
- package/src/materials/nodes/PointsNodeMaterial.js +1 -1
- package/src/materials/nodes/ShadowNodeMaterial.js +11 -2
- package/src/materials/nodes/SpriteNodeMaterial.js +1 -1
- package/src/materials/nodes/VolumeNodeMaterial.js +10 -1
- package/src/math/Color.js +1 -1
- package/src/math/MathUtils.js +223 -0
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/accessors/BatchNode.js +8 -8
- package/src/nodes/accessors/BuiltinNode.js +1 -1
- package/src/nodes/accessors/CubeTextureNode.js +1 -1
- package/src/nodes/accessors/InstanceNode.js +5 -5
- package/src/nodes/accessors/InstancedMeshNode.js +1 -1
- package/src/nodes/accessors/MorphNode.js +27 -23
- package/src/nodes/accessors/Normal.js +1 -1
- package/src/nodes/accessors/Object3DNode.js +12 -12
- package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
- package/src/nodes/accessors/ReferenceNode.js +1 -1
- package/src/nodes/accessors/SkinningNode.js +46 -37
- package/src/nodes/accessors/StorageBufferNode.js +1 -1
- package/src/nodes/accessors/StorageTextureNode.js +3 -3
- package/src/nodes/accessors/Texture3DNode.js +1 -1
- package/src/nodes/accessors/TextureNode.js +25 -5
- package/src/nodes/accessors/TextureSizeNode.js +1 -1
- package/src/nodes/accessors/UniformArrayNode.js +2 -2
- package/src/nodes/code/CodeNode.js +4 -4
- package/src/nodes/code/ExpressionNode.js +4 -4
- package/src/nodes/code/FunctionCallNode.js +23 -3
- package/src/nodes/code/ScriptableNode.js +4 -4
- package/src/nodes/code/ScriptableValueNode.js +2 -2
- package/src/nodes/core/AssignNode.js +1 -1
- package/src/nodes/core/AttributeNode.js +1 -1
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/CacheNode.js +1 -1
- package/src/nodes/core/ContextNode.js +1 -1
- package/src/nodes/core/InputNode.js +2 -2
- package/src/nodes/core/Node.js +14 -2
- package/src/nodes/core/NodeBuilder.js +86 -14
- package/src/nodes/core/StackNode.js +5 -5
- package/src/nodes/core/StructNode.js +1 -1
- package/src/nodes/core/StructTypeNode.js +2 -2
- package/src/nodes/core/VarNode.js +2 -8
- package/src/nodes/core/VaryingNode.js +3 -3
- package/src/nodes/display/BlendModes.js +4 -4
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/NormalMapNode.js +1 -1
- package/src/nodes/display/PosterizeNode.js +1 -1
- package/src/nodes/display/ScreenNode.js +3 -3
- package/src/nodes/display/ViewportDepthNode.js +2 -2
- package/src/nodes/display/ViewportDepthTextureNode.js +2 -2
- package/src/nodes/display/ViewportSharedTextureNode.js +2 -2
- package/src/nodes/display/ViewportTextureNode.js +4 -4
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +6 -6
- package/src/nodes/geometry/RangeNode.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +16 -40
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
- package/src/nodes/gpgpu/ComputeNode.js +30 -2
- package/src/nodes/lighting/AnalyticLightNode.js +9 -1
- package/src/nodes/lighting/LightsNode.js +3 -3
- package/src/nodes/lighting/ShadowNode.js +1 -1
- package/src/nodes/math/ConditionalNode.js +20 -3
- package/src/nodes/math/MathNode.js +83 -78
- package/src/nodes/math/OperatorNode.js +171 -82
- package/src/nodes/pmrem/PMREMNode.js +4 -4
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +115 -12
- package/src/nodes/utils/ArrayElementNode.js +3 -1
- package/src/nodes/utils/CubeMapNode.js +3 -3
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/EquirectUVNode.js +2 -2
- package/src/nodes/utils/JoinNode.js +27 -2
- package/src/nodes/utils/LoopNode.js +58 -28
- package/src/nodes/utils/MaxMipLevelNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +2 -2
- package/src/nodes/utils/RemapNode.js +6 -6
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUVNode.js +3 -3
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/nodes/utils/TriplanarTexturesNode.js +3 -3
- package/src/objects/BatchedMesh.js +4 -4
- package/src/objects/InstancedMesh.js +2 -2
- package/src/objects/LOD.js +1 -1
- package/src/objects/Skeleton.js +1 -1
- 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 +617 -79
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Attributes.js +2 -2
- package/src/renderers/common/Backend.js +12 -3
- package/src/renderers/common/Background.js +1 -0
- package/src/renderers/common/Color4.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/PostProcessing.js +2 -0
- package/src/renderers/common/QuadMesh.js +2 -0
- package/src/renderers/common/RenderList.js +2 -2
- package/src/renderers/common/RenderObject.js +1 -1
- package/src/renderers/common/RenderObjects.js +2 -2
- package/src/renderers/common/Renderer.js +52 -31
- package/src/renderers/common/XRManager.js +333 -10
- package/src/renderers/common/extras/PMREMGenerator.js +6 -0
- package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
- package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +10 -1
- package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +8 -1
- package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +82 -0
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +22 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +8 -2
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +31 -11
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -1
- package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/triplanar_fragment.glsl.js +20 -0
- package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +52 -7
- package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +25 -6
- package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +19 -7
- package/src/renderers/shaders/ShaderChunk.js +2 -0
- package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -0
- package/src/renderers/shaders/UniformsLib.js +6 -5
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLMaterials.js +12 -0
- package/src/renderers/webgl/WebGLProgram.js +25 -5
- package/src/renderers/webgl/WebGLPrograms.js +21 -7
- package/src/renderers/webgl/WebGLState.js +9 -9
- package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
- package/src/renderers/webgpu/WebGPUBackend.js +128 -87
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
- package/src/renderers/webgpu/WebGPURenderer.js +17 -11
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +173 -1
- package/src/scenes/Scene.js +2 -1
- 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 +59 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +5 -5
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -4,7 +4,7 @@ import { add, float, mix, output, sub, texture, uniform, uv, vec2, vec4 } from '
|
|
|
4
4
|
import { potpack } from '../libs/potpack.module.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* Progressive Light Map Accumulator, by [zalo]
|
|
7
|
+
* Progressive Light Map Accumulator, by [zalo]{@link https://github.com/zalo/}.
|
|
8
8
|
*
|
|
9
9
|
* To use, simply construct a `ProgressiveLightMap` object,
|
|
10
10
|
* `plmap.addObjectsToLightMap(object)` an array of semi-static
|
|
@@ -15,16 +15,31 @@ import { potpack } from '../libs/potpack.module.js';
|
|
|
15
15
|
* This should begin accumulating lightmaps which apply to
|
|
16
16
|
* your objects, so you can start jittering lighting to achieve
|
|
17
17
|
* the texture-space effect you're looking for.
|
|
18
|
+
*
|
|
19
|
+
* This class can only be used with {@link WebGPURenderer}.
|
|
20
|
+
* When using {@link WebGLRenderer}, import from `ProgressiveLightMap.js`.
|
|
18
21
|
*/
|
|
19
22
|
class ProgressiveLightMap {
|
|
20
23
|
|
|
21
24
|
/**
|
|
22
|
-
* @param {WebGPURenderer} renderer
|
|
23
|
-
* @param {number} [resolution=1024] The side-long dimension of
|
|
25
|
+
* @param {WebGPURenderer} renderer - The renderer.
|
|
26
|
+
* @param {number} [resolution=1024] - The side-long dimension of the total lightmap.
|
|
24
27
|
*/
|
|
25
28
|
constructor( renderer, resolution = 1024 ) {
|
|
26
29
|
|
|
30
|
+
/**
|
|
31
|
+
* The renderer.
|
|
32
|
+
*
|
|
33
|
+
* @type {WebGPURenderer}
|
|
34
|
+
*/
|
|
27
35
|
this.renderer = renderer;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* The side-long dimension of the total lightmap.
|
|
39
|
+
*
|
|
40
|
+
* @type {number}
|
|
41
|
+
* @default 1024
|
|
42
|
+
*/
|
|
28
43
|
this.resolution = resolution;
|
|
29
44
|
|
|
30
45
|
this._lightMapContainers = [];
|
|
@@ -57,7 +72,8 @@ class ProgressiveLightMap {
|
|
|
57
72
|
|
|
58
73
|
/**
|
|
59
74
|
* Sets these objects' materials' lightmaps and modifies their uv1's.
|
|
60
|
-
*
|
|
75
|
+
*
|
|
76
|
+
* @param {Array<Object3D>} objects - An array of objects and lights to set up your lightmap.
|
|
61
77
|
*/
|
|
62
78
|
addObjectsToLightMap( objects ) {
|
|
63
79
|
|
|
@@ -96,9 +112,9 @@ class ProgressiveLightMap {
|
|
|
96
112
|
object.receiveShadow = true;
|
|
97
113
|
object.renderOrder = 1000 + ob;
|
|
98
114
|
|
|
99
|
-
// Prepare UV boxes for potpack
|
|
115
|
+
// Prepare UV boxes for potpack (potpack will update x and y)
|
|
100
116
|
// TODO: Size these by object surface area
|
|
101
|
-
uv_boxes.push( { w: 1 + ( padding * 2 ), h: 1 + ( padding * 2 ), index: ob } );
|
|
117
|
+
uv_boxes.push( { w: 1 + ( padding * 2 ), h: 1 + ( padding * 2 ), index: ob, x: 0, y: 0 } );
|
|
102
118
|
|
|
103
119
|
this._lightMapContainers.push( { basicMat: object.material, object: object } );
|
|
104
120
|
|
|
@@ -150,10 +166,11 @@ class ProgressiveLightMap {
|
|
|
150
166
|
}
|
|
151
167
|
|
|
152
168
|
/**
|
|
153
|
-
* This function renders each mesh one at a time into their respective surface maps
|
|
154
|
-
*
|
|
155
|
-
* @param {
|
|
156
|
-
* @param {
|
|
169
|
+
* This function renders each mesh one at a time into their respective surface maps.
|
|
170
|
+
*
|
|
171
|
+
* @param {Camera} camera - The camera the scene is rendered with.
|
|
172
|
+
* @param {number} [blendWindow=100] - When >1, samples will accumulate over time.
|
|
173
|
+
* @param {boolean} [blurEdges=true] - Whether to fix UV Edges via blurring.
|
|
157
174
|
*/
|
|
158
175
|
update( camera, blendWindow = 100, blurEdges = true ) {
|
|
159
176
|
|
|
@@ -213,9 +230,10 @@ class ProgressiveLightMap {
|
|
|
213
230
|
}
|
|
214
231
|
|
|
215
232
|
/**
|
|
216
|
-
*
|
|
217
|
-
*
|
|
218
|
-
* @param {
|
|
233
|
+
* Draws the lightmap in the main scene. Call this after adding the objects to it.
|
|
234
|
+
*
|
|
235
|
+
* @param {boolean} visible - Whether the debug plane should be visible
|
|
236
|
+
* @param {Vector3} [position] - Where the debug plane should be drawn
|
|
219
237
|
*/
|
|
220
238
|
showDebugLightmap( visible, position = null ) {
|
|
221
239
|
|
|
@@ -254,6 +272,8 @@ class ProgressiveLightMap {
|
|
|
254
272
|
|
|
255
273
|
/**
|
|
256
274
|
* Creates the Blurring Plane.
|
|
275
|
+
*
|
|
276
|
+
* @private
|
|
257
277
|
*/
|
|
258
278
|
_initializeBlurPlane() {
|
|
259
279
|
|
|
@@ -8,8 +8,19 @@ import {
|
|
|
8
8
|
Vector3
|
|
9
9
|
} from 'three';
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* A procedural roller coaster geometry.
|
|
13
|
+
*
|
|
14
|
+
* @augments BufferGeometry
|
|
15
|
+
*/
|
|
11
16
|
class RollerCoasterGeometry extends BufferGeometry {
|
|
12
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Constructs a new geometry.
|
|
20
|
+
*
|
|
21
|
+
* @param {Curve} curve - The curve to generate the geometry along.
|
|
22
|
+
* @param {number} divisions - The number of divisions which defines the detail of the geometry.
|
|
23
|
+
*/
|
|
13
24
|
constructor( curve, divisions ) {
|
|
14
25
|
|
|
15
26
|
super();
|
|
@@ -222,8 +233,19 @@ class RollerCoasterGeometry extends BufferGeometry {
|
|
|
222
233
|
|
|
223
234
|
}
|
|
224
235
|
|
|
236
|
+
/**
|
|
237
|
+
* A procedural roller coaster lifters geometry.
|
|
238
|
+
*
|
|
239
|
+
* @augments BufferGeometry
|
|
240
|
+
*/
|
|
225
241
|
class RollerCoasterLiftersGeometry extends BufferGeometry {
|
|
226
242
|
|
|
243
|
+
/**
|
|
244
|
+
* Constructs a new geometry.
|
|
245
|
+
*
|
|
246
|
+
* @param {Curve} curve - The curve to generate the geometry along.
|
|
247
|
+
* @param {number} divisions - The number of divisions which defines the detail of the geometry.
|
|
248
|
+
*/
|
|
227
249
|
constructor( curve, divisions ) {
|
|
228
250
|
|
|
229
251
|
super();
|
|
@@ -398,8 +420,19 @@ class RollerCoasterLiftersGeometry extends BufferGeometry {
|
|
|
398
420
|
|
|
399
421
|
}
|
|
400
422
|
|
|
423
|
+
/**
|
|
424
|
+
* A procedural roller coaster shadow geometry.
|
|
425
|
+
*
|
|
426
|
+
* @augments BufferGeometry
|
|
427
|
+
*/
|
|
401
428
|
class RollerCoasterShadowGeometry extends BufferGeometry {
|
|
402
429
|
|
|
430
|
+
/**
|
|
431
|
+
* Constructs a new geometry.
|
|
432
|
+
*
|
|
433
|
+
* @param {Curve} curve - The curve to generate the geometry along.
|
|
434
|
+
* @param {number} divisions - The number of divisions which defines the detail of the geometry.
|
|
435
|
+
*/
|
|
403
436
|
constructor( curve, divisions ) {
|
|
404
437
|
|
|
405
438
|
super();
|
|
@@ -470,8 +503,16 @@ class RollerCoasterShadowGeometry extends BufferGeometry {
|
|
|
470
503
|
|
|
471
504
|
}
|
|
472
505
|
|
|
506
|
+
/**
|
|
507
|
+
* A procedural sky geometry.
|
|
508
|
+
*
|
|
509
|
+
* @augments BufferGeometry
|
|
510
|
+
*/
|
|
473
511
|
class SkyGeometry extends BufferGeometry {
|
|
474
512
|
|
|
513
|
+
/**
|
|
514
|
+
* Constructs a new geometry.
|
|
515
|
+
*/
|
|
475
516
|
constructor() {
|
|
476
517
|
|
|
477
518
|
super();
|
|
@@ -503,8 +544,19 @@ class SkyGeometry extends BufferGeometry {
|
|
|
503
544
|
|
|
504
545
|
}
|
|
505
546
|
|
|
547
|
+
/**
|
|
548
|
+
* A procedural trees geometry.
|
|
549
|
+
*
|
|
550
|
+
* @augments BufferGeometry
|
|
551
|
+
*/
|
|
506
552
|
class TreesGeometry extends BufferGeometry {
|
|
507
553
|
|
|
554
|
+
/**
|
|
555
|
+
* Constructs a new geometry.
|
|
556
|
+
*
|
|
557
|
+
* @param {Mesh} landscape - A mesh representing the landscape. Trees will be positioned
|
|
558
|
+
* randomly on the landscape's surface.
|
|
559
|
+
*/
|
|
508
560
|
constructor( landscape ) {
|
|
509
561
|
|
|
510
562
|
super();
|
|
@@ -1,5 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This class is an alternative to {@link Clock} with a different API design and behavior.
|
|
3
|
+
* The goal is to avoid the conceptual flaws that became apparent in `Clock` over time.
|
|
4
|
+
*
|
|
5
|
+
* - `Timer` has an `update()` method that updates its internal state. That makes it possible to
|
|
6
|
+
* call `getDelta()` and `getElapsed()` multiple times per simulation step without getting different values.
|
|
7
|
+
* - The class can make use of the Page Visibility API to avoid large time delta values when the app
|
|
8
|
+
* is inactive (e.g. tab switched or browser hidden).
|
|
9
|
+
*
|
|
10
|
+
* ```js
|
|
11
|
+
* const timer = new Timer();
|
|
12
|
+
* timer.connect( document ); // use Page Visibility API
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
1
15
|
class Timer {
|
|
2
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new timer.
|
|
19
|
+
*/
|
|
3
20
|
constructor() {
|
|
4
21
|
|
|
5
22
|
this._previousTime = 0;
|
|
@@ -16,6 +33,13 @@ class Timer {
|
|
|
16
33
|
|
|
17
34
|
}
|
|
18
35
|
|
|
36
|
+
/**
|
|
37
|
+
* Connect the timer to the given document.Calling this method is not mandatory to
|
|
38
|
+
* use the timer but enables the usage of the Page Visibility API to avoid large time
|
|
39
|
+
* delta values.
|
|
40
|
+
*
|
|
41
|
+
* @param {Document} document - The document.
|
|
42
|
+
*/
|
|
19
43
|
connect( document ) {
|
|
20
44
|
|
|
21
45
|
this._document = document;
|
|
@@ -32,6 +56,9 @@ class Timer {
|
|
|
32
56
|
|
|
33
57
|
}
|
|
34
58
|
|
|
59
|
+
/**
|
|
60
|
+
* Disconnects the timer from the DOM and also disables the usage of the Page Visibility API.
|
|
61
|
+
*/
|
|
35
62
|
disconnect() {
|
|
36
63
|
|
|
37
64
|
if ( this._pageVisibilityHandler !== null ) {
|
|
@@ -45,24 +72,46 @@ class Timer {
|
|
|
45
72
|
|
|
46
73
|
}
|
|
47
74
|
|
|
75
|
+
/**
|
|
76
|
+
* Returns the time delta in seconds.
|
|
77
|
+
*
|
|
78
|
+
* @return {number} The time delta in second.
|
|
79
|
+
*/
|
|
48
80
|
getDelta() {
|
|
49
81
|
|
|
50
82
|
return this._delta / 1000;
|
|
51
83
|
|
|
52
84
|
}
|
|
53
85
|
|
|
86
|
+
/**
|
|
87
|
+
* Returns the elapsed time in seconds.
|
|
88
|
+
*
|
|
89
|
+
* @return {number} The elapsed time in second.
|
|
90
|
+
*/
|
|
54
91
|
getElapsed() {
|
|
55
92
|
|
|
56
93
|
return this._elapsed / 1000;
|
|
57
94
|
|
|
58
95
|
}
|
|
59
96
|
|
|
97
|
+
/**
|
|
98
|
+
* Returns the timescale.
|
|
99
|
+
*
|
|
100
|
+
* @return {number} The timescale.
|
|
101
|
+
*/
|
|
60
102
|
getTimescale() {
|
|
61
103
|
|
|
62
104
|
return this._timescale;
|
|
63
105
|
|
|
64
106
|
}
|
|
65
107
|
|
|
108
|
+
/**
|
|
109
|
+
* Sets the given timescale which scale the time delta computation
|
|
110
|
+
* in `update()`.
|
|
111
|
+
*
|
|
112
|
+
* @param {number} timescale - The timescale to set.
|
|
113
|
+
* @return {Timer} A reference to this timer.
|
|
114
|
+
*/
|
|
66
115
|
setTimescale( timescale ) {
|
|
67
116
|
|
|
68
117
|
this._timescale = timescale;
|
|
@@ -71,6 +120,11 @@ class Timer {
|
|
|
71
120
|
|
|
72
121
|
}
|
|
73
122
|
|
|
123
|
+
/**
|
|
124
|
+
* Resets the time computation for the current simulation step.
|
|
125
|
+
*
|
|
126
|
+
* @return {Timer} A reference to this timer.
|
|
127
|
+
*/
|
|
74
128
|
reset() {
|
|
75
129
|
|
|
76
130
|
this._currentTime = now() - this._startTime;
|
|
@@ -79,14 +133,26 @@ class Timer {
|
|
|
79
133
|
|
|
80
134
|
}
|
|
81
135
|
|
|
136
|
+
/**
|
|
137
|
+
* Can be used to free all internal resources. Usually called when
|
|
138
|
+
* the timer instance isn't required anymore.
|
|
139
|
+
*/
|
|
82
140
|
dispose() {
|
|
83
141
|
|
|
84
142
|
this.disconnect();
|
|
85
143
|
|
|
86
|
-
return this;
|
|
87
|
-
|
|
88
144
|
}
|
|
89
145
|
|
|
146
|
+
/**
|
|
147
|
+
* Updates the internal state of the timer. This method should be called
|
|
148
|
+
* once per simulation step and before you perform queries against the timer
|
|
149
|
+
* (e.g. via `getDelta()`).
|
|
150
|
+
*
|
|
151
|
+
* @param {number} timestamp - The current time in milliseconds. Can be obtained
|
|
152
|
+
* from the `requestAnimationFrame` callback argument. If not provided, the current
|
|
153
|
+
* time will be determined with `performance.now`.
|
|
154
|
+
* @return {Timer} A reference to this timer.
|
|
155
|
+
*/
|
|
90
156
|
update( timestamp ) {
|
|
91
157
|
|
|
92
158
|
if ( this._pageVisibilityHandler !== null && this._document.hidden === true ) {
|
|
@@ -109,8 +175,19 @@ class Timer {
|
|
|
109
175
|
|
|
110
176
|
}
|
|
111
177
|
|
|
178
|
+
/**
|
|
179
|
+
* A special version of a timer with a fixed time delta value.
|
|
180
|
+
* Can be useful for testing and debugging purposes.
|
|
181
|
+
*
|
|
182
|
+
* @augments Timer
|
|
183
|
+
*/
|
|
112
184
|
class FixedTimer extends Timer {
|
|
113
185
|
|
|
186
|
+
/**
|
|
187
|
+
* Constructs a new timer.
|
|
188
|
+
*
|
|
189
|
+
* @param {number} [fps=60] - The fixed FPS of this timer.
|
|
190
|
+
*/
|
|
114
191
|
constructor( fps = 60 ) {
|
|
115
192
|
|
|
116
193
|
super();
|
|
@@ -9,6 +9,19 @@ import {
|
|
|
9
9
|
Vector3
|
|
10
10
|
} from 'three';
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* @classdesc This module can be used to paint tube-like meshes
|
|
14
|
+
* along a sequence of points. This module is used in a XR
|
|
15
|
+
* painter demo.
|
|
16
|
+
*
|
|
17
|
+
* ```js
|
|
18
|
+
* const painter = new TubePainter();
|
|
19
|
+
* scene.add( painter.mesh );
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @name TubePainter
|
|
23
|
+
* @class
|
|
24
|
+
*/
|
|
12
25
|
function TubePainter() {
|
|
13
26
|
|
|
14
27
|
const BUFFER_SIZE = 1000000 * 3;
|
|
@@ -190,10 +203,50 @@ function TubePainter() {
|
|
|
190
203
|
}
|
|
191
204
|
|
|
192
205
|
return {
|
|
206
|
+
/**
|
|
207
|
+
* The "painted" tube mesh. Must be added to the scene.
|
|
208
|
+
*
|
|
209
|
+
* @name TubePainter#mesh
|
|
210
|
+
* @type {Mesh}
|
|
211
|
+
*/
|
|
193
212
|
mesh: mesh,
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Moves the current painting position to the given value.
|
|
216
|
+
*
|
|
217
|
+
* @method
|
|
218
|
+
* @name TubePainter#moveTo
|
|
219
|
+
* @param {Vector3} position The new painting position.
|
|
220
|
+
*/
|
|
194
221
|
moveTo: moveTo,
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Draw a stroke from the current position to the given one.
|
|
225
|
+
* This method extends the tube while drawing with the XR
|
|
226
|
+
* controllers.
|
|
227
|
+
*
|
|
228
|
+
* @method
|
|
229
|
+
* @name TubePainter#lineTo
|
|
230
|
+
* @param {Vector3} position The destination position.
|
|
231
|
+
*/
|
|
195
232
|
lineTo: lineTo,
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Sets the size of newly rendered tube segments.
|
|
236
|
+
*
|
|
237
|
+
* @method
|
|
238
|
+
* @name TubePainter#setSize
|
|
239
|
+
* @param {number} size The size.
|
|
240
|
+
*/
|
|
196
241
|
setSize: setSize,
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Updates the internal geometry buffers so the new painted
|
|
245
|
+
* segments are rendered.
|
|
246
|
+
*
|
|
247
|
+
* @method
|
|
248
|
+
* @name TubePainter#update
|
|
249
|
+
*/
|
|
197
250
|
update: update
|
|
198
251
|
};
|
|
199
252
|
|