super-three 0.173.5 → 0.176.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +21993 -1359
- package/build/three.core.js +21129 -1188
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +835 -142
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +8 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +19493 -17617
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +19477 -17617
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +144 -42
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +194 -71
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +74 -30
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +51 -5
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +36 -1
- package/examples/jsm/loaders/DDSLoader.js +25 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +71 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +222 -9
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +87 -19
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +56 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +90 -70
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +105 -13
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +109 -73
- package/examples/jsm/misc/VolumeSlice.js +91 -48
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +75 -2
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +134 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +268 -134
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/AST.js +10 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +17 -3
- package/examples/jsm/transpiler/TSLEncoder.js +83 -15
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +24 -25
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +2 -3
- package/examples/jsm/tsl/display/AnamorphicNode.js +8 -9
- package/examples/jsm/tsl/display/BleachBypass.js +1 -2
- package/examples/jsm/tsl/display/BloomNode.js +15 -16
- package/examples/jsm/tsl/display/DenoiseNode.js +9 -10
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +5 -6
- package/examples/jsm/tsl/display/DotScreenNode.js +5 -6
- package/examples/jsm/tsl/display/FXAANode.js +2 -3
- package/examples/jsm/tsl/display/FilmNode.js +9 -8
- package/examples/jsm/tsl/display/GTAONode.js +11 -12
- package/examples/jsm/tsl/display/GaussianBlurNode.js +14 -14
- package/examples/jsm/tsl/display/LensflareNode.js +15 -16
- package/examples/jsm/tsl/display/Lut3DNode.js +4 -5
- package/examples/jsm/tsl/display/MotionBlur.js +1 -2
- package/examples/jsm/tsl/display/OutlineNode.js +7 -8
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -3
- package/examples/jsm/tsl/display/PixelationPassNode.js +14 -15
- package/examples/jsm/tsl/display/RGBShiftNode.js +5 -6
- package/examples/jsm/tsl/display/SMAANode.js +13 -7
- package/examples/jsm/tsl/display/SSAAPassNode.js +7 -7
- package/examples/jsm/tsl/display/SSRNode.js +6 -7
- package/examples/jsm/tsl/display/Sepia.js +1 -2
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -3
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +4 -4
- package/examples/jsm/tsl/display/StereoPassNode.js +2 -3
- package/examples/jsm/tsl/display/TRAAPassNode.js +11 -10
- package/examples/jsm/tsl/display/TransitionNode.js +4 -5
- package/examples/jsm/tsl/display/hashBlur.js +1 -2
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +33 -7
- package/examples/jsm/tsl/math/Bayer.js +31 -0
- package/examples/jsm/tsl/utils/Raymarching.js +67 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +3 -4
- package/src/Three.TSL.js +7 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +169 -19
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/Audio.js +339 -0
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +76 -0
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +28 -0
- package/src/cameras/Camera.js +47 -0
- package/src/cameras/CubeCamera.js +66 -0
- package/src/cameras/OrthographicCamera.js +109 -0
- package/src/cameras/PerspectiveCamera.js +163 -40
- package/src/cameras/StereoCamera.js +46 -0
- package/src/constants.js +1429 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/EventDispatcher.js +44 -2
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +593 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +170 -11
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +88 -1
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +13 -780
- package/src/extras/ImageUtils.js +20 -2
- package/src/extras/PMREMGenerator.js +41 -25
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +95 -15
- package/src/extras/core/Curve.js +150 -50
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +29 -3
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +63 -0
- package/src/extras/core/ShapePath.js +76 -0
- package/src/extras/curves/ArcCurve.js +22 -0
- package/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/src/extras/curves/CubicBezierCurve.js +67 -0
- package/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/src/extras/curves/EllipseCurve.js +102 -0
- package/src/extras/curves/LineCurve.js +36 -0
- package/src/extras/curves/LineCurve3.js +36 -0
- package/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/src/extras/curves/SplineCurve.js +48 -0
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/BoxGeometry.js +38 -0
- package/src/geometries/CapsuleGeometry.js +34 -0
- package/src/geometries/CircleGeometry.js +40 -0
- package/src/geometries/ConeGeometry.js +38 -0
- package/src/geometries/CylinderGeometry.js +39 -0
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +28 -0
- package/src/geometries/ExtrudeGeometry.js +112 -28
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +40 -0
- package/src/geometries/OctahedronGeometry.js +32 -0
- package/src/geometries/PlaneGeometry.js +34 -0
- package/src/geometries/PolyhedronGeometry.js +29 -0
- package/src/geometries/RingGeometry.js +36 -0
- package/src/geometries/ShapeGeometry.js +37 -0
- package/src/geometries/SphereGeometry.js +37 -0
- package/src/geometries/TetrahedronGeometry.js +32 -0
- package/src/geometries/TorusGeometry.js +35 -0
- package/src/geometries/TorusKnotGeometry.js +38 -0
- package/src/geometries/TubeGeometry.js +49 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +60 -3
- package/src/helpers/AxesHelper.js +28 -0
- package/src/helpers/Box3Helper.js +28 -0
- package/src/helpers/BoxHelper.js +43 -7
- package/src/helpers/CameraHelper.js +45 -5
- package/src/helpers/DirectionalLightHelper.js +52 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +39 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -0
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +39 -2
- package/src/helpers/SpotLightHelper.js +40 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +57 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +32 -0
- package/src/lights/Light.js +36 -0
- package/src/lights/LightProbe.js +43 -0
- package/src/lights/LightShadow.js +159 -0
- package/src/lights/PointLight.js +59 -0
- package/src/lights/PointLightShadow.js +21 -0
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +102 -0
- package/src/lights/SpotLightShadow.js +22 -0
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +130 -0
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +53 -0
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +13 -9
- package/src/loaders/nodes/NodeMaterialLoader.js +6 -6
- package/src/loaders/nodes/NodeObjectLoader.js +12 -12
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +481 -4
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +14 -14
- package/src/materials/nodes/LineBasicNodeMaterial.js +3 -3
- package/src/materials/nodes/LineDashedNodeMaterial.js +12 -12
- package/src/materials/nodes/MeshBasicNodeMaterial.js +7 -7
- package/src/materials/nodes/MeshLambertNodeMaterial.js +5 -5
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +3 -3
- package/src/materials/nodes/MeshNormalNodeMaterial.js +8 -4
- package/src/materials/nodes/MeshPhongNodeMaterial.js +9 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +43 -43
- package/src/materials/nodes/MeshSSSNodeMaterial.js +18 -21
- package/src/materials/nodes/MeshStandardNodeMaterial.js +11 -11
- package/src/materials/nodes/MeshToonNodeMaterial.js +4 -4
- package/src/materials/nodes/NodeMaterial.js +66 -47
- package/src/materials/nodes/PointsNodeMaterial.js +6 -6
- package/src/materials/nodes/ShadowNodeMaterial.js +13 -4
- package/src/materials/nodes/SpriteNodeMaterial.js +17 -9
- package/src/materials/nodes/VolumeNodeMaterial.js +25 -128
- package/src/materials/nodes/manager/NodeMaterialObserver.js +8 -8
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +137 -4
- package/src/math/Frustum.js +83 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +94 -0
- package/src/math/MathUtils.js +405 -19
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +368 -3
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +262 -6
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +70 -8
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +206 -2
- package/src/math/Vector2.js +388 -2
- package/src/math/Vector3.js +541 -4
- package/src/math/Vector4.js +393 -0
- package/src/math/interpolants/CubicInterpolant.js +10 -1
- package/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/src/math/interpolants/LinearInterpolant.js +13 -0
- package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/TSL.js +1 -0
- package/src/nodes/accessors/AccessorsUtils.js +4 -2
- package/src/nodes/accessors/Arrays.js +6 -6
- package/src/nodes/accessors/BatchNode.js +10 -11
- package/src/nodes/accessors/Bitangent.js +6 -2
- package/src/nodes/accessors/BufferAttributeNode.js +33 -31
- package/src/nodes/accessors/BufferNode.js +12 -13
- package/src/nodes/accessors/BuiltinNode.js +7 -8
- package/src/nodes/accessors/Camera.js +9 -2
- package/src/nodes/accessors/ClippingNode.js +4 -4
- package/src/nodes/accessors/CubeTextureNode.js +17 -19
- package/src/nodes/accessors/InstanceNode.js +10 -11
- package/src/nodes/accessors/InstancedMeshNode.js +3 -4
- package/src/nodes/accessors/Lights.js +12 -15
- package/src/nodes/accessors/MaterialNode.js +45 -9
- package/src/nodes/accessors/MaterialProperties.js +51 -2
- package/src/nodes/accessors/MaterialReferenceNode.js +11 -12
- package/src/nodes/accessors/ModelNode.js +20 -3
- package/src/nodes/accessors/ModelViewProjectionNode.js +1 -2
- package/src/nodes/accessors/MorphNode.js +29 -26
- package/src/nodes/accessors/Normal.js +11 -3
- package/src/nodes/accessors/Object3DNode.js +51 -16
- package/src/nodes/accessors/PointUVNode.js +2 -3
- package/src/nodes/accessors/Position.js +8 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +29 -29
- package/src/nodes/accessors/ReferenceNode.js +31 -31
- package/src/nodes/accessors/ReflectVector.js +4 -2
- package/src/nodes/accessors/RendererReferenceNode.js +9 -10
- package/src/nodes/accessors/SceneNode.js +5 -4
- package/src/nodes/accessors/SkinningNode.js +53 -44
- package/src/nodes/accessors/StorageBufferNode.js +24 -24
- package/src/nodes/accessors/StorageTextureNode.js +17 -17
- package/src/nodes/accessors/Tangent.js +6 -2
- package/src/nodes/accessors/Texture3DNode.js +11 -12
- package/src/nodes/accessors/TextureBicubic.js +2 -3
- package/src/nodes/accessors/TextureNode.js +68 -47
- package/src/nodes/accessors/TextureSizeNode.js +5 -6
- package/src/nodes/accessors/UV.js +2 -3
- package/src/nodes/accessors/UniformArrayNode.js +24 -24
- package/src/nodes/accessors/UserDataNode.js +11 -12
- package/src/nodes/accessors/VelocityNode.js +4 -5
- package/src/nodes/accessors/VertexColorNode.js +7 -8
- package/src/nodes/code/CodeNode.js +15 -13
- package/src/nodes/code/ExpressionNode.js +8 -9
- package/src/nodes/code/FunctionCallNode.js +29 -9
- package/src/nodes/code/FunctionNode.js +1 -1
- package/src/nodes/code/ScriptableNode.js +27 -28
- package/src/nodes/code/ScriptableValueNode.js +11 -12
- package/src/nodes/core/ArrayNode.js +29 -12
- package/src/nodes/core/AssignNode.js +4 -5
- package/src/nodes/core/AttributeNode.js +8 -9
- package/src/nodes/core/BypassNode.js +3 -4
- package/src/nodes/core/CacheNode.js +5 -6
- package/src/nodes/core/ConstNode.js +4 -4
- package/src/nodes/core/ContextNode.js +9 -9
- package/src/nodes/core/IndexNode.js +8 -4
- package/src/nodes/core/InputNode.js +7 -7
- package/src/nodes/core/LightingModel.js +17 -17
- package/src/nodes/core/MRTNode.js +9 -10
- package/src/nodes/core/Node.js +49 -37
- package/src/nodes/core/NodeAttribute.js +7 -7
- package/src/nodes/core/NodeBuilder.js +248 -175
- package/src/nodes/core/NodeCache.js +4 -4
- package/src/nodes/core/NodeCode.js +6 -6
- package/src/nodes/core/NodeFrame.js +10 -10
- package/src/nodes/core/NodeFunction.js +8 -8
- package/src/nodes/core/NodeFunctionInput.js +8 -8
- package/src/nodes/core/NodeParser.js +1 -1
- package/src/nodes/core/NodeUniform.js +7 -7
- package/src/nodes/core/NodeUtils.js +22 -24
- package/src/nodes/core/NodeVar.js +9 -9
- package/src/nodes/core/NodeVarying.js +4 -4
- package/src/nodes/core/OutputStructNode.js +2 -3
- package/src/nodes/core/ParameterNode.js +6 -7
- package/src/nodes/core/PropertyNode.js +41 -13
- package/src/nodes/core/StackNode.js +11 -12
- package/src/nodes/core/StructNode.js +2 -3
- package/src/nodes/core/StructTypeNode.js +10 -6
- package/src/nodes/core/TempNode.js +3 -3
- package/src/nodes/core/UniformGroupNode.js +15 -12
- package/src/nodes/core/UniformNode.js +9 -10
- package/src/nodes/core/VarNode.js +14 -18
- package/src/nodes/core/VaryingNode.js +10 -10
- package/src/nodes/core/constants.js +0 -2
- package/src/nodes/display/BlendModes.js +21 -14
- package/src/nodes/display/BumpMapNode.js +5 -6
- package/src/nodes/display/ColorAdjustment.js +13 -9
- package/src/nodes/display/ColorSpaceFunctions.js +4 -4
- package/src/nodes/display/ColorSpaceNode.js +15 -12
- package/src/nodes/display/FrontFacingNode.js +3 -3
- package/src/nodes/display/NormalMapNode.js +5 -6
- package/src/nodes/display/PassNode.js +122 -35
- package/src/nodes/display/PosterizeNode.js +2 -3
- package/src/nodes/display/RenderOutputNode.js +8 -9
- package/src/nodes/display/ScreenNode.js +16 -7
- package/src/nodes/display/ToneMappingFunctions.js +12 -8
- package/src/nodes/display/ToneMappingNode.js +8 -8
- package/src/nodes/display/ToonOutlinePassNode.js +3 -4
- package/src/nodes/display/ViewportDepthNode.js +15 -7
- package/src/nodes/display/ViewportDepthTextureNode.js +6 -7
- package/src/nodes/display/ViewportSharedTextureNode.js +6 -7
- package/src/nodes/display/ViewportTextureNode.js +16 -16
- package/src/nodes/fog/Fog.js +5 -2
- package/src/nodes/functions/BSDF/LTC.js +45 -1
- package/src/nodes/functions/BasicLightingModel.js +5 -8
- package/src/nodes/functions/PhongLightingModel.js +6 -8
- package/src/nodes/functions/PhysicalLightingModel.js +40 -42
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/ToonLightingModel.js +5 -6
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +8 -8
- package/src/nodes/geometry/RangeNode.js +4 -5
- package/src/nodes/gpgpu/AtomicFunctionNode.js +33 -48
- package/src/nodes/gpgpu/BarrierNode.js +6 -4
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +26 -31
- package/src/nodes/gpgpu/ComputeNode.js +43 -16
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +16 -17
- package/src/nodes/lighting/AONode.js +2 -2
- package/src/nodes/lighting/AmbientLightNode.js +1 -1
- package/src/nodes/lighting/AnalyticLightNode.js +50 -9
- package/src/nodes/lighting/BasicLightMapNode.js +2 -2
- package/src/nodes/lighting/DirectionalLightNode.js +3 -12
- package/src/nodes/lighting/EnvironmentNode.js +5 -8
- package/src/nodes/lighting/HemisphereLightNode.js +1 -1
- package/src/nodes/lighting/LightProbeNode.js +1 -1
- package/src/nodes/lighting/LightUtils.js +1 -5
- package/src/nodes/lighting/LightingContextNode.js +10 -10
- package/src/nodes/lighting/LightingNode.js +1 -1
- package/src/nodes/lighting/LightsNode.js +68 -25
- package/src/nodes/lighting/PointLightNode.js +12 -27
- package/src/nodes/lighting/PointShadowNode.js +5 -6
- package/src/nodes/lighting/RectAreaLightNode.js +5 -10
- package/src/nodes/lighting/ShadowBaseNode.js +8 -9
- package/src/nodes/lighting/ShadowNode.js +28 -15
- package/src/nodes/lighting/SpotLightNode.js +8 -19
- package/src/nodes/math/ConditionalNode.js +26 -9
- package/src/nodes/math/Hash.js +2 -3
- package/src/nodes/math/MathNode.js +217 -150
- package/src/nodes/math/MathUtils.js +8 -6
- package/src/nodes/math/OperatorNode.js +198 -89
- package/src/nodes/math/TriNoise3D.js +2 -3
- package/src/nodes/parsers/GLSLNodeFunction.js +3 -3
- package/src/nodes/parsers/GLSLNodeParser.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +61 -37
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/procedural/Checker.js +2 -3
- package/src/nodes/shapes/Shapes.js +2 -3
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +117 -19
- package/src/nodes/utils/ArrayElementNode.js +5 -3
- package/src/nodes/utils/ConvertNode.js +3 -3
- package/src/nodes/utils/CubeMapNode.js +7 -8
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/Discard.js +5 -5
- package/src/nodes/utils/EquirectUVNode.js +3 -4
- package/src/nodes/utils/FlipNode.js +3 -3
- package/src/nodes/utils/FunctionOverloadingNode.js +3 -4
- package/src/nodes/utils/JoinNode.js +29 -4
- package/src/nodes/utils/LoopNode.js +67 -35
- package/src/nodes/utils/MatcapUVNode.js +1 -2
- package/src/nodes/utils/MaxMipLevelNode.js +4 -5
- package/src/nodes/utils/MemberNode.js +2 -2
- package/src/nodes/utils/Oscillators.js +8 -6
- package/src/nodes/utils/Packing.js +4 -4
- package/src/nodes/utils/PostProcessingUtils.js +6 -5
- package/src/nodes/utils/RTTNode.js +19 -19
- package/src/nodes/utils/ReflectorNode.js +35 -25
- package/src/nodes/utils/RemapNode.js +9 -9
- package/src/nodes/utils/RotateNode.js +3 -4
- package/src/nodes/utils/SetNode.js +3 -3
- package/src/nodes/utils/SplitNode.js +5 -5
- package/src/nodes/utils/SpriteSheetUVNode.js +4 -5
- package/src/nodes/utils/SpriteUtils.js +5 -6
- package/src/nodes/utils/StorageArrayElementNode.js +3 -4
- package/src/nodes/utils/Timer.js +9 -5
- package/src/nodes/utils/TriplanarTexturesNode.js +20 -20
- package/src/nodes/utils/UVUtils.js +4 -4
- package/src/nodes/utils/ViewportUtils.js +3 -4
- package/src/objects/BatchedMesh.js +319 -32
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +4 -4
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +99 -5
- package/src/objects/Line.js +82 -0
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +75 -0
- package/src/objects/Points.js +60 -0
- package/src/objects/Skeleton.js +105 -0
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +622 -83
- package/src/renderers/common/Animation.js +6 -6
- package/src/renderers/common/Attributes.js +3 -3
- package/src/renderers/common/Backend.js +40 -31
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/BindGroup.js +5 -5
- package/src/renderers/common/Binding.js +4 -4
- package/src/renderers/common/Bindings.js +10 -0
- package/src/renderers/common/Buffer.js +5 -5
- package/src/renderers/common/BufferUtils.js +7 -9
- package/src/renderers/common/BundleGroup.js +6 -6
- package/src/renderers/common/ChainMap.js +3 -3
- package/src/renderers/common/ClippingContext.js +8 -8
- package/src/renderers/common/Color4.js +8 -8
- package/src/renderers/common/ComputePipeline.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/DataMap.js +2 -2
- package/src/renderers/common/Geometries.js +6 -6
- package/src/renderers/common/IndirectStorageBufferAttribute.js +3 -3
- package/src/renderers/common/Info.js +17 -17
- package/src/renderers/common/Pipeline.js +3 -3
- package/src/renderers/common/Pipelines.js +12 -12
- package/src/renderers/common/PostProcessing.js +13 -1
- package/src/renderers/common/ProgrammableStage.js +11 -11
- package/src/renderers/common/QuadMesh.js +5 -3
- package/src/renderers/common/RenderContext.js +24 -24
- package/src/renderers/common/RenderContexts.js +4 -4
- package/src/renderers/common/RenderList.js +16 -16
- package/src/renderers/common/RenderObject.js +27 -27
- package/src/renderers/common/RenderObjects.js +4 -4
- package/src/renderers/common/RenderPipeline.js +1 -1
- package/src/renderers/common/Renderer.js +272 -200
- package/src/renderers/common/RendererUtils.js +0 -2
- package/src/renderers/common/SampledTexture.js +20 -20
- package/src/renderers/common/Sampler.js +5 -5
- package/src/renderers/common/StorageBuffer.js +2 -2
- package/src/renderers/common/StorageBufferAttribute.js +4 -4
- package/src/renderers/common/StorageInstancedBufferAttribute.js +4 -4
- package/src/renderers/common/StorageTexture.js +6 -6
- package/src/renderers/common/Textures.js +6 -6
- package/src/renderers/common/TimestampQueryPool.js +66 -7
- package/src/renderers/common/Uniform.js +26 -26
- package/src/renderers/common/UniformBuffer.js +2 -2
- package/src/renderers/common/UniformsGroup.js +18 -18
- package/src/renderers/common/XRManager.js +369 -54
- package/src/renderers/common/XRRenderTarget.js +5 -5
- package/src/renderers/common/extras/PMREMGenerator.js +62 -37
- package/src/renderers/common/nodes/NodeBuilderState.js +7 -7
- package/src/renderers/common/nodes/NodeLibrary.js +13 -13
- package/src/renderers/common/nodes/NodeSampledTexture.js +12 -12
- package/src/renderers/common/nodes/NodeSampler.js +1 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
- package/src/renderers/common/nodes/NodeUniform.js +9 -9
- package/src/renderers/common/nodes/NodeUniformsGroup.js +3 -3
- package/src/renderers/common/nodes/Nodes.js +13 -13
- package/src/renderers/shaders/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLState.js +19 -19
- package/src/renderers/webgl-fallback/WebGLBackend.js +163 -146
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +4 -4
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +89 -99
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +5 -5
- package/src/renderers/webgl-fallback/utils/WebGLState.js +97 -47
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +79 -31
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +37 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -3
- package/src/renderers/webgpu/WebGPUBackend.js +200 -119
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +3 -13
- package/src/renderers/webgpu/WebGPURenderer.js +19 -13
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +171 -178
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -3
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +43 -9
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +2 -2
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +18 -10
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +9 -9
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +37 -37
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +31 -18
- package/src/renderers/webgpu/utils/WebGPUUtils.js +9 -9
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +185 -9
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +88 -0
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +61 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +362 -3
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { RenderTarget, Vector2, QuadMesh, NodeMaterial, RendererUtils, TempNode, NodeUpdateType } from 'three/webgpu';
|
|
2
|
-
import { nodeObject, Fn, float,
|
|
3
|
-
|
|
4
|
-
/** @module AfterImageNode **/
|
|
2
|
+
import { nodeObject, Fn, float, uv, texture, passTexture, uniform, sign, max, convertToTexture } from 'three/tsl';
|
|
5
3
|
|
|
6
4
|
const _size = /*@__PURE__*/ new Vector2();
|
|
7
5
|
const _quadMeshComp = /*@__PURE__*/ new QuadMesh();
|
|
@@ -25,7 +23,7 @@ class AfterImageNode extends TempNode {
|
|
|
25
23
|
* Constructs a new after image node.
|
|
26
24
|
*
|
|
27
25
|
* @param {TextureNode} textureNode - The texture node that represents the input of the effect.
|
|
28
|
-
* @param {
|
|
26
|
+
* @param {number} [damp=0.96] - The damping intensity. A higher value means a stronger after image effect.
|
|
29
27
|
*/
|
|
30
28
|
constructor( textureNode, damp = 0.96 ) {
|
|
31
29
|
|
|
@@ -43,10 +41,12 @@ class AfterImageNode extends TempNode {
|
|
|
43
41
|
*
|
|
44
42
|
* @type {TextureNode}
|
|
45
43
|
*/
|
|
46
|
-
this.textureNodeOld = texture();
|
|
44
|
+
this.textureNodeOld = texture( null );
|
|
47
45
|
|
|
48
46
|
/**
|
|
49
|
-
*
|
|
47
|
+
* How quickly the after-image fades. A higher value means the after-image
|
|
48
|
+
* persists longer, while a lower value means it fades faster. Should be in
|
|
49
|
+
* the range `[0, 1]`.
|
|
50
50
|
*
|
|
51
51
|
* @type {UniformNode<float>}
|
|
52
52
|
*/
|
|
@@ -82,7 +82,7 @@ class AfterImageNode extends TempNode {
|
|
|
82
82
|
* The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node renders
|
|
83
83
|
* its effect once per frame in `updateBefore()`.
|
|
84
84
|
*
|
|
85
|
-
* @type {
|
|
85
|
+
* @type {string}
|
|
86
86
|
* @default 'frame'
|
|
87
87
|
*/
|
|
88
88
|
this.updateBeforeType = NodeUpdateType.FRAME;
|
|
@@ -103,8 +103,8 @@ class AfterImageNode extends TempNode {
|
|
|
103
103
|
/**
|
|
104
104
|
* Sets the size of the effect.
|
|
105
105
|
*
|
|
106
|
-
* @param {
|
|
107
|
-
* @param {
|
|
106
|
+
* @param {number} width - The width of the effect.
|
|
107
|
+
* @param {number} height - The height of the effect.
|
|
108
108
|
*/
|
|
109
109
|
setSize( width, height ) {
|
|
110
110
|
|
|
@@ -174,27 +174,25 @@ class AfterImageNode extends TempNode {
|
|
|
174
174
|
|
|
175
175
|
//
|
|
176
176
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
textureNodeOld.uvNode = uvNode;
|
|
180
|
-
|
|
181
|
-
const sampleTexture = ( uv ) => textureNode.sample( uv );
|
|
182
|
-
|
|
183
|
-
const when_gt = Fn( ( [ x_immutable, y_immutable ] ) => {
|
|
177
|
+
textureNodeOld.uvNode = textureNode.uvNode || uv();
|
|
184
178
|
|
|
185
|
-
|
|
186
|
-
const x = vec4( x_immutable ).toVar();
|
|
179
|
+
const afterImg = Fn( () => {
|
|
187
180
|
|
|
188
|
-
|
|
181
|
+
const texelOld = textureNodeOld.sample().toVar();
|
|
182
|
+
const texelNew = textureNode.sample().toVar();
|
|
189
183
|
|
|
190
|
-
|
|
184
|
+
const threshold = float( 0.1 ).toConst();
|
|
191
185
|
|
|
192
|
-
|
|
186
|
+
// m acts as a mask. It's 1 if the previous pixel was "bright enough" (above the threshold) and 0 if it wasn't.
|
|
187
|
+
const m = max( sign( texelOld.sub( threshold ) ), 0.0 );
|
|
193
188
|
|
|
194
|
-
|
|
195
|
-
|
|
189
|
+
// This is where the after-image fades:
|
|
190
|
+
//
|
|
191
|
+
// - If m is 0, texelOld is multiplied by 0, effectively clearing the after-image for that pixel.
|
|
192
|
+
// - If m is 1, texelOld is multiplied by "damp". Since "damp" is between 0 and 1, this reduces the color value of
|
|
193
|
+
// texelOld, making it darker and causing it to fade.
|
|
194
|
+
texelOld.mulAssign( this.damp.mul( m ) );
|
|
196
195
|
|
|
197
|
-
texelOld.mulAssign( this.damp.mul( when_gt( texelOld, 0.1 ) ) );
|
|
198
196
|
return max( texelNew, texelOld );
|
|
199
197
|
|
|
200
198
|
} );
|
|
@@ -234,9 +232,10 @@ class AfterImageNode extends TempNode {
|
|
|
234
232
|
/**
|
|
235
233
|
* TSL function for creating an after image node for post processing.
|
|
236
234
|
*
|
|
235
|
+
* @tsl
|
|
237
236
|
* @function
|
|
238
237
|
* @param {Node<vec4>} node - The node that represents the input of the effect.
|
|
239
|
-
* @param {
|
|
238
|
+
* @param {number} [damp=0.96] - The damping intensity. A higher value means a stronger after image effect.
|
|
240
239
|
* @returns {AfterImageNode}
|
|
241
240
|
*/
|
|
242
241
|
export const afterImage = ( node, damp ) => nodeObject( new AfterImageNode( convertToTexture( node ), damp ) );
|
|
@@ -2,8 +2,6 @@ import { Matrix3, NodeMaterial } from 'three/webgpu';
|
|
|
2
2
|
import { clamp, nodeObject, Fn, vec4, uv, uniform, max } from 'three/tsl';
|
|
3
3
|
import StereoCompositePassNode from './StereoCompositePassNode.js';
|
|
4
4
|
|
|
5
|
-
/** @module AnaglyphPassNode **/
|
|
6
|
-
|
|
7
5
|
/**
|
|
8
6
|
* A render pass node that creates an anaglyph effect.
|
|
9
7
|
*
|
|
@@ -30,7 +28,7 @@ class AnaglyphPassNode extends StereoCompositePassNode {
|
|
|
30
28
|
/**
|
|
31
29
|
* This flag can be used for type testing.
|
|
32
30
|
*
|
|
33
|
-
* @type {
|
|
31
|
+
* @type {boolean}
|
|
34
32
|
* @readonly
|
|
35
33
|
* @default true
|
|
36
34
|
*/
|
|
@@ -99,6 +97,7 @@ export default AnaglyphPassNode;
|
|
|
99
97
|
/**
|
|
100
98
|
* TSL function for creating an anaglyph pass node.
|
|
101
99
|
*
|
|
100
|
+
* @tsl
|
|
102
101
|
* @function
|
|
103
102
|
* @param {Scene} scene - The scene to render.
|
|
104
103
|
* @param {Camera} camera - The camera to render the scene with.
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { RenderTarget, Vector2, TempNode, QuadMesh, NodeMaterial, RendererUtils } from 'three/webgpu';
|
|
2
2
|
import { nodeObject, Fn, float, NodeUpdateType, uv, passTexture, uniform, convertToTexture, vec2, vec3, Loop, mix, luminance } from 'three/tsl';
|
|
3
3
|
|
|
4
|
-
/** @module AnamorphicNode **/
|
|
5
|
-
|
|
6
4
|
const _quadMesh = /*@__PURE__*/ new QuadMesh();
|
|
7
5
|
|
|
8
6
|
let _rendererState;
|
|
@@ -26,7 +24,7 @@ class AnamorphicNode extends TempNode {
|
|
|
26
24
|
* @param {TextureNode} textureNode - The texture node that represents the input of the effect.
|
|
27
25
|
* @param {Node<float>} tresholdNode - The threshold is one option to control the intensity and size of the effect.
|
|
28
26
|
* @param {Node<float>} scaleNode - Defines the vertical scale of the flares.
|
|
29
|
-
* @param {
|
|
27
|
+
* @param {number} samples - More samples result in larger flares and a more expensive runtime behavior.
|
|
30
28
|
*/
|
|
31
29
|
constructor( textureNode, tresholdNode, scaleNode, samples ) {
|
|
32
30
|
|
|
@@ -103,7 +101,7 @@ class AnamorphicNode extends TempNode {
|
|
|
103
101
|
* The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node renders
|
|
104
102
|
* its effect once per frame in `updateBefore()`.
|
|
105
103
|
*
|
|
106
|
-
* @type {
|
|
104
|
+
* @type {string}
|
|
107
105
|
* @default 'frame'
|
|
108
106
|
*/
|
|
109
107
|
this.updateBeforeType = NodeUpdateType.FRAME;
|
|
@@ -124,8 +122,8 @@ class AnamorphicNode extends TempNode {
|
|
|
124
122
|
/**
|
|
125
123
|
* Sets the size of the effect.
|
|
126
124
|
*
|
|
127
|
-
* @param {
|
|
128
|
-
* @param {
|
|
125
|
+
* @param {number} width - The width of the effect.
|
|
126
|
+
* @param {number} height - The height of the effect.
|
|
129
127
|
*/
|
|
130
128
|
setSize( width, height ) {
|
|
131
129
|
|
|
@@ -246,11 +244,12 @@ class AnamorphicNode extends TempNode {
|
|
|
246
244
|
/**
|
|
247
245
|
* TSL function for creating an anamorphic flare effect.
|
|
248
246
|
*
|
|
247
|
+
* @tsl
|
|
249
248
|
* @function
|
|
250
249
|
* @param {TextureNode} node - The node that represents the input of the effect.
|
|
251
|
-
* @param {Node<float> |
|
|
252
|
-
* @param {Node<float> |
|
|
253
|
-
* @param {
|
|
250
|
+
* @param {Node<float> | number} [threshold=0.9] - The threshold is one option to control the intensity and size of the effect.
|
|
251
|
+
* @param {Node<float> | number} [scale=3] - Defines the vertical scale of the flares.
|
|
252
|
+
* @param {number} [samples=32] - More samples result in larger flares and a more expensive runtime behavior.
|
|
254
253
|
* @returns {AnamorphicNode}
|
|
255
254
|
*/
|
|
256
255
|
export const anamorphic = ( node, threshold = .9, scale = 3, samples = 32 ) => nodeObject( new AnamorphicNode( convertToTexture( node ), nodeObject( threshold ), nodeObject( scale ), samples ) );
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { float, Fn, vec3, vec4, min, max, mix, luminance } from 'three/tsl';
|
|
2
2
|
|
|
3
|
-
/** @module BleachBypass **/
|
|
4
|
-
|
|
5
3
|
/**
|
|
6
4
|
* Applies a bleach bypass effect to the given color node.
|
|
7
5
|
*
|
|
6
|
+
* @tsl
|
|
8
7
|
* @function
|
|
9
8
|
* @param {Node<vec4>} color - The color node to apply the sepia for.
|
|
10
9
|
* @param {Node<float>} [opacity=1] - Influences how strong the effect is blended with the original color.
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { HalfFloatType, RenderTarget, Vector2, Vector3, TempNode, QuadMesh, NodeMaterial, RendererUtils, NodeUpdateType } from 'three/webgpu';
|
|
2
2
|
import { nodeObject, Fn, float, uv, passTexture, uniform, Loop, texture, luminance, smoothstep, mix, vec4, uniformArray, add, int } from 'three/tsl';
|
|
3
3
|
|
|
4
|
-
/** @module BloomNode **/
|
|
5
|
-
|
|
6
4
|
const _quadMesh = /*@__PURE__*/ new QuadMesh();
|
|
7
5
|
const _size = /*@__PURE__*/ new Vector2();
|
|
8
6
|
|
|
@@ -55,9 +53,9 @@ class BloomNode extends TempNode {
|
|
|
55
53
|
* Constructs a new bloom node.
|
|
56
54
|
*
|
|
57
55
|
* @param {Node<vec4>} inputNode - The node that represents the input of the effect.
|
|
58
|
-
* @param {
|
|
59
|
-
* @param {
|
|
60
|
-
* @param {
|
|
56
|
+
* @param {number} [strength=1] - The strength of the bloom.
|
|
57
|
+
* @param {number} [radius=0] - The radius of the bloom.
|
|
58
|
+
* @param {number} [threshold=0] - The luminance threshold limits which bright areas contribute to the bloom effect.
|
|
61
59
|
*/
|
|
62
60
|
constructor( inputNode, strength = 1, radius = 0, threshold = 0 ) {
|
|
63
61
|
|
|
@@ -118,7 +116,7 @@ class BloomNode extends TempNode {
|
|
|
118
116
|
* The number if blur mips.
|
|
119
117
|
*
|
|
120
118
|
* @private
|
|
121
|
-
* @type {
|
|
119
|
+
* @type {number}
|
|
122
120
|
*/
|
|
123
121
|
this._nMips = 5;
|
|
124
122
|
|
|
@@ -156,7 +154,7 @@ class BloomNode extends TempNode {
|
|
|
156
154
|
* The material for the composite pass.
|
|
157
155
|
*
|
|
158
156
|
* @private
|
|
159
|
-
* @type {NodeMaterial
|
|
157
|
+
* @type {?NodeMaterial}
|
|
160
158
|
*/
|
|
161
159
|
this._compositeMaterial = null;
|
|
162
160
|
|
|
@@ -164,7 +162,7 @@ class BloomNode extends TempNode {
|
|
|
164
162
|
* The material for the luminance pass.
|
|
165
163
|
*
|
|
166
164
|
* @private
|
|
167
|
-
* @type {NodeMaterial
|
|
165
|
+
* @type {?NodeMaterial}
|
|
168
166
|
*/
|
|
169
167
|
this._highPassFilterMaterial = null;
|
|
170
168
|
|
|
@@ -236,7 +234,7 @@ class BloomNode extends TempNode {
|
|
|
236
234
|
* The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node renders
|
|
237
235
|
* its effect once per frame in `updateBefore()`.
|
|
238
236
|
*
|
|
239
|
-
* @type {
|
|
237
|
+
* @type {string}
|
|
240
238
|
* @default 'frame'
|
|
241
239
|
*/
|
|
242
240
|
this.updateBeforeType = NodeUpdateType.FRAME;
|
|
@@ -257,8 +255,8 @@ class BloomNode extends TempNode {
|
|
|
257
255
|
/**
|
|
258
256
|
* Sets the size of the effect.
|
|
259
257
|
*
|
|
260
|
-
* @param {
|
|
261
|
-
* @param {
|
|
258
|
+
* @param {number} width - The width of the effect.
|
|
259
|
+
* @param {number} height - The height of the effect.
|
|
262
260
|
*/
|
|
263
261
|
setSize( width, height ) {
|
|
264
262
|
|
|
@@ -444,7 +442,7 @@ class BloomNode extends TempNode {
|
|
|
444
442
|
* Create a separable blur material for the given kernel radius.
|
|
445
443
|
*
|
|
446
444
|
* @param {NodeBuilder} builder - The current node builder.
|
|
447
|
-
* @param {
|
|
445
|
+
* @param {number} kernelRadius - The kernel radius.
|
|
448
446
|
* @return {NodeMaterial}
|
|
449
447
|
*/
|
|
450
448
|
_getSeparableBlurMaterial( builder, kernelRadius ) {
|
|
@@ -459,7 +457,7 @@ class BloomNode extends TempNode {
|
|
|
459
457
|
|
|
460
458
|
//
|
|
461
459
|
|
|
462
|
-
const colorTexture = texture();
|
|
460
|
+
const colorTexture = texture( null );
|
|
463
461
|
const gaussianCoefficients = uniformArray( coefficients );
|
|
464
462
|
const invSize = uniform( new Vector2() );
|
|
465
463
|
const direction = uniform( new Vector2( 0.5, 0.5 ) );
|
|
@@ -507,11 +505,12 @@ class BloomNode extends TempNode {
|
|
|
507
505
|
/**
|
|
508
506
|
* TSL function for creating a bloom effect.
|
|
509
507
|
*
|
|
508
|
+
* @tsl
|
|
510
509
|
* @function
|
|
511
510
|
* @param {Node<vec4>} node - The node that represents the input of the effect.
|
|
512
|
-
* @param {
|
|
513
|
-
* @param {
|
|
514
|
-
* @param {
|
|
511
|
+
* @param {number} [strength=1] - The strength of the bloom.
|
|
512
|
+
* @param {number} [radius=0] - The radius of the bloom.
|
|
513
|
+
* @param {number} [threshold=0] - The luminance threshold limits which bright areas contribute to the bloom effect.
|
|
515
514
|
* @returns {BloomNode}
|
|
516
515
|
*/
|
|
517
516
|
export const bloom = ( node, strength, radius, threshold ) => nodeObject( new BloomNode( nodeObject( node ), strength, radius, threshold ) );
|
|
@@ -2,8 +2,6 @@ import { DataTexture, RepeatWrapping, Vector2, Vector3, TempNode } from 'three/w
|
|
|
2
2
|
import { texture, getNormalFromDepth, getViewPosition, convertToTexture, nodeObject, Fn, float, NodeUpdateType, uv, uniform, Loop, luminance, vec2, vec3, vec4, uniformArray, int, dot, max, pow, abs, If, textureSize, sin, cos, mat2, PI } from 'three/tsl';
|
|
3
3
|
import { SimplexNoise } from '../../math/SimplexNoise.js';
|
|
4
4
|
|
|
5
|
-
/** @module DenoiseNode **/
|
|
6
|
-
|
|
7
5
|
/**
|
|
8
6
|
* Post processing node for denoising data like raw screen-space ambient occlusion output.
|
|
9
7
|
* Denoise can noticeably improve the quality of ambient occlusion but also add quite some
|
|
@@ -27,7 +25,7 @@ class DenoiseNode extends TempNode {
|
|
|
27
25
|
*
|
|
28
26
|
* @param {TextureNode} textureNode - The texture node that represents the input of the effect (e.g. AO).
|
|
29
27
|
* @param {Node<float>} depthNode - A node that represents the scene's depth.
|
|
30
|
-
* @param {Node<vec3
|
|
28
|
+
* @param {?Node<vec3>} normalNode - A node that represents the scene's normals.
|
|
31
29
|
* @param {Camera} camera - The camera the scene is rendered with.
|
|
32
30
|
*/
|
|
33
31
|
constructor( textureNode, depthNode, normalNode, camera ) {
|
|
@@ -53,7 +51,7 @@ class DenoiseNode extends TempNode {
|
|
|
53
51
|
* constructor (because MRT is not available), normals can be automatically
|
|
54
52
|
* reconstructed from depth values in the shader.
|
|
55
53
|
*
|
|
56
|
-
* @type {Node<vec3
|
|
54
|
+
* @type {?Node<vec3>}
|
|
57
55
|
*/
|
|
58
56
|
this.normalNode = normalNode;
|
|
59
57
|
|
|
@@ -103,7 +101,7 @@ class DenoiseNode extends TempNode {
|
|
|
103
101
|
* The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node updates
|
|
104
102
|
* its internal uniforms once per frame in `updateBefore()`.
|
|
105
103
|
*
|
|
106
|
-
* @type {
|
|
104
|
+
* @type {string}
|
|
107
105
|
* @default 'frame'
|
|
108
106
|
*/
|
|
109
107
|
this.updateBeforeType = NodeUpdateType.FRAME;
|
|
@@ -261,9 +259,9 @@ export default DenoiseNode;
|
|
|
261
259
|
/**
|
|
262
260
|
* Generates denoise samples based on the given parameters.
|
|
263
261
|
*
|
|
264
|
-
* @param {
|
|
265
|
-
* @param {
|
|
266
|
-
* @param {
|
|
262
|
+
* @param {number} numSamples - The number of samples.
|
|
263
|
+
* @param {number} numRings - The number of rings.
|
|
264
|
+
* @param {number} radiusExponent - The radius exponent.
|
|
267
265
|
* @return {Array<Vector3>} The denoise samples.
|
|
268
266
|
*/
|
|
269
267
|
function generateDenoiseSamples( numSamples, numRings, radiusExponent ) {
|
|
@@ -285,7 +283,7 @@ function generateDenoiseSamples( numSamples, numRings, radiusExponent ) {
|
|
|
285
283
|
/**
|
|
286
284
|
* Generates a default noise texture for the given size.
|
|
287
285
|
*
|
|
288
|
-
* @param {
|
|
286
|
+
* @param {number} [size=64] - The texture size.
|
|
289
287
|
* @return {DataTexture} The generated noise texture.
|
|
290
288
|
*/
|
|
291
289
|
function generateDefaultNoise( size = 64 ) {
|
|
@@ -323,10 +321,11 @@ function generateDefaultNoise( size = 64 ) {
|
|
|
323
321
|
/**
|
|
324
322
|
* TSL function for creating a denoise effect.
|
|
325
323
|
*
|
|
324
|
+
* @tsl
|
|
326
325
|
* @function
|
|
327
326
|
* @param {Node} node - The node that represents the input of the effect (e.g. AO).
|
|
328
327
|
* @param {Node<float>} depthNode - A node that represents the scene's depth.
|
|
329
|
-
* @param {Node<vec3
|
|
328
|
+
* @param {?Node<vec3>} normalNode - A node that represents the scene's normals.
|
|
330
329
|
* @param {Camera} camera - The camera the scene is rendered with.
|
|
331
330
|
* @returns {DenoiseNode}
|
|
332
331
|
*/
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { TempNode, NodeUpdateType } from 'three/webgpu';
|
|
2
2
|
import { convertToTexture, nodeObject, Fn, uv, uniform, vec2, vec4, clamp } from 'three/tsl';
|
|
3
3
|
|
|
4
|
-
/** @module DepthOfFieldNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* Post processing node for creating depth of field (DOF) effect.
|
|
8
6
|
*
|
|
@@ -76,7 +74,7 @@ class DepthOfFieldNode extends TempNode {
|
|
|
76
74
|
* The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node updates
|
|
77
75
|
* its internal uniforms once per frame in `updateBefore()`.
|
|
78
76
|
*
|
|
79
|
-
* @type {
|
|
77
|
+
* @type {string}
|
|
80
78
|
* @default 'frame'
|
|
81
79
|
*/
|
|
82
80
|
this.updateBeforeType = NodeUpdateType.FRAME;
|
|
@@ -187,12 +185,13 @@ export default DepthOfFieldNode;
|
|
|
187
185
|
/**
|
|
188
186
|
* TSL function for creating a depth-of-field effect (DOF) for post processing.
|
|
189
187
|
*
|
|
188
|
+
* @tsl
|
|
190
189
|
* @function
|
|
191
190
|
* @param {Node<vec4>} node - The node that represents the input of the effect.
|
|
192
191
|
* @param {Node<float>} viewZNode - Represents the viewZ depth values of the scene.
|
|
193
|
-
* @param {Node<float> |
|
|
194
|
-
* @param {Node<float> |
|
|
195
|
-
* @param {Node<float> |
|
|
192
|
+
* @param {Node<float> | number} focus - Defines the effect's focus which is the distance along the camera's look direction in world units.
|
|
193
|
+
* @param {Node<float> | number} aperture - Defines the effect's aperture.
|
|
194
|
+
* @param {Node<float> | number} maxblur - Defines the effect's maximum blur.
|
|
196
195
|
* @returns {DepthOfFieldNode}
|
|
197
196
|
*/
|
|
198
197
|
export const dof = ( node, viewZNode, focus = 1, aperture = 0.025, maxblur = 1 ) => nodeObject( new DepthOfFieldNode( convertToTexture( node ), nodeObject( viewZNode ), nodeObject( focus ), nodeObject( aperture ), nodeObject( maxblur ) ) );
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { TempNode } from 'three/webgpu';
|
|
2
2
|
import { nodeObject, Fn, uv, uniform, vec2, vec3, sin, cos, add, vec4, screenSize } from 'three/tsl';
|
|
3
3
|
|
|
4
|
-
/** @module DotScreenNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* Post processing node for creating dot-screen effect.
|
|
8
6
|
*
|
|
@@ -20,8 +18,8 @@ class DotScreenNode extends TempNode {
|
|
|
20
18
|
* Constructs a new dot screen node.
|
|
21
19
|
*
|
|
22
20
|
* @param {Node} inputNode - The node that represents the input of the effect.
|
|
23
|
-
* @param {
|
|
24
|
-
* @param {
|
|
21
|
+
* @param {number} [angle=1.57] - The rotation of the effect in radians.
|
|
22
|
+
* @param {number} [scale=1] - The scale of the effect. A higher value means smaller dots.
|
|
25
23
|
*/
|
|
26
24
|
constructor( inputNode, angle = 1.57, scale = 1 ) {
|
|
27
25
|
|
|
@@ -95,10 +93,11 @@ export default DotScreenNode;
|
|
|
95
93
|
/**
|
|
96
94
|
* TSL function for creating a dot-screen node for post processing.
|
|
97
95
|
*
|
|
96
|
+
* @tsl
|
|
98
97
|
* @function
|
|
99
98
|
* @param {Node<vec4>} node - The node that represents the input of the effect.
|
|
100
|
-
* @param {
|
|
101
|
-
* @param {
|
|
99
|
+
* @param {number} [angle=1.57] - The rotation of the effect in radians.
|
|
100
|
+
* @param {number} [scale=1] - The scale of the effect. A higher value means smaller dots.
|
|
102
101
|
* @returns {DotScreenNode}
|
|
103
102
|
*/
|
|
104
103
|
export const dotScreen = ( node, angle, scale ) => nodeObject( new DotScreenNode( nodeObject( node ), angle, scale ) );
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { Vector2, TempNode } from 'three/webgpu';
|
|
2
2
|
import { nodeObject, Fn, uniformArray, select, float, NodeUpdateType, uv, dot, clamp, uniform, convertToTexture, smoothstep, bool, vec2, vec3, If, Loop, max, min, Break, abs } from 'three/tsl';
|
|
3
3
|
|
|
4
|
-
/** @module FXAANode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* Post processing node for applying FXAA. This node requires sRGB input
|
|
8
6
|
* so tone mapping and color space conversion must happen before the anti-aliasing.
|
|
@@ -37,7 +35,7 @@ class FXAANode extends TempNode {
|
|
|
37
35
|
* The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node updates
|
|
38
36
|
* its internal uniforms once per frame in `updateBefore()`.
|
|
39
37
|
*
|
|
40
|
-
* @type {
|
|
38
|
+
* @type {string}
|
|
41
39
|
* @default 'frame'
|
|
42
40
|
*/
|
|
43
41
|
this.updateBeforeType = NodeUpdateType.FRAME;
|
|
@@ -358,6 +356,7 @@ export default FXAANode;
|
|
|
358
356
|
/**
|
|
359
357
|
* TSL function for creating a FXAA node for anti-aliasing via post processing.
|
|
360
358
|
*
|
|
359
|
+
* @tsl
|
|
361
360
|
* @function
|
|
362
361
|
* @param {Node<vec4>} node - The node that represents the input of the effect.
|
|
363
362
|
* @returns {FXAANode}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { TempNode } from 'three/webgpu';
|
|
2
2
|
import { rand, Fn, fract, time, uv, clamp, mix, vec4, nodeProxy } from 'three/tsl';
|
|
3
3
|
|
|
4
|
-
/** @module FilmNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* Post processing node for creating a film grain effect.
|
|
8
6
|
*
|
|
@@ -20,8 +18,8 @@ class FilmNode extends TempNode {
|
|
|
20
18
|
* Constructs a new film node.
|
|
21
19
|
*
|
|
22
20
|
* @param {Node} inputNode - The node that represents the input of the effect.
|
|
23
|
-
* @param {Node<float
|
|
24
|
-
* @param {Node<vec2
|
|
21
|
+
* @param {?Node<float>} [intensityNode=null] - A node that represents the effect's intensity.
|
|
22
|
+
* @param {?Node<vec2>} [uvNode=null] - A node that allows to pass custom (e.g. animated) uv data.
|
|
25
23
|
*/
|
|
26
24
|
constructor( inputNode, intensityNode = null, uvNode = null ) {
|
|
27
25
|
|
|
@@ -37,14 +35,16 @@ class FilmNode extends TempNode {
|
|
|
37
35
|
/**
|
|
38
36
|
* A node that represents the effect's intensity.
|
|
39
37
|
*
|
|
40
|
-
* @type {Node<float>}
|
|
38
|
+
* @type {?Node<float>}
|
|
39
|
+
* @default null
|
|
41
40
|
*/
|
|
42
41
|
this.intensityNode = intensityNode;
|
|
43
42
|
|
|
44
43
|
/**
|
|
45
44
|
* A node that allows to pass custom (e.g. animated) uv data.
|
|
46
45
|
*
|
|
47
|
-
* @type {Node<vec2>}
|
|
46
|
+
* @type {?Node<vec2>}
|
|
47
|
+
* @default null
|
|
48
48
|
*/
|
|
49
49
|
this.uvNode = uvNode;
|
|
50
50
|
|
|
@@ -90,10 +90,11 @@ export default FilmNode;
|
|
|
90
90
|
/**
|
|
91
91
|
* TSL function for creating a film node for post processing.
|
|
92
92
|
*
|
|
93
|
+
* @tsl
|
|
93
94
|
* @function
|
|
94
95
|
* @param {Node<vec4>} inputNode - The node that represents the input of the effect.
|
|
95
|
-
* @param {Node<float
|
|
96
|
-
* @param {Node<vec2
|
|
96
|
+
* @param {?Node<float>} [intensityNode=null] - A node that represents the effect's intensity.
|
|
97
|
+
* @param {?Node<vec2>} [uvNode=null] - A node that allows to pass custom (e.g. animated) uv data.
|
|
97
98
|
* @returns {FilmNode}
|
|
98
99
|
*/
|
|
99
100
|
export const film = /*@__PURE__*/ nodeProxy( FilmNode );
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { DataTexture, RenderTarget, RepeatWrapping, Vector2, Vector3, TempNode, QuadMesh, NodeMaterial, RendererUtils } from 'three/webgpu';
|
|
2
2
|
import { reference, logarithmicDepthToViewZ, viewZToPerspectiveDepth, getNormalFromDepth, getScreenPosition, getViewPosition, nodeObject, Fn, float, NodeUpdateType, uv, uniform, Loop, vec2, vec3, vec4, int, dot, max, pow, abs, If, textureSize, sin, cos, PI, texture, passTexture, mat3, add, normalize, mul, cross, div, mix, sqrt, sub, acos, clamp } from 'three/tsl';
|
|
3
3
|
|
|
4
|
-
/** @module GTAONode **/
|
|
5
|
-
|
|
6
4
|
const _quadMesh = /*@__PURE__*/ new QuadMesh();
|
|
7
5
|
const _size = /*@__PURE__*/ new Vector2();
|
|
8
6
|
|
|
@@ -44,7 +42,7 @@ class GTAONode extends TempNode {
|
|
|
44
42
|
* Constructs a new GTAO node.
|
|
45
43
|
*
|
|
46
44
|
* @param {Node<float>} depthNode - A node that represents the scene's depth.
|
|
47
|
-
* @param {Node<vec3
|
|
45
|
+
* @param {?Node<vec3>} normalNode - A node that represents the scene's normals.
|
|
48
46
|
* @param {Camera} camera - The camera the scene is rendered with.
|
|
49
47
|
*/
|
|
50
48
|
constructor( depthNode, normalNode, camera ) {
|
|
@@ -63,7 +61,7 @@ class GTAONode extends TempNode {
|
|
|
63
61
|
* constructor (because MRT is not available), normals can be automatically
|
|
64
62
|
* reconstructed from depth values in the shader.
|
|
65
63
|
*
|
|
66
|
-
* @type {Node<vec3
|
|
64
|
+
* @type {?Node<vec3>}
|
|
67
65
|
*/
|
|
68
66
|
this.normalNode = normalNode;
|
|
69
67
|
|
|
@@ -71,7 +69,7 @@ class GTAONode extends TempNode {
|
|
|
71
69
|
* The resolution scale. By default the effect is rendered in full resolution
|
|
72
70
|
* for best quality but a value of `0.5` should be sufficient for most scenes.
|
|
73
71
|
*
|
|
74
|
-
* @type {
|
|
72
|
+
* @type {number}
|
|
75
73
|
* @default 1
|
|
76
74
|
*/
|
|
77
75
|
this.resolutionScale = 1;
|
|
@@ -80,7 +78,7 @@ class GTAONode extends TempNode {
|
|
|
80
78
|
* The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node renders
|
|
81
79
|
* its effect once per frame in `updateBefore()`.
|
|
82
80
|
*
|
|
83
|
-
* @type {
|
|
81
|
+
* @type {string}
|
|
84
82
|
* @default 'frame'
|
|
85
83
|
*/
|
|
86
84
|
this.updateBeforeType = NodeUpdateType.FRAME;
|
|
@@ -224,8 +222,8 @@ class GTAONode extends TempNode {
|
|
|
224
222
|
/**
|
|
225
223
|
* Sets the size of the effect.
|
|
226
224
|
*
|
|
227
|
-
* @param {
|
|
228
|
-
* @param {
|
|
225
|
+
* @param {number} width - The width of the effect.
|
|
226
|
+
* @param {number} height - The height of the effect.
|
|
229
227
|
*/
|
|
230
228
|
setSize( width, height ) {
|
|
231
229
|
|
|
@@ -417,7 +415,7 @@ export default GTAONode;
|
|
|
417
415
|
/**
|
|
418
416
|
* Generates the AO's noise texture for the given size.
|
|
419
417
|
*
|
|
420
|
-
* @param {
|
|
418
|
+
* @param {number} [size=5] - The noise size.
|
|
421
419
|
* @return {DataTexture} The generated noise texture.
|
|
422
420
|
*/
|
|
423
421
|
function generateMagicSquareNoise( size = 5 ) {
|
|
@@ -455,8 +453,8 @@ function generateMagicSquareNoise( size = 5 ) {
|
|
|
455
453
|
/**
|
|
456
454
|
* Computes an array of magic square values required to generate the noise texture.
|
|
457
455
|
*
|
|
458
|
-
* @param {
|
|
459
|
-
* @return {Array<
|
|
456
|
+
* @param {number} size - The noise size.
|
|
457
|
+
* @return {Array<number>} The magic square values.
|
|
460
458
|
*/
|
|
461
459
|
function generateMagicSquare( size ) {
|
|
462
460
|
|
|
@@ -513,9 +511,10 @@ function generateMagicSquare( size ) {
|
|
|
513
511
|
/**
|
|
514
512
|
* TSL function for creating a Ground Truth Ambient Occlusion (GTAO) effect.
|
|
515
513
|
*
|
|
514
|
+
* @tsl
|
|
516
515
|
* @function
|
|
517
516
|
* @param {Node<float>} depthNode - A node that represents the scene's depth.
|
|
518
|
-
* @param {Node<vec3
|
|
517
|
+
* @param {?Node<vec3>} normalNode - A node that represents the scene's normals.
|
|
519
518
|
* @param {Camera} camera - The camera the scene is rendered with.
|
|
520
519
|
* @returns {GTAONode}
|
|
521
520
|
*/
|