super-three 0.173.4 → 0.175.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 +22198 -1564
- package/build/three.core.js +21287 -1346
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +882 -189
- 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 +19358 -17482
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +19342 -17482
- 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 +187 -11
- 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
|
@@ -10,14 +10,12 @@ import { Vector2 } from '../../math/Vector2.js';
|
|
|
10
10
|
import { DepthTexture } from '../../textures/DepthTexture.js';
|
|
11
11
|
import { RenderTarget } from '../../core/RenderTarget.js';
|
|
12
12
|
|
|
13
|
-
/** @module PassNode **/
|
|
14
|
-
|
|
15
13
|
const _size = /*@__PURE__*/ new Vector2();
|
|
16
14
|
|
|
17
15
|
/**
|
|
18
16
|
* Represents the texture of a pass node.
|
|
19
17
|
*
|
|
20
|
-
* @augments
|
|
18
|
+
* @augments TextureNode
|
|
21
19
|
*/
|
|
22
20
|
class PassTextureNode extends TextureNode {
|
|
23
21
|
|
|
@@ -68,7 +66,7 @@ class PassTextureNode extends TextureNode {
|
|
|
68
66
|
* An extension of `PassTextureNode` which allows to manage more than one
|
|
69
67
|
* internal texture. Relevant for the `getPreviousTexture()` related API.
|
|
70
68
|
*
|
|
71
|
-
* @augments
|
|
69
|
+
* @augments PassTextureNode
|
|
72
70
|
*/
|
|
73
71
|
class PassMultipleTextureNode extends PassTextureNode {
|
|
74
72
|
|
|
@@ -82,8 +80,8 @@ class PassMultipleTextureNode extends PassTextureNode {
|
|
|
82
80
|
* Constructs a new pass texture node.
|
|
83
81
|
*
|
|
84
82
|
* @param {PassNode} passNode - The pass node.
|
|
85
|
-
* @param {
|
|
86
|
-
* @param {
|
|
83
|
+
* @param {string} textureName - The output texture name.
|
|
84
|
+
* @param {boolean} [previousTexture=false] - Whether previous frame data should be used or not.
|
|
87
85
|
*/
|
|
88
86
|
constructor( passNode, textureName, previousTexture = false ) {
|
|
89
87
|
|
|
@@ -96,14 +94,14 @@ class PassMultipleTextureNode extends PassTextureNode {
|
|
|
96
94
|
/**
|
|
97
95
|
* The output texture name.
|
|
98
96
|
*
|
|
99
|
-
* @type {
|
|
97
|
+
* @type {string}
|
|
100
98
|
*/
|
|
101
99
|
this.textureName = textureName;
|
|
102
100
|
|
|
103
101
|
/**
|
|
104
102
|
* Whether previous frame data should be used or not.
|
|
105
103
|
*
|
|
106
|
-
* @type {
|
|
104
|
+
* @type {boolean}
|
|
107
105
|
*/
|
|
108
106
|
this.previousTexture = previousTexture;
|
|
109
107
|
|
|
@@ -201,7 +199,7 @@ class PassNode extends TempNode {
|
|
|
201
199
|
* The pass's pixel ratio. Will be kept automatically kept in sync with the renderer's pixel ratio.
|
|
202
200
|
*
|
|
203
201
|
* @private
|
|
204
|
-
* @type {
|
|
202
|
+
* @type {number}
|
|
205
203
|
* @default 1
|
|
206
204
|
*/
|
|
207
205
|
this._pixelRatio = 1;
|
|
@@ -209,7 +207,7 @@ class PassNode extends TempNode {
|
|
|
209
207
|
/**
|
|
210
208
|
* The pass's pixel width. Will be kept automatically kept in sync with the renderer's width.
|
|
211
209
|
* @private
|
|
212
|
-
* @type {
|
|
210
|
+
* @type {number}
|
|
213
211
|
* @default 1
|
|
214
212
|
*/
|
|
215
213
|
this._width = 1;
|
|
@@ -217,7 +215,7 @@ class PassNode extends TempNode {
|
|
|
217
215
|
/**
|
|
218
216
|
* The pass's pixel height. Will be kept automatically kept in sync with the renderer's height.
|
|
219
217
|
* @private
|
|
220
|
-
* @type {
|
|
218
|
+
* @type {number}
|
|
221
219
|
* @default 1
|
|
222
220
|
*/
|
|
223
221
|
this._height = 1;
|
|
@@ -242,7 +240,7 @@ class PassNode extends TempNode {
|
|
|
242
240
|
* A dictionary holding the internal result textures.
|
|
243
241
|
*
|
|
244
242
|
* @private
|
|
245
|
-
* @type {Object<
|
|
243
|
+
* @type {Object<string, Texture>}
|
|
246
244
|
*/
|
|
247
245
|
this._textures = {
|
|
248
246
|
output: renderTarget.texture,
|
|
@@ -253,7 +251,7 @@ class PassNode extends TempNode {
|
|
|
253
251
|
* A dictionary holding the internal texture nodes.
|
|
254
252
|
*
|
|
255
253
|
* @private
|
|
256
|
-
* @type {Object<
|
|
254
|
+
* @type {Object<string, TextureNode>}
|
|
257
255
|
*/
|
|
258
256
|
this._textureNodes = {};
|
|
259
257
|
|
|
@@ -278,7 +276,7 @@ class PassNode extends TempNode {
|
|
|
278
276
|
* Used for computing velocity/motion vectors.
|
|
279
277
|
*
|
|
280
278
|
* @private
|
|
281
|
-
* @type {Object<
|
|
279
|
+
* @type {Object<string, Texture>}
|
|
282
280
|
*/
|
|
283
281
|
this._previousTextures = {};
|
|
284
282
|
|
|
@@ -287,7 +285,7 @@ class PassNode extends TempNode {
|
|
|
287
285
|
* Used for computing velocity/motion vectors.
|
|
288
286
|
*
|
|
289
287
|
* @private
|
|
290
|
-
* @type {Object<
|
|
288
|
+
* @type {Object<string, TextureNode>}
|
|
291
289
|
*/
|
|
292
290
|
this._previousTextureNodes = {};
|
|
293
291
|
|
|
@@ -311,15 +309,19 @@ class PassNode extends TempNode {
|
|
|
311
309
|
* A MRT node configuring the MRT settings.
|
|
312
310
|
*
|
|
313
311
|
* @private
|
|
314
|
-
* @type {MRTNode
|
|
312
|
+
* @type {?MRTNode}
|
|
315
313
|
* @default null
|
|
316
314
|
*/
|
|
317
315
|
this._mrt = null;
|
|
318
316
|
|
|
317
|
+
this._layers = null;
|
|
318
|
+
|
|
319
|
+
this._resolution = 1;
|
|
320
|
+
|
|
319
321
|
/**
|
|
320
322
|
* This flag can be used for type testing.
|
|
321
323
|
*
|
|
322
|
-
* @type {
|
|
324
|
+
* @type {boolean}
|
|
323
325
|
* @readonly
|
|
324
326
|
* @default true
|
|
325
327
|
*/
|
|
@@ -329,13 +331,54 @@ class PassNode extends TempNode {
|
|
|
329
331
|
* The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node renders the
|
|
330
332
|
* scene once per frame in its {@link PassNode#updateBefore} method.
|
|
331
333
|
*
|
|
332
|
-
* @type {
|
|
334
|
+
* @type {string}
|
|
333
335
|
* @default 'frame'
|
|
334
336
|
*/
|
|
335
337
|
this.updateBeforeType = NodeUpdateType.FRAME;
|
|
336
338
|
|
|
337
339
|
}
|
|
338
340
|
|
|
341
|
+
/**
|
|
342
|
+
* Sets the resolution for the pass.
|
|
343
|
+
* The resolution is a factor that is multiplied with the renderer's width and height.
|
|
344
|
+
*
|
|
345
|
+
* @param {number} resolution - The resolution to set. A value of `1` means full resolution.
|
|
346
|
+
* @return {PassNode} A reference to this pass.
|
|
347
|
+
*/
|
|
348
|
+
setResolution( resolution ) {
|
|
349
|
+
|
|
350
|
+
this._resolution = resolution;
|
|
351
|
+
|
|
352
|
+
return this;
|
|
353
|
+
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
/**
|
|
357
|
+
* Gets the current resolution of the pass.
|
|
358
|
+
*
|
|
359
|
+
* @return {number} The current resolution. A value of `1` means full resolution.
|
|
360
|
+
* @default 1
|
|
361
|
+
*/
|
|
362
|
+
getResolution() {
|
|
363
|
+
|
|
364
|
+
return this._resolution;
|
|
365
|
+
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
setLayers( layers ) {
|
|
369
|
+
|
|
370
|
+
this._layers = layers;
|
|
371
|
+
|
|
372
|
+
return this;
|
|
373
|
+
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
getLayers() {
|
|
377
|
+
|
|
378
|
+
return this._layers;
|
|
379
|
+
|
|
380
|
+
}
|
|
381
|
+
|
|
339
382
|
/**
|
|
340
383
|
* Sets the given MRT node to setup MRT for this pass.
|
|
341
384
|
*
|
|
@@ -364,7 +407,7 @@ class PassNode extends TempNode {
|
|
|
364
407
|
/**
|
|
365
408
|
* The method is overwritten so it always returns `true`.
|
|
366
409
|
*
|
|
367
|
-
* @return {
|
|
410
|
+
* @return {boolean} Whether this node is global or not.
|
|
368
411
|
*/
|
|
369
412
|
isGlobal() {
|
|
370
413
|
|
|
@@ -375,7 +418,7 @@ class PassNode extends TempNode {
|
|
|
375
418
|
/**
|
|
376
419
|
* Returns the texture for the given output name.
|
|
377
420
|
*
|
|
378
|
-
* @param {
|
|
421
|
+
* @param {string} name - The output name to get the texture for.
|
|
379
422
|
* @return {Texture} The texture.
|
|
380
423
|
*/
|
|
381
424
|
getTexture( name ) {
|
|
@@ -402,7 +445,7 @@ class PassNode extends TempNode {
|
|
|
402
445
|
/**
|
|
403
446
|
* Returns the texture holding the data of the previous frame for the given output name.
|
|
404
447
|
*
|
|
405
|
-
* @param {
|
|
448
|
+
* @param {string} name - The output name to get the texture for.
|
|
406
449
|
* @return {Texture} The texture holding the data of the previous frame.
|
|
407
450
|
*/
|
|
408
451
|
getPreviousTexture( name ) {
|
|
@@ -424,7 +467,7 @@ class PassNode extends TempNode {
|
|
|
424
467
|
/**
|
|
425
468
|
* Switches current and previous textures for the given output name.
|
|
426
469
|
*
|
|
427
|
-
* @param {
|
|
470
|
+
* @param {string} name - The output name.
|
|
428
471
|
*/
|
|
429
472
|
toggleTexture( name ) {
|
|
430
473
|
|
|
@@ -450,7 +493,7 @@ class PassNode extends TempNode {
|
|
|
450
493
|
/**
|
|
451
494
|
* Returns the texture node for the given output name.
|
|
452
495
|
*
|
|
453
|
-
* @param {
|
|
496
|
+
* @param {string} [name='output'] - The output name to get the texture node for.
|
|
454
497
|
* @return {TextureNode} The texture node.
|
|
455
498
|
*/
|
|
456
499
|
getTextureNode( name = 'output' ) {
|
|
@@ -472,7 +515,7 @@ class PassNode extends TempNode {
|
|
|
472
515
|
/**
|
|
473
516
|
* Returns the previous texture node for the given output name.
|
|
474
517
|
*
|
|
475
|
-
* @param {
|
|
518
|
+
* @param {string} [name='output'] - The output name to get the previous texture node for.
|
|
476
519
|
* @return {TextureNode} The previous texture node.
|
|
477
520
|
*/
|
|
478
521
|
getPreviousTextureNode( name = 'output' ) {
|
|
@@ -496,7 +539,7 @@ class PassNode extends TempNode {
|
|
|
496
539
|
/**
|
|
497
540
|
* Returns a viewZ node of this pass.
|
|
498
541
|
*
|
|
499
|
-
* @param {
|
|
542
|
+
* @param {string} [name='depth'] - The output name to get the viewZ node for. In most cases the default `'depth'` can be used however the parameter exists for custom depth outputs.
|
|
500
543
|
* @return {Node} The viewZ node.
|
|
501
544
|
*/
|
|
502
545
|
getViewZNode( name = 'depth' ) {
|
|
@@ -519,7 +562,7 @@ class PassNode extends TempNode {
|
|
|
519
562
|
/**
|
|
520
563
|
* Returns a linear depth node of this pass.
|
|
521
564
|
*
|
|
522
|
-
* @param {
|
|
565
|
+
* @param {string} [name='depth'] - The output name to get the linear depth node for. In most cases the default `'depth'` can be used however the parameter exists for custom depth outputs.
|
|
523
566
|
* @return {Node} The linear depth node.
|
|
524
567
|
*/
|
|
525
568
|
getLinearDepthNode( name = 'depth' ) {
|
|
@@ -562,20 +605,48 @@ class PassNode extends TempNode {
|
|
|
562
605
|
updateBefore( frame ) {
|
|
563
606
|
|
|
564
607
|
const { renderer } = frame;
|
|
565
|
-
const { scene
|
|
608
|
+
const { scene } = this;
|
|
609
|
+
|
|
610
|
+
let camera;
|
|
611
|
+
let pixelRatio;
|
|
612
|
+
|
|
613
|
+
const outputRenderTarget = renderer.getOutputRenderTarget();
|
|
614
|
+
|
|
615
|
+
if ( outputRenderTarget && outputRenderTarget.isXRRenderTarget === true ) {
|
|
566
616
|
|
|
567
|
-
|
|
617
|
+
pixelRatio = 1;
|
|
618
|
+
camera = renderer.xr.getCamera();
|
|
568
619
|
|
|
569
|
-
|
|
620
|
+
renderer.xr.updateCamera( camera );
|
|
570
621
|
|
|
571
|
-
|
|
622
|
+
_size.set( outputRenderTarget.width, outputRenderTarget.height );
|
|
623
|
+
|
|
624
|
+
} else {
|
|
625
|
+
|
|
626
|
+
camera = this.camera;
|
|
627
|
+
pixelRatio = renderer.getPixelRatio();
|
|
628
|
+
|
|
629
|
+
renderer.getSize( _size );
|
|
630
|
+
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
this._pixelRatio = pixelRatio;
|
|
634
|
+
|
|
635
|
+
this.setSize( _size.width, _size.height );
|
|
572
636
|
|
|
573
637
|
const currentRenderTarget = renderer.getRenderTarget();
|
|
574
638
|
const currentMRT = renderer.getMRT();
|
|
639
|
+
const currentMask = camera.layers.mask;
|
|
575
640
|
|
|
576
641
|
this._cameraNear.value = camera.near;
|
|
577
642
|
this._cameraFar.value = camera.far;
|
|
578
643
|
|
|
644
|
+
if ( this._layers !== null ) {
|
|
645
|
+
|
|
646
|
+
camera.layers.mask = this._layers.mask;
|
|
647
|
+
|
|
648
|
+
}
|
|
649
|
+
|
|
579
650
|
for ( const name in this._previousTextures ) {
|
|
580
651
|
|
|
581
652
|
this.toggleTexture( name );
|
|
@@ -590,21 +661,23 @@ class PassNode extends TempNode {
|
|
|
590
661
|
renderer.setRenderTarget( currentRenderTarget );
|
|
591
662
|
renderer.setMRT( currentMRT );
|
|
592
663
|
|
|
664
|
+
camera.layers.mask = currentMask;
|
|
665
|
+
|
|
593
666
|
}
|
|
594
667
|
|
|
595
668
|
/**
|
|
596
669
|
* Sets the size of the pass's render target. Honors the pixel ratio.
|
|
597
670
|
*
|
|
598
|
-
* @param {
|
|
599
|
-
* @param {
|
|
671
|
+
* @param {number} width - The width to set.
|
|
672
|
+
* @param {number} height - The height to set.
|
|
600
673
|
*/
|
|
601
674
|
setSize( width, height ) {
|
|
602
675
|
|
|
603
676
|
this._width = width;
|
|
604
677
|
this._height = height;
|
|
605
678
|
|
|
606
|
-
const effectiveWidth = this._width * this._pixelRatio;
|
|
607
|
-
const effectiveHeight = this._height * this._pixelRatio;
|
|
679
|
+
const effectiveWidth = this._width * this._pixelRatio * this._resolution;
|
|
680
|
+
const effectiveHeight = this._height * this._pixelRatio * this._resolution;
|
|
608
681
|
|
|
609
682
|
this.renderTarget.setSize( effectiveWidth, effectiveHeight );
|
|
610
683
|
|
|
@@ -613,7 +686,7 @@ class PassNode extends TempNode {
|
|
|
613
686
|
/**
|
|
614
687
|
* Sets the pixel ratio the pass's render target and updates the size.
|
|
615
688
|
*
|
|
616
|
-
* @param {
|
|
689
|
+
* @param {number} pixelRatio - The pixel ratio to set.
|
|
617
690
|
*/
|
|
618
691
|
setPixelRatio( pixelRatio ) {
|
|
619
692
|
|
|
@@ -635,7 +708,18 @@ class PassNode extends TempNode {
|
|
|
635
708
|
|
|
636
709
|
}
|
|
637
710
|
|
|
711
|
+
/**
|
|
712
|
+
* @static
|
|
713
|
+
* @type {'color'}
|
|
714
|
+
* @default 'color'
|
|
715
|
+
*/
|
|
638
716
|
PassNode.COLOR = 'color';
|
|
717
|
+
|
|
718
|
+
/**
|
|
719
|
+
* @static
|
|
720
|
+
* @type {'depth'}
|
|
721
|
+
* @default 'depth'
|
|
722
|
+
*/
|
|
639
723
|
PassNode.DEPTH = 'depth';
|
|
640
724
|
|
|
641
725
|
export default PassNode;
|
|
@@ -643,6 +727,7 @@ export default PassNode;
|
|
|
643
727
|
/**
|
|
644
728
|
* TSL function for creating a pass node.
|
|
645
729
|
*
|
|
730
|
+
* @tsl
|
|
646
731
|
* @function
|
|
647
732
|
* @param {Scene} scene - A reference to the scene.
|
|
648
733
|
* @param {Camera} camera - A reference to the camera.
|
|
@@ -654,6 +739,7 @@ export const pass = ( scene, camera, options ) => nodeObject( new PassNode( Pass
|
|
|
654
739
|
/**
|
|
655
740
|
* TSL function for creating a pass texture node.
|
|
656
741
|
*
|
|
742
|
+
* @tsl
|
|
657
743
|
* @function
|
|
658
744
|
* @param {PassNode} pass - The pass node.
|
|
659
745
|
* @param {Texture} texture - The output texture.
|
|
@@ -664,6 +750,7 @@ export const passTexture = ( pass, texture ) => nodeObject( new PassTextureNode(
|
|
|
664
750
|
/**
|
|
665
751
|
* TSL function for creating a depth pass node.
|
|
666
752
|
*
|
|
753
|
+
* @tsl
|
|
667
754
|
* @function
|
|
668
755
|
* @param {Scene} scene - A reference to the scene.
|
|
669
756
|
* @param {Camera} camera - A reference to the camera.
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import TempNode from '../core/TempNode.js';
|
|
2
2
|
import { nodeProxy } from '../tsl/TSLBase.js';
|
|
3
3
|
|
|
4
|
-
/** @module PosterizeNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* Represents a posterize effect which reduces the number of colors
|
|
8
6
|
* in an image, resulting in a more blocky and stylized appearance.
|
|
@@ -58,9 +56,10 @@ export default PosterizeNode;
|
|
|
58
56
|
/**
|
|
59
57
|
* TSL function for creating a posterize node.
|
|
60
58
|
*
|
|
59
|
+
* @tsl
|
|
61
60
|
* @function
|
|
62
61
|
* @param {Node} sourceNode - The input color.
|
|
63
62
|
* @param {Node} stepsNode - Controls the intensity of the posterization effect. A lower number results in a more blocky appearance.
|
|
64
63
|
* @returns {PosterizeNode}
|
|
65
64
|
*/
|
|
66
|
-
export const posterize = /*@__PURE__*/ nodeProxy( PosterizeNode );
|
|
65
|
+
export const posterize = /*@__PURE__*/ nodeProxy( PosterizeNode ).setParameterLength( 2 );
|
|
@@ -4,8 +4,6 @@ import { addMethodChaining, nodeObject } from '../tsl/TSLCore.js';
|
|
|
4
4
|
import { NoColorSpace, NoToneMapping } from '../../constants.js';
|
|
5
5
|
import { ColorManagement } from '../../math/ColorManagement.js';
|
|
6
6
|
|
|
7
|
-
/** @module RenderOutputNode **/
|
|
8
|
-
|
|
9
7
|
/**
|
|
10
8
|
* Normally, tone mapping and color conversion happens automatically
|
|
11
9
|
* before outputting pixel too the default (screen) framebuffer. In certain
|
|
@@ -41,8 +39,8 @@ class RenderOutputNode extends TempNode {
|
|
|
41
39
|
* Constructs a new render output node.
|
|
42
40
|
*
|
|
43
41
|
* @param {Node} colorNode - The color node to process.
|
|
44
|
-
* @param {
|
|
45
|
-
* @param {
|
|
42
|
+
* @param {?number} toneMapping - The tone mapping type.
|
|
43
|
+
* @param {?string} outputColorSpace - The output color space.
|
|
46
44
|
*/
|
|
47
45
|
constructor( colorNode, toneMapping, outputColorSpace ) {
|
|
48
46
|
|
|
@@ -58,21 +56,21 @@ class RenderOutputNode extends TempNode {
|
|
|
58
56
|
/**
|
|
59
57
|
* The tone mapping type.
|
|
60
58
|
*
|
|
61
|
-
* @type {
|
|
59
|
+
* @type {?number}
|
|
62
60
|
*/
|
|
63
61
|
this.toneMapping = toneMapping;
|
|
64
62
|
|
|
65
63
|
/**
|
|
66
64
|
* The output color space.
|
|
67
65
|
*
|
|
68
|
-
* @type {
|
|
66
|
+
* @type {?string}
|
|
69
67
|
*/
|
|
70
68
|
this.outputColorSpace = outputColorSpace;
|
|
71
69
|
|
|
72
70
|
/**
|
|
73
71
|
* This flag can be used for type testing.
|
|
74
72
|
*
|
|
75
|
-
* @type {
|
|
73
|
+
* @type {boolean}
|
|
76
74
|
* @readonly
|
|
77
75
|
* @default true
|
|
78
76
|
*/
|
|
@@ -114,10 +112,11 @@ export default RenderOutputNode;
|
|
|
114
112
|
/**
|
|
115
113
|
* TSL function for creating a posterize node.
|
|
116
114
|
*
|
|
115
|
+
* @tsl
|
|
117
116
|
* @function
|
|
118
117
|
* @param {Node} color - The color node to process.
|
|
119
|
-
* @param {
|
|
120
|
-
* @param {
|
|
118
|
+
* @param {?number} [toneMapping=null] - The tone mapping type.
|
|
119
|
+
* @param {?string} [outputColorSpace=null] - The output color space.
|
|
121
120
|
* @returns {RenderOutputNode}
|
|
122
121
|
*/
|
|
123
122
|
export const renderOutput = ( color, toneMapping = null, outputColorSpace = null ) => nodeObject( new RenderOutputNode( nodeObject( color ), toneMapping, outputColorSpace ) );
|
|
@@ -6,13 +6,11 @@ import { Fn, nodeImmutable, vec2 } from '../tsl/TSLBase.js';
|
|
|
6
6
|
import { Vector2 } from '../../math/Vector2.js';
|
|
7
7
|
import { Vector4 } from '../../math/Vector4.js';
|
|
8
8
|
|
|
9
|
-
/** @module ScreenNode **/
|
|
10
|
-
|
|
11
9
|
let screenSizeVec, viewportVec;
|
|
12
10
|
|
|
13
11
|
/**
|
|
14
12
|
* This node provides a collection of screen related metrics.
|
|
15
|
-
* Depending on {@link
|
|
13
|
+
* Depending on {@link ScreenNode#scope}, the nodes can represent
|
|
16
14
|
* resolution or viewport data as well as fragment or uv coordinates.
|
|
17
15
|
*
|
|
18
16
|
* @augments Node
|
|
@@ -49,7 +47,7 @@ class ScreenNode extends Node {
|
|
|
49
47
|
/**
|
|
50
48
|
* This flag can be used for type testing.
|
|
51
49
|
*
|
|
52
|
-
* @type {
|
|
50
|
+
* @type {boolean}
|
|
53
51
|
* @readonly
|
|
54
52
|
* @default true
|
|
55
53
|
*/
|
|
@@ -193,6 +191,7 @@ export default ScreenNode;
|
|
|
193
191
|
/**
|
|
194
192
|
* TSL object that represents normalized screen coordinates, unitless in `[0, 1]`.
|
|
195
193
|
*
|
|
194
|
+
* @tsl
|
|
196
195
|
* @type {ScreenNode<vec2>}
|
|
197
196
|
*/
|
|
198
197
|
export const screenUV = /*@__PURE__*/ nodeImmutable( ScreenNode, ScreenNode.UV );
|
|
@@ -200,6 +199,7 @@ export const screenUV = /*@__PURE__*/ nodeImmutable( ScreenNode, ScreenNode.UV )
|
|
|
200
199
|
/**
|
|
201
200
|
* TSL object that represents the screen resolution in physical pixel units.
|
|
202
201
|
*
|
|
202
|
+
* @tsl
|
|
203
203
|
* @type {ScreenNode<vec2>}
|
|
204
204
|
*/
|
|
205
205
|
export const screenSize = /*@__PURE__*/ nodeImmutable( ScreenNode, ScreenNode.SIZE );
|
|
@@ -207,6 +207,7 @@ export const screenSize = /*@__PURE__*/ nodeImmutable( ScreenNode, ScreenNode.SI
|
|
|
207
207
|
/**
|
|
208
208
|
* TSL object that represents the current `x`/`y` pixel position on the screen in physical pixel units.
|
|
209
209
|
*
|
|
210
|
+
* @tsl
|
|
210
211
|
* @type {ScreenNode<vec2>}
|
|
211
212
|
*/
|
|
212
213
|
export const screenCoordinate = /*@__PURE__*/ nodeImmutable( ScreenNode, ScreenNode.COORDINATE );
|
|
@@ -216,6 +217,7 @@ export const screenCoordinate = /*@__PURE__*/ nodeImmutable( ScreenNode, ScreenN
|
|
|
216
217
|
/**
|
|
217
218
|
* TSL object that represents the viewport rectangle as `x`, `y`, `width` and `height` in physical pixel units.
|
|
218
219
|
*
|
|
220
|
+
* @tsl
|
|
219
221
|
* @type {ScreenNode<vec4>}
|
|
220
222
|
*/
|
|
221
223
|
export const viewport = /*@__PURE__*/ nodeImmutable( ScreenNode, ScreenNode.VIEWPORT );
|
|
@@ -223,6 +225,7 @@ export const viewport = /*@__PURE__*/ nodeImmutable( ScreenNode, ScreenNode.VIEW
|
|
|
223
225
|
/**
|
|
224
226
|
* TSL object that represents the viewport resolution in physical pixel units.
|
|
225
227
|
*
|
|
228
|
+
* @tsl
|
|
226
229
|
* @type {ScreenNode<vec2>}
|
|
227
230
|
*/
|
|
228
231
|
export const viewportSize = viewport.zw;
|
|
@@ -230,6 +233,7 @@ export const viewportSize = viewport.zw;
|
|
|
230
233
|
/**
|
|
231
234
|
* TSL object that represents the current `x`/`y` pixel position on the viewport in physical pixel units.
|
|
232
235
|
*
|
|
236
|
+
* @tsl
|
|
233
237
|
* @type {ScreenNode<vec2>}
|
|
234
238
|
*/
|
|
235
239
|
export const viewportCoordinate = /*@__PURE__*/ screenCoordinate.sub( viewport.xy );
|
|
@@ -237,6 +241,7 @@ export const viewportCoordinate = /*@__PURE__*/ screenCoordinate.sub( viewport.x
|
|
|
237
241
|
/**
|
|
238
242
|
* TSL object that represents normalized viewport coordinates, unitless in `[0, 1]`.
|
|
239
243
|
*
|
|
244
|
+
* @tsl
|
|
240
245
|
* @type {ScreenNode<vec2>}
|
|
241
246
|
*/
|
|
242
247
|
export const viewportUV = /*@__PURE__*/ viewportCoordinate.div( viewportSize );
|
|
@@ -248,29 +253,33 @@ export const viewportUV = /*@__PURE__*/ viewportCoordinate.div( viewportSize );
|
|
|
248
253
|
*/
|
|
249
254
|
export const viewportResolution = /*@__PURE__*/ ( Fn( () => { // @deprecated, r169
|
|
250
255
|
|
|
251
|
-
console.warn( 'TSL
|
|
256
|
+
console.warn( 'THREE.TSL: "viewportResolution" is deprecated. Use "screenSize" instead.' );
|
|
252
257
|
|
|
253
258
|
return screenSize;
|
|
254
259
|
|
|
255
260
|
}, 'vec2' ).once() )();
|
|
256
261
|
|
|
257
262
|
/**
|
|
263
|
+
* @tsl
|
|
258
264
|
* @deprecated since r168. Use {@link screenUV} instead.
|
|
265
|
+
* @type {Node<vec2>}
|
|
259
266
|
*/
|
|
260
267
|
export const viewportTopLeft = /*@__PURE__*/ ( Fn( () => { // @deprecated, r168
|
|
261
268
|
|
|
262
|
-
console.warn( 'TSL
|
|
269
|
+
console.warn( 'THREE.TSL: "viewportTopLeft" is deprecated. Use "screenUV" instead.' );
|
|
263
270
|
|
|
264
271
|
return screenUV;
|
|
265
272
|
|
|
266
273
|
}, 'vec2' ).once() )();
|
|
267
274
|
|
|
268
275
|
/**
|
|
276
|
+
* @tsl
|
|
269
277
|
* @deprecated since r168. Use `screenUV.flipY()` instead.
|
|
278
|
+
* @type {Node<vec2>}
|
|
270
279
|
*/
|
|
271
280
|
export const viewportBottomLeft = /*@__PURE__*/ ( Fn( () => { // @deprecated, r168
|
|
272
281
|
|
|
273
|
-
console.warn( 'TSL
|
|
282
|
+
console.warn( 'THREE.TSL: "viewportBottomLeft" is deprecated. Use "screenUV.flipY()" instead.' );
|
|
274
283
|
|
|
275
284
|
return screenUV.flipY();
|
|
276
285
|
|
|
@@ -3,12 +3,11 @@ import { select } from '../math/ConditionalNode.js';
|
|
|
3
3
|
import { clamp, log2, max, min, pow, mix } from '../math/MathNode.js';
|
|
4
4
|
import { mul, sub, div } from '../math/OperatorNode.js';
|
|
5
5
|
|
|
6
|
-
/** @module ToneMappingFunctions **/
|
|
7
|
-
|
|
8
6
|
/**
|
|
9
7
|
* Linear tone mapping, exposure only.
|
|
10
8
|
*
|
|
11
|
-
* @
|
|
9
|
+
* @tsl
|
|
10
|
+
* @function
|
|
12
11
|
* @param {Node<vec3>} color - The color that should be tone mapped.
|
|
13
12
|
* @param {Node<float>} exposure - The exposure.
|
|
14
13
|
* @return {Node<vec3>} The tone mapped color.
|
|
@@ -31,7 +30,8 @@ export const linearToneMapping = /*@__PURE__*/ Fn( ( [ color, exposure ] ) => {
|
|
|
31
30
|
*
|
|
32
31
|
* Reference: {@link https://www.cs.utah.edu/docs/techreports/2002/pdf/UUCS-02-001.pdf}
|
|
33
32
|
*
|
|
34
|
-
* @
|
|
33
|
+
* @tsl
|
|
34
|
+
* @function
|
|
35
35
|
* @param {Node<vec3>} color - The color that should be tone mapped.
|
|
36
36
|
* @param {Node<float>} exposure - The exposure.
|
|
37
37
|
* @return {Node<vec3>} The tone mapped color.
|
|
@@ -56,7 +56,8 @@ export const reinhardToneMapping = /*@__PURE__*/ Fn( ( [ color, exposure ] ) =>
|
|
|
56
56
|
*
|
|
57
57
|
* Reference: {@link http://filmicworlds.com/blog/filmic-tonemapping-operators/}
|
|
58
58
|
*
|
|
59
|
-
* @
|
|
59
|
+
* @tsl
|
|
60
|
+
* @function
|
|
60
61
|
* @param {Node<vec3>} color - The color that should be tone mapped.
|
|
61
62
|
* @param {Node<float>} exposure - The exposure.
|
|
62
63
|
* @return {Node<vec3>} The tone mapped color.
|
|
@@ -97,7 +98,8 @@ const RRTAndODTFit = /*@__PURE__*/ Fn( ( [ color ] ) => {
|
|
|
97
98
|
*
|
|
98
99
|
* Reference: {@link https://github.com/selfshadow/ltc_code/blob/master/webgl/shaders/ltc/ltc_blit.fs}
|
|
99
100
|
*
|
|
100
|
-
* @
|
|
101
|
+
* @tsl
|
|
102
|
+
* @function
|
|
101
103
|
* @param {Node<vec3>} color - The color that should be tone mapped.
|
|
102
104
|
* @param {Node<float>} exposure - The exposure.
|
|
103
105
|
* @return {Node<vec3>} The tone mapped color.
|
|
@@ -155,7 +157,8 @@ const agxDefaultContrastApprox = /*@__PURE__*/ Fn( ( [ x_immutable ] ) => {
|
|
|
155
157
|
/**
|
|
156
158
|
* AgX tone mapping.
|
|
157
159
|
*
|
|
158
|
-
* @
|
|
160
|
+
* @tsl
|
|
161
|
+
* @function
|
|
159
162
|
* @param {Node<vec3>} color - The color that should be tone mapped.
|
|
160
163
|
* @param {Node<float>} exposure - The exposure.
|
|
161
164
|
* @return {Node<vec3>} The tone mapped color.
|
|
@@ -196,7 +199,8 @@ export const agxToneMapping = /*@__PURE__*/ Fn( ( [ color, exposure ] ) => {
|
|
|
196
199
|
*
|
|
197
200
|
* Reference: {@link https://modelviewer.dev/examples/tone-mapping}
|
|
198
201
|
*
|
|
199
|
-
* @
|
|
202
|
+
* @tsl
|
|
203
|
+
* @function
|
|
200
204
|
* @param {Node<vec3>} color - The color that should be tone mapped.
|
|
201
205
|
* @param {Node<float>} exposure - The exposure.
|
|
202
206
|
* @return {Node<vec3>} The tone mapped color.
|