@plastic-software/three 0.175.14 → 0.179.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 +4 -4
- package/build/three.cjs +8402 -6787
- package/build/three.core.js +8007 -6688
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +397 -102
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +84 -27
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +6831 -2838
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +6648 -2838
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -3
- package/examples/jsm/animation/AnimationClipCreator.js +1 -0
- package/examples/jsm/animation/CCDIKSolver.js +6 -3
- package/examples/jsm/capabilities/WebGL.js +1 -27
- package/examples/jsm/capabilities/WebGPU.js +2 -1
- package/examples/jsm/controls/ArcballControls.js +15 -4
- 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 +62 -14
- 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 +22 -8
- 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 +57 -38
- 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 +679 -300
- 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 +48 -8
- 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 +11 -2
- 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/libs/meshopt_decoder.module.js +75 -58
- package/examples/jsm/lighting/TiledLighting.js +1 -0
- package/examples/jsm/lights/LightProbeGenerator.js +15 -3
- 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 +6 -5
- package/examples/jsm/loaders/DDSLoader.js +1 -0
- package/examples/jsm/loaders/DRACOLoader.js +2 -1
- package/examples/jsm/loaders/EXRLoader.js +211 -22
- package/examples/jsm/loaders/FBXLoader.js +25 -23
- 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 +213 -30
- 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 +14 -1
- package/examples/jsm/loaders/USDLoader.js +219 -0
- package/examples/jsm/loaders/USDZLoader.js +4 -891
- 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/loaders/usd/USDAParser.js +741 -0
- package/examples/jsm/loaders/usd/USDCParser.js +17 -0
- 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/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 +4 -3
- 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 +22 -19
- 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 +149 -13
- 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 +4 -2
- package/examples/jsm/postprocessing/FXAAPass.js +40 -0
- package/examples/jsm/postprocessing/FilmPass.js +1 -0
- package/examples/jsm/postprocessing/GTAOPass.js +14 -12
- 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 +22 -19
- 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 +12 -10
- 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 +15 -3
- 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/AST.js +381 -30
- package/examples/jsm/transpiler/GLSLDecoder.js +227 -88
- package/examples/jsm/transpiler/Linker.js +327 -0
- package/examples/jsm/transpiler/TSLEncoder.js +234 -85
- package/examples/jsm/transpiler/Transpiler.js +19 -1
- package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
- package/examples/jsm/transpiler/WGSLEncoder.js +788 -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 +9 -7
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +206 -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 +9 -36
- 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 +5 -4
- 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 → TRAANode.js} +184 -174
- 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 +5 -4
- 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 +2 -1
- package/src/Three.TSL.js +83 -26
- package/src/Three.WebGPU.Nodes.js +1 -0
- package/src/Three.WebGPU.js +3 -0
- package/src/animation/KeyframeTrack.js +1 -1
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/audio/AudioListener.js +13 -10
- package/src/cameras/ArrayCamera.js +9 -1
- package/src/cameras/Camera.js +14 -0
- package/src/cameras/OrthographicCamera.js +1 -1
- package/src/cameras/PerspectiveCamera.js +1 -1
- package/src/constants.js +47 -20
- package/src/core/BufferAttribute.js +3 -3
- package/src/core/BufferGeometry.js +2 -5
- package/src/core/Clock.js +2 -8
- package/src/core/GLBufferAttribute.js +13 -1
- package/src/core/Object3D.js +23 -22
- package/src/core/RenderTarget.js +65 -21
- package/src/core/RenderTarget3D.js +1 -0
- package/{examples/jsm/misc → src/core}/Timer.js +4 -40
- package/src/extras/PMREMGenerator.js +11 -0
- package/src/extras/TextureUtils.js +1 -5
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/core/Path.js +22 -22
- package/src/geometries/CapsuleGeometry.js +167 -17
- package/src/geometries/ExtrudeGeometry.js +39 -29
- package/src/helpers/ArrowHelper.js +2 -2
- package/src/helpers/CameraHelper.js +41 -11
- package/src/helpers/SkeletonHelper.js +36 -7
- package/src/lights/LightShadow.js +34 -7
- package/src/lights/PointLightShadow.js +1 -1
- 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/FileLoader.js +27 -4
- package/src/loaders/ImageBitmapLoader.js +48 -9
- package/src/loaders/ImageLoader.js +55 -8
- package/src/loaders/Loader.js +14 -0
- package/src/loaders/LoadingManager.js +23 -0
- 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/MeshBasicMaterial.js +1 -1
- package/src/materials/nodes/Line2NodeMaterial.js +0 -8
- package/src/materials/nodes/MeshBasicNodeMaterial.js +4 -3
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -1
- package/src/materials/nodes/MeshSSSNodeMaterial.js +2 -2
- package/src/materials/nodes/NodeMaterial.js +106 -20
- package/src/materials/nodes/PointsNodeMaterial.js +5 -0
- package/src/materials/nodes/manager/NodeMaterialObserver.js +107 -4
- package/src/math/Box3.js +28 -0
- package/src/math/Color.js +7 -7
- package/src/math/ColorManagement.js +22 -3
- package/src/math/Frustum.js +25 -9
- package/src/math/FrustumArray.js +258 -0
- package/src/math/Line3.js +129 -2
- package/src/math/Matrix4.js +48 -27
- package/src/math/Quaternion.js +1 -1
- package/src/math/Ray.js +2 -0
- package/src/math/Sphere.js +28 -0
- package/src/math/Spherical.js +2 -2
- package/src/nodes/Nodes.js +3 -3
- package/src/nodes/TSL.js +6 -3
- package/src/nodes/accessors/AccessorsUtils.js +7 -8
- package/src/nodes/accessors/Bitangent.js +54 -26
- package/src/nodes/accessors/Camera.js +40 -13
- 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 +110 -24
- package/src/nodes/accessors/Object3DNode.js +7 -8
- package/src/nodes/accessors/Position.js +14 -4
- package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
- package/src/nodes/accessors/ReferenceNode.js +19 -4
- package/src/nodes/accessors/ReflectVector.js +3 -3
- package/src/nodes/accessors/SceneNode.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 +15 -4
- package/src/nodes/accessors/Tangent.js +25 -17
- package/src/nodes/accessors/TangentUtils.js +46 -0
- package/src/nodes/accessors/TextureBicubic.js +21 -3
- package/src/nodes/accessors/TextureNode.js +71 -8
- package/src/nodes/accessors/UniformArrayNode.js +0 -16
- 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/ArrayNode.js +12 -0
- package/src/nodes/core/AssignNode.js +30 -5
- package/src/nodes/core/AttributeNode.js +2 -2
- package/src/nodes/core/ContextNode.js +27 -4
- package/src/nodes/core/Node.js +83 -22
- package/src/nodes/core/NodeBuilder.js +273 -49
- package/src/nodes/core/NodeUtils.js +46 -1
- package/src/nodes/core/NodeVarying.js +19 -1
- package/src/nodes/core/PropertyNode.js +8 -12
- package/src/nodes/core/StackNode.js +171 -26
- package/src/nodes/core/StructTypeNode.js +26 -4
- package/src/nodes/core/SubBuildNode.js +89 -0
- package/src/nodes/core/UniformNode.js +63 -5
- package/src/nodes/core/VarNode.js +102 -4
- package/src/nodes/core/VaryingNode.js +45 -24
- package/src/nodes/display/BlendModes.js +42 -1
- package/src/nodes/display/ColorSpaceNode.js +4 -27
- package/src/nodes/display/FrontFacingNode.js +34 -2
- package/src/nodes/display/NormalMapNode.js +19 -50
- package/src/nodes/display/PassNode.js +165 -20
- package/src/nodes/display/ScreenNode.js +0 -26
- package/src/nodes/display/ViewportTextureNode.js +67 -7
- package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
- package/src/nodes/functions/PhongLightingModel.js +3 -3
- package/src/nodes/functions/PhysicalLightingModel.js +16 -16
- package/src/nodes/functions/ShadowMaskModel.js +5 -1
- package/src/nodes/functions/material/getGeometryRoughness.js +2 -2
- 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 +68 -24
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +28 -3
- package/src/nodes/lighting/AnalyticLightNode.js +7 -13
- package/src/nodes/lighting/EnvironmentNode.js +5 -5
- package/src/nodes/lighting/HemisphereLightNode.js +2 -2
- package/src/nodes/lighting/IESSpotLightNode.js +2 -1
- package/src/nodes/lighting/LightsNode.js +29 -11
- package/src/nodes/lighting/ProjectorLightNode.js +91 -0
- package/src/nodes/lighting/ShadowBaseNode.js +1 -12
- package/src/nodes/lighting/ShadowFilterNode.js +274 -0
- package/src/nodes/lighting/ShadowNode.js +174 -242
- package/src/nodes/lighting/SpotLightNode.js +44 -7
- package/src/nodes/materialx/MaterialXNodes.js +131 -2
- package/src/nodes/materialx/lib/mx_noise.js +166 -2
- package/src/nodes/math/ConditionalNode.js +1 -20
- package/src/nodes/math/MathNode.js +146 -75
- package/src/nodes/math/OperatorNode.js +129 -119
- package/src/nodes/shapes/Shapes.js +5 -4
- package/src/nodes/tsl/TSLBase.js +1 -0
- package/src/nodes/tsl/TSLCore.js +222 -72
- package/src/nodes/utils/DebugNode.js +16 -4
- package/src/nodes/utils/Discard.js +2 -2
- package/src/nodes/utils/EquirectUV.js +27 -0
- package/src/nodes/utils/EventNode.js +83 -0
- package/src/nodes/utils/LoopNode.js +64 -34
- package/src/nodes/utils/MatcapUV.js +22 -0
- package/src/nodes/utils/RTTNode.js +22 -5
- package/src/nodes/utils/ReflectorNode.js +77 -7
- package/src/nodes/utils/SampleNode.js +81 -0
- package/src/nodes/utils/TriplanarTextures.js +65 -0
- package/src/objects/BatchedMesh.js +20 -6
- 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 +45 -32
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Background.js +13 -2
- package/src/renderers/common/Bindings.js +19 -18
- package/src/renderers/common/Color4.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +1 -1
- package/src/renderers/common/PostProcessing.js +60 -5
- package/src/renderers/common/RenderList.js +0 -4
- package/src/renderers/common/RenderObject.js +80 -4
- package/src/renderers/common/Renderer.js +133 -22
- package/src/renderers/common/SampledTexture.js +3 -71
- package/src/renderers/common/Sampler.js +79 -0
- package/src/renderers/common/Storage3DTexture.js +100 -0
- package/src/renderers/common/StorageArrayTexture.js +84 -0
- package/src/renderers/common/StorageTexture.js +19 -0
- package/src/renderers/common/Textures.js +34 -24
- 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 +183 -35
- package/src/renderers/common/XRRenderTarget.js +21 -4
- package/src/renderers/common/extras/PMREMGenerator.js +30 -23
- package/src/renderers/common/nodes/NodeSampledTexture.js +0 -12
- 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/ShaderChunk/shadowmap_pars_fragment.glsl.js +20 -2
- package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +11 -2
- package/src/renderers/webgl/WebGLAttributes.js +4 -0
- package/src/renderers/webgl/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl/WebGLMaterials.js +6 -6
- package/src/renderers/webgl/WebGLProgram.js +22 -16
- package/src/renderers/webgl/WebGLPrograms.js +8 -6
- package/src/renderers/webgl/WebGLShadowMap.js +14 -3
- package/src/renderers/webgl/WebGLState.js +4 -4
- package/src/renderers/webgl/WebGLTextures.js +163 -11
- package/src/renderers/webgl/WebGLUtils.js +1 -3
- package/src/renderers/webgl-fallback/WebGLBackend.js +261 -94
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +75 -9
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +4 -0
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +1 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +4 -4
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +44 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +22 -21
- package/src/renderers/webgpu/WebGPUBackend.js +505 -143
- 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 +129 -96
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +9 -1
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +58 -31
- package/src/renderers/webgpu/utils/WebGPUConstants.js +8 -2
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +39 -9
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +50 -108
- package/src/renderers/webgpu/utils/WebGPUUtils.js +2 -17
- package/src/renderers/webxr/WebXRController.js +1 -1
- package/src/renderers/webxr/WebXRDepthSensing.js +6 -10
- package/src/renderers/webxr/WebXRManager.js +70 -9
- package/src/textures/DepthTexture.js +6 -10
- package/src/textures/ExternalTexture.js +45 -0
- package/src/textures/FramebufferTexture.js +2 -2
- package/src/textures/Source.js +32 -0
- package/src/textures/Texture.js +118 -1
- package/src/textures/VideoTexture.js +31 -3
- package/examples/jsm/effects/PeppersGhostEffect.js +0 -172
- package/src/core/RenderTargetArray.js +0 -40
- package/src/nodes/utils/EquirectUVNode.js +0 -65
- package/src/nodes/utils/MatcapUVNode.js +0 -49
- package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
|
@@ -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
|
|
|
@@ -156,13 +165,7 @@ class SkyMesh extends Mesh {
|
|
|
156
165
|
|
|
157
166
|
} )();
|
|
158
167
|
|
|
159
|
-
const
|
|
160
|
-
|
|
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' );
|
|
168
|
+
const colorNode = /*@__PURE__*/ Fn( () => {
|
|
166
169
|
|
|
167
170
|
// constants for atmospheric scattering
|
|
168
171
|
const pi = float( 3.141592653589793238462643383279502884197169 );
|
|
@@ -231,7 +234,7 @@ class SkyMesh extends Mesh {
|
|
|
231
234
|
material.depthWrite = false;
|
|
232
235
|
|
|
233
236
|
material.vertexNode = vertexNode;
|
|
234
|
-
material.
|
|
237
|
+
material.colorNode = colorNode;
|
|
235
238
|
|
|
236
239
|
}
|
|
237
240
|
|
|
@@ -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
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Clock, Vector3, Quaternion, Matrix4 } from 'three';
|
|
2
2
|
|
|
3
|
-
const RAPIER_PATH = 'https://cdn.skypack.dev/@dimforge/rapier3d-compat@0.
|
|
3
|
+
const RAPIER_PATH = 'https://cdn.skypack.dev/@dimforge/rapier3d-compat@0.17.3';
|
|
4
4
|
|
|
5
5
|
const frameRate = 60;
|
|
6
6
|
|
|
@@ -15,7 +15,16 @@ function getShape( geometry ) {
|
|
|
15
15
|
|
|
16
16
|
// TODO change type to is*
|
|
17
17
|
|
|
18
|
-
if ( geometry.type === '
|
|
18
|
+
if ( geometry.type === 'RoundedBoxGeometry' ) {
|
|
19
|
+
|
|
20
|
+
const sx = parameters.width !== undefined ? parameters.width / 2 : 0.5;
|
|
21
|
+
const sy = parameters.height !== undefined ? parameters.height / 2 : 0.5;
|
|
22
|
+
const sz = parameters.depth !== undefined ? parameters.depth / 2 : 0.5;
|
|
23
|
+
const radius = parameters.radius !== undefined ? parameters.radius : 0.1;
|
|
24
|
+
|
|
25
|
+
return RAPIER.ColliderDesc.roundCuboid( sx - radius, sy - radius, sz - radius, radius );
|
|
26
|
+
|
|
27
|
+
} else if ( geometry.type === 'BoxGeometry' ) {
|
|
19
28
|
|
|
20
29
|
const sx = parameters.width !== undefined ? parameters.width / 2 : 0.5;
|
|
21
30
|
const sy = parameters.height !== undefined ? parameters.height / 2 : 0.5;
|
|
@@ -28,6 +37,20 @@ function getShape( geometry ) {
|
|
|
28
37
|
const radius = parameters.radius !== undefined ? parameters.radius : 1;
|
|
29
38
|
return RAPIER.ColliderDesc.ball( radius );
|
|
30
39
|
|
|
40
|
+
} else if ( geometry.type === 'CylinderGeometry' ) {
|
|
41
|
+
|
|
42
|
+
const radius = parameters.radiusBottom !== undefined ? parameters.radiusBottom : 0.5;
|
|
43
|
+
const length = parameters.height !== undefined ? parameters.height : 0.5;
|
|
44
|
+
|
|
45
|
+
return RAPIER.ColliderDesc.cylinder( length / 2, radius );
|
|
46
|
+
|
|
47
|
+
} else if ( geometry.type === 'CapsuleGeometry' ) {
|
|
48
|
+
|
|
49
|
+
const radius = parameters.radius !== undefined ? parameters.radius : 0.5;
|
|
50
|
+
const length = parameters.height !== undefined ? parameters.height : 0.5;
|
|
51
|
+
|
|
52
|
+
return RAPIER.ColliderDesc.capsule( length / 2, radius );
|
|
53
|
+
|
|
31
54
|
} else if ( geometry.type === 'BufferGeometry' ) {
|
|
32
55
|
|
|
33
56
|
const vertices = [];
|
|
@@ -66,6 +89,7 @@ function getShape( geometry ) {
|
|
|
66
89
|
* @name RapierPhysics
|
|
67
90
|
* @class
|
|
68
91
|
* @hideconstructor
|
|
92
|
+
* @three_import import { RapierPhysics } from 'three/addons/physics/RapierPhysics.js';
|
|
69
93
|
*/
|
|
70
94
|
async function RapierPhysics() {
|
|
71
95
|
|
|
@@ -117,14 +141,40 @@ async function RapierPhysics() {
|
|
|
117
141
|
shape.setMass( mass );
|
|
118
142
|
shape.setRestitution( restitution );
|
|
119
143
|
|
|
120
|
-
const body = mesh.isInstancedMesh
|
|
144
|
+
const { body, collider } = mesh.isInstancedMesh
|
|
121
145
|
? createInstancedBody( mesh, mass, shape )
|
|
122
146
|
: createBody( mesh.position, mesh.quaternion, mass, shape );
|
|
123
147
|
|
|
148
|
+
if ( ! mesh.userData.physics ) mesh.userData.physics = {};
|
|
149
|
+
|
|
150
|
+
mesh.userData.physics.body = body;
|
|
151
|
+
mesh.userData.physics.collider = collider;
|
|
152
|
+
|
|
124
153
|
if ( mass > 0 ) {
|
|
125
154
|
|
|
126
155
|
meshes.push( mesh );
|
|
127
|
-
meshMap.set( mesh, body );
|
|
156
|
+
meshMap.set( mesh, { body, collider } );
|
|
157
|
+
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
function removeMesh( mesh ) {
|
|
163
|
+
|
|
164
|
+
const index = meshes.indexOf( mesh );
|
|
165
|
+
|
|
166
|
+
if ( index !== - 1 ) {
|
|
167
|
+
|
|
168
|
+
meshes.splice( index, 1 );
|
|
169
|
+
meshMap.delete( mesh );
|
|
170
|
+
|
|
171
|
+
if ( ! mesh.userData.physics ) return;
|
|
172
|
+
|
|
173
|
+
const body = mesh.userData.physics.body;
|
|
174
|
+
const collider = mesh.userData.physics.collider;
|
|
175
|
+
|
|
176
|
+
if ( body ) removeBody( body );
|
|
177
|
+
if ( collider ) removeCollider( collider );
|
|
128
178
|
|
|
129
179
|
}
|
|
130
180
|
|
|
@@ -135,15 +185,18 @@ async function RapierPhysics() {
|
|
|
135
185
|
const array = mesh.instanceMatrix.array;
|
|
136
186
|
|
|
137
187
|
const bodies = [];
|
|
188
|
+
const colliders = [];
|
|
138
189
|
|
|
139
190
|
for ( let i = 0; i < mesh.count; i ++ ) {
|
|
140
191
|
|
|
141
192
|
const position = _vector.fromArray( array, i * 16 + 12 );
|
|
142
|
-
|
|
193
|
+
const { body, collider } = createBody( position, null, mass, shape );
|
|
194
|
+
bodies.push( body );
|
|
195
|
+
colliders.push( collider );
|
|
143
196
|
|
|
144
197
|
}
|
|
145
198
|
|
|
146
|
-
return bodies;
|
|
199
|
+
return { body: bodies, collider: colliders };
|
|
147
200
|
|
|
148
201
|
}
|
|
149
202
|
|
|
@@ -154,15 +207,51 @@ async function RapierPhysics() {
|
|
|
154
207
|
if ( quaternion !== null ) desc.setRotation( quaternion );
|
|
155
208
|
|
|
156
209
|
const body = world.createRigidBody( desc );
|
|
157
|
-
world.createCollider( shape, body );
|
|
210
|
+
const collider = world.createCollider( shape, body );
|
|
158
211
|
|
|
159
|
-
return body;
|
|
212
|
+
return { body, collider };
|
|
213
|
+
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
function removeBody( body ) {
|
|
217
|
+
|
|
218
|
+
if ( Array.isArray( body ) ) {
|
|
219
|
+
|
|
220
|
+
for ( let i = 0; i < body.length; i ++ ) {
|
|
221
|
+
|
|
222
|
+
world.removeRigidBody( body[ i ] );
|
|
223
|
+
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
} else {
|
|
227
|
+
|
|
228
|
+
world.removeRigidBody( body );
|
|
229
|
+
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
function removeCollider( collider ) {
|
|
235
|
+
|
|
236
|
+
if ( Array.isArray( collider ) ) {
|
|
237
|
+
|
|
238
|
+
for ( let i = 0; i < collider.length; i ++ ) {
|
|
239
|
+
|
|
240
|
+
world.removeCollider( collider[ i ] );
|
|
241
|
+
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
} else {
|
|
245
|
+
|
|
246
|
+
world.removeCollider( collider );
|
|
247
|
+
|
|
248
|
+
}
|
|
160
249
|
|
|
161
250
|
}
|
|
162
251
|
|
|
163
252
|
function setMeshPosition( mesh, position, index = 0 ) {
|
|
164
253
|
|
|
165
|
-
let body = meshMap.get( mesh );
|
|
254
|
+
let { body } = meshMap.get( mesh );
|
|
166
255
|
|
|
167
256
|
if ( mesh.isInstancedMesh ) {
|
|
168
257
|
|
|
@@ -178,7 +267,7 @@ async function RapierPhysics() {
|
|
|
178
267
|
|
|
179
268
|
function setMeshVelocity( mesh, velocity, index = 0 ) {
|
|
180
269
|
|
|
181
|
-
let body = meshMap.get( mesh );
|
|
270
|
+
let { body } = meshMap.get( mesh );
|
|
182
271
|
|
|
183
272
|
if ( mesh.isInstancedMesh ) {
|
|
184
273
|
|
|
@@ -190,6 +279,24 @@ async function RapierPhysics() {
|
|
|
190
279
|
|
|
191
280
|
}
|
|
192
281
|
|
|
282
|
+
function addHeightfield( mesh, width, depth, heights, scale ) {
|
|
283
|
+
|
|
284
|
+
const shape = RAPIER.ColliderDesc.heightfield( width, depth, heights, scale );
|
|
285
|
+
|
|
286
|
+
const bodyDesc = RAPIER.RigidBodyDesc.fixed();
|
|
287
|
+
bodyDesc.setTranslation( mesh.position.x, mesh.position.y, mesh.position.z );
|
|
288
|
+
bodyDesc.setRotation( mesh.quaternion );
|
|
289
|
+
|
|
290
|
+
const body = world.createRigidBody( bodyDesc );
|
|
291
|
+
world.createCollider( shape, body );
|
|
292
|
+
|
|
293
|
+
if ( ! mesh.userData.physics ) mesh.userData.physics = {};
|
|
294
|
+
mesh.userData.physics.body = body;
|
|
295
|
+
|
|
296
|
+
return body;
|
|
297
|
+
|
|
298
|
+
}
|
|
299
|
+
|
|
193
300
|
//
|
|
194
301
|
|
|
195
302
|
const clock = new Clock();
|
|
@@ -208,7 +315,7 @@ async function RapierPhysics() {
|
|
|
208
315
|
if ( mesh.isInstancedMesh ) {
|
|
209
316
|
|
|
210
317
|
const array = mesh.instanceMatrix.array;
|
|
211
|
-
const bodies = meshMap.get( mesh );
|
|
318
|
+
const { body: bodies } = meshMap.get( mesh );
|
|
212
319
|
|
|
213
320
|
for ( let j = 0; j < bodies.length; j ++ ) {
|
|
214
321
|
|
|
@@ -226,7 +333,7 @@ async function RapierPhysics() {
|
|
|
226
333
|
|
|
227
334
|
} else {
|
|
228
335
|
|
|
229
|
-
const body = meshMap.get( mesh );
|
|
336
|
+
const { body } = meshMap.get( mesh );
|
|
230
337
|
|
|
231
338
|
mesh.position.copy( body.translation() );
|
|
232
339
|
mesh.quaternion.copy( body.rotation() );
|
|
@@ -242,6 +349,8 @@ async function RapierPhysics() {
|
|
|
242
349
|
setInterval( step, 1000 / frameRate );
|
|
243
350
|
|
|
244
351
|
return {
|
|
352
|
+
RAPIER,
|
|
353
|
+
world,
|
|
245
354
|
/**
|
|
246
355
|
* Adds the given scene to this physics simulation. Only meshes with a
|
|
247
356
|
* `physics` object in their {@link Object3D#userData} field will be honored.
|
|
@@ -267,6 +376,15 @@ async function RapierPhysics() {
|
|
|
267
376
|
*/
|
|
268
377
|
addMesh: addMesh,
|
|
269
378
|
|
|
379
|
+
/**
|
|
380
|
+
* Removes the given mesh from this physics simulation.
|
|
381
|
+
*
|
|
382
|
+
* @method
|
|
383
|
+
* @name RapierPhysics#removeMesh
|
|
384
|
+
* @param {Mesh} mesh The mesh to remove.
|
|
385
|
+
*/
|
|
386
|
+
removeMesh: removeMesh,
|
|
387
|
+
|
|
270
388
|
/**
|
|
271
389
|
* Set the position of the given mesh which is part of the physics simulation. Calling this
|
|
272
390
|
* method will reset the current simulated velocity of the mesh.
|
|
@@ -288,7 +406,25 @@ async function RapierPhysics() {
|
|
|
288
406
|
* @param {Vector3} velocity - The new velocity.
|
|
289
407
|
* @param {number} [index=0] - If the mesh is instanced, the index represents the instanced ID.
|
|
290
408
|
*/
|
|
291
|
-
setMeshVelocity: setMeshVelocity
|
|
409
|
+
setMeshVelocity: setMeshVelocity,
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* Adds a heightfield terrain to the physics simulation.
|
|
413
|
+
*
|
|
414
|
+
* @method
|
|
415
|
+
* @name RapierPhysics#addHeightfield
|
|
416
|
+
* @param {Mesh} mesh - The Three.js mesh representing the terrain.
|
|
417
|
+
* @param {number} width - The number of vertices along the width (x-axis) of the heightfield.
|
|
418
|
+
* @param {number} depth - The number of vertices along the depth (z-axis) of the heightfield.
|
|
419
|
+
* @param {Float32Array} heights - Array of height values for each vertex in the heightfield.
|
|
420
|
+
* @param {Object} scale - Scale factors for the heightfield dimensions.
|
|
421
|
+
* @param {number} scale.x - Scale factor for width.
|
|
422
|
+
* @param {number} scale.y - Scale factor for height.
|
|
423
|
+
* @param {number} scale.z - Scale factor for depth.
|
|
424
|
+
* @returns {RigidBody} The created Rapier rigid body for the heightfield.
|
|
425
|
+
*/
|
|
426
|
+
addHeightfield: addHeightfield
|
|
427
|
+
|
|
292
428
|
};
|
|
293
429
|
|
|
294
430
|
}
|
|
@@ -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
|
|
|
@@ -36,6 +36,8 @@ import { ClearMaskPass, MaskPass } from './MaskPass.js';
|
|
|
36
36
|
*
|
|
37
37
|
* }
|
|
38
38
|
* ```
|
|
39
|
+
*
|
|
40
|
+
* @three_import import { EffectComposer } from 'three/addons/postprocessing/EffectComposer.js';
|
|
39
41
|
*/
|
|
40
42
|
class EffectComposer {
|
|
41
43
|
|
|
@@ -119,7 +121,7 @@ class EffectComposer {
|
|
|
119
121
|
this.copyPass.material.blending = NoBlending;
|
|
120
122
|
|
|
121
123
|
/**
|
|
122
|
-
* The
|
|
124
|
+
* The internal clock for managing time data.
|
|
123
125
|
*
|
|
124
126
|
* @private
|
|
125
127
|
* @type {Clock}
|
|
@@ -185,7 +187,7 @@ class EffectComposer {
|
|
|
185
187
|
* Returns `true` if the pass for the given index is the last enabled pass in the pass chain.
|
|
186
188
|
*
|
|
187
189
|
* @param {number} passIndex - The pass index.
|
|
188
|
-
* @return {boolean} Whether the
|
|
190
|
+
* @return {boolean} Whether the pass for the given index is the last pass in the pass chain.
|
|
189
191
|
*/
|
|
190
192
|
isLastEnabledPass( passIndex ) {
|
|
191
193
|
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { FXAAShader } from '../shaders/FXAAShader.js';
|
|
2
|
+
import { ShaderPass } from './ShaderPass.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* A pass for applying FXAA.
|
|
6
|
+
*
|
|
7
|
+
* ```js
|
|
8
|
+
* const fxaaPass = new FXAAPass();
|
|
9
|
+
* composer.addPass( fxaaPass );
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* @augments ShaderPass
|
|
13
|
+
* @three_import import { FXAAPass } from 'three/addons/postprocessing/FXAAPass.js';
|
|
14
|
+
*/
|
|
15
|
+
class FXAAPass extends ShaderPass {
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new FXAA pass.
|
|
19
|
+
*/
|
|
20
|
+
constructor() {
|
|
21
|
+
|
|
22
|
+
super( FXAAShader );
|
|
23
|
+
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Sets the size of the pass.
|
|
28
|
+
*
|
|
29
|
+
* @param {number} width - The width to set.
|
|
30
|
+
* @param {number} height - The height to set.
|
|
31
|
+
*/
|
|
32
|
+
setSize( width, height ) {
|
|
33
|
+
|
|
34
|
+
this.material.uniforms[ 'resolution' ].value.set( 1 / width, 1 / height );
|
|
35
|
+
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export { FXAAPass };
|