@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,3 +1,7 @@
|
|
|
1
|
+
import { MathUtils } from 'three';
|
|
2
|
+
|
|
3
|
+
const { lerp } = MathUtils;
|
|
4
|
+
|
|
1
5
|
const _p = [ 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10,
|
|
2
6
|
23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56, 87,
|
|
3
7
|
174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211,
|
|
@@ -21,12 +25,6 @@ function fade( t ) {
|
|
|
21
25
|
|
|
22
26
|
}
|
|
23
27
|
|
|
24
|
-
function lerp( t, a, b ) {
|
|
25
|
-
|
|
26
|
-
return a + t * ( b - a );
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
30
28
|
function grad( hash, x, y, z ) {
|
|
31
29
|
|
|
32
30
|
const h = hash & 15;
|
|
@@ -40,6 +38,8 @@ function grad( hash, x, y, z ) {
|
|
|
40
38
|
*
|
|
41
39
|
* The code is based on [IMPROVED NOISE]{@link https://cs.nyu.edu/~perlin/noise/}
|
|
42
40
|
* by Ken Perlin, 2002.
|
|
41
|
+
*
|
|
42
|
+
* @three_import import { ImprovedNoise } from 'three/addons/math/ImprovedNoise.js';
|
|
43
43
|
*/
|
|
44
44
|
class ImprovedNoise {
|
|
45
45
|
|
|
@@ -67,14 +67,19 @@ class ImprovedNoise {
|
|
|
67
67
|
|
|
68
68
|
const A = _p[ X ] + Y, AA = _p[ A ] + Z, AB = _p[ A + 1 ] + Z, B = _p[ X + 1 ] + Y, BA = _p[ B ] + Z, BB = _p[ B + 1 ] + Z;
|
|
69
69
|
|
|
70
|
-
return lerp(
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
70
|
+
return lerp(
|
|
71
|
+
lerp(
|
|
72
|
+
lerp( grad( _p[ AA ], x, y, z ), grad( _p[ BA ], xMinus1, y, z ), u ),
|
|
73
|
+
lerp( grad( _p[ AB ], x, yMinus1, z ), grad( _p[ BB ], xMinus1, yMinus1, z ), u ),
|
|
74
|
+
v
|
|
75
|
+
),
|
|
76
|
+
lerp(
|
|
77
|
+
lerp( grad( _p[ AA + 1 ], x, y, zMinus1 ), grad( _p[ BA + 1 ], xMinus1, y, zMinus1 ), u ),
|
|
78
|
+
lerp( grad( _p[ AB + 1 ], x, yMinus1, zMinus1 ), grad( _p[ BB + 1 ], xMinus1, yMinus1, zMinus1 ), u ),
|
|
79
|
+
v
|
|
80
|
+
),
|
|
81
|
+
w
|
|
82
|
+
);
|
|
78
83
|
|
|
79
84
|
}
|
|
80
85
|
|
package/examples/jsm/math/Lut.js
CHANGED
package/examples/jsm/math/OBB.js
CHANGED
|
@@ -96,6 +96,8 @@ function lineToLineClosestPoints( line1, line2, target1 = null, target2 = null )
|
|
|
96
96
|
* const octree = new Octree().fromGraphNode( scene );
|
|
97
97
|
* const result = octree.capsuleIntersect( playerCollider ); // collision detection
|
|
98
98
|
* ```
|
|
99
|
+
*
|
|
100
|
+
* @three_import import { Octree } from 'three/addons/math/Octree.js';
|
|
99
101
|
*/
|
|
100
102
|
class Octree {
|
|
101
103
|
|
|
@@ -128,6 +130,23 @@ class Octree {
|
|
|
128
130
|
*/
|
|
129
131
|
this.layers = new Layers();
|
|
130
132
|
|
|
133
|
+
/**
|
|
134
|
+
* The number of triangles a leaf can store before it is split.
|
|
135
|
+
*
|
|
136
|
+
* @type {number}
|
|
137
|
+
* @default 8
|
|
138
|
+
*/
|
|
139
|
+
this.trianglesPerLeaf = 8;
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* The maximum level of the Octree. It defines the maximum
|
|
143
|
+
* hierarchical depth of the data structure.
|
|
144
|
+
*
|
|
145
|
+
* @type {number}
|
|
146
|
+
* @default 16
|
|
147
|
+
*/
|
|
148
|
+
this.maxLevel = 16;
|
|
149
|
+
|
|
131
150
|
// private
|
|
132
151
|
|
|
133
152
|
this.subTrees = [];
|
|
@@ -229,7 +248,7 @@ class Octree {
|
|
|
229
248
|
|
|
230
249
|
const len = subTrees[ i ].triangles.length;
|
|
231
250
|
|
|
232
|
-
if ( len >
|
|
251
|
+
if ( len > this.trianglesPerLeaf && level < this.maxLevel ) {
|
|
233
252
|
|
|
234
253
|
subTrees[ i ].split( level + 1 );
|
|
235
254
|
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* The code is based on [Simplex noise demystified]{@link https://web.archive.org/web/20210210162332/http://staffwww.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf}
|
|
5
5
|
* by Stefan Gustavson, 2005.
|
|
6
|
+
*
|
|
7
|
+
* @three_import import { SimplexNoise } from 'three/addons/math/SimplexNoise.js';
|
|
6
8
|
*/
|
|
7
9
|
class SimplexNoise {
|
|
8
10
|
|
|
@@ -24,7 +24,9 @@ const _v1 = new Vector3();
|
|
|
24
24
|
*
|
|
25
25
|
* Note: This lib adds member variables to object's userData member (see prepareBreakableObject function)
|
|
26
26
|
* Use with caution and read the code when using with other libs.
|
|
27
|
-
|
|
27
|
+
*
|
|
28
|
+
* @three_import import { ConvexObjectBreaker } from 'three/addons/misc/ConvexObjectBreaker.js';
|
|
29
|
+
*/
|
|
28
30
|
class ConvexObjectBreaker {
|
|
29
31
|
|
|
30
32
|
/**
|
|
@@ -98,6 +98,8 @@ import { FullScreenQuad } from '../postprocessing/Pass.js';
|
|
|
98
98
|
* gpuCompute.doRenderTarget( myFilter1, myRenderTarget );
|
|
99
99
|
* gpuCompute.doRenderTarget( myFilter2, outputRenderTarget );
|
|
100
100
|
* ```
|
|
101
|
+
*
|
|
102
|
+
* @three_import import { GPUComputationRenderer } from 'three/addons/misc/GPUComputationRenderer.js';
|
|
101
103
|
*/
|
|
102
104
|
class GPUComputationRenderer {
|
|
103
105
|
|
|
@@ -13,6 +13,8 @@ import { MD2Loader } from '../loaders/MD2Loader.js';
|
|
|
13
13
|
/**
|
|
14
14
|
* This class represents a management component for animated MD2
|
|
15
15
|
* character assets.
|
|
16
|
+
*
|
|
17
|
+
* @three_import import { MD2Character } from 'three/addons/misc/MD2Character.js';
|
|
16
18
|
*/
|
|
17
19
|
class MD2Character {
|
|
18
20
|
|
|
@@ -13,6 +13,8 @@ import { MorphBlendMesh } from '../misc/MorphBlendMesh.js';
|
|
|
13
13
|
/**
|
|
14
14
|
* This class represents a management component for animated MD2
|
|
15
15
|
* character assets. It provides a larger API compared to {@link MD2Character}.
|
|
16
|
+
*
|
|
17
|
+
* @three_import import { MD2CharacterComplex } from 'three/addons/misc/MD2CharacterComplex.js';
|
|
16
18
|
*/
|
|
17
19
|
class MD2CharacterComplex {
|
|
18
20
|
|
|
@@ -78,12 +80,12 @@ class MD2CharacterComplex {
|
|
|
78
80
|
this.backAcceleration = 600;
|
|
79
81
|
|
|
80
82
|
/**
|
|
81
|
-
* The character's front
|
|
83
|
+
* The character's front deceleration.
|
|
82
84
|
*
|
|
83
85
|
* @type {number}
|
|
84
86
|
* @default 600
|
|
85
87
|
*/
|
|
86
|
-
this.
|
|
88
|
+
this.frontDeceleration = 600;
|
|
87
89
|
|
|
88
90
|
/**
|
|
89
91
|
* The character's angular speed.
|
|
@@ -684,7 +686,7 @@ class MD2CharacterComplex {
|
|
|
684
686
|
if ( this.speed > 0 ) {
|
|
685
687
|
|
|
686
688
|
const k = exponentialEaseOut( this.speed / this.maxSpeed );
|
|
687
|
-
this.speed = MathUtils.clamp( this.speed - k * delta * this.
|
|
689
|
+
this.speed = MathUtils.clamp( this.speed - k * delta * this.frontDeceleration, 0, this.maxSpeed );
|
|
688
690
|
|
|
689
691
|
} else {
|
|
690
692
|
|
|
@@ -16,6 +16,8 @@ import { potpack } from '../libs/potpack.module.js';
|
|
|
16
16
|
*
|
|
17
17
|
* This class can only be used with {@link WebGLRenderer}.
|
|
18
18
|
* When using {@link WebGPURenderer}, import from `ProgressiveLightMapGPU.js`.
|
|
19
|
+
*
|
|
20
|
+
* @three_import import { ProgressiveLightMap } from 'three/addons/misc/ProgressiveLightMap.js';
|
|
19
21
|
*/
|
|
20
22
|
class ProgressiveLightMap {
|
|
21
23
|
|
|
@@ -18,6 +18,8 @@ import { potpack } from '../libs/potpack.module.js';
|
|
|
18
18
|
*
|
|
19
19
|
* This class can only be used with {@link WebGPURenderer}.
|
|
20
20
|
* When using {@link WebGLRenderer}, import from `ProgressiveLightMap.js`.
|
|
21
|
+
*
|
|
22
|
+
* @three_import import { ProgressiveLightMap } from 'three/addons/misc/ProgressiveLightMapGPU.js';
|
|
21
23
|
*/
|
|
22
24
|
class ProgressiveLightMap {
|
|
23
25
|
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
* A procedural roller coaster geometry.
|
|
13
13
|
*
|
|
14
14
|
* @augments BufferGeometry
|
|
15
|
+
* @three_import import { RollerCoasterGeometry } from 'three/addons/misc/RollerCoaster.js';
|
|
15
16
|
*/
|
|
16
17
|
class RollerCoasterGeometry extends BufferGeometry {
|
|
17
18
|
|
|
@@ -237,6 +238,7 @@ class RollerCoasterGeometry extends BufferGeometry {
|
|
|
237
238
|
* A procedural roller coaster lifters geometry.
|
|
238
239
|
*
|
|
239
240
|
* @augments BufferGeometry
|
|
241
|
+
* @three_import import { RollerCoasterLiftersGeometry } from 'three/addons/misc/RollerCoaster.js';
|
|
240
242
|
*/
|
|
241
243
|
class RollerCoasterLiftersGeometry extends BufferGeometry {
|
|
242
244
|
|
|
@@ -424,6 +426,7 @@ class RollerCoasterLiftersGeometry extends BufferGeometry {
|
|
|
424
426
|
* A procedural roller coaster shadow geometry.
|
|
425
427
|
*
|
|
426
428
|
* @augments BufferGeometry
|
|
429
|
+
* @three_import import { RollerCoasterShadowGeometry } from 'three/addons/misc/RollerCoaster.js';
|
|
427
430
|
*/
|
|
428
431
|
class RollerCoasterShadowGeometry extends BufferGeometry {
|
|
429
432
|
|
|
@@ -507,6 +510,7 @@ class RollerCoasterShadowGeometry extends BufferGeometry {
|
|
|
507
510
|
* A procedural sky geometry.
|
|
508
511
|
*
|
|
509
512
|
* @augments BufferGeometry
|
|
513
|
+
* @three_import import { SkyGeometry } from 'three/addons/misc/RollerCoaster.js';
|
|
510
514
|
*/
|
|
511
515
|
class SkyGeometry extends BufferGeometry {
|
|
512
516
|
|
|
@@ -548,6 +552,7 @@ class SkyGeometry extends BufferGeometry {
|
|
|
548
552
|
* A procedural trees geometry.
|
|
549
553
|
*
|
|
550
554
|
* @augments BufferGeometry
|
|
555
|
+
* @three_import import { TreesGeometry } from 'three/addons/misc/RollerCoaster.js';
|
|
551
556
|
*/
|
|
552
557
|
class TreesGeometry extends BufferGeometry {
|
|
553
558
|
|
|
@@ -8,6 +8,8 @@ import { VolumeSlice } from '../misc/VolumeSlice.js';
|
|
|
8
8
|
/**
|
|
9
9
|
* This class had been written to handle the output of the {@link NRRDLoader}.
|
|
10
10
|
* It contains a volume of data and information about it. For now it only handles 3 dimensional data.
|
|
11
|
+
*
|
|
12
|
+
* @three_import import { Volume } from 'three/addons/misc/Volume.js';
|
|
11
13
|
*/
|
|
12
14
|
class Volume {
|
|
13
15
|
|
|
@@ -203,6 +203,8 @@ vec3 transformedNormal = normalMatrix * (basis * objectNormal);
|
|
|
203
203
|
*
|
|
204
204
|
* This module can only be used with {@link WebGLRenderer}. When using {@link WebGPURenderer},
|
|
205
205
|
* import the class from `CurveModifierGPU.js`.
|
|
206
|
+
*
|
|
207
|
+
* @three_import import { Flow } from 'three/addons/modifiers/CurveModifier.js';
|
|
206
208
|
*/
|
|
207
209
|
export class Flow {
|
|
208
210
|
|
|
@@ -296,6 +298,7 @@ const _matrix = new Matrix4();
|
|
|
296
298
|
* This module can only be used with {@link WebGLRenderer}.
|
|
297
299
|
*
|
|
298
300
|
* @augments Flow
|
|
301
|
+
* @three_import import { InstancedFlow } from 'three/addons/modifiers/CurveModifier.js';
|
|
299
302
|
*/
|
|
300
303
|
export class InstancedFlow extends Flow {
|
|
301
304
|
|
|
@@ -164,6 +164,8 @@ function modifyShader( material, uniforms, numberOfCurves ) {
|
|
|
164
164
|
*
|
|
165
165
|
* This module can only be used with {@link WebGPURenderer}. When using {@link WebGLRenderer},
|
|
166
166
|
* import the class from `CurveModifier.js`.
|
|
167
|
+
*
|
|
168
|
+
* @three_import import { Flow } from 'three/addons/modifiers/CurveModifierGPU.js';
|
|
167
169
|
*/
|
|
168
170
|
export class Flow {
|
|
169
171
|
|
|
@@ -17,6 +17,8 @@ const _C = new Vector3();
|
|
|
17
17
|
* const modifier = new EdgeSplitModifier();
|
|
18
18
|
* geometry = modifier.modify( geometry, Math.PI * 0.4 );
|
|
19
19
|
* ```
|
|
20
|
+
*
|
|
21
|
+
* @three_import import { EdgeSplitModifier } from 'three/addons/modifiers/EdgeSplitModifier.js';
|
|
20
22
|
*/
|
|
21
23
|
class EdgeSplitModifier {
|
|
22
24
|
|
|
@@ -21,6 +21,8 @@ const _cb = new Vector3(), _ab = new Vector3();
|
|
|
21
21
|
* const modifier = new SimplifyModifier();
|
|
22
22
|
* geometry = modifier.modify( geometry );
|
|
23
23
|
* ```
|
|
24
|
+
*
|
|
25
|
+
* @three_import import { SimplifyModifier } from 'three/addons/modifiers/SimplifyModifier.js';
|
|
24
26
|
*/
|
|
25
27
|
class SimplifyModifier {
|
|
26
28
|
|
|
@@ -14,6 +14,8 @@ import {
|
|
|
14
14
|
* const modifier = new TessellateModifier( 8, 6 );
|
|
15
15
|
* geometry = modifier.modify( geometry );
|
|
16
16
|
* ```
|
|
17
|
+
*
|
|
18
|
+
* @three_import import { TessellateModifier } from 'three/addons/modifiers/TessellateModifier.js';
|
|
17
19
|
*/
|
|
18
20
|
class TessellateModifier {
|
|
19
21
|
|
|
@@ -33,6 +33,7 @@ import {
|
|
|
33
33
|
* ```
|
|
34
34
|
*
|
|
35
35
|
* @augments Mesh
|
|
36
|
+
* @three_import import { Lensflare } from 'three/addons/objects/Lensflare.js';
|
|
36
37
|
*/
|
|
37
38
|
class Lensflare extends Mesh {
|
|
38
39
|
|
|
@@ -338,6 +339,8 @@ class Lensflare extends Mesh {
|
|
|
338
339
|
|
|
339
340
|
/**
|
|
340
341
|
* Represents a single flare that can be added to a {@link Lensflare} container.
|
|
342
|
+
*
|
|
343
|
+
* @three_import import { LensflareElement } from 'three/addons/objects/Lensflare.js';
|
|
341
344
|
*/
|
|
342
345
|
class LensflareElement {
|
|
343
346
|
|
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
* A special version of {@link Reflector} for usage with {@link SSRPass}.
|
|
20
20
|
*
|
|
21
21
|
* @augments Mesh
|
|
22
|
+
* @three_import import { ReflectorForSSRPass } from 'three/addons/objects/ReflectorForSSRPass.js';
|
|
22
23
|
*/
|
|
23
24
|
class ReflectorForSSRPass extends Mesh {
|
|
24
25
|
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
NodeMaterial
|
|
7
7
|
} from 'three/webgpu';
|
|
8
8
|
|
|
9
|
-
import { Fn, float, vec3, acos, add, mul, clamp, cos, dot, exp, max, mix, modelViewProjection, normalize, positionWorld, pow, smoothstep, sub,
|
|
9
|
+
import { Fn, float, vec3, acos, add, mul, clamp, cos, dot, exp, max, mix, modelViewProjection, normalize, positionWorld, pow, smoothstep, sub, varyingProperty, vec4, uniform, cameraPosition } from 'three/tsl';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Represents a skydome for scene backgrounds. Based on [A Practical Analytic Model for Daylight]{@link https://www.researchgate.net/publication/220720443_A_Practical_Analytic_Model_for_Daylight}
|
|
@@ -27,7 +27,8 @@ import { Fn, float, vec3, acos, add, mul, clamp, cos, dot, exp, max, mix, modelV
|
|
|
27
27
|
* ```
|
|
28
28
|
*
|
|
29
29
|
* @augments Mesh
|
|
30
|
-
|
|
30
|
+
* @three_import import { SkyMesh } from 'three/addons/objects/SkyMesh.js';
|
|
31
|
+
*/
|
|
31
32
|
class SkyMesh extends Mesh {
|
|
32
33
|
|
|
33
34
|
/**
|
|
@@ -90,6 +91,14 @@ class SkyMesh extends Mesh {
|
|
|
90
91
|
*/
|
|
91
92
|
this.isSky = true;
|
|
92
93
|
|
|
94
|
+
// Varyings
|
|
95
|
+
|
|
96
|
+
const vSunDirection = varyingProperty( 'vec3' );
|
|
97
|
+
const vSunE = varyingProperty( 'float' );
|
|
98
|
+
const vSunfade = varyingProperty( 'float' );
|
|
99
|
+
const vBetaR = varyingProperty( 'vec3' );
|
|
100
|
+
const vBetaM = varyingProperty( 'vec3' );
|
|
101
|
+
|
|
93
102
|
const vertexNode = /*@__PURE__*/ Fn( () => {
|
|
94
103
|
|
|
95
104
|
// constants for atmospheric scattering
|
|
@@ -117,35 +126,35 @@ class SkyMesh extends Mesh {
|
|
|
117
126
|
|
|
118
127
|
// varying sun position
|
|
119
128
|
|
|
120
|
-
const
|
|
121
|
-
|
|
129
|
+
const sunDirection = normalize( this.sunPosition );
|
|
130
|
+
vSunDirection.assign( sunDirection );
|
|
122
131
|
|
|
123
132
|
// varying sun intensity
|
|
124
133
|
|
|
125
|
-
const angle = dot(
|
|
134
|
+
const angle = dot( sunDirection, this.upUniform );
|
|
126
135
|
const zenithAngleCos = clamp( angle, - 1, 1 );
|
|
127
136
|
const sunIntensity = EE.mul( max( 0.0, float( 1.0 ).sub( pow( e, cutoffAngle.sub( acos( zenithAngleCos ) ).div( steepness ).negate() ) ) ) );
|
|
128
|
-
|
|
137
|
+
vSunE.assign( sunIntensity );
|
|
129
138
|
|
|
130
139
|
// varying sun fade
|
|
131
140
|
|
|
132
|
-
const
|
|
133
|
-
|
|
141
|
+
const sunfade = float( 1.0 ).sub( clamp( float( 1.0 ).sub( exp( this.sunPosition.y.div( 450000.0 ) ) ), 0, 1 ) );
|
|
142
|
+
vSunfade.assign( sunfade );
|
|
134
143
|
|
|
135
144
|
// varying vBetaR
|
|
136
145
|
|
|
137
|
-
const rayleighCoefficient = this.rayleigh.sub( float( 1.0 ).mul( float( 1.0 ).sub(
|
|
146
|
+
const rayleighCoefficient = this.rayleigh.sub( float( 1.0 ).mul( float( 1.0 ).sub( sunfade ) ) );
|
|
138
147
|
|
|
139
148
|
// extinction (absorption + out scattering)
|
|
140
149
|
// rayleigh coefficients
|
|
141
|
-
|
|
150
|
+
vBetaR.assign( totalRayleigh.mul( rayleighCoefficient ) );
|
|
142
151
|
|
|
143
152
|
// varying vBetaM
|
|
144
153
|
|
|
145
154
|
const c = float( 0.2 ).mul( this.turbidity ).mul( 10E-18 );
|
|
146
155
|
const totalMie = float( 0.434 ).mul( c ).mul( MieConst );
|
|
147
156
|
|
|
148
|
-
|
|
157
|
+
vBetaM.assign( totalMie.mul( this.mieCoefficient ) );
|
|
149
158
|
|
|
150
159
|
// position
|
|
151
160
|
|
|
@@ -158,12 +167,6 @@ class SkyMesh extends Mesh {
|
|
|
158
167
|
|
|
159
168
|
const fragmentNode = /*@__PURE__*/ Fn( () => {
|
|
160
169
|
|
|
161
|
-
const vSunDirection = varying( vec3(), 'vSunDirection' );
|
|
162
|
-
const vSunE = varying( float(), 'vSunE' );
|
|
163
|
-
const vSunfade = varying( float(), 'vSunfade' );
|
|
164
|
-
const vBetaR = varying( vec3(), 'vBetaR' );
|
|
165
|
-
const vBetaM = varying( vec3(), 'vBetaM' );
|
|
166
|
-
|
|
167
170
|
// constants for atmospheric scattering
|
|
168
171
|
const pi = float( 3.141592653589793238462643383279502884197169 );
|
|
169
172
|
|
|
@@ -28,6 +28,7 @@ import { Refractor } from '../objects/Refractor.js';
|
|
|
28
28
|
* - {@link http://graphicsrunner.blogspot.de/2010/08/water-using-flow-maps.html}
|
|
29
29
|
*
|
|
30
30
|
* @augments Mesh
|
|
31
|
+
* @three_import import { Water } from 'three/addons/objects/Water2.js';
|
|
31
32
|
*/
|
|
32
33
|
class Water extends Mesh {
|
|
33
34
|
|
|
@@ -24,6 +24,7 @@ import { Fn, vec2, viewportSafeUV, viewportSharedTexture, reflector, pow, float,
|
|
|
24
24
|
* - {@link http://graphicsrunner.blogspot.de/2010/08/water-using-flow-maps.html}
|
|
25
25
|
*
|
|
26
26
|
* @augments Mesh
|
|
27
|
+
* @three_import import { WaterMesh } from 'three/addons/objects/Water2Mesh.js';
|
|
27
28
|
*/
|
|
28
29
|
class WaterMesh extends Mesh {
|
|
29
30
|
|
|
@@ -36,6 +37,7 @@ class WaterMesh extends Mesh {
|
|
|
36
37
|
constructor( geometry, options = {} ) {
|
|
37
38
|
|
|
38
39
|
const material = new NodeMaterial();
|
|
40
|
+
material.transparent = true;
|
|
39
41
|
|
|
40
42
|
super( geometry, material );
|
|
41
43
|
|
|
@@ -48,7 +50,7 @@ class WaterMesh extends Mesh {
|
|
|
48
50
|
*/
|
|
49
51
|
this.isWater = true;
|
|
50
52
|
|
|
51
|
-
material.
|
|
53
|
+
material.colorNode = new WaterNode( options, this );
|
|
52
54
|
|
|
53
55
|
}
|
|
54
56
|
|
|
@@ -20,6 +20,7 @@ import { Fn, add, cameraPosition, div, normalize, positionWorld, sub, time, text
|
|
|
20
20
|
* - [Water shader explanations in WebGL]{@link http://29a.ch/slides/2012/webglwater/ }
|
|
21
21
|
*
|
|
22
22
|
* @augments Mesh
|
|
23
|
+
* @three_import import { WaterMesh } from 'three/addons/objects/WaterMesh.js';
|
|
23
24
|
*/
|
|
24
25
|
class WaterMesh extends Mesh {
|
|
25
26
|
|
|
@@ -152,7 +153,7 @@ class WaterMesh extends Mesh {
|
|
|
152
153
|
|
|
153
154
|
material.opacityNode = this.alpha;
|
|
154
155
|
|
|
155
|
-
material.
|
|
156
|
+
material.receivedShadowPositionNode = positionWorld.add( distortion );
|
|
156
157
|
|
|
157
158
|
material.setupOutgoingLight = () => diffuseColor.rgb; // backwards compatibility
|
|
158
159
|
|