super-three 0.173.5 → 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 +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
|
@@ -5,8 +5,6 @@ import { rendererReference } from '../accessors/RendererReferenceNode.js';
|
|
|
5
5
|
import { NoToneMapping } from '../../constants.js';
|
|
6
6
|
import { hash } from '../core/NodeUtils.js';
|
|
7
7
|
|
|
8
|
-
/** @module ToneMappingNode **/
|
|
9
|
-
|
|
10
8
|
/**
|
|
11
9
|
* This node represents a tone mapping operation.
|
|
12
10
|
*
|
|
@@ -23,7 +21,7 @@ class ToneMappingNode extends TempNode {
|
|
|
23
21
|
/**
|
|
24
22
|
* Constructs a new tone mapping node.
|
|
25
23
|
*
|
|
26
|
-
* @param {
|
|
24
|
+
* @param {number} toneMapping - The tone mapping type.
|
|
27
25
|
* @param {Node} exposureNode - The tone mapping exposure.
|
|
28
26
|
* @param {Node} [colorNode=null] - The color node to process.
|
|
29
27
|
*/
|
|
@@ -34,7 +32,7 @@ class ToneMappingNode extends TempNode {
|
|
|
34
32
|
/**
|
|
35
33
|
* The tone mapping type.
|
|
36
34
|
*
|
|
37
|
-
* @type {
|
|
35
|
+
* @type {number}
|
|
38
36
|
*/
|
|
39
37
|
this.toneMapping = toneMapping;
|
|
40
38
|
|
|
@@ -49,7 +47,7 @@ class ToneMappingNode extends TempNode {
|
|
|
49
47
|
/**
|
|
50
48
|
* Represents the color to process.
|
|
51
49
|
*
|
|
52
|
-
* @type {Node
|
|
50
|
+
* @type {?Node}
|
|
53
51
|
* @default null
|
|
54
52
|
*/
|
|
55
53
|
this.colorNode = colorNode;
|
|
@@ -60,7 +58,7 @@ class ToneMappingNode extends TempNode {
|
|
|
60
58
|
* Overwrites the default `customCacheKey()` implementation by including the tone
|
|
61
59
|
* mapping type into the cache key.
|
|
62
60
|
*
|
|
63
|
-
* @return {
|
|
61
|
+
* @return {number} The hash.
|
|
64
62
|
*/
|
|
65
63
|
customCacheKey() {
|
|
66
64
|
|
|
@@ -102,9 +100,10 @@ export default ToneMappingNode;
|
|
|
102
100
|
/**
|
|
103
101
|
* TSL function for creating a tone mapping node.
|
|
104
102
|
*
|
|
103
|
+
* @tsl
|
|
105
104
|
* @function
|
|
106
|
-
* @param {
|
|
107
|
-
* @param {Node<float> |
|
|
105
|
+
* @param {number} mapping - The tone mapping type.
|
|
106
|
+
* @param {Node<float> | number} exposure - The tone mapping exposure.
|
|
108
107
|
* @param {Node<vec3> | Color} color - The color node to process.
|
|
109
108
|
* @returns {ToneMappingNode<vec3>}
|
|
110
109
|
*/
|
|
@@ -113,6 +112,7 @@ export const toneMapping = ( mapping, exposure, color ) => nodeObject( new ToneM
|
|
|
113
112
|
/**
|
|
114
113
|
* TSL object that represents the global tone mapping exposure of the renderer.
|
|
115
114
|
*
|
|
115
|
+
* @tsl
|
|
116
116
|
* @type {RendererReferenceNode<vec3>}
|
|
117
117
|
*/
|
|
118
118
|
export const toneMappingExposure = /*@__PURE__*/ rendererReference( 'toneMappingExposure', 'float' );
|
|
@@ -8,8 +8,6 @@ import { normalLocal } from '../../nodes/accessors/Normal.js';
|
|
|
8
8
|
import { BackSide } from '../../constants.js';
|
|
9
9
|
import PassNode from './PassNode.js';
|
|
10
10
|
|
|
11
|
-
/** @module ToonOutlinePassNode **/
|
|
12
|
-
|
|
13
11
|
/**
|
|
14
12
|
* Represents a render pass for producing a toon outline effect on compatible objects.
|
|
15
13
|
* Only 3D objects with materials of type `MeshToonMaterial` and `MeshToonNodeMaterial`
|
|
@@ -173,12 +171,13 @@ export default ToonOutlinePassNode;
|
|
|
173
171
|
/**
|
|
174
172
|
* TSL function for creating a toon outline pass node.
|
|
175
173
|
*
|
|
174
|
+
* @tsl
|
|
176
175
|
* @function
|
|
177
176
|
* @param {Scene} scene - A reference to the scene.
|
|
178
177
|
* @param {Camera} camera - A reference to the camera.
|
|
179
178
|
* @param {Color} color - Defines the outline's color.
|
|
180
|
-
* @param {
|
|
181
|
-
* @param {
|
|
179
|
+
* @param {number} [thickness=0.003] - Defines the outline's thickness.
|
|
180
|
+
* @param {number} [alpha=1] - Defines the outline's alpha.
|
|
182
181
|
* @returns {ToonOutlinePassNode}
|
|
183
182
|
*/
|
|
184
183
|
export const toonOutlinePass = ( scene, camera, color = new Color( 0, 0, 0 ), thickness = 0.003, alpha = 1 ) => nodeObject( new ToonOutlinePassNode( scene, camera, nodeObject( color ), nodeObject( thickness ), nodeObject( alpha ) ) );
|
|
@@ -4,8 +4,6 @@ import { cameraNear, cameraFar } from '../accessors/Camera.js';
|
|
|
4
4
|
import { positionView } from '../accessors/Position.js';
|
|
5
5
|
import { viewportDepthTexture } from './ViewportDepthTextureNode.js';
|
|
6
6
|
|
|
7
|
-
/** @module ViewportDepthNode **/
|
|
8
|
-
|
|
9
7
|
/**
|
|
10
8
|
* This node offers a collection of features in context of the depth logic in the fragment shader.
|
|
11
9
|
* Depending on {@link ViewportDepthNode#scope}, it can be used to define a depth value for the current
|
|
@@ -25,7 +23,7 @@ class ViewportDepthNode extends Node {
|
|
|
25
23
|
* Constructs a new viewport depth node.
|
|
26
24
|
*
|
|
27
25
|
* @param {('depth'|'depthBase'|'linearDepth')} scope - The node's scope.
|
|
28
|
-
* @param {Node
|
|
26
|
+
* @param {?Node} [valueNode=null] - The value node.
|
|
29
27
|
*/
|
|
30
28
|
constructor( scope, valueNode = null ) {
|
|
31
29
|
|
|
@@ -47,7 +45,7 @@ class ViewportDepthNode extends Node {
|
|
|
47
45
|
* Can be used to define a custom depth value.
|
|
48
46
|
* The property is ignored in the `ViewportDepthNode.DEPTH` scope.
|
|
49
47
|
*
|
|
50
|
-
* @type {Node
|
|
48
|
+
* @type {?Node}
|
|
51
49
|
* @default null
|
|
52
50
|
*/
|
|
53
51
|
this.valueNode = valueNode;
|
|
@@ -55,7 +53,7 @@ class ViewportDepthNode extends Node {
|
|
|
55
53
|
/**
|
|
56
54
|
* This flag can be used for type testing.
|
|
57
55
|
*
|
|
58
|
-
* @type {
|
|
56
|
+
* @type {boolean}
|
|
59
57
|
* @readonly
|
|
60
58
|
* @default true
|
|
61
59
|
*/
|
|
@@ -145,6 +143,7 @@ export default ViewportDepthNode;
|
|
|
145
143
|
/**
|
|
146
144
|
* TSL function for converting a viewZ value to an orthographic depth value.
|
|
147
145
|
*
|
|
146
|
+
* @tsl
|
|
148
147
|
* @function
|
|
149
148
|
* @param {Node<float>} viewZ - The viewZ node.
|
|
150
149
|
* @param {Node<float>} near - The camera's near value.
|
|
@@ -156,6 +155,7 @@ export const viewZToOrthographicDepth = ( viewZ, near, far ) => viewZ.add( near
|
|
|
156
155
|
/**
|
|
157
156
|
* TSL function for converting an orthographic depth value to a viewZ value.
|
|
158
157
|
*
|
|
158
|
+
* @tsl
|
|
159
159
|
* @function
|
|
160
160
|
* @param {Node<float>} depth - The orthographic depth.
|
|
161
161
|
* @param {Node<float>} near - The camera's near value.
|
|
@@ -169,6 +169,7 @@ export const orthographicDepthToViewZ = ( depth, near, far ) => near.sub( far ).
|
|
|
169
169
|
*
|
|
170
170
|
* Note: {link https://twitter.com/gonnavis/status/1377183786949959682}.
|
|
171
171
|
*
|
|
172
|
+
* @tsl
|
|
172
173
|
* @function
|
|
173
174
|
* @param {Node<float>} viewZ - The viewZ node.
|
|
174
175
|
* @param {Node<float>} near - The camera's near value.
|
|
@@ -180,6 +181,7 @@ export const viewZToPerspectiveDepth = ( viewZ, near, far ) => near.add( viewZ )
|
|
|
180
181
|
/**
|
|
181
182
|
* TSL function for converting a perspective depth value to a viewZ value.
|
|
182
183
|
*
|
|
184
|
+
* @tsl
|
|
183
185
|
* @function
|
|
184
186
|
* @param {Node<float>} depth - The perspective depth.
|
|
185
187
|
* @param {Node<float>} near - The camera's near value.
|
|
@@ -191,6 +193,7 @@ export const perspectiveDepthToViewZ = ( depth, near, far ) => near.mul( far ).d
|
|
|
191
193
|
/**
|
|
192
194
|
* TSL function for converting a viewZ value to a logarithmic depth value.
|
|
193
195
|
*
|
|
196
|
+
* @tsl
|
|
194
197
|
* @function
|
|
195
198
|
* @param {Node<float>} viewZ - The viewZ node.
|
|
196
199
|
* @param {Node<float>} near - The camera's near value.
|
|
@@ -235,6 +238,7 @@ export const viewZToLogarithmicDepth = ( viewZ, near, far ) => {
|
|
|
235
238
|
/**
|
|
236
239
|
* TSL function for converting a logarithmic depth value to a viewZ value.
|
|
237
240
|
*
|
|
241
|
+
* @tsl
|
|
238
242
|
* @function
|
|
239
243
|
* @param {Node<float>} depth - The logarithmic depth.
|
|
240
244
|
* @param {Node<float>} near - The camera's near value.
|
|
@@ -254,6 +258,7 @@ export const logarithmicDepthToViewZ = ( depth, near, far ) => {
|
|
|
254
258
|
/**
|
|
255
259
|
* TSL function for defining a value for the current fragment's depth.
|
|
256
260
|
*
|
|
261
|
+
* @tsl
|
|
257
262
|
* @function
|
|
258
263
|
* @param {Node<float>} value - The depth value to set.
|
|
259
264
|
* @returns {ViewportDepthNode<float>}
|
|
@@ -263,6 +268,7 @@ const depthBase = /*@__PURE__*/ nodeProxy( ViewportDepthNode, ViewportDepthNode.
|
|
|
263
268
|
/**
|
|
264
269
|
* TSL object that represents the depth value for the current fragment.
|
|
265
270
|
*
|
|
271
|
+
* @tsl
|
|
266
272
|
* @type {ViewportDepthNode}
|
|
267
273
|
*/
|
|
268
274
|
export const depth = /*@__PURE__*/ nodeImmutable( ViewportDepthNode, ViewportDepthNode.DEPTH );
|
|
@@ -270,15 +276,17 @@ export const depth = /*@__PURE__*/ nodeImmutable( ViewportDepthNode, ViewportDep
|
|
|
270
276
|
/**
|
|
271
277
|
* TSL function for converting a perspective depth value to linear depth.
|
|
272
278
|
*
|
|
279
|
+
* @tsl
|
|
273
280
|
* @function
|
|
274
|
-
* @param {Node<float>} value - The perspective depth.
|
|
281
|
+
* @param {?Node<float>} [value=null] - The perspective depth. If `null` is provided, the current fragment's depth is used.
|
|
275
282
|
* @returns {ViewportDepthNode<float>}
|
|
276
283
|
*/
|
|
277
|
-
export const linearDepth = /*@__PURE__*/ nodeProxy( ViewportDepthNode, ViewportDepthNode.LINEAR_DEPTH );
|
|
284
|
+
export const linearDepth = /*@__PURE__*/ nodeProxy( ViewportDepthNode, ViewportDepthNode.LINEAR_DEPTH ).setParameterLength( 0, 1 );
|
|
278
285
|
|
|
279
286
|
/**
|
|
280
287
|
* TSL object that represents the linear (orthographic) depth value of the current fragment
|
|
281
288
|
*
|
|
289
|
+
* @tsl
|
|
282
290
|
* @type {ViewportDepthNode}
|
|
283
291
|
*/
|
|
284
292
|
export const viewportLinearDepth = /*@__PURE__*/ linearDepth( viewportDepthTexture() );
|
|
@@ -4,8 +4,6 @@ import { screenUV } from './ScreenNode.js';
|
|
|
4
4
|
|
|
5
5
|
import { DepthTexture } from '../../textures/DepthTexture.js';
|
|
6
6
|
|
|
7
|
-
/** @module ViewportDepthTextureNode **/
|
|
8
|
-
|
|
9
7
|
let sharedDepthbuffer = null;
|
|
10
8
|
|
|
11
9
|
/**
|
|
@@ -13,7 +11,7 @@ let sharedDepthbuffer = null;
|
|
|
13
11
|
* can be used in combination with viewport texture to achieve effects
|
|
14
12
|
* that require depth evaluation.
|
|
15
13
|
*
|
|
16
|
-
* @augments
|
|
14
|
+
* @augments ViewportTextureNode
|
|
17
15
|
*/
|
|
18
16
|
class ViewportDepthTextureNode extends ViewportTextureNode {
|
|
19
17
|
|
|
@@ -27,7 +25,7 @@ class ViewportDepthTextureNode extends ViewportTextureNode {
|
|
|
27
25
|
* Constructs a new viewport depth texture node.
|
|
28
26
|
*
|
|
29
27
|
* @param {Node} [uvNode=screenUV] - The uv node.
|
|
30
|
-
* @param {Node
|
|
28
|
+
* @param {?Node} [levelNode=null] - The level node.
|
|
31
29
|
*/
|
|
32
30
|
constructor( uvNode = screenUV, levelNode = null ) {
|
|
33
31
|
|
|
@@ -48,9 +46,10 @@ export default ViewportDepthTextureNode;
|
|
|
48
46
|
/**
|
|
49
47
|
* TSL function for a viewport depth texture node.
|
|
50
48
|
*
|
|
49
|
+
* @tsl
|
|
51
50
|
* @function
|
|
52
|
-
* @param {Node} [uvNode=screenUV] - The uv node.
|
|
53
|
-
* @param {Node
|
|
51
|
+
* @param {?Node} [uvNode=screenUV] - The uv node.
|
|
52
|
+
* @param {?Node} [levelNode=null] - The level node.
|
|
54
53
|
* @returns {ViewportDepthTextureNode}
|
|
55
54
|
*/
|
|
56
|
-
export const viewportDepthTexture = /*@__PURE__*/ nodeProxy( ViewportDepthTextureNode );
|
|
55
|
+
export const viewportDepthTexture = /*@__PURE__*/ nodeProxy( ViewportDepthTextureNode ).setParameterLength( 0, 2 );
|
|
@@ -4,8 +4,6 @@ import { screenUV } from './ScreenNode.js';
|
|
|
4
4
|
|
|
5
5
|
import { FramebufferTexture } from '../../textures/FramebufferTexture.js';
|
|
6
6
|
|
|
7
|
-
/** @module ViewportSharedTextureNode **/
|
|
8
|
-
|
|
9
7
|
let _sharedFramebuffer = null;
|
|
10
8
|
|
|
11
9
|
/**
|
|
@@ -13,7 +11,7 @@ let _sharedFramebuffer = null;
|
|
|
13
11
|
* shares a texture across all instances of `ViewportSharedTextureNode`. It should
|
|
14
12
|
* be the first choice when using data of the default/screen framebuffer for performance reasons.
|
|
15
13
|
*
|
|
16
|
-
* @augments
|
|
14
|
+
* @augments ViewportTextureNode
|
|
17
15
|
*/
|
|
18
16
|
class ViewportSharedTextureNode extends ViewportTextureNode {
|
|
19
17
|
|
|
@@ -27,7 +25,7 @@ class ViewportSharedTextureNode extends ViewportTextureNode {
|
|
|
27
25
|
* Constructs a new viewport shared texture node.
|
|
28
26
|
*
|
|
29
27
|
* @param {Node} [uvNode=screenUV] - The uv node.
|
|
30
|
-
* @param {Node
|
|
28
|
+
* @param {?Node} [levelNode=null] - The level node.
|
|
31
29
|
*/
|
|
32
30
|
constructor( uvNode = screenUV, levelNode = null ) {
|
|
33
31
|
|
|
@@ -54,9 +52,10 @@ export default ViewportSharedTextureNode;
|
|
|
54
52
|
/**
|
|
55
53
|
* TSL function for creating a shared viewport texture node.
|
|
56
54
|
*
|
|
55
|
+
* @tsl
|
|
57
56
|
* @function
|
|
58
|
-
* @param {Node} [uvNode=screenUV] - The uv node.
|
|
59
|
-
* @param {Node
|
|
57
|
+
* @param {?Node} [uvNode=screenUV] - The uv node.
|
|
58
|
+
* @param {?Node} [levelNode=null] - The level node.
|
|
60
59
|
* @returns {ViewportSharedTextureNode}
|
|
61
60
|
*/
|
|
62
|
-
export const viewportSharedTexture = /*@__PURE__*/ nodeProxy( ViewportSharedTextureNode );
|
|
61
|
+
export const viewportSharedTexture = /*@__PURE__*/ nodeProxy( ViewportSharedTextureNode ).setParameterLength( 0, 2 );
|
|
@@ -7,8 +7,6 @@ import { Vector2 } from '../../math/Vector2.js';
|
|
|
7
7
|
import { FramebufferTexture } from '../../textures/FramebufferTexture.js';
|
|
8
8
|
import { LinearMipmapLinearFilter } from '../../constants.js';
|
|
9
9
|
|
|
10
|
-
/** @module ViewportTextureNode **/
|
|
11
|
-
|
|
12
10
|
const _size = /*@__PURE__*/ new Vector2();
|
|
13
11
|
|
|
14
12
|
/**
|
|
@@ -18,7 +16,7 @@ const _size = /*@__PURE__*/ new Vector2();
|
|
|
18
16
|
* (which is good for performance). `ViewportTextureNode` can be used as an input for a
|
|
19
17
|
* variety of effects like refractive or transmissive materials.
|
|
20
18
|
*
|
|
21
|
-
* @augments
|
|
19
|
+
* @augments TextureNode
|
|
22
20
|
*/
|
|
23
21
|
class ViewportTextureNode extends TextureNode {
|
|
24
22
|
|
|
@@ -32,8 +30,8 @@ class ViewportTextureNode extends TextureNode {
|
|
|
32
30
|
* Constructs a new viewport texture node.
|
|
33
31
|
*
|
|
34
32
|
* @param {Node} [uvNode=screenUV] - The uv node.
|
|
35
|
-
* @param {Node
|
|
36
|
-
* @param {Texture
|
|
33
|
+
* @param {?Node} [levelNode=null] - The level node.
|
|
34
|
+
* @param {?Texture} [framebufferTexture=null] - A framebuffer texture holding the viewport data. If not provided, a framebuffer texture is created automatically.
|
|
37
35
|
*/
|
|
38
36
|
constructor( uvNode = screenUV, levelNode = null, framebufferTexture = null ) {
|
|
39
37
|
|
|
@@ -49,7 +47,7 @@ class ViewportTextureNode extends TextureNode {
|
|
|
49
47
|
/**
|
|
50
48
|
* Whether to generate mipmaps or not.
|
|
51
49
|
*
|
|
52
|
-
* @type {
|
|
50
|
+
* @type {boolean}
|
|
53
51
|
* @default false
|
|
54
52
|
*/
|
|
55
53
|
this.generateMipmaps = false;
|
|
@@ -57,7 +55,7 @@ class ViewportTextureNode extends TextureNode {
|
|
|
57
55
|
/**
|
|
58
56
|
* This flag can be used for type testing.
|
|
59
57
|
*
|
|
60
|
-
* @type {
|
|
58
|
+
* @type {boolean}
|
|
61
59
|
* @readonly
|
|
62
60
|
* @default true
|
|
63
61
|
*/
|
|
@@ -67,7 +65,7 @@ class ViewportTextureNode extends TextureNode {
|
|
|
67
65
|
* The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node renders the
|
|
68
66
|
* scene once per frame in its {@link ViewportTextureNode#updateBefore} method.
|
|
69
67
|
*
|
|
70
|
-
* @type {
|
|
68
|
+
* @type {string}
|
|
71
69
|
* @default 'frame'
|
|
72
70
|
*/
|
|
73
71
|
this.updateBeforeType = NodeUpdateType.FRAME;
|
|
@@ -118,21 +116,23 @@ export default ViewportTextureNode;
|
|
|
118
116
|
/**
|
|
119
117
|
* TSL function for creating a viewport texture node.
|
|
120
118
|
*
|
|
119
|
+
* @tsl
|
|
121
120
|
* @function
|
|
122
|
-
* @param {Node} [uvNode=screenUV] - The uv node.
|
|
123
|
-
* @param {Node
|
|
124
|
-
* @param {Texture
|
|
121
|
+
* @param {?Node} [uvNode=screenUV] - The uv node.
|
|
122
|
+
* @param {?Node} [levelNode=null] - The level node.
|
|
123
|
+
* @param {?Texture} [framebufferTexture=null] - A framebuffer texture holding the viewport data. If not provided, a framebuffer texture is created automatically.
|
|
125
124
|
* @returns {ViewportTextureNode}
|
|
126
125
|
*/
|
|
127
|
-
export const viewportTexture = /*@__PURE__*/ nodeProxy( ViewportTextureNode );
|
|
126
|
+
export const viewportTexture = /*@__PURE__*/ nodeProxy( ViewportTextureNode ).setParameterLength( 0, 3 );
|
|
128
127
|
|
|
129
128
|
/**
|
|
130
129
|
* TSL function for creating a viewport texture node with enabled mipmap generation.
|
|
131
130
|
*
|
|
131
|
+
* @tsl
|
|
132
132
|
* @function
|
|
133
|
-
* @param {Node} [uvNode=screenUV] - The uv node.
|
|
134
|
-
* @param {Node
|
|
135
|
-
* @param {Texture
|
|
133
|
+
* @param {?Node} [uvNode=screenUV] - The uv node.
|
|
134
|
+
* @param {?Node} [levelNode=null] - The level node.
|
|
135
|
+
* @param {?Texture} [framebufferTexture=null] - A framebuffer texture holding the viewport data. If not provided, a framebuffer texture is created automatically.
|
|
136
136
|
* @returns {ViewportTextureNode}
|
|
137
137
|
*/
|
|
138
|
-
export const viewportMipTexture = /*@__PURE__*/ nodeProxy( ViewportTextureNode, null, null, { generateMipmaps: true } );
|
|
138
|
+
export const viewportMipTexture = /*@__PURE__*/ nodeProxy( ViewportTextureNode, null, null, { generateMipmaps: true } ).setParameterLength( 0, 3 );
|
package/src/nodes/fog/Fog.js
CHANGED
|
@@ -2,8 +2,6 @@ import { positionView } from '../accessors/Position.js';
|
|
|
2
2
|
import { smoothstep } from '../math/MathNode.js';
|
|
3
3
|
import { Fn, output, vec4 } from '../tsl/TSLBase.js';
|
|
4
4
|
|
|
5
|
-
/** @module Fog **/
|
|
6
|
-
|
|
7
5
|
/**
|
|
8
6
|
* Returns a node that represents the `z` coordinate in view space
|
|
9
7
|
* for the current fragment. It's a different representation of the
|
|
@@ -34,6 +32,7 @@ function getViewZNode( builder ) {
|
|
|
34
32
|
/**
|
|
35
33
|
* Constructs a new range factor node.
|
|
36
34
|
*
|
|
35
|
+
* @tsl
|
|
37
36
|
* @function
|
|
38
37
|
* @param {Node} near - Defines the near value.
|
|
39
38
|
* @param {Node} far - Defines the far value.
|
|
@@ -51,6 +50,7 @@ export const rangeFogFactor = Fn( ( [ near, far ], builder ) => {
|
|
|
51
50
|
* a clear view near the camera and a faster than exponentially
|
|
52
51
|
* densening fog farther from the camera.
|
|
53
52
|
*
|
|
53
|
+
* @tsl
|
|
54
54
|
* @function
|
|
55
55
|
* @param {Node} density - Defines the fog density.
|
|
56
56
|
*/
|
|
@@ -66,6 +66,7 @@ export const densityFogFactor = Fn( ( [ density ], builder ) => {
|
|
|
66
66
|
* This class can be used to configure a fog for the scene.
|
|
67
67
|
* Nodes of this type are assigned to `Scene.fogNode`.
|
|
68
68
|
*
|
|
69
|
+
* @tsl
|
|
69
70
|
* @function
|
|
70
71
|
* @param {Node} color - Defines the color of the fog.
|
|
71
72
|
* @param {Node} factor - Defines how the fog is factored in the scene.
|
|
@@ -79,6 +80,7 @@ export const fog = Fn( ( [ color, factor ] ) => {
|
|
|
79
80
|
// Deprecated
|
|
80
81
|
|
|
81
82
|
/**
|
|
83
|
+
* @tsl
|
|
82
84
|
* @function
|
|
83
85
|
* @deprecated since r171. Use `fog( color, rangeFogFactor( near, far ) )` instead.
|
|
84
86
|
*
|
|
@@ -95,6 +97,7 @@ export function rangeFog( color, near, far ) { // @deprecated, r171
|
|
|
95
97
|
}
|
|
96
98
|
|
|
97
99
|
/**
|
|
100
|
+
* @tsl
|
|
98
101
|
* @function
|
|
99
102
|
* @deprecated since r171. Use `fog( color, densityFogFactor( density ) )` instead.
|
|
100
103
|
*
|
|
@@ -127,5 +127,49 @@ const LTC_Evaluate = /*@__PURE__*/ Fn( ( { N, V, P, mInv, p0, p1, p2, p3 } ) =>
|
|
|
127
127
|
]
|
|
128
128
|
} );
|
|
129
129
|
|
|
130
|
+
const LTC_Evaluate_Volume = /*@__PURE__*/ Fn( ( { P, p0, p1, p2, p3 } ) => {
|
|
130
131
|
|
|
131
|
-
|
|
132
|
+
// bail if point is on back side of plane of light
|
|
133
|
+
// assumes ccw winding order of light vertices
|
|
134
|
+
const v1 = p1.sub( p0 ).toVar();
|
|
135
|
+
const v2 = p3.sub( p0 ).toVar();
|
|
136
|
+
|
|
137
|
+
const lightNormal = v1.cross( v2 );
|
|
138
|
+
const result = vec3().toVar();
|
|
139
|
+
|
|
140
|
+
If( lightNormal.dot( P.sub( p0 ) ).greaterThanEqual( 0.0 ), () => {
|
|
141
|
+
|
|
142
|
+
// transform rect
|
|
143
|
+
// & project rect onto sphere
|
|
144
|
+
const coords0 = p0.sub( P ).normalize().toVar();
|
|
145
|
+
const coords1 = p1.sub( P ).normalize().toVar();
|
|
146
|
+
const coords2 = p2.sub( P ).normalize().toVar();
|
|
147
|
+
const coords3 = p3.sub( P ).normalize().toVar();
|
|
148
|
+
|
|
149
|
+
// calculate vector form factor
|
|
150
|
+
const vectorFormFactor = vec3( 0 ).toVar();
|
|
151
|
+
vectorFormFactor.addAssign( LTC_EdgeVectorFormFactor( { v1: coords0, v2: coords1 } ) );
|
|
152
|
+
vectorFormFactor.addAssign( LTC_EdgeVectorFormFactor( { v1: coords1, v2: coords2 } ) );
|
|
153
|
+
vectorFormFactor.addAssign( LTC_EdgeVectorFormFactor( { v1: coords2, v2: coords3 } ) );
|
|
154
|
+
vectorFormFactor.addAssign( LTC_EdgeVectorFormFactor( { v1: coords3, v2: coords0 } ) );
|
|
155
|
+
|
|
156
|
+
// adjust for horizon clipping
|
|
157
|
+
result.assign( vec3( LTC_ClippedSphereFormFactor( { f: vectorFormFactor.abs() } ) ) );
|
|
158
|
+
|
|
159
|
+
} );
|
|
160
|
+
|
|
161
|
+
return result;
|
|
162
|
+
|
|
163
|
+
} ).setLayout( {
|
|
164
|
+
name: 'LTC_Evaluate',
|
|
165
|
+
type: 'vec3',
|
|
166
|
+
inputs: [
|
|
167
|
+
{ name: 'P', type: 'vec3' },
|
|
168
|
+
{ name: 'p0', type: 'vec3' },
|
|
169
|
+
{ name: 'p1', type: 'vec3' },
|
|
170
|
+
{ name: 'p2', type: 'vec3' },
|
|
171
|
+
{ name: 'p3', type: 'vec3' }
|
|
172
|
+
]
|
|
173
|
+
} );
|
|
174
|
+
|
|
175
|
+
export { LTC_Evaluate, LTC_Evaluate_Volume, LTC_Uv };
|
|
@@ -26,15 +26,13 @@ class BasicLightingModel extends LightingModel {
|
|
|
26
26
|
/**
|
|
27
27
|
* Implements the baked indirect lighting with its modulation.
|
|
28
28
|
*
|
|
29
|
-
* @param {ContextNode} context - The current node context.
|
|
30
|
-
* @param {StackNode} stack - The current stack.
|
|
31
29
|
* @param {NodeBuilder} builder - The current node builder.
|
|
32
30
|
*/
|
|
33
|
-
indirect( context
|
|
31
|
+
indirect( { context } ) {
|
|
34
32
|
|
|
35
33
|
const ambientOcclusion = context.ambientOcclusion;
|
|
36
34
|
const reflectedLight = context.reflectedLight;
|
|
37
|
-
const irradianceLightMap =
|
|
35
|
+
const irradianceLightMap = context.irradianceLightMap;
|
|
38
36
|
|
|
39
37
|
reflectedLight.indirectDiffuse.assign( vec4( 0.0 ) );
|
|
40
38
|
|
|
@@ -61,13 +59,12 @@ class BasicLightingModel extends LightingModel {
|
|
|
61
59
|
/**
|
|
62
60
|
* Implements the environment mapping.
|
|
63
61
|
*
|
|
64
|
-
* @param {ContextNode} context - The current node context.
|
|
65
|
-
* @param {StackNode} stack - The current stack.
|
|
66
62
|
* @param {NodeBuilder} builder - The current node builder.
|
|
67
63
|
*/
|
|
68
|
-
finish(
|
|
64
|
+
finish( builder ) {
|
|
65
|
+
|
|
66
|
+
const { material, context } = builder;
|
|
69
67
|
|
|
70
|
-
const material = builder.material;
|
|
71
68
|
const outgoingLight = context.outgoingLight;
|
|
72
69
|
const envNode = builder.context.environment;
|
|
73
70
|
|
|
@@ -40,7 +40,7 @@ class PhongLightingModel extends BasicLightingModel {
|
|
|
40
40
|
/**
|
|
41
41
|
* Constructs a new phong lighting model.
|
|
42
42
|
*
|
|
43
|
-
* @param {
|
|
43
|
+
* @param {boolean} [specular=true] - Whether specular is supported or not.
|
|
44
44
|
*/
|
|
45
45
|
constructor( specular = true ) {
|
|
46
46
|
|
|
@@ -51,7 +51,7 @@ class PhongLightingModel extends BasicLightingModel {
|
|
|
51
51
|
* looking for a Lambert-like material meaning a material for non-shiny
|
|
52
52
|
* surfaces, without specular highlights.
|
|
53
53
|
*
|
|
54
|
-
* @type {
|
|
54
|
+
* @type {boolean}
|
|
55
55
|
* @default true
|
|
56
56
|
*/
|
|
57
57
|
this.specular = specular;
|
|
@@ -62,9 +62,7 @@ class PhongLightingModel extends BasicLightingModel {
|
|
|
62
62
|
* Implements the direct lighting. The specular portion is optional an can be controlled
|
|
63
63
|
* with the {@link PhongLightingModel#specular} flag.
|
|
64
64
|
*
|
|
65
|
-
* @param {Object}
|
|
66
|
-
* @param {StackNode} stack - The current stack.
|
|
67
|
-
* @param {NodeBuilder} builder - The current node builder.
|
|
65
|
+
* @param {Object} lightData - The light data.
|
|
68
66
|
*/
|
|
69
67
|
direct( { lightDirection, lightColor, reflectedLight } ) {
|
|
70
68
|
|
|
@@ -84,11 +82,11 @@ class PhongLightingModel extends BasicLightingModel {
|
|
|
84
82
|
/**
|
|
85
83
|
* Implements the indirect lighting.
|
|
86
84
|
*
|
|
87
|
-
* @param {ContextNode} input - The current node context.
|
|
88
|
-
* @param {StackNode} stack - The current stack.
|
|
89
85
|
* @param {NodeBuilder} builder - The current node builder.
|
|
90
86
|
*/
|
|
91
|
-
indirect(
|
|
87
|
+
indirect( builder ) {
|
|
88
|
+
|
|
89
|
+
const { ambientOcclusion, irradiance, reflectedLight } = builder.context;
|
|
92
90
|
|
|
93
91
|
reflectedLight.indirectDiffuse.addAssign( irradiance.mul( BRDF_Lambert( { diffuseColor } ) ) );
|
|
94
92
|
|