super-three 0.175.0 → 0.177.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/README.md +3 -3
- package/build/three.cjs +7631 -6743
- package/build/three.core.js +7496 -6758
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +172 -22
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +14 -6
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +3948 -1678
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +3941 -1678
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +0 -1
- package/examples/jsm/animation/AnimationClipCreator.js +1 -0
- package/examples/jsm/animation/CCDIKSolver.js +6 -3
- package/examples/jsm/capabilities/WebGL.js +1 -0
- package/examples/jsm/capabilities/WebGPU.js +1 -0
- package/examples/jsm/controls/ArcballControls.js +14 -3
- package/examples/jsm/controls/DragControls.js +1 -0
- package/examples/jsm/controls/FirstPersonControls.js +1 -0
- package/examples/jsm/controls/FlyControls.js +1 -0
- package/examples/jsm/controls/MapControls.js +1 -0
- package/examples/jsm/controls/OrbitControls.js +1 -0
- package/examples/jsm/controls/PointerLockControls.js +5 -3
- package/examples/jsm/controls/TrackballControls.js +1 -0
- package/examples/jsm/controls/TransformControls.js +1 -0
- package/examples/jsm/csm/CSM.js +2 -0
- package/examples/jsm/csm/CSMFrustum.js +2 -0
- package/examples/jsm/csm/CSMHelper.js +1 -0
- package/examples/jsm/csm/CSMShader.js +4 -1
- package/examples/jsm/csm/CSMShadowNode.js +18 -4
- package/examples/jsm/curves/CurveExtras.js +14 -0
- package/examples/jsm/curves/NURBSCurve.js +1 -0
- package/examples/jsm/curves/NURBSSurface.js +2 -0
- package/examples/jsm/curves/NURBSUtils.js +4 -1
- package/examples/jsm/curves/NURBSVolume.js +2 -0
- package/examples/jsm/effects/AnaglyphEffect.js +2 -0
- package/examples/jsm/effects/AsciiEffect.js +2 -0
- package/examples/jsm/effects/OutlineEffect.js +2 -0
- package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -0
- package/examples/jsm/effects/StereoEffect.js +2 -0
- package/examples/jsm/environments/DebugEnvironment.js +1 -0
- package/examples/jsm/environments/RoomEnvironment.js +49 -35
- package/examples/jsm/exporters/DRACOExporter.js +4 -2
- package/examples/jsm/exporters/EXRExporter.js +2 -0
- package/examples/jsm/exporters/GLTFExporter.js +7 -4
- package/examples/jsm/exporters/KTX2Exporter.js +2 -0
- package/examples/jsm/exporters/OBJExporter.js +3 -1
- package/examples/jsm/exporters/PLYExporter.js +4 -2
- package/examples/jsm/exporters/STLExporter.js +2 -0
- package/examples/jsm/exporters/USDZExporter.js +12 -10
- package/examples/jsm/geometries/BoxLineGeometry.js +1 -0
- package/examples/jsm/geometries/ConvexGeometry.js +1 -0
- package/examples/jsm/geometries/DecalGeometry.js +1 -0
- package/examples/jsm/geometries/ParametricFunctions.js +4 -1
- package/examples/jsm/geometries/ParametricGeometry.js +1 -0
- package/examples/jsm/geometries/RoundedBoxGeometry.js +1 -0
- package/examples/jsm/geometries/TeapotGeometry.js +1 -0
- package/examples/jsm/geometries/TextGeometry.js +1 -0
- package/examples/jsm/helpers/LightProbeHelper.js +1 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -0
- package/examples/jsm/helpers/OctreeHelper.js +1 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +1 -0
- package/examples/jsm/helpers/RapierHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +1 -0
- package/examples/jsm/helpers/TextureHelper.js +1 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +5 -4
- package/examples/jsm/helpers/VertexNormalsHelper.js +1 -0
- package/examples/jsm/helpers/VertexTangentsHelper.js +1 -0
- package/examples/jsm/helpers/ViewHelper.js +1 -0
- package/examples/jsm/interactive/HTMLMesh.js +7 -0
- package/examples/jsm/interactive/InteractiveGroup.js +1 -0
- package/examples/jsm/interactive/SelectionBox.js +2 -0
- package/examples/jsm/interactive/SelectionHelper.js +2 -0
- package/examples/jsm/lighting/TiledLighting.js +1 -0
- package/examples/jsm/lights/LightProbeGenerator.js +1 -0
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -0
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +1 -0
- package/examples/jsm/lines/Line2.js +1 -0
- package/examples/jsm/lines/LineGeometry.js +1 -0
- package/examples/jsm/lines/LineMaterial.js +4 -4
- package/examples/jsm/lines/LineSegments2.js +1 -0
- package/examples/jsm/lines/LineSegmentsGeometry.js +1 -0
- package/examples/jsm/lines/Wireframe.js +1 -0
- package/examples/jsm/lines/WireframeGeometry2.js +1 -0
- package/examples/jsm/lines/webgpu/Line2.js +1 -0
- package/examples/jsm/lines/webgpu/LineSegments2.js +3 -1
- package/examples/jsm/lines/webgpu/Wireframe.js +1 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -0
- package/examples/jsm/loaders/3MFLoader.js +1 -0
- package/examples/jsm/loaders/AMFLoader.js +1 -0
- package/examples/jsm/loaders/BVHLoader.js +1 -0
- package/examples/jsm/loaders/ColladaLoader.js +5 -4
- package/examples/jsm/loaders/DDSLoader.js +1 -0
- package/examples/jsm/loaders/DRACOLoader.js +2 -1
- package/examples/jsm/loaders/EXRLoader.js +1 -0
- package/examples/jsm/loaders/FBXLoader.js +24 -22
- package/examples/jsm/loaders/FontLoader.js +1 -0
- package/examples/jsm/loaders/GCodeLoader.js +1 -0
- package/examples/jsm/loaders/GLTFLoader.js +10 -82
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -0
- package/examples/jsm/loaders/IESLoader.js +1 -0
- package/examples/jsm/loaders/KMZLoader.js +1 -0
- package/examples/jsm/loaders/KTX2Loader.js +67 -26
- package/examples/jsm/loaders/KTXLoader.js +1 -0
- package/examples/jsm/loaders/LDrawLoader.js +55 -3
- package/examples/jsm/loaders/LUT3dlLoader.js +1 -0
- package/examples/jsm/loaders/LUTCubeLoader.js +1 -0
- package/examples/jsm/loaders/LUTImageLoader.js +1 -0
- package/examples/jsm/loaders/LWOLoader.js +1 -13
- package/examples/jsm/loaders/LottieLoader.js +15 -0
- package/examples/jsm/loaders/MD2Loader.js +1 -0
- package/examples/jsm/loaders/MDDLoader.js +1 -0
- package/examples/jsm/loaders/MTLLoader.js +4 -3
- package/examples/jsm/loaders/MaterialXLoader.js +1 -0
- package/examples/jsm/loaders/NRRDLoader.js +1 -0
- package/examples/jsm/loaders/OBJLoader.js +1 -0
- package/examples/jsm/loaders/PCDLoader.js +122 -19
- package/examples/jsm/loaders/PDBLoader.js +1 -0
- package/examples/jsm/loaders/PLYLoader.js +1 -0
- package/examples/jsm/loaders/PVRLoader.js +1 -0
- package/examples/jsm/loaders/RGBELoader.js +1 -0
- package/examples/jsm/loaders/RGBMLoader.js +1 -0
- package/examples/jsm/loaders/STLLoader.js +1 -0
- package/examples/jsm/loaders/SVGLoader.js +1 -0
- package/examples/jsm/loaders/TDSLoader.js +1 -0
- package/examples/jsm/loaders/TGALoader.js +1 -0
- package/examples/jsm/loaders/TIFFLoader.js +1 -0
- package/examples/jsm/loaders/TTFLoader.js +1 -0
- package/examples/jsm/loaders/USDZLoader.js +1 -0
- package/examples/jsm/loaders/UltraHDRLoader.js +1 -0
- package/examples/jsm/loaders/VOXLoader.js +1 -0
- package/examples/jsm/loaders/VRMLLoader.js +3 -2
- package/examples/jsm/loaders/VTKLoader.js +1 -0
- package/examples/jsm/loaders/XYZLoader.js +1 -0
- package/examples/jsm/loaders/lwo/IFFParser.js +74 -74
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +1 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +1 -0
- package/examples/jsm/math/Capsule.js +2 -0
- package/examples/jsm/math/ColorConverter.js +1 -0
- package/examples/jsm/math/ConvexHull.js +2 -0
- package/examples/jsm/math/ImprovedNoise.js +19 -14
- package/examples/jsm/math/Lut.js +2 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +2 -0
- package/examples/jsm/math/OBB.js +2 -0
- package/examples/jsm/math/Octree.js +20 -1
- package/examples/jsm/math/SimplexNoise.js +2 -0
- package/examples/jsm/misc/ConvexObjectBreaker.js +3 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
- package/examples/jsm/misc/Gyroscope.js +1 -0
- package/examples/jsm/misc/MD2Character.js +2 -0
- package/examples/jsm/misc/MD2CharacterComplex.js +5 -3
- package/examples/jsm/misc/MorphAnimMesh.js +1 -0
- package/examples/jsm/misc/MorphBlendMesh.js +1 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +2 -0
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +2 -0
- package/examples/jsm/misc/RollerCoaster.js +5 -0
- package/examples/jsm/misc/Timer.js +2 -0
- package/examples/jsm/misc/TubePainter.js +1 -0
- package/examples/jsm/misc/Volume.js +2 -0
- package/examples/jsm/misc/VolumeSlice.js +1 -0
- package/examples/jsm/modifiers/CurveModifier.js +3 -0
- package/examples/jsm/modifiers/CurveModifierGPU.js +2 -0
- package/examples/jsm/modifiers/EdgeSplitModifier.js +2 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -0
- package/examples/jsm/modifiers/TessellateModifier.js +2 -0
- package/examples/jsm/objects/GroundedSkybox.js +1 -0
- package/examples/jsm/objects/Lensflare.js +3 -0
- package/examples/jsm/objects/LensflareMesh.js +1 -0
- package/examples/jsm/objects/MarchingCubes.js +2 -0
- package/examples/jsm/objects/Reflector.js +1 -0
- package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
- package/examples/jsm/objects/Refractor.js +1 -0
- package/examples/jsm/objects/ShadowMesh.js +1 -0
- package/examples/jsm/objects/Sky.js +2 -1
- package/examples/jsm/objects/SkyMesh.js +20 -17
- package/examples/jsm/objects/Water.js +1 -0
- package/examples/jsm/objects/Water2.js +1 -0
- package/examples/jsm/objects/Water2Mesh.js +3 -1
- package/examples/jsm/objects/WaterMesh.js +2 -1
- package/examples/jsm/physics/AmmoPhysics.js +1 -0
- package/examples/jsm/physics/JoltPhysics.js +1 -0
- package/examples/jsm/physics/RapierPhysics.js +58 -1
- package/examples/jsm/postprocessing/AfterimagePass.js +20 -2
- package/examples/jsm/postprocessing/BloomPass.js +2 -1
- package/examples/jsm/postprocessing/BokehPass.js +2 -1
- package/examples/jsm/postprocessing/ClearPass.js +1 -0
- package/examples/jsm/postprocessing/CubeTexturePass.js +1 -0
- package/examples/jsm/postprocessing/DotScreenPass.js +1 -0
- package/examples/jsm/postprocessing/EffectComposer.js +5 -6
- package/examples/jsm/postprocessing/FXAAPass.js +40 -0
- package/examples/jsm/postprocessing/FilmPass.js +1 -0
- package/examples/jsm/postprocessing/GTAOPass.js +4 -3
- package/examples/jsm/postprocessing/GlitchPass.js +2 -1
- package/examples/jsm/postprocessing/HalftonePass.js +2 -1
- package/examples/jsm/postprocessing/LUTPass.js +1 -0
- package/examples/jsm/postprocessing/MaskPass.js +1 -0
- package/examples/jsm/postprocessing/OutlinePass.js +5 -2
- package/examples/jsm/postprocessing/OutputPass.js +1 -0
- package/examples/jsm/postprocessing/Pass.js +3 -1
- package/examples/jsm/postprocessing/RenderPass.js +1 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +2 -1
- package/examples/jsm/postprocessing/RenderTransitionPass.js +4 -3
- package/examples/jsm/postprocessing/SAOPass.js +3 -2
- package/examples/jsm/postprocessing/SMAAPass.js +3 -2
- package/examples/jsm/postprocessing/SSAARenderPass.js +2 -1
- package/examples/jsm/postprocessing/SSAOPass.js +2 -1
- package/examples/jsm/postprocessing/SSRPass.js +4 -3
- package/examples/jsm/postprocessing/SavePass.js +2 -1
- package/examples/jsm/postprocessing/ShaderPass.js +1 -0
- package/examples/jsm/postprocessing/TAARenderPass.js +1 -0
- package/examples/jsm/postprocessing/TexturePass.js +1 -0
- package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -1
- package/examples/jsm/renderers/CSS2DRenderer.js +3 -0
- package/examples/jsm/renderers/CSS3DRenderer.js +4 -0
- package/examples/jsm/renderers/Projector.js +2 -0
- package/examples/jsm/renderers/SVGRenderer.js +3 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +4 -1
- package/examples/jsm/shaders/AfterimageShader.js +4 -1
- package/examples/jsm/shaders/BasicShader.js +4 -1
- package/examples/jsm/shaders/BleachBypassShader.js +4 -1
- package/examples/jsm/shaders/BlendShader.js +4 -1
- package/examples/jsm/shaders/BokehShader.js +4 -1
- package/examples/jsm/shaders/BokehShader2.js +4 -1
- package/examples/jsm/shaders/BrightnessContrastShader.js +4 -1
- package/examples/jsm/shaders/ColorCorrectionShader.js +4 -1
- package/examples/jsm/shaders/ColorifyShader.js +4 -1
- package/examples/jsm/shaders/ConvolutionShader.js +4 -1
- package/examples/jsm/shaders/CopyShader.js +4 -1
- package/examples/jsm/shaders/DOFMipMapShader.js +4 -1
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +4 -1
- package/examples/jsm/shaders/DigitalGlitch.js +4 -1
- package/examples/jsm/shaders/DotScreenShader.js +4 -1
- package/examples/jsm/shaders/ExposureShader.js +4 -1
- package/examples/jsm/shaders/FXAAShader.js +4 -1
- package/examples/jsm/shaders/FilmShader.js +4 -1
- package/examples/jsm/shaders/FocusShader.js +4 -1
- package/examples/jsm/shaders/FreiChenShader.js +4 -1
- package/examples/jsm/shaders/GTAOShader.js +4 -1
- package/examples/jsm/shaders/GammaCorrectionShader.js +4 -1
- package/examples/jsm/shaders/GodRaysShader.js +4 -1
- package/examples/jsm/shaders/HalftoneShader.js +4 -1
- package/examples/jsm/shaders/HorizontalBlurShader.js +4 -1
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +4 -1
- package/examples/jsm/shaders/HueSaturationShader.js +4 -1
- package/examples/jsm/shaders/KaleidoShader.js +4 -1
- package/examples/jsm/shaders/LuminosityHighPassShader.js +4 -1
- package/examples/jsm/shaders/LuminosityShader.js +4 -1
- package/examples/jsm/shaders/MirrorShader.js +4 -1
- package/examples/jsm/shaders/NormalMapShader.js +4 -1
- package/examples/jsm/shaders/OutputShader.js +4 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +4 -1
- package/examples/jsm/shaders/RGBShiftShader.js +4 -1
- package/examples/jsm/shaders/SAOShader.js +4 -1
- package/examples/jsm/shaders/SMAAShader.js +1 -0
- package/examples/jsm/shaders/SSAOShader.js +4 -1
- package/examples/jsm/shaders/SSRShader.js +1 -0
- package/examples/jsm/shaders/SepiaShader.js +4 -1
- package/examples/jsm/shaders/SobelOperatorShader.js +4 -1
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +4 -1
- package/examples/jsm/shaders/TechnicolorShader.js +4 -1
- package/examples/jsm/shaders/ToonShader.js +2 -1
- package/examples/jsm/shaders/TriangleBlurShader.js +4 -1
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +4 -1
- package/examples/jsm/shaders/VelocityShader.js +4 -1
- package/examples/jsm/shaders/VerticalBlurShader.js +4 -1
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +4 -1
- package/examples/jsm/shaders/VignetteShader.js +4 -1
- package/examples/jsm/shaders/VolumeShader.js +5 -2
- package/examples/jsm/shaders/WaterRefractionShader.js +4 -1
- package/examples/jsm/textures/FlakesTexture.js +2 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +1 -2
- package/examples/jsm/transpiler/TSLEncoder.js +52 -8
- package/examples/jsm/transpiler/Transpiler.js +2 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +2 -3
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +1 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +5 -4
- package/examples/jsm/tsl/display/BloomNode.js +1 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +33 -33
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +1 -0
- package/examples/jsm/tsl/display/DotScreenNode.js +1 -0
- package/examples/jsm/tsl/display/FXAANode.js +3 -2
- package/examples/jsm/tsl/display/FilmNode.js +1 -0
- package/examples/jsm/tsl/display/GTAONode.js +1 -0
- package/examples/jsm/tsl/display/GaussianBlurNode.js +2 -27
- package/examples/jsm/tsl/display/LensflareNode.js +1 -0
- package/examples/jsm/tsl/display/Lut3DNode.js +1 -0
- package/examples/jsm/tsl/display/OutlineNode.js +1 -0
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +1 -0
- package/examples/jsm/tsl/display/PixelationPassNode.js +1 -0
- package/examples/jsm/tsl/display/RGBShiftNode.js +1 -0
- package/examples/jsm/tsl/display/SMAANode.js +9 -8
- package/examples/jsm/tsl/display/SSAAPassNode.js +3 -2
- package/examples/jsm/tsl/display/SSRNode.js +1 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +1 -0
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +1 -0
- package/examples/jsm/tsl/display/StereoPassNode.js +1 -0
- package/examples/jsm/tsl/display/TRAAPassNode.js +5 -4
- package/examples/jsm/tsl/display/TransitionNode.js +1 -0
- package/examples/jsm/tsl/display/hashBlur.js +28 -6
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +4 -3
- package/examples/jsm/tsl/math/Bayer.js +4 -1
- package/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
- package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
- package/examples/jsm/tsl/utils/Raymarching.js +6 -3
- package/examples/jsm/utils/BufferGeometryUtils.js +4 -1
- package/examples/jsm/utils/CameraUtils.js +4 -1
- package/examples/jsm/utils/GeometryCompressionUtils.js +4 -1
- package/examples/jsm/utils/GeometryUtils.js +4 -1
- package/examples/jsm/utils/LDrawUtils.js +2 -0
- package/examples/jsm/utils/SceneOptimizer.js +2 -0
- package/examples/jsm/utils/SceneUtils.js +4 -1
- package/examples/jsm/utils/ShadowMapViewer.js +2 -0
- package/examples/jsm/utils/ShadowMapViewerGPU.js +2 -0
- package/examples/jsm/utils/SkeletonUtils.js +4 -1
- package/examples/jsm/utils/SortUtils.js +4 -1
- package/examples/jsm/utils/UVsDebug.js +4 -1
- package/examples/jsm/utils/WebGLTextureUtils.js +4 -1
- package/examples/jsm/utils/WebGPUTextureUtils.js +4 -1
- package/examples/jsm/utils/WorkerPool.js +2 -0
- package/examples/jsm/webxr/ARButton.js +1 -0
- package/examples/jsm/webxr/OculusHandModel.js +1 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +1 -0
- package/examples/jsm/webxr/Text2D.js +4 -1
- package/examples/jsm/webxr/VRButton.js +1 -0
- package/examples/jsm/webxr/XRButton.js +1 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +2 -0
- package/examples/jsm/webxr/XREstimatedLight.js +1 -0
- package/examples/jsm/webxr/XRHandMeshModel.js +2 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +2 -0
- package/examples/jsm/webxr/XRPlanes.js +1 -0
- package/package.json +6 -4
- package/src/Three.Core.js +1 -1
- package/src/Three.TSL.js +13 -5
- package/src/Three.WebGPU.Nodes.js +1 -0
- package/src/Three.WebGPU.js +1 -0
- package/src/audio/AudioListener.js +13 -10
- package/src/cameras/ArrayCamera.js +9 -1
- package/src/constants.js +47 -20
- package/src/core/BufferAttribute.js +1 -1
- package/src/core/BufferGeometry.js +2 -5
- package/src/core/Object3D.js +22 -21
- package/src/core/RenderTarget.js +65 -21
- package/src/core/RenderTarget3D.js +1 -0
- package/src/extras/TextureUtils.js +1 -5
- package/src/extras/core/Curve.js +1 -1
- package/src/geometries/CapsuleGeometry.js +167 -17
- package/src/geometries/ExtrudeGeometry.js +39 -29
- package/src/helpers/ArrowHelper.js +2 -2
- package/src/helpers/SkeletonHelper.js +1 -1
- package/src/lights/LightShadow.js +14 -0
- package/src/lights/SpotLightShadow.js +9 -1
- package/src/lights/webgpu/ProjectorLight.js +46 -0
- package/src/loaders/BufferGeometryLoader.js +1 -10
- package/src/loaders/ImageBitmapLoader.js +21 -5
- package/src/loaders/ObjectLoader.js +44 -16
- package/src/loaders/nodes/NodeObjectLoader.js +2 -2
- package/src/materials/Material.js +1 -7
- package/src/materials/nodes/NodeMaterial.js +81 -18
- package/src/materials/nodes/manager/NodeMaterialObserver.js +20 -2
- package/src/math/Box3.js +28 -0
- package/src/math/Color.js +7 -7
- package/src/math/ColorManagement.js +22 -3
- package/src/math/FrustumArray.js +253 -0
- package/src/math/Ray.js +2 -0
- package/src/math/Sphere.js +28 -0
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/TSL.js +1 -0
- package/src/nodes/accessors/Bitangent.js +31 -9
- package/src/nodes/accessors/Camera.js +31 -4
- package/src/nodes/accessors/CubeTextureNode.js +50 -2
- package/src/nodes/accessors/InstanceNode.js +5 -4
- package/src/nodes/accessors/Lights.js +2 -2
- package/src/nodes/accessors/MaterialNode.js +4 -0
- package/src/nodes/accessors/ModelNode.js +1 -1
- package/src/nodes/accessors/Normal.js +26 -6
- package/src/nodes/accessors/Object3DNode.js +6 -7
- package/src/nodes/accessors/Position.js +14 -4
- package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
- package/src/nodes/accessors/ReferenceNode.js +1 -1
- package/src/nodes/accessors/SkinningNode.js +3 -2
- package/src/nodes/accessors/StorageBufferNode.js +25 -0
- package/src/nodes/accessors/StorageTextureNode.js +14 -3
- package/src/nodes/accessors/TextureNode.js +59 -8
- package/src/nodes/accessors/VelocityNode.js +1 -0
- package/src/nodes/accessors/VertexColorNode.js +4 -4
- package/src/nodes/code/CodeNode.js +8 -11
- package/src/nodes/core/AssignNode.js +27 -5
- package/src/nodes/core/AttributeNode.js +2 -2
- package/src/nodes/core/CacheNode.js +14 -0
- package/src/nodes/core/ContextNode.js +7 -3
- package/src/nodes/core/Node.js +68 -19
- package/src/nodes/core/NodeBuilder.js +100 -12
- package/src/nodes/core/NodeUtils.js +42 -0
- package/src/nodes/core/NodeVarying.js +19 -1
- package/src/nodes/core/PropertyNode.js +8 -12
- package/src/nodes/core/StackNode.js +127 -2
- package/src/nodes/core/StructTypeNode.js +26 -4
- package/src/nodes/core/VarNode.js +11 -2
- package/src/nodes/core/VaryingNode.js +40 -21
- package/src/nodes/display/BlendModes.js +42 -1
- package/src/nodes/display/ColorSpaceNode.js +4 -27
- package/src/nodes/display/PassNode.js +8 -11
- package/src/nodes/functions/ShadowMaskModel.js +5 -1
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +28 -10
- package/src/nodes/gpgpu/BarrierNode.js +3 -3
- package/src/nodes/gpgpu/ComputeNode.js +1 -1
- package/src/nodes/lighting/AnalyticLightNode.js +7 -13
- package/src/nodes/lighting/HemisphereLightNode.js +2 -2
- package/src/nodes/lighting/IESSpotLightNode.js +2 -1
- package/src/nodes/lighting/LightsNode.js +25 -7
- package/src/nodes/lighting/ProjectorLightNode.js +78 -0
- package/src/nodes/lighting/ShadowBaseNode.js +1 -12
- package/src/nodes/lighting/ShadowFilterNode.js +274 -0
- package/src/nodes/lighting/ShadowNode.js +172 -240
- package/src/nodes/lighting/SpotLightNode.js +44 -7
- package/src/nodes/materialx/lib/mx_noise.js +1 -1
- package/src/nodes/math/MathNode.js +56 -20
- package/src/nodes/math/OperatorNode.js +109 -82
- package/src/nodes/shapes/Shapes.js +5 -4
- package/src/nodes/tsl/TSLCore.js +140 -49
- package/src/nodes/utils/DebugNode.js +15 -3
- package/src/nodes/utils/Discard.js +2 -2
- package/src/nodes/utils/LoopNode.js +64 -17
- package/src/nodes/utils/ReflectorNode.js +67 -4
- package/src/objects/BatchedMesh.js +16 -4
- package/src/objects/Mesh.js +9 -0
- package/src/objects/Skeleton.js +1 -1
- package/src/objects/Sprite.js +9 -0
- package/src/renderers/WebGL3DRenderTarget.js +1 -0
- package/src/renderers/WebGLArrayRenderTarget.js +1 -0
- package/src/renderers/WebGLCubeRenderTarget.js +2 -4
- package/src/renderers/WebGLRenderer.js +21 -10
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Background.js +11 -0
- package/src/renderers/common/RenderList.js +0 -4
- package/src/renderers/common/RenderObject.js +12 -1
- package/src/renderers/common/Renderer.js +116 -8
- package/src/renderers/common/Textures.js +15 -21
- package/src/renderers/common/TimestampQueryPool.js +1 -0
- package/src/renderers/common/Uniform.js +1 -1
- package/src/renderers/common/UniformsGroup.js +14 -18
- package/src/renderers/common/XRManager.js +154 -25
- package/src/renderers/common/extras/PMREMGenerator.js +29 -22
- package/src/renderers/common/nodes/Nodes.js +13 -3
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
- package/src/renderers/webgl/WebGLShadowMap.js +3 -2
- package/src/renderers/webgl/WebGLTextures.js +143 -4
- package/src/renderers/webgl/WebGLUtils.js +1 -3
- package/src/renderers/webgl-fallback/WebGLBackend.js +170 -34
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +75 -7
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +1 -0
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +42 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +22 -21
- package/src/renderers/webgpu/WebGPUBackend.js +442 -127
- package/src/renderers/webgpu/WebGPURenderer.js +7 -0
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +4 -1
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +4 -1
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +75 -27
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +3 -1
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +18 -5
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +34 -4
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +44 -49
- package/src/renderers/webxr/WebXRController.js +1 -1
- package/src/renderers/webxr/WebXRManager.js +2 -1
- package/src/textures/DepthTexture.js +6 -10
- package/src/textures/Source.js +22 -0
- package/src/textures/Texture.js +118 -1
- package/src/textures/VideoTexture.js +1 -1
- package/examples/jsm/effects/PeppersGhostEffect.js +0 -172
- package/src/core/RenderTargetArray.js +0 -40
|
@@ -13,6 +13,8 @@ import { MorphBlendMesh } from '../misc/MorphBlendMesh.js';
|
|
|
13
13
|
/**
|
|
14
14
|
* This class represents a management component for animated MD2
|
|
15
15
|
* character assets. It provides a larger API compared to {@link MD2Character}.
|
|
16
|
+
*
|
|
17
|
+
* @three_import import { MD2CharacterComplex } from 'three/addons/misc/MD2CharacterComplex.js';
|
|
16
18
|
*/
|
|
17
19
|
class MD2CharacterComplex {
|
|
18
20
|
|
|
@@ -78,12 +80,12 @@ class MD2CharacterComplex {
|
|
|
78
80
|
this.backAcceleration = 600;
|
|
79
81
|
|
|
80
82
|
/**
|
|
81
|
-
* The character's front
|
|
83
|
+
* The character's front deceleration.
|
|
82
84
|
*
|
|
83
85
|
* @type {number}
|
|
84
86
|
* @default 600
|
|
85
87
|
*/
|
|
86
|
-
this.
|
|
88
|
+
this.frontDeceleration = 600;
|
|
87
89
|
|
|
88
90
|
/**
|
|
89
91
|
* The character's angular speed.
|
|
@@ -684,7 +686,7 @@ class MD2CharacterComplex {
|
|
|
684
686
|
if ( this.speed > 0 ) {
|
|
685
687
|
|
|
686
688
|
const k = exponentialEaseOut( this.speed / this.maxSpeed );
|
|
687
|
-
this.speed = MathUtils.clamp( this.speed - k * delta * this.
|
|
689
|
+
this.speed = MathUtils.clamp( this.speed - k * delta * this.frontDeceleration, 0, this.maxSpeed );
|
|
688
690
|
|
|
689
691
|
} else {
|
|
690
692
|
|
|
@@ -16,6 +16,8 @@ import { potpack } from '../libs/potpack.module.js';
|
|
|
16
16
|
*
|
|
17
17
|
* This class can only be used with {@link WebGLRenderer}.
|
|
18
18
|
* When using {@link WebGPURenderer}, import from `ProgressiveLightMapGPU.js`.
|
|
19
|
+
*
|
|
20
|
+
* @three_import import { ProgressiveLightMap } from 'three/addons/misc/ProgressiveLightMap.js';
|
|
19
21
|
*/
|
|
20
22
|
class ProgressiveLightMap {
|
|
21
23
|
|
|
@@ -18,6 +18,8 @@ import { potpack } from '../libs/potpack.module.js';
|
|
|
18
18
|
*
|
|
19
19
|
* This class can only be used with {@link WebGPURenderer}.
|
|
20
20
|
* When using {@link WebGLRenderer}, import from `ProgressiveLightMap.js`.
|
|
21
|
+
*
|
|
22
|
+
* @three_import import { ProgressiveLightMap } from 'three/addons/misc/ProgressiveLightMapGPU.js';
|
|
21
23
|
*/
|
|
22
24
|
class ProgressiveLightMap {
|
|
23
25
|
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
* A procedural roller coaster geometry.
|
|
13
13
|
*
|
|
14
14
|
* @augments BufferGeometry
|
|
15
|
+
* @three_import import { RollerCoasterGeometry } from 'three/addons/misc/RollerCoaster.js';
|
|
15
16
|
*/
|
|
16
17
|
class RollerCoasterGeometry extends BufferGeometry {
|
|
17
18
|
|
|
@@ -237,6 +238,7 @@ class RollerCoasterGeometry extends BufferGeometry {
|
|
|
237
238
|
* A procedural roller coaster lifters geometry.
|
|
238
239
|
*
|
|
239
240
|
* @augments BufferGeometry
|
|
241
|
+
* @three_import import { RollerCoasterLiftersGeometry } from 'three/addons/misc/RollerCoaster.js';
|
|
240
242
|
*/
|
|
241
243
|
class RollerCoasterLiftersGeometry extends BufferGeometry {
|
|
242
244
|
|
|
@@ -424,6 +426,7 @@ class RollerCoasterLiftersGeometry extends BufferGeometry {
|
|
|
424
426
|
* A procedural roller coaster shadow geometry.
|
|
425
427
|
*
|
|
426
428
|
* @augments BufferGeometry
|
|
429
|
+
* @three_import import { RollerCoasterShadowGeometry } from 'three/addons/misc/RollerCoaster.js';
|
|
427
430
|
*/
|
|
428
431
|
class RollerCoasterShadowGeometry extends BufferGeometry {
|
|
429
432
|
|
|
@@ -507,6 +510,7 @@ class RollerCoasterShadowGeometry extends BufferGeometry {
|
|
|
507
510
|
* A procedural sky geometry.
|
|
508
511
|
*
|
|
509
512
|
* @augments BufferGeometry
|
|
513
|
+
* @three_import import { SkyGeometry } from 'three/addons/misc/RollerCoaster.js';
|
|
510
514
|
*/
|
|
511
515
|
class SkyGeometry extends BufferGeometry {
|
|
512
516
|
|
|
@@ -548,6 +552,7 @@ class SkyGeometry extends BufferGeometry {
|
|
|
548
552
|
* A procedural trees geometry.
|
|
549
553
|
*
|
|
550
554
|
* @augments BufferGeometry
|
|
555
|
+
* @three_import import { TreesGeometry } from 'three/addons/misc/RollerCoaster.js';
|
|
551
556
|
*/
|
|
552
557
|
class TreesGeometry extends BufferGeometry {
|
|
553
558
|
|
|
@@ -8,6 +8,8 @@ import { VolumeSlice } from '../misc/VolumeSlice.js';
|
|
|
8
8
|
/**
|
|
9
9
|
* This class had been written to handle the output of the {@link NRRDLoader}.
|
|
10
10
|
* It contains a volume of data and information about it. For now it only handles 3 dimensional data.
|
|
11
|
+
*
|
|
12
|
+
* @three_import import { Volume } from 'three/addons/misc/Volume.js';
|
|
11
13
|
*/
|
|
12
14
|
class Volume {
|
|
13
15
|
|
|
@@ -203,6 +203,8 @@ vec3 transformedNormal = normalMatrix * (basis * objectNormal);
|
|
|
203
203
|
*
|
|
204
204
|
* This module can only be used with {@link WebGLRenderer}. When using {@link WebGPURenderer},
|
|
205
205
|
* import the class from `CurveModifierGPU.js`.
|
|
206
|
+
*
|
|
207
|
+
* @three_import import { Flow } from 'three/addons/modifiers/CurveModifier.js';
|
|
206
208
|
*/
|
|
207
209
|
export class Flow {
|
|
208
210
|
|
|
@@ -296,6 +298,7 @@ const _matrix = new Matrix4();
|
|
|
296
298
|
* This module can only be used with {@link WebGLRenderer}.
|
|
297
299
|
*
|
|
298
300
|
* @augments Flow
|
|
301
|
+
* @three_import import { InstancedFlow } from 'three/addons/modifiers/CurveModifier.js';
|
|
299
302
|
*/
|
|
300
303
|
export class InstancedFlow extends Flow {
|
|
301
304
|
|
|
@@ -164,6 +164,8 @@ function modifyShader( material, uniforms, numberOfCurves ) {
|
|
|
164
164
|
*
|
|
165
165
|
* This module can only be used with {@link WebGPURenderer}. When using {@link WebGLRenderer},
|
|
166
166
|
* import the class from `CurveModifier.js`.
|
|
167
|
+
*
|
|
168
|
+
* @three_import import { Flow } from 'three/addons/modifiers/CurveModifierGPU.js';
|
|
167
169
|
*/
|
|
168
170
|
export class Flow {
|
|
169
171
|
|
|
@@ -17,6 +17,8 @@ const _C = new Vector3();
|
|
|
17
17
|
* const modifier = new EdgeSplitModifier();
|
|
18
18
|
* geometry = modifier.modify( geometry, Math.PI * 0.4 );
|
|
19
19
|
* ```
|
|
20
|
+
*
|
|
21
|
+
* @three_import import { EdgeSplitModifier } from 'three/addons/modifiers/EdgeSplitModifier.js';
|
|
20
22
|
*/
|
|
21
23
|
class EdgeSplitModifier {
|
|
22
24
|
|
|
@@ -21,6 +21,8 @@ const _cb = new Vector3(), _ab = new Vector3();
|
|
|
21
21
|
* const modifier = new SimplifyModifier();
|
|
22
22
|
* geometry = modifier.modify( geometry );
|
|
23
23
|
* ```
|
|
24
|
+
*
|
|
25
|
+
* @three_import import { SimplifyModifier } from 'three/addons/modifiers/SimplifyModifier.js';
|
|
24
26
|
*/
|
|
25
27
|
class SimplifyModifier {
|
|
26
28
|
|
|
@@ -14,6 +14,8 @@ import {
|
|
|
14
14
|
* const modifier = new TessellateModifier( 8, 6 );
|
|
15
15
|
* geometry = modifier.modify( geometry );
|
|
16
16
|
* ```
|
|
17
|
+
*
|
|
18
|
+
* @three_import import { TessellateModifier } from 'three/addons/modifiers/TessellateModifier.js';
|
|
17
19
|
*/
|
|
18
20
|
class TessellateModifier {
|
|
19
21
|
|
|
@@ -33,6 +33,7 @@ import {
|
|
|
33
33
|
* ```
|
|
34
34
|
*
|
|
35
35
|
* @augments Mesh
|
|
36
|
+
* @three_import import { Lensflare } from 'three/addons/objects/Lensflare.js';
|
|
36
37
|
*/
|
|
37
38
|
class Lensflare extends Mesh {
|
|
38
39
|
|
|
@@ -338,6 +339,8 @@ class Lensflare extends Mesh {
|
|
|
338
339
|
|
|
339
340
|
/**
|
|
340
341
|
* Represents a single flare that can be added to a {@link Lensflare} container.
|
|
342
|
+
*
|
|
343
|
+
* @three_import import { LensflareElement } from 'three/addons/objects/Lensflare.js';
|
|
341
344
|
*/
|
|
342
345
|
class LensflareElement {
|
|
343
346
|
|
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
* A special version of {@link Reflector} for usage with {@link SSRPass}.
|
|
20
20
|
*
|
|
21
21
|
* @augments Mesh
|
|
22
|
+
* @three_import import { ReflectorForSSRPass } from 'three/addons/objects/ReflectorForSSRPass.js';
|
|
22
23
|
*/
|
|
23
24
|
class ReflectorForSSRPass extends Mesh {
|
|
24
25
|
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
NodeMaterial
|
|
7
7
|
} from 'three/webgpu';
|
|
8
8
|
|
|
9
|
-
import { Fn, float, vec3, acos, add, mul, clamp, cos, dot, exp, max, mix, modelViewProjection, normalize, positionWorld, pow, smoothstep, sub,
|
|
9
|
+
import { Fn, float, vec3, acos, add, mul, clamp, cos, dot, exp, max, mix, modelViewProjection, normalize, positionWorld, pow, smoothstep, sub, varyingProperty, vec4, uniform, cameraPosition } from 'three/tsl';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Represents a skydome for scene backgrounds. Based on [A Practical Analytic Model for Daylight]{@link https://www.researchgate.net/publication/220720443_A_Practical_Analytic_Model_for_Daylight}
|
|
@@ -27,7 +27,8 @@ import { Fn, float, vec3, acos, add, mul, clamp, cos, dot, exp, max, mix, modelV
|
|
|
27
27
|
* ```
|
|
28
28
|
*
|
|
29
29
|
* @augments Mesh
|
|
30
|
-
|
|
30
|
+
* @three_import import { SkyMesh } from 'three/addons/objects/SkyMesh.js';
|
|
31
|
+
*/
|
|
31
32
|
class SkyMesh extends Mesh {
|
|
32
33
|
|
|
33
34
|
/**
|
|
@@ -90,6 +91,14 @@ class SkyMesh extends Mesh {
|
|
|
90
91
|
*/
|
|
91
92
|
this.isSky = true;
|
|
92
93
|
|
|
94
|
+
// Varyings
|
|
95
|
+
|
|
96
|
+
const vSunDirection = varyingProperty( 'vec3' );
|
|
97
|
+
const vSunE = varyingProperty( 'float' );
|
|
98
|
+
const vSunfade = varyingProperty( 'float' );
|
|
99
|
+
const vBetaR = varyingProperty( 'vec3' );
|
|
100
|
+
const vBetaM = varyingProperty( 'vec3' );
|
|
101
|
+
|
|
93
102
|
const vertexNode = /*@__PURE__*/ Fn( () => {
|
|
94
103
|
|
|
95
104
|
// constants for atmospheric scattering
|
|
@@ -117,35 +126,35 @@ class SkyMesh extends Mesh {
|
|
|
117
126
|
|
|
118
127
|
// varying sun position
|
|
119
128
|
|
|
120
|
-
const
|
|
121
|
-
|
|
129
|
+
const sunDirection = normalize( this.sunPosition );
|
|
130
|
+
vSunDirection.assign( sunDirection );
|
|
122
131
|
|
|
123
132
|
// varying sun intensity
|
|
124
133
|
|
|
125
|
-
const angle = dot(
|
|
134
|
+
const angle = dot( sunDirection, this.upUniform );
|
|
126
135
|
const zenithAngleCos = clamp( angle, - 1, 1 );
|
|
127
136
|
const sunIntensity = EE.mul( max( 0.0, float( 1.0 ).sub( pow( e, cutoffAngle.sub( acos( zenithAngleCos ) ).div( steepness ).negate() ) ) ) );
|
|
128
|
-
|
|
137
|
+
vSunE.assign( sunIntensity );
|
|
129
138
|
|
|
130
139
|
// varying sun fade
|
|
131
140
|
|
|
132
|
-
const
|
|
133
|
-
|
|
141
|
+
const sunfade = float( 1.0 ).sub( clamp( float( 1.0 ).sub( exp( this.sunPosition.y.div( 450000.0 ) ) ), 0, 1 ) );
|
|
142
|
+
vSunfade.assign( sunfade );
|
|
134
143
|
|
|
135
144
|
// varying vBetaR
|
|
136
145
|
|
|
137
|
-
const rayleighCoefficient = this.rayleigh.sub( float( 1.0 ).mul( float( 1.0 ).sub(
|
|
146
|
+
const rayleighCoefficient = this.rayleigh.sub( float( 1.0 ).mul( float( 1.0 ).sub( sunfade ) ) );
|
|
138
147
|
|
|
139
148
|
// extinction (absorption + out scattering)
|
|
140
149
|
// rayleigh coefficients
|
|
141
|
-
|
|
150
|
+
vBetaR.assign( totalRayleigh.mul( rayleighCoefficient ) );
|
|
142
151
|
|
|
143
152
|
// varying vBetaM
|
|
144
153
|
|
|
145
154
|
const c = float( 0.2 ).mul( this.turbidity ).mul( 10E-18 );
|
|
146
155
|
const totalMie = float( 0.434 ).mul( c ).mul( MieConst );
|
|
147
156
|
|
|
148
|
-
|
|
157
|
+
vBetaM.assign( totalMie.mul( this.mieCoefficient ) );
|
|
149
158
|
|
|
150
159
|
// position
|
|
151
160
|
|
|
@@ -158,12 +167,6 @@ class SkyMesh extends Mesh {
|
|
|
158
167
|
|
|
159
168
|
const fragmentNode = /*@__PURE__*/ Fn( () => {
|
|
160
169
|
|
|
161
|
-
const vSunDirection = varying( vec3(), 'vSunDirection' );
|
|
162
|
-
const vSunE = varying( float(), 'vSunE' );
|
|
163
|
-
const vSunfade = varying( float(), 'vSunfade' );
|
|
164
|
-
const vBetaR = varying( vec3(), 'vBetaR' );
|
|
165
|
-
const vBetaM = varying( vec3(), 'vBetaM' );
|
|
166
|
-
|
|
167
170
|
// constants for atmospheric scattering
|
|
168
171
|
const pi = float( 3.141592653589793238462643383279502884197169 );
|
|
169
172
|
|
|
@@ -28,6 +28,7 @@ import { Refractor } from '../objects/Refractor.js';
|
|
|
28
28
|
* - {@link http://graphicsrunner.blogspot.de/2010/08/water-using-flow-maps.html}
|
|
29
29
|
*
|
|
30
30
|
* @augments Mesh
|
|
31
|
+
* @three_import import { Water } from 'three/addons/objects/Water2.js';
|
|
31
32
|
*/
|
|
32
33
|
class Water extends Mesh {
|
|
33
34
|
|
|
@@ -24,6 +24,7 @@ import { Fn, vec2, viewportSafeUV, viewportSharedTexture, reflector, pow, float,
|
|
|
24
24
|
* - {@link http://graphicsrunner.blogspot.de/2010/08/water-using-flow-maps.html}
|
|
25
25
|
*
|
|
26
26
|
* @augments Mesh
|
|
27
|
+
* @three_import import { WaterMesh } from 'three/addons/objects/Water2Mesh.js';
|
|
27
28
|
*/
|
|
28
29
|
class WaterMesh extends Mesh {
|
|
29
30
|
|
|
@@ -36,6 +37,7 @@ class WaterMesh extends Mesh {
|
|
|
36
37
|
constructor( geometry, options = {} ) {
|
|
37
38
|
|
|
38
39
|
const material = new NodeMaterial();
|
|
40
|
+
material.transparent = true;
|
|
39
41
|
|
|
40
42
|
super( geometry, material );
|
|
41
43
|
|
|
@@ -48,7 +50,7 @@ class WaterMesh extends Mesh {
|
|
|
48
50
|
*/
|
|
49
51
|
this.isWater = true;
|
|
50
52
|
|
|
51
|
-
material.
|
|
53
|
+
material.colorNode = new WaterNode( options, this );
|
|
52
54
|
|
|
53
55
|
}
|
|
54
56
|
|
|
@@ -20,6 +20,7 @@ import { Fn, add, cameraPosition, div, normalize, positionWorld, sub, time, text
|
|
|
20
20
|
* - [Water shader explanations in WebGL]{@link http://29a.ch/slides/2012/webglwater/ }
|
|
21
21
|
*
|
|
22
22
|
* @augments Mesh
|
|
23
|
+
* @three_import import { WaterMesh } from 'three/addons/objects/WaterMesh.js';
|
|
23
24
|
*/
|
|
24
25
|
class WaterMesh extends Mesh {
|
|
25
26
|
|
|
@@ -152,7 +153,7 @@ class WaterMesh extends Mesh {
|
|
|
152
153
|
|
|
153
154
|
material.opacityNode = this.alpha;
|
|
154
155
|
|
|
155
|
-
material.
|
|
156
|
+
material.receivedShadowPositionNode = positionWorld.add( distortion );
|
|
156
157
|
|
|
157
158
|
material.setupOutgoingLight = () => diffuseColor.rgb; // backwards compatibility
|
|
158
159
|
|
|
@@ -28,6 +28,20 @@ function getShape( geometry ) {
|
|
|
28
28
|
const radius = parameters.radius !== undefined ? parameters.radius : 1;
|
|
29
29
|
return RAPIER.ColliderDesc.ball( radius );
|
|
30
30
|
|
|
31
|
+
} else if ( geometry.type === 'CylinderGeometry' ) {
|
|
32
|
+
|
|
33
|
+
const radius = parameters.radiusBottom !== undefined ? parameters.radiusBottom : 0.5;
|
|
34
|
+
const length = parameters.height !== undefined ? parameters.height : 0.5;
|
|
35
|
+
|
|
36
|
+
return RAPIER.ColliderDesc.cylinder( length / 2, radius );
|
|
37
|
+
|
|
38
|
+
} else if ( geometry.type === 'CapsuleGeometry' ) {
|
|
39
|
+
|
|
40
|
+
const radius = parameters.radius !== undefined ? parameters.radius : 0.5;
|
|
41
|
+
const length = parameters.height !== undefined ? parameters.height : 0.5;
|
|
42
|
+
|
|
43
|
+
return RAPIER.ColliderDesc.capsule( length / 2, radius );
|
|
44
|
+
|
|
31
45
|
} else if ( geometry.type === 'BufferGeometry' ) {
|
|
32
46
|
|
|
33
47
|
const vertices = [];
|
|
@@ -66,6 +80,7 @@ function getShape( geometry ) {
|
|
|
66
80
|
* @name RapierPhysics
|
|
67
81
|
* @class
|
|
68
82
|
* @hideconstructor
|
|
83
|
+
* @three_import import { RapierPhysics } from 'three/addons/physics/RapierPhysics.js';
|
|
69
84
|
*/
|
|
70
85
|
async function RapierPhysics() {
|
|
71
86
|
|
|
@@ -121,6 +136,10 @@ async function RapierPhysics() {
|
|
|
121
136
|
? createInstancedBody( mesh, mass, shape )
|
|
122
137
|
: createBody( mesh.position, mesh.quaternion, mass, shape );
|
|
123
138
|
|
|
139
|
+
if ( ! mesh.userData.physics ) mesh.userData.physics = {};
|
|
140
|
+
|
|
141
|
+
mesh.userData.physics.body = body;
|
|
142
|
+
|
|
124
143
|
if ( mass > 0 ) {
|
|
125
144
|
|
|
126
145
|
meshes.push( mesh );
|
|
@@ -190,6 +209,24 @@ async function RapierPhysics() {
|
|
|
190
209
|
|
|
191
210
|
}
|
|
192
211
|
|
|
212
|
+
function addHeightfield( mesh, width, depth, heights, scale ) {
|
|
213
|
+
|
|
214
|
+
const shape = RAPIER.ColliderDesc.heightfield( width, depth, heights, scale );
|
|
215
|
+
|
|
216
|
+
const bodyDesc = RAPIER.RigidBodyDesc.fixed();
|
|
217
|
+
bodyDesc.setTranslation( mesh.position.x, mesh.position.y, mesh.position.z );
|
|
218
|
+
bodyDesc.setRotation( mesh.quaternion );
|
|
219
|
+
|
|
220
|
+
const body = world.createRigidBody( bodyDesc );
|
|
221
|
+
world.createCollider( shape, body );
|
|
222
|
+
|
|
223
|
+
if ( ! mesh.userData.physics ) mesh.userData.physics = {};
|
|
224
|
+
mesh.userData.physics.body = body;
|
|
225
|
+
|
|
226
|
+
return body;
|
|
227
|
+
|
|
228
|
+
}
|
|
229
|
+
|
|
193
230
|
//
|
|
194
231
|
|
|
195
232
|
const clock = new Clock();
|
|
@@ -242,6 +279,8 @@ async function RapierPhysics() {
|
|
|
242
279
|
setInterval( step, 1000 / frameRate );
|
|
243
280
|
|
|
244
281
|
return {
|
|
282
|
+
RAPIER,
|
|
283
|
+
world,
|
|
245
284
|
/**
|
|
246
285
|
* Adds the given scene to this physics simulation. Only meshes with a
|
|
247
286
|
* `physics` object in their {@link Object3D#userData} field will be honored.
|
|
@@ -288,7 +327,25 @@ async function RapierPhysics() {
|
|
|
288
327
|
* @param {Vector3} velocity - The new velocity.
|
|
289
328
|
* @param {number} [index=0] - If the mesh is instanced, the index represents the instanced ID.
|
|
290
329
|
*/
|
|
291
|
-
setMeshVelocity: setMeshVelocity
|
|
330
|
+
setMeshVelocity: setMeshVelocity,
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* Adds a heightfield terrain to the physics simulation.
|
|
334
|
+
*
|
|
335
|
+
* @method
|
|
336
|
+
* @name RapierPhysics#addHeightfield
|
|
337
|
+
* @param {Mesh} mesh - The Three.js mesh representing the terrain.
|
|
338
|
+
* @param {number} width - The number of vertices along the width (x-axis) of the heightfield.
|
|
339
|
+
* @param {number} depth - The number of vertices along the depth (z-axis) of the heightfield.
|
|
340
|
+
* @param {Float32Array} heights - Array of height values for each vertex in the heightfield.
|
|
341
|
+
* @param {Object} scale - Scale factors for the heightfield dimensions.
|
|
342
|
+
* @param {number} scale.x - Scale factor for width.
|
|
343
|
+
* @param {number} scale.y - Scale factor for height.
|
|
344
|
+
* @param {number} scale.z - Scale factor for depth.
|
|
345
|
+
* @returns {RigidBody} The created Rapier rigid body for the heightfield.
|
|
346
|
+
*/
|
|
347
|
+
addHeightfield: addHeightfield
|
|
348
|
+
|
|
292
349
|
};
|
|
293
350
|
|
|
294
351
|
}
|
|
@@ -19,6 +19,7 @@ import { AfterimageShader } from '../shaders/AfterimageShader.js';
|
|
|
19
19
|
* ```
|
|
20
20
|
*
|
|
21
21
|
* @augments Pass
|
|
22
|
+
* @three_import import { AfterimagePass } from 'three/addons/postprocessing/AfterimagePass.js';
|
|
22
23
|
*/
|
|
23
24
|
class AfterimagePass extends Pass {
|
|
24
25
|
|
|
@@ -42,7 +43,7 @@ class AfterimagePass extends Pass {
|
|
|
42
43
|
*/
|
|
43
44
|
this.uniforms = UniformsUtils.clone( AfterimageShader.uniforms );
|
|
44
45
|
|
|
45
|
-
this.
|
|
46
|
+
this.damp = damp;
|
|
46
47
|
|
|
47
48
|
/**
|
|
48
49
|
* The composition material.
|
|
@@ -88,6 +89,23 @@ class AfterimagePass extends Pass {
|
|
|
88
89
|
|
|
89
90
|
}
|
|
90
91
|
|
|
92
|
+
/**
|
|
93
|
+
* The damping intensity, from 0.0 to 1.0. A higher value means a stronger after image effect.
|
|
94
|
+
*
|
|
95
|
+
* @type {number}
|
|
96
|
+
*/
|
|
97
|
+
get damp() {
|
|
98
|
+
|
|
99
|
+
return this.uniforms[ 'damp' ].value;
|
|
100
|
+
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
set damp( value ) {
|
|
104
|
+
|
|
105
|
+
this.uniforms[ 'damp' ].value = value;
|
|
106
|
+
|
|
107
|
+
}
|
|
108
|
+
|
|
91
109
|
/**
|
|
92
110
|
* Performs the after image pass.
|
|
93
111
|
*
|
|
@@ -136,7 +154,7 @@ class AfterimagePass extends Pass {
|
|
|
136
154
|
* Sets the size of the pass.
|
|
137
155
|
*
|
|
138
156
|
* @param {number} width - The width to set.
|
|
139
|
-
* @param {number} height - The
|
|
157
|
+
* @param {number} height - The height to set.
|
|
140
158
|
*/
|
|
141
159
|
setSize( width, height ) {
|
|
142
160
|
|
|
@@ -21,6 +21,7 @@ import { ConvolutionShader } from '../shaders/ConvolutionShader.js';
|
|
|
21
21
|
* ```
|
|
22
22
|
*
|
|
23
23
|
* @augments Pass
|
|
24
|
+
* @three_import import { BloomPass } from 'three/addons/postprocessing/BloomPass.js';
|
|
24
25
|
*/
|
|
25
26
|
class BloomPass extends Pass {
|
|
26
27
|
|
|
@@ -166,7 +167,7 @@ class BloomPass extends Pass {
|
|
|
166
167
|
* Sets the size of the pass.
|
|
167
168
|
*
|
|
168
169
|
* @param {number} width - The width to set.
|
|
169
|
-
* @param {number} height - The
|
|
170
|
+
* @param {number} height - The height to set.
|
|
170
171
|
*/
|
|
171
172
|
setSize( width, height ) {
|
|
172
173
|
|
|
@@ -25,6 +25,7 @@ import { BokehShader } from '../shaders/BokehShader.js';
|
|
|
25
25
|
* ```
|
|
26
26
|
*
|
|
27
27
|
* @augments Pass
|
|
28
|
+
* @three_import import { BokehPass } from 'three/addons/postprocessing/BokehPass.js';
|
|
28
29
|
*/
|
|
29
30
|
class BokehPass extends Pass {
|
|
30
31
|
|
|
@@ -178,7 +179,7 @@ class BokehPass extends Pass {
|
|
|
178
179
|
* Sets the size of the pass.
|
|
179
180
|
*
|
|
180
181
|
* @param {number} width - The width to set.
|
|
181
|
-
* @param {number} height - The
|
|
182
|
+
* @param {number} height - The height to set.
|
|
182
183
|
*/
|
|
183
184
|
setSize( width, height ) {
|
|
184
185
|
|