@plastic-software/three 0.174.0 → 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 +10655 -1446
- package/build/three.core.js +9626 -1094
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +834 -157
- 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 +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/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 +53 -0
- 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/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 +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
|
@@ -14,18 +14,38 @@ import {
|
|
|
14
14
|
} from 'three';
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
17
|
+
* A basic flat, reflective water effect.
|
|
18
|
+
*
|
|
19
|
+
* Note that this class can only be used with {@link WebGLRenderer}.
|
|
20
|
+
* When using {@link WebGPURenderer}, use {@link WaterMesh}.
|
|
21
|
+
*
|
|
22
|
+
* References:
|
|
23
|
+
*
|
|
24
|
+
* - [Flat mirror for three.js]{@link https://github.com/Slayvin}
|
|
25
|
+
* - [An implementation of water shader based on the flat mirror]{@link https://home.adelphi.edu/~stemkoski/}
|
|
26
|
+
* - [Water shader explanations in WebGL]{@link http://29a.ch/slides/2012/webglwater/ }
|
|
27
|
+
*
|
|
28
|
+
* @augments Mesh
|
|
21
29
|
*/
|
|
22
|
-
|
|
23
30
|
class Water extends Mesh {
|
|
24
31
|
|
|
32
|
+
/**
|
|
33
|
+
* Constructs a new water instance.
|
|
34
|
+
*
|
|
35
|
+
* @param {BufferGeometry} geometry - The water's geometry.
|
|
36
|
+
* @param {Water~Options} [options] - The configuration options.
|
|
37
|
+
*/
|
|
25
38
|
constructor( geometry, options = {} ) {
|
|
26
39
|
|
|
27
40
|
super( geometry );
|
|
28
41
|
|
|
42
|
+
/**
|
|
43
|
+
* This flag can be used for type testing.
|
|
44
|
+
*
|
|
45
|
+
* @type {boolean}
|
|
46
|
+
* @readonly
|
|
47
|
+
* @default true
|
|
48
|
+
*/
|
|
29
49
|
this.isWater = true;
|
|
30
50
|
|
|
31
51
|
const scope = this;
|
|
@@ -330,4 +350,23 @@ class Water extends Mesh {
|
|
|
330
350
|
|
|
331
351
|
}
|
|
332
352
|
|
|
353
|
+
/**
|
|
354
|
+
* Constructor options of `Water`.
|
|
355
|
+
*
|
|
356
|
+
* @typedef {Object} Water~Options
|
|
357
|
+
* @property {number} [textureWidth=512] - The texture width. A higher value results in more clear reflections but is also more expensive.
|
|
358
|
+
* @property {number} [textureHeight=512] - The texture height. A higher value results in more clear reflections but is also more expensive.
|
|
359
|
+
* @property {number} [clipBias=0] - The clip bias.
|
|
360
|
+
* @property {number} [alpha=1] - The alpha value.
|
|
361
|
+
* @property {number} [time=0] - The time value.
|
|
362
|
+
* @property {?Texture} [waterNormals=null] - The water's normal map.
|
|
363
|
+
* @property {Vector3} [sunDirection=(0.70707,0.70707,0.0)] - The sun direction.
|
|
364
|
+
* @property {number|Color|string} [sunColor=0xffffff] - The sun color.
|
|
365
|
+
* @property {number|Color|string} [waterColor=0x7F7F7F] - The water color.
|
|
366
|
+
* @property {Vector3} [eye] - The eye vector.
|
|
367
|
+
* @property {number} [distortionScale=20] - The distortion scale.
|
|
368
|
+
* @property {(FrontSide|BackSide|DoubleSide)} [side=FrontSide] - The water material's `side` property.
|
|
369
|
+
* @property {boolean} [fog=false] - Whether the water should be affected by fog or not.
|
|
370
|
+
**/
|
|
371
|
+
|
|
333
372
|
export { Water };
|
|
@@ -14,19 +14,40 @@ import {
|
|
|
14
14
|
import { Reflector } from '../objects/Reflector.js';
|
|
15
15
|
import { Refractor } from '../objects/Refractor.js';
|
|
16
16
|
|
|
17
|
+
/** @module Water2 */
|
|
18
|
+
|
|
17
19
|
/**
|
|
20
|
+
* An advanced water effect that supports reflections, refractions and flow maps.
|
|
21
|
+
*
|
|
22
|
+
* Note that this class can only be used with {@link WebGLRenderer}.
|
|
23
|
+
* When using {@link WebGPURenderer}, use {@link module:Water2Mesh}.
|
|
24
|
+
*
|
|
18
25
|
* References:
|
|
19
|
-
* https://alex.vlachos.com/graphics/Vlachos-SIGGRAPH10-WaterFlow.pdf
|
|
20
|
-
* http://graphicsrunner.blogspot.de/2010/08/water-using-flow-maps.html
|
|
21
26
|
*
|
|
27
|
+
* - {@link https://alex.vlachos.com/graphics/Vlachos-SIGGRAPH10-WaterFlow.pdf}
|
|
28
|
+
* - {@link http://graphicsrunner.blogspot.de/2010/08/water-using-flow-maps.html}
|
|
29
|
+
*
|
|
30
|
+
* @augments Mesh
|
|
22
31
|
*/
|
|
23
|
-
|
|
24
32
|
class Water extends Mesh {
|
|
25
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Constructs a new water instance.
|
|
36
|
+
*
|
|
37
|
+
* @param {BufferGeometry} geometry - The water's geometry.
|
|
38
|
+
* @param {module:Water2~Options} [options] - The configuration options.
|
|
39
|
+
*/
|
|
26
40
|
constructor( geometry, options = {} ) {
|
|
27
41
|
|
|
28
42
|
super( geometry );
|
|
29
43
|
|
|
44
|
+
/**
|
|
45
|
+
* This flag can be used for type testing.
|
|
46
|
+
*
|
|
47
|
+
* @type {boolean}
|
|
48
|
+
* @readonly
|
|
49
|
+
* @default true
|
|
50
|
+
*/
|
|
30
51
|
this.isWater = true;
|
|
31
52
|
|
|
32
53
|
this.type = 'Water';
|
|
@@ -358,4 +379,22 @@ Water.WaterShader = {
|
|
|
358
379
|
|
|
359
380
|
};
|
|
360
381
|
|
|
382
|
+
/**
|
|
383
|
+
* Constructor options of `Water`.
|
|
384
|
+
*
|
|
385
|
+
* @typedef {Object} module:Water2~Options
|
|
386
|
+
* @property {number|Color|string} [color=0xFFFFFF] - The water color.
|
|
387
|
+
* @property {number} [textureWidth=512] - The texture width. A higher value results in better quality but is also more expensive.
|
|
388
|
+
* @property {number} [textureHeight=512] - The texture height. A higher value results in better quality but is also more expensive.
|
|
389
|
+
* @property {number} [clipBias=0] - The clip bias.
|
|
390
|
+
* @property {Vector2} [flowDirection=(1,0)] - The water's flow direction.
|
|
391
|
+
* @property {number} [flowSpeed=0.03] - The water's flow speed.
|
|
392
|
+
* @property {number} [reflectivity=0.02] - The water's reflectivity.
|
|
393
|
+
* @property {number} [scale=1] - The water's scale.
|
|
394
|
+
* @property {Object} [shader] - A custom water shader.
|
|
395
|
+
* @property {?Texture} [flowMap=null] - The flow map. If no flow map is assigned, the water flow is defined by `flowDirection`.
|
|
396
|
+
* @property {?Texture} [normalMap0] - The first water normal map.
|
|
397
|
+
* @property {?Texture} [normalMap1] - The second water normal map.
|
|
398
|
+
**/
|
|
399
|
+
|
|
361
400
|
export { Water };
|
|
@@ -10,21 +10,42 @@ import {
|
|
|
10
10
|
|
|
11
11
|
import { Fn, vec2, viewportSafeUV, viewportSharedTexture, reflector, pow, float, abs, texture, uniform, vec4, cameraPosition, positionWorld, uv, mix, vec3, normalize, max, dot, screenUV } from 'three/tsl';
|
|
12
12
|
|
|
13
|
+
/** @module Water2Mesh */
|
|
14
|
+
|
|
13
15
|
/**
|
|
16
|
+
* An advanced water effect that supports reflections, refractions and flow maps.
|
|
17
|
+
*
|
|
18
|
+
* Note that this class can only be used with {@link WebGPURenderer}.
|
|
19
|
+
* When using {@link WebGLRenderer}, use {@link module:Water2}.
|
|
20
|
+
*
|
|
14
21
|
* References:
|
|
15
|
-
* https://alex.vlachos.com/graphics/Vlachos-SIGGRAPH10-WaterFlow.pdf
|
|
16
|
-
* http://graphicsrunner.blogspot.de/2010/08/water-using-flow-maps.html
|
|
17
22
|
*
|
|
23
|
+
* - {@link https://alex.vlachos.com/graphics/Vlachos-SIGGRAPH10-WaterFlow.pdf}
|
|
24
|
+
* - {@link http://graphicsrunner.blogspot.de/2010/08/water-using-flow-maps.html}
|
|
25
|
+
*
|
|
26
|
+
* @augments Mesh
|
|
18
27
|
*/
|
|
19
|
-
|
|
20
28
|
class WaterMesh extends Mesh {
|
|
21
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Constructs a new water mesh.
|
|
32
|
+
*
|
|
33
|
+
* @param {BufferGeometry} geometry - The water's geometry.
|
|
34
|
+
* @param {module:Water2~Options} [options] - The configuration options.
|
|
35
|
+
*/
|
|
22
36
|
constructor( geometry, options = {} ) {
|
|
23
37
|
|
|
24
38
|
const material = new NodeMaterial();
|
|
25
39
|
|
|
26
40
|
super( geometry, material );
|
|
27
41
|
|
|
42
|
+
/**
|
|
43
|
+
* This flag can be used for type testing.
|
|
44
|
+
*
|
|
45
|
+
* @type {boolean}
|
|
46
|
+
* @readonly
|
|
47
|
+
* @default true
|
|
48
|
+
*/
|
|
28
49
|
this.isWater = true;
|
|
29
50
|
|
|
30
51
|
material.fragmentNode = new WaterNode( options, this );
|
|
@@ -159,4 +180,18 @@ class WaterNode extends TempNode {
|
|
|
159
180
|
|
|
160
181
|
}
|
|
161
182
|
|
|
183
|
+
/**
|
|
184
|
+
* Constructor options of `WaterMesh`.
|
|
185
|
+
*
|
|
186
|
+
* @typedef {Object} module:Water2Mesh~Options
|
|
187
|
+
* @property {number|Color|string} [color=0xFFFFFF] - The water color.
|
|
188
|
+
* @property {Vector2} [flowDirection=(1,0)] - The water's flow direction.
|
|
189
|
+
* @property {number} [flowSpeed=0.03] - The water's flow speed.
|
|
190
|
+
* @property {number} [reflectivity=0.02] - The water's reflectivity.
|
|
191
|
+
* @property {number} [scale=1] - The water's scale.
|
|
192
|
+
* @property {?Texture} [flowMap=null] - The flow map. If no flow map is assigned, the water flow is defined by `flowDirection`.
|
|
193
|
+
* @property {Texture} normalMap0 - The first water normal map.
|
|
194
|
+
* @property {Texture} normalMap1 - The second water normal map.
|
|
195
|
+
**/
|
|
196
|
+
|
|
162
197
|
export { WaterMesh };
|
|
@@ -8,32 +8,105 @@ import {
|
|
|
8
8
|
import { Fn, add, cameraPosition, div, normalize, positionWorld, sub, time, texture, vec2, vec3, max, dot, reflect, pow, length, float, uniform, reflector, mul, mix, diffuseColor } from 'three/tsl';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* A basic flat, reflective water effect.
|
|
12
|
+
*
|
|
13
|
+
* Note that this class can only be used with {@link WebGPURenderer}.
|
|
14
|
+
* When using {@link WebGLRenderer}, use {@link Water}.
|
|
15
|
+
*
|
|
16
|
+
* References:
|
|
17
|
+
*
|
|
18
|
+
* - [Flat mirror for three.js]{@link https://github.com/Slayvin}
|
|
19
|
+
* - [An implementation of water shader based on the flat mirror]{@link https://home.adelphi.edu/~stemkoski/}
|
|
20
|
+
* - [Water shader explanations in WebGL]{@link http://29a.ch/slides/2012/webglwater/ }
|
|
21
|
+
*
|
|
22
|
+
* @augments Mesh
|
|
15
23
|
*/
|
|
16
|
-
|
|
17
24
|
class WaterMesh extends Mesh {
|
|
18
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Constructs a new water mesh.
|
|
28
|
+
*
|
|
29
|
+
* @param {BufferGeometry} geometry - The water mesh's geometry.
|
|
30
|
+
* @param {WaterMesh~Options} [options] - The configuration options.
|
|
31
|
+
*/
|
|
19
32
|
constructor( geometry, options ) {
|
|
20
33
|
|
|
21
34
|
const material = new MeshLambertNodeMaterial();
|
|
22
35
|
|
|
23
36
|
super( geometry, material );
|
|
24
37
|
|
|
25
|
-
|
|
26
|
-
|
|
38
|
+
/**
|
|
39
|
+
* This flag can be used for type testing.
|
|
40
|
+
*
|
|
41
|
+
* @type {boolean}
|
|
42
|
+
* @readonly
|
|
43
|
+
* @default true
|
|
44
|
+
*/
|
|
45
|
+
this.isWaterMesh = true;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* The effect's resolution scale.
|
|
49
|
+
*
|
|
50
|
+
* @type {number}
|
|
51
|
+
* @default 0.5
|
|
52
|
+
*/
|
|
27
53
|
this.resolution = options.resolution !== undefined ? options.resolution : 0.5;
|
|
28
54
|
|
|
29
55
|
// Uniforms
|
|
30
56
|
|
|
57
|
+
/**
|
|
58
|
+
* The water's normal map.
|
|
59
|
+
*
|
|
60
|
+
* @type {TextureNode}
|
|
61
|
+
*/
|
|
31
62
|
this.waterNormals = texture( options.waterNormals );
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* The alpha value.
|
|
66
|
+
*
|
|
67
|
+
* @type {UniformNode<float>}
|
|
68
|
+
* @default 1
|
|
69
|
+
*/
|
|
32
70
|
this.alpha = uniform( options.alpha !== undefined ? options.alpha : 1.0 );
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* The size value.
|
|
74
|
+
*
|
|
75
|
+
* @type {UniformNode<float>}
|
|
76
|
+
* @default 1
|
|
77
|
+
*/
|
|
33
78
|
this.size = uniform( options.size !== undefined ? options.size : 1.0 );
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* The sun color.
|
|
82
|
+
*
|
|
83
|
+
* @type {UniformNode<color>}
|
|
84
|
+
* @default 0xffffff
|
|
85
|
+
*/
|
|
34
86
|
this.sunColor = uniform( new Color( options.sunColor !== undefined ? options.sunColor : 0xffffff ) );
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* The sun direction.
|
|
90
|
+
*
|
|
91
|
+
* @type {UniformNode<vec3>}
|
|
92
|
+
* @default (0.70707,0.70707,0.0)
|
|
93
|
+
*/
|
|
35
94
|
this.sunDirection = uniform( options.sunDirection !== undefined ? options.sunDirection : new Vector3( 0.70707, 0.70707, 0.0 ) );
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* The water color.
|
|
98
|
+
*
|
|
99
|
+
* @type {UniformNode<color>}
|
|
100
|
+
* @default 0x7f7f7f
|
|
101
|
+
*/
|
|
36
102
|
this.waterColor = uniform( new Color( options.waterColor !== undefined ? options.waterColor : 0x7f7f7f ) );
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* The distortion scale.
|
|
106
|
+
*
|
|
107
|
+
* @type {UniformNode<float>}
|
|
108
|
+
* @default 20
|
|
109
|
+
*/
|
|
37
110
|
this.distortionScale = uniform( options.distortionScale !== undefined ? options.distortionScale : 20.0 );
|
|
38
111
|
|
|
39
112
|
// TSL
|
|
@@ -105,4 +178,18 @@ class WaterMesh extends Mesh {
|
|
|
105
178
|
|
|
106
179
|
}
|
|
107
180
|
|
|
181
|
+
/**
|
|
182
|
+
* Constructor options of `WaterMesh`.
|
|
183
|
+
*
|
|
184
|
+
* @typedef {Object} WaterMesh~Options
|
|
185
|
+
* @property {number} [resolution=0.5] - The resolution scale.
|
|
186
|
+
* @property {?Texture} [waterNormals=null] - The water's normal map.
|
|
187
|
+
* @property {number} [alpha=1] - The alpha value.
|
|
188
|
+
* @property {number} [size=1] - The size value.
|
|
189
|
+
* @property {number|Color|string} [sunColor=0xffffff] - The sun color.
|
|
190
|
+
* @property {Vector3} [sunDirection=(0.70707,0.70707,0.0)] - The sun direction.
|
|
191
|
+
* @property {number|Color|string} [waterColor=0x7F7F7F] - The water color.
|
|
192
|
+
* @property {number} [distortionScale=20] - The distortion scale.
|
|
193
|
+
**/
|
|
194
|
+
|
|
108
195
|
export { WaterMesh };
|
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @classdesc Can be used to include Ammo.js as a Physics engine into
|
|
3
|
+
* `three.js` apps. Make sure to include `ammo.wasm.js` first:
|
|
4
|
+
* ```
|
|
5
|
+
* <script src="jsm/libs/ammo.wasm.js"></script>
|
|
6
|
+
* ```
|
|
7
|
+
* It is then possible to initialize the API via:
|
|
8
|
+
* ```js
|
|
9
|
+
* const physics = await AmmoPhysics();
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* @name AmmoPhysics
|
|
13
|
+
* @class
|
|
14
|
+
* @hideconstructor
|
|
15
|
+
*/
|
|
1
16
|
async function AmmoPhysics() {
|
|
2
17
|
|
|
3
18
|
if ( 'Ammo' in window === false ) {
|
|
@@ -265,8 +280,40 @@ async function AmmoPhysics() {
|
|
|
265
280
|
setInterval( step, 1000 / frameRate );
|
|
266
281
|
|
|
267
282
|
return {
|
|
283
|
+
/**
|
|
284
|
+
* Adds the given scene to this physics simulation. Only meshes with a
|
|
285
|
+
* `physics` object in their {@link Object3D#userData} field will be honored.
|
|
286
|
+
* The object can be used to store the mass of the mesh. E.g.:
|
|
287
|
+
* ```js
|
|
288
|
+
* box.userData.physics = { mass: 1 };
|
|
289
|
+
* ```
|
|
290
|
+
*
|
|
291
|
+
* @method
|
|
292
|
+
* @name AmmoPhysics#addScene
|
|
293
|
+
* @param {Object3D} scene The scene or any type of 3D object to add.
|
|
294
|
+
*/
|
|
268
295
|
addScene: addScene,
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Adds the given mesh to this physics simulation.
|
|
299
|
+
*
|
|
300
|
+
* @method
|
|
301
|
+
* @name AmmoPhysics#addMesh
|
|
302
|
+
* @param {Mesh} mesh The mesh to add.
|
|
303
|
+
* @param {number} [mass=0] The mass in kg of the mesh.
|
|
304
|
+
*/
|
|
269
305
|
addMesh: addMesh,
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* Set the position of the given mesh which is part of the physics simulation. Calling this
|
|
309
|
+
* method will reset the current simulated velocity of the mesh.
|
|
310
|
+
*
|
|
311
|
+
* @method
|
|
312
|
+
* @name AmmoPhysics#setMeshPosition
|
|
313
|
+
* @param {Mesh} mesh The mesh to update the position for.
|
|
314
|
+
* @param {Vector3} position - The new position.
|
|
315
|
+
* @param {number} [index=0] - If the mesh is instanced, the index represents the instanced ID.
|
|
316
|
+
*/
|
|
270
317
|
setMeshPosition: setMeshPosition
|
|
271
318
|
// addCompoundMesh
|
|
272
319
|
};
|
|
@@ -57,6 +57,19 @@ function setupCollisionFiltering( settings ) {
|
|
|
57
57
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
+
/**
|
|
61
|
+
* @classdesc Can be used to include Jolt as a Physics engine into
|
|
62
|
+
* `three.js` apps. The API can be initialized via:
|
|
63
|
+
* ```js
|
|
64
|
+
* const physics = await JoltPhysics();
|
|
65
|
+
* ```
|
|
66
|
+
* The component automatically imports Jolt from a CDN so make sure
|
|
67
|
+
* to use the component with an active Internet connection.
|
|
68
|
+
*
|
|
69
|
+
* @name JoltPhysics
|
|
70
|
+
* @class
|
|
71
|
+
* @hideconstructor
|
|
72
|
+
*/
|
|
60
73
|
async function JoltPhysics() {
|
|
61
74
|
|
|
62
75
|
if ( Jolt === null ) {
|
|
@@ -270,9 +283,44 @@ async function JoltPhysics() {
|
|
|
270
283
|
setInterval( step, 1000 / frameRate );
|
|
271
284
|
|
|
272
285
|
return {
|
|
286
|
+
/**
|
|
287
|
+
* Adds the given scene to this physics simulation. Only meshes with a
|
|
288
|
+
* `physics` object in their {@link Object3D#userData} field will be honored.
|
|
289
|
+
* The object can be used to store the mass and restitution of the mesh. E.g.:
|
|
290
|
+
* ```js
|
|
291
|
+
* box.userData.physics = { mass: 1, restitution: 0 };
|
|
292
|
+
* ```
|
|
293
|
+
*
|
|
294
|
+
* @method
|
|
295
|
+
* @name JoltPhysics#addScene
|
|
296
|
+
* @param {Object3D} scene The scene or any type of 3D object to add.
|
|
297
|
+
*/
|
|
273
298
|
addScene: addScene,
|
|
299
|
+
|
|
300
|
+
/**
|
|
301
|
+
* Adds the given mesh to this physics simulation.
|
|
302
|
+
*
|
|
303
|
+
* @method
|
|
304
|
+
* @name JoltPhysics#addMesh
|
|
305
|
+
* @param {Mesh} mesh The mesh to add.
|
|
306
|
+
* @param {number} [mass=0] The mass in kg of the mesh.
|
|
307
|
+
* @param {number} [restitution=0] The restitution/friction of the mesh.
|
|
308
|
+
*/
|
|
274
309
|
addMesh: addMesh,
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* Set the position of the given mesh which is part of the physics simulation. Calling this
|
|
313
|
+
* method will reset the current simulated velocity of the mesh.
|
|
314
|
+
*
|
|
315
|
+
* @method
|
|
316
|
+
* @name JoltPhysics#setMeshPosition
|
|
317
|
+
* @param {Mesh} mesh The mesh to update the position for.
|
|
318
|
+
* @param {Vector3} position - The new position.
|
|
319
|
+
* @param {number} [index=0] - If the mesh is instanced, the index represents the instanced ID.
|
|
320
|
+
*/
|
|
275
321
|
setMeshPosition: setMeshPosition,
|
|
322
|
+
|
|
323
|
+
// NOOP
|
|
276
324
|
setMeshVelocity: setMeshVelocity
|
|
277
325
|
};
|
|
278
326
|
|
|
@@ -54,6 +54,19 @@ function getShape( geometry ) {
|
|
|
54
54
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
+
/**
|
|
58
|
+
* @classdesc Can be used to include Rapier as a Physics engine into
|
|
59
|
+
* `three.js` apps. The API can be initialized via:
|
|
60
|
+
* ```js
|
|
61
|
+
* const physics = await RapierPhysics();
|
|
62
|
+
* ```
|
|
63
|
+
* The component automatically imports Rapier from a CDN so make sure
|
|
64
|
+
* to use the component with an active Internet connection.
|
|
65
|
+
*
|
|
66
|
+
* @name RapierPhysics
|
|
67
|
+
* @class
|
|
68
|
+
* @hideconstructor
|
|
69
|
+
*/
|
|
57
70
|
async function RapierPhysics() {
|
|
58
71
|
|
|
59
72
|
if ( RAPIER === null ) {
|
|
@@ -229,9 +242,52 @@ async function RapierPhysics() {
|
|
|
229
242
|
setInterval( step, 1000 / frameRate );
|
|
230
243
|
|
|
231
244
|
return {
|
|
245
|
+
/**
|
|
246
|
+
* Adds the given scene to this physics simulation. Only meshes with a
|
|
247
|
+
* `physics` object in their {@link Object3D#userData} field will be honored.
|
|
248
|
+
* The object can be used to store the mass and restitution of the mesh. E.g.:
|
|
249
|
+
* ```js
|
|
250
|
+
* box.userData.physics = { mass: 1, restitution: 0 };
|
|
251
|
+
* ```
|
|
252
|
+
*
|
|
253
|
+
* @method
|
|
254
|
+
* @name RapierPhysics#addScene
|
|
255
|
+
* @param {Object3D} scene The scene or any type of 3D object to add.
|
|
256
|
+
*/
|
|
232
257
|
addScene: addScene,
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Adds the given mesh to this physics simulation.
|
|
261
|
+
*
|
|
262
|
+
* @method
|
|
263
|
+
* @name RapierPhysics#addMesh
|
|
264
|
+
* @param {Mesh} mesh The mesh to add.
|
|
265
|
+
* @param {number} [mass=0] The mass in kg of the mesh.
|
|
266
|
+
* @param {number} [restitution=0] The restitution/friction of the mesh.
|
|
267
|
+
*/
|
|
233
268
|
addMesh: addMesh,
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* Set the position of the given mesh which is part of the physics simulation. Calling this
|
|
272
|
+
* method will reset the current simulated velocity of the mesh.
|
|
273
|
+
*
|
|
274
|
+
* @method
|
|
275
|
+
* @name RapierPhysics#setMeshPosition
|
|
276
|
+
* @param {Mesh} mesh The mesh to update the position for.
|
|
277
|
+
* @param {Vector3} position - The new position.
|
|
278
|
+
* @param {number} [index=0] - If the mesh is instanced, the index represents the instanced ID.
|
|
279
|
+
*/
|
|
234
280
|
setMeshPosition: setMeshPosition,
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* Set the velocity of the given mesh which is part of the physics simulation.
|
|
284
|
+
*
|
|
285
|
+
* @method
|
|
286
|
+
* @name RapierPhysics#setMeshVelocity
|
|
287
|
+
* @param {Mesh} mesh The mesh to update the velocity for.
|
|
288
|
+
* @param {Vector3} velocity - The new velocity.
|
|
289
|
+
* @param {number} [index=0] - If the mesh is instanced, the index represents the instanced ID.
|
|
290
|
+
*/
|
|
235
291
|
setMeshVelocity: setMeshVelocity
|
|
236
292
|
};
|
|
237
293
|
|