@plastic-software/three 0.175.13 → 0.178.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 +7747 -6792
- package/build/three.core.js +7371 -6576
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +190 -30
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +19 -11
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +4989 -2235
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +5082 -2469
- 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 -27
- package/examples/jsm/capabilities/WebGPU.js +1 -0
- 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 +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 +2 -1
- 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 +6 -5
- 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 +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 +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 +139 -12
- 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 +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/AST.js +381 -30
- package/examples/jsm/transpiler/GLSLDecoder.js +226 -87
- 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 +1 -0
- 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 +4 -29
- 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 +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 +18 -10
- package/src/Three.WebGPU.Nodes.js +1 -0
- package/src/Three.WebGPU.js +3 -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 +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/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/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/FileLoader.js +2 -2
- package/src/loaders/ImageBitmapLoader.js +25 -9
- package/src/loaders/ImageLoader.js +55 -8
- 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/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 +105 -19
- 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/Frustum.js +6 -1
- package/src/math/FrustumArray.js +253 -0
- package/src/math/Quaternion.js +1 -1
- package/src/math/Ray.js +2 -0
- package/src/math/Sphere.js +28 -0
- package/src/nodes/Nodes.js +2 -3
- package/src/nodes/TSL.js +5 -3
- package/src/nodes/accessors/AccessorsUtils.js +7 -8
- package/src/nodes/accessors/Bitangent.js +54 -26
- 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 +102 -16
- 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 +1 -1
- package/src/nodes/accessors/ReflectVector.js +3 -3
- 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/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 +59 -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/AssignNode.js +27 -5
- package/src/nodes/core/AttributeNode.js +2 -2
- package/src/nodes/core/ContextNode.js +7 -3
- package/src/nodes/core/Node.js +69 -20
- package/src/nodes/core/NodeBuilder.js +248 -29
- 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 +129 -26
- package/src/nodes/core/StructTypeNode.js +26 -4
- package/src/nodes/core/SubBuildNode.js +89 -0
- package/src/nodes/core/VarNode.js +11 -2
- 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 +18 -19
- package/src/nodes/display/ScreenNode.js +0 -26
- 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 +14 -14
- 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 +1 -1
- 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 +78 -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/lib/mx_noise.js +1 -1
- package/src/nodes/math/ConditionalNode.js +0 -19
- package/src/nodes/math/MathNode.js +68 -21
- package/src/nodes/math/OperatorNode.js +108 -98
- package/src/nodes/shapes/Shapes.js +5 -4
- package/src/nodes/tsl/TSLBase.js +1 -0
- package/src/nodes/tsl/TSLCore.js +160 -65
- package/src/nodes/utils/DebugNode.js +15 -3
- package/src/nodes/utils/Discard.js +2 -2
- package/src/nodes/utils/EquirectUV.js +27 -0
- package/src/nodes/utils/LoopNode.js +64 -34
- package/src/nodes/utils/MatcapUV.js +22 -0
- package/src/nodes/utils/RTTNode.js +13 -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 +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 +25 -11
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Background.js +13 -2
- package/src/renderers/common/CubeRenderTarget.js +1 -1
- package/src/renderers/common/RenderList.js +0 -4
- package/src/renderers/common/RenderObject.js +80 -4
- package/src/renderers/common/Renderer.js +116 -8
- package/src/renderers/common/Storage3DTexture.js +79 -0
- package/src/renderers/common/StorageArrayTexture.js +63 -0
- 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 +157 -27
- package/src/renderers/common/XRRenderTarget.js +21 -4
- package/src/renderers/common/extras/PMREMGenerator.js +30 -23
- package/src/renderers/common/nodes/Nodes.js +13 -3
- package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +1 -1
- 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/WebGLAttributes.js +4 -0
- package/src/renderers/webgl/WebGLPrograms.js +4 -2
- package/src/renderers/webgl/WebGLShadowMap.js +3 -2
- package/src/renderers/webgl/WebGLState.js +4 -4
- package/src/renderers/webgl/WebGLTextures.js +144 -4
- package/src/renderers/webgl/WebGLUtils.js +1 -3
- package/src/renderers/webgl-fallback/WebGLBackend.js +244 -87
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +73 -7
- 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 +451 -128
- 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 +86 -33
- 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 +28 -5
- package/src/renderers/webgpu/utils/WebGPUConstants.js +8 -2
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +38 -8
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +45 -50
- 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
- package/src/nodes/utils/EquirectUVNode.js +0 -65
- package/src/nodes/utils/MatcapUVNode.js +0 -49
- package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
|
@@ -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
|
|
|
@@ -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
|
|
|
@@ -117,14 +132,40 @@ async function RapierPhysics() {
|
|
|
117
132
|
shape.setMass( mass );
|
|
118
133
|
shape.setRestitution( restitution );
|
|
119
134
|
|
|
120
|
-
const body = mesh.isInstancedMesh
|
|
135
|
+
const { body, collider } = mesh.isInstancedMesh
|
|
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
|
+
mesh.userData.physics.collider = collider;
|
|
143
|
+
|
|
124
144
|
if ( mass > 0 ) {
|
|
125
145
|
|
|
126
146
|
meshes.push( mesh );
|
|
127
|
-
meshMap.set( mesh, body );
|
|
147
|
+
meshMap.set( mesh, { body, collider } );
|
|
148
|
+
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
function removeMesh( mesh ) {
|
|
154
|
+
|
|
155
|
+
const index = meshes.indexOf( mesh );
|
|
156
|
+
|
|
157
|
+
if ( index !== - 1 ) {
|
|
158
|
+
|
|
159
|
+
meshes.splice( index, 1 );
|
|
160
|
+
meshMap.delete( mesh );
|
|
161
|
+
|
|
162
|
+
if ( ! mesh.userData.physics ) return;
|
|
163
|
+
|
|
164
|
+
const body = mesh.userData.physics.body;
|
|
165
|
+
const collider = mesh.userData.physics.collider;
|
|
166
|
+
|
|
167
|
+
if ( body ) removeBody( body );
|
|
168
|
+
if ( collider ) removeCollider( collider );
|
|
128
169
|
|
|
129
170
|
}
|
|
130
171
|
|
|
@@ -135,15 +176,18 @@ async function RapierPhysics() {
|
|
|
135
176
|
const array = mesh.instanceMatrix.array;
|
|
136
177
|
|
|
137
178
|
const bodies = [];
|
|
179
|
+
const colliders = [];
|
|
138
180
|
|
|
139
181
|
for ( let i = 0; i < mesh.count; i ++ ) {
|
|
140
182
|
|
|
141
183
|
const position = _vector.fromArray( array, i * 16 + 12 );
|
|
142
|
-
|
|
184
|
+
const { body, collider } = createBody( position, null, mass, shape );
|
|
185
|
+
bodies.push( body );
|
|
186
|
+
colliders.push( collider );
|
|
143
187
|
|
|
144
188
|
}
|
|
145
189
|
|
|
146
|
-
return bodies;
|
|
190
|
+
return { body: bodies, collider: colliders };
|
|
147
191
|
|
|
148
192
|
}
|
|
149
193
|
|
|
@@ -154,15 +198,51 @@ async function RapierPhysics() {
|
|
|
154
198
|
if ( quaternion !== null ) desc.setRotation( quaternion );
|
|
155
199
|
|
|
156
200
|
const body = world.createRigidBody( desc );
|
|
157
|
-
world.createCollider( shape, body );
|
|
201
|
+
const collider = world.createCollider( shape, body );
|
|
158
202
|
|
|
159
|
-
return body;
|
|
203
|
+
return { body, collider };
|
|
204
|
+
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
function removeBody( body ) {
|
|
208
|
+
|
|
209
|
+
if ( Array.isArray( body ) ) {
|
|
210
|
+
|
|
211
|
+
for ( let i = 0; i < body.length; i ++ ) {
|
|
212
|
+
|
|
213
|
+
world.removeRigidBody( body[ i ] );
|
|
214
|
+
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
} else {
|
|
218
|
+
|
|
219
|
+
world.removeRigidBody( body );
|
|
220
|
+
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
function removeCollider( collider ) {
|
|
226
|
+
|
|
227
|
+
if ( Array.isArray( collider ) ) {
|
|
228
|
+
|
|
229
|
+
for ( let i = 0; i < collider.length; i ++ ) {
|
|
230
|
+
|
|
231
|
+
world.removeCollider( collider[ i ] );
|
|
232
|
+
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
} else {
|
|
236
|
+
|
|
237
|
+
world.removeCollider( collider );
|
|
238
|
+
|
|
239
|
+
}
|
|
160
240
|
|
|
161
241
|
}
|
|
162
242
|
|
|
163
243
|
function setMeshPosition( mesh, position, index = 0 ) {
|
|
164
244
|
|
|
165
|
-
let body = meshMap.get( mesh );
|
|
245
|
+
let { body } = meshMap.get( mesh );
|
|
166
246
|
|
|
167
247
|
if ( mesh.isInstancedMesh ) {
|
|
168
248
|
|
|
@@ -178,7 +258,7 @@ async function RapierPhysics() {
|
|
|
178
258
|
|
|
179
259
|
function setMeshVelocity( mesh, velocity, index = 0 ) {
|
|
180
260
|
|
|
181
|
-
let body = meshMap.get( mesh );
|
|
261
|
+
let { body } = meshMap.get( mesh );
|
|
182
262
|
|
|
183
263
|
if ( mesh.isInstancedMesh ) {
|
|
184
264
|
|
|
@@ -190,6 +270,24 @@ async function RapierPhysics() {
|
|
|
190
270
|
|
|
191
271
|
}
|
|
192
272
|
|
|
273
|
+
function addHeightfield( mesh, width, depth, heights, scale ) {
|
|
274
|
+
|
|
275
|
+
const shape = RAPIER.ColliderDesc.heightfield( width, depth, heights, scale );
|
|
276
|
+
|
|
277
|
+
const bodyDesc = RAPIER.RigidBodyDesc.fixed();
|
|
278
|
+
bodyDesc.setTranslation( mesh.position.x, mesh.position.y, mesh.position.z );
|
|
279
|
+
bodyDesc.setRotation( mesh.quaternion );
|
|
280
|
+
|
|
281
|
+
const body = world.createRigidBody( bodyDesc );
|
|
282
|
+
world.createCollider( shape, body );
|
|
283
|
+
|
|
284
|
+
if ( ! mesh.userData.physics ) mesh.userData.physics = {};
|
|
285
|
+
mesh.userData.physics.body = body;
|
|
286
|
+
|
|
287
|
+
return body;
|
|
288
|
+
|
|
289
|
+
}
|
|
290
|
+
|
|
193
291
|
//
|
|
194
292
|
|
|
195
293
|
const clock = new Clock();
|
|
@@ -208,7 +306,7 @@ async function RapierPhysics() {
|
|
|
208
306
|
if ( mesh.isInstancedMesh ) {
|
|
209
307
|
|
|
210
308
|
const array = mesh.instanceMatrix.array;
|
|
211
|
-
const bodies = meshMap.get( mesh );
|
|
309
|
+
const { body: bodies } = meshMap.get( mesh );
|
|
212
310
|
|
|
213
311
|
for ( let j = 0; j < bodies.length; j ++ ) {
|
|
214
312
|
|
|
@@ -226,7 +324,7 @@ async function RapierPhysics() {
|
|
|
226
324
|
|
|
227
325
|
} else {
|
|
228
326
|
|
|
229
|
-
const body = meshMap.get( mesh );
|
|
327
|
+
const { body } = meshMap.get( mesh );
|
|
230
328
|
|
|
231
329
|
mesh.position.copy( body.translation() );
|
|
232
330
|
mesh.quaternion.copy( body.rotation() );
|
|
@@ -242,6 +340,8 @@ async function RapierPhysics() {
|
|
|
242
340
|
setInterval( step, 1000 / frameRate );
|
|
243
341
|
|
|
244
342
|
return {
|
|
343
|
+
RAPIER,
|
|
344
|
+
world,
|
|
245
345
|
/**
|
|
246
346
|
* Adds the given scene to this physics simulation. Only meshes with a
|
|
247
347
|
* `physics` object in their {@link Object3D#userData} field will be honored.
|
|
@@ -267,6 +367,15 @@ async function RapierPhysics() {
|
|
|
267
367
|
*/
|
|
268
368
|
addMesh: addMesh,
|
|
269
369
|
|
|
370
|
+
/**
|
|
371
|
+
* Removes the given mesh from this physics simulation.
|
|
372
|
+
*
|
|
373
|
+
* @method
|
|
374
|
+
* @name RapierPhysics#removeMesh
|
|
375
|
+
* @param {Mesh} mesh The mesh to remove.
|
|
376
|
+
*/
|
|
377
|
+
removeMesh: removeMesh,
|
|
378
|
+
|
|
270
379
|
/**
|
|
271
380
|
* Set the position of the given mesh which is part of the physics simulation. Calling this
|
|
272
381
|
* method will reset the current simulated velocity of the mesh.
|
|
@@ -288,7 +397,25 @@ async function RapierPhysics() {
|
|
|
288
397
|
* @param {Vector3} velocity - The new velocity.
|
|
289
398
|
* @param {number} [index=0] - If the mesh is instanced, the index represents the instanced ID.
|
|
290
399
|
*/
|
|
291
|
-
setMeshVelocity: setMeshVelocity
|
|
400
|
+
setMeshVelocity: setMeshVelocity,
|
|
401
|
+
|
|
402
|
+
/**
|
|
403
|
+
* Adds a heightfield terrain to the physics simulation.
|
|
404
|
+
*
|
|
405
|
+
* @method
|
|
406
|
+
* @name RapierPhysics#addHeightfield
|
|
407
|
+
* @param {Mesh} mesh - The Three.js mesh representing the terrain.
|
|
408
|
+
* @param {number} width - The number of vertices along the width (x-axis) of the heightfield.
|
|
409
|
+
* @param {number} depth - The number of vertices along the depth (z-axis) of the heightfield.
|
|
410
|
+
* @param {Float32Array} heights - Array of height values for each vertex in the heightfield.
|
|
411
|
+
* @param {Object} scale - Scale factors for the heightfield dimensions.
|
|
412
|
+
* @param {number} scale.x - Scale factor for width.
|
|
413
|
+
* @param {number} scale.y - Scale factor for height.
|
|
414
|
+
* @param {number} scale.z - Scale factor for depth.
|
|
415
|
+
* @returns {RigidBody} The created Rapier rigid body for the heightfield.
|
|
416
|
+
*/
|
|
417
|
+
addHeightfield: addHeightfield
|
|
418
|
+
|
|
292
419
|
};
|
|
293
420
|
|
|
294
421
|
}
|
|
@@ -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 };
|
|
@@ -38,6 +38,7 @@ import { SimplexNoise } from '../math/SimplexNoise.js';
|
|
|
38
38
|
* ```
|
|
39
39
|
*
|
|
40
40
|
* @augments Pass
|
|
41
|
+
* @three_import import { GTAOPass } from 'three/addons/postprocessing/GTAOPass.js';
|
|
41
42
|
*/
|
|
42
43
|
class GTAOPass extends Pass {
|
|
43
44
|
|
|
@@ -241,7 +242,7 @@ class GTAOPass extends Pass {
|
|
|
241
242
|
* Sets the size of the pass.
|
|
242
243
|
*
|
|
243
244
|
* @param {number} width - The width to set.
|
|
244
|
-
* @param {number} height - The
|
|
245
|
+
* @param {number} height - The height to set.
|
|
245
246
|
*/
|
|
246
247
|
setSize( width, height ) {
|
|
247
248
|
|
|
@@ -366,7 +367,7 @@ class GTAOPass extends Pass {
|
|
|
366
367
|
}
|
|
367
368
|
|
|
368
369
|
/**
|
|
369
|
-
* Updates the GTAO material from the given
|
|
370
|
+
* Updates the GTAO material from the given parameter object.
|
|
370
371
|
*
|
|
371
372
|
* @param {Object} parameters - The GTAO material parameters.
|
|
372
373
|
*/
|
|
@@ -420,7 +421,7 @@ class GTAOPass extends Pass {
|
|
|
420
421
|
}
|
|
421
422
|
|
|
422
423
|
/**
|
|
423
|
-
* Updates the Denoise material from the given
|
|
424
|
+
* Updates the Denoise material from the given parameter object.
|
|
424
425
|
*
|
|
425
426
|
* @param {Object} parameters - The denoise parameters.
|
|
426
427
|
*/
|
|
@@ -18,6 +18,7 @@ import { DigitalGlitch } from '../shaders/DigitalGlitch.js';
|
|
|
18
18
|
* ```
|
|
19
19
|
*
|
|
20
20
|
* @augments Pass
|
|
21
|
+
* @three_import import { GlitchPass } from 'three/addons/postprocessing/GlitchPass.js';
|
|
21
22
|
*/
|
|
22
23
|
class GlitchPass extends Pass {
|
|
23
24
|
|
|
@@ -50,7 +51,7 @@ class GlitchPass extends Pass {
|
|
|
50
51
|
} );
|
|
51
52
|
|
|
52
53
|
/**
|
|
53
|
-
* Whether to noticeably increase the effect
|
|
54
|
+
* Whether to noticeably increase the effect intensity or not.
|
|
54
55
|
*
|
|
55
56
|
* @type {boolean}
|
|
56
57
|
* @default false
|
|
@@ -26,6 +26,7 @@ import { HalftoneShader } from '../shaders/HalftoneShader.js';
|
|
|
26
26
|
* ```
|
|
27
27
|
*
|
|
28
28
|
* @augments Pass
|
|
29
|
+
* @three_import import { HalftonePass } from 'three/addons/postprocessing/HalftonePass.js';
|
|
29
30
|
*/
|
|
30
31
|
class HalftonePass extends Pass {
|
|
31
32
|
|
|
@@ -107,7 +108,7 @@ class HalftonePass extends Pass {
|
|
|
107
108
|
* Sets the size of the pass.
|
|
108
109
|
*
|
|
109
110
|
* @param {number} width - The width to set.
|
|
110
|
-
* @param {number} height - The
|
|
111
|
+
* @param {number} height - The height to set.
|
|
111
112
|
*/
|
|
112
113
|
setSize( width, height ) {
|
|
113
114
|
|
|
@@ -26,6 +26,7 @@ import { CopyShader } from '../shaders/CopyShader.js';
|
|
|
26
26
|
* ```
|
|
27
27
|
*
|
|
28
28
|
* @augments Pass
|
|
29
|
+
* @three_import import { OutlinePass } from 'three/addons/postprocessing/OutlinePass.js';
|
|
29
30
|
*/
|
|
30
31
|
class OutlinePass extends Pass {
|
|
31
32
|
|
|
@@ -268,7 +269,7 @@ class OutlinePass extends Pass {
|
|
|
268
269
|
* Sets the size of the pass.
|
|
269
270
|
*
|
|
270
271
|
* @param {number} width - The width to set.
|
|
271
|
-
* @param {number} height - The
|
|
272
|
+
* @param {number} height - The height to set.
|
|
272
273
|
*/
|
|
273
274
|
setSize( width, height ) {
|
|
274
275
|
|
|
@@ -557,7 +558,8 @@ class OutlinePass extends Pass {
|
|
|
557
558
|
},
|
|
558
559
|
|
|
559
560
|
vertexShader:
|
|
560
|
-
`#include <
|
|
561
|
+
`#include <batching_pars_vertex>
|
|
562
|
+
#include <morphtarget_pars_vertex>
|
|
561
563
|
#include <skinning_pars_vertex>
|
|
562
564
|
|
|
563
565
|
varying vec4 projTexCoord;
|
|
@@ -566,6 +568,7 @@ class OutlinePass extends Pass {
|
|
|
566
568
|
|
|
567
569
|
void main() {
|
|
568
570
|
|
|
571
|
+
#include <batching_vertex>
|
|
569
572
|
#include <skinbase_vertex>
|
|
570
573
|
#include <begin_vertex>
|
|
571
574
|
#include <morphtarget_vertex>
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
* This module is only relevant for post processing with {@link WebGLRenderer}.
|
|
12
12
|
*
|
|
13
13
|
* @abstract
|
|
14
|
+
* @three_import import { Pass } from 'three/addons/postprocessing/Pass.js';
|
|
14
15
|
*/
|
|
15
16
|
class Pass {
|
|
16
17
|
|
|
@@ -68,7 +69,7 @@ class Pass {
|
|
|
68
69
|
*
|
|
69
70
|
* @abstract
|
|
70
71
|
* @param {number} width - The width to set.
|
|
71
|
-
* @param {number} height - The
|
|
72
|
+
* @param {number} height - The height to set.
|
|
72
73
|
*/
|
|
73
74
|
setSize( /* width, height */ ) {}
|
|
74
75
|
|
|
@@ -132,6 +133,7 @@ const _geometry = new FullscreenTriangleGeometry();
|
|
|
132
133
|
* This module can only be used with {@link WebGLRenderer}.
|
|
133
134
|
*
|
|
134
135
|
* @augments Mesh
|
|
136
|
+
* @three_import import { FullScreenQuad } from 'three/addons/postprocessing/Pass.js';
|
|
135
137
|
*/
|
|
136
138
|
class FullScreenQuad {
|
|
137
139
|
|
|
@@ -19,6 +19,7 @@ import { Pass, FullScreenQuad } from './Pass.js';
|
|
|
19
19
|
* ```
|
|
20
20
|
*
|
|
21
21
|
* @augments Pass
|
|
22
|
+
* @three_import import { RenderPixelatedPass } from 'three/addons/postprocessing/RenderPixelatedPass.js';
|
|
22
23
|
*/
|
|
23
24
|
class RenderPixelatedPass extends Pass {
|
|
24
25
|
|
|
@@ -120,7 +121,7 @@ class RenderPixelatedPass extends Pass {
|
|
|
120
121
|
* Sets the size of the pass.
|
|
121
122
|
*
|
|
122
123
|
* @param {number} width - The width to set.
|
|
123
|
-
* @param {number} height - The
|
|
124
|
+
* @param {number} height - The height to set.
|
|
124
125
|
*/
|
|
125
126
|
setSize( width, height ) {
|
|
126
127
|
|
|
@@ -16,6 +16,7 @@ import { FullScreenQuad, Pass } from './Pass.js';
|
|
|
16
16
|
* ```
|
|
17
17
|
*
|
|
18
18
|
* @augments Pass
|
|
19
|
+
* @three_import import { RenderTransitionPass } from 'three/addons/postprocessing/RenderTransitionPass.js';
|
|
19
20
|
*/
|
|
20
21
|
class RenderTransitionPass extends Pass {
|
|
21
22
|
|
|
@@ -82,7 +83,7 @@ class RenderTransitionPass extends Pass {
|
|
|
82
83
|
* Sets the transition factor. Must be in the range `[0,1]`.
|
|
83
84
|
* This value determines to what degree both scenes are mixed.
|
|
84
85
|
*
|
|
85
|
-
* @param {
|
|
86
|
+
* @param {boolean|number} value - The transition factor.
|
|
86
87
|
*/
|
|
87
88
|
setTransition( value ) {
|
|
88
89
|
|
|
@@ -116,7 +117,7 @@ class RenderTransitionPass extends Pass {
|
|
|
116
117
|
* Sets the texture threshold. This value defined how strong the texture effects
|
|
117
118
|
* the transition. Must be in the range `[0,1]` (0 means full effect, 1 means no effect).
|
|
118
119
|
*
|
|
119
|
-
* @param {
|
|
120
|
+
* @param {boolean|number} value - The threshold value.
|
|
120
121
|
*/
|
|
121
122
|
setTextureThreshold( value ) {
|
|
122
123
|
|
|
@@ -128,7 +129,7 @@ class RenderTransitionPass extends Pass {
|
|
|
128
129
|
* Sets the size of the pass.
|
|
129
130
|
*
|
|
130
131
|
* @param {number} width - The width to set.
|
|
131
|
-
* @param {number} height - The
|
|
132
|
+
* @param {number} height - The height to set.
|
|
132
133
|
*/
|
|
133
134
|
setSize( width, height ) {
|
|
134
135
|
|
|
@@ -33,6 +33,7 @@ import { CopyShader } from '../shaders/CopyShader.js';
|
|
|
33
33
|
* ```
|
|
34
34
|
*
|
|
35
35
|
* @augments Pass
|
|
36
|
+
* @three_import import { SAOPass } from 'three/addons/postprocessing/SAOPass.js';
|
|
36
37
|
*/
|
|
37
38
|
class SAOPass extends Pass {
|
|
38
39
|
|
|
@@ -82,7 +83,7 @@ class SAOPass extends Pass {
|
|
|
82
83
|
this._oldClearAlpha = 1;
|
|
83
84
|
|
|
84
85
|
/**
|
|
85
|
-
* The SAO
|
|
86
|
+
* The SAO parameter.
|
|
86
87
|
*
|
|
87
88
|
* @type {Object}
|
|
88
89
|
*/
|
|
@@ -293,7 +294,7 @@ class SAOPass extends Pass {
|
|
|
293
294
|
* Sets the size of the pass.
|
|
294
295
|
*
|
|
295
296
|
* @param {number} width - The width to set.
|
|
296
|
-
* @param {number} height - The
|
|
297
|
+
* @param {number} height - The height to set.
|
|
297
298
|
*/
|
|
298
299
|
setSize( width, height ) {
|
|
299
300
|
|