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
|
@@ -8,8 +8,6 @@ import { normalMap } from '../display/NormalMapNode.js';
|
|
|
8
8
|
import { bumpMap } from '../display/BumpMapNode.js';
|
|
9
9
|
import { Vector2 } from '../../math/Vector2.js';
|
|
10
10
|
|
|
11
|
-
/** @module MaterialNode **/
|
|
12
|
-
|
|
13
11
|
const _propertyCache = new Map();
|
|
14
12
|
|
|
15
13
|
/**
|
|
@@ -31,7 +29,7 @@ class MaterialNode extends Node {
|
|
|
31
29
|
/**
|
|
32
30
|
* Constructs a new material node.
|
|
33
31
|
*
|
|
34
|
-
* @param {
|
|
32
|
+
* @param {string} scope - The scope defines what kind of material property is referred by the node.
|
|
35
33
|
*/
|
|
36
34
|
constructor( scope ) {
|
|
37
35
|
|
|
@@ -40,7 +38,7 @@ class MaterialNode extends Node {
|
|
|
40
38
|
/**
|
|
41
39
|
* The scope defines what material property is referred by the node.
|
|
42
40
|
*
|
|
43
|
-
* @type {
|
|
41
|
+
* @type {string}
|
|
44
42
|
*/
|
|
45
43
|
this.scope = scope;
|
|
46
44
|
|
|
@@ -49,8 +47,8 @@ class MaterialNode extends Node {
|
|
|
49
47
|
/**
|
|
50
48
|
* Returns a cached reference node for the given property and type.
|
|
51
49
|
*
|
|
52
|
-
* @param {
|
|
53
|
-
* @param {
|
|
50
|
+
* @param {string} property - The name of the material property.
|
|
51
|
+
* @param {string} type - The uniform type of the property.
|
|
54
52
|
* @return {MaterialReferenceNode} A material reference node representing the property access.
|
|
55
53
|
*/
|
|
56
54
|
getCache( property, type ) {
|
|
@@ -72,7 +70,7 @@ class MaterialNode extends Node {
|
|
|
72
70
|
/**
|
|
73
71
|
* Returns a float-typed material reference node for the given property name.
|
|
74
72
|
*
|
|
75
|
-
* @param {
|
|
73
|
+
* @param {string} property - The name of the material property.
|
|
76
74
|
* @return {MaterialReferenceNode<float>} A material reference node representing the property access.
|
|
77
75
|
*/
|
|
78
76
|
getFloat( property ) {
|
|
@@ -84,7 +82,7 @@ class MaterialNode extends Node {
|
|
|
84
82
|
/**
|
|
85
83
|
* Returns a color-typed material reference node for the given property name.
|
|
86
84
|
*
|
|
87
|
-
* @param {
|
|
85
|
+
* @param {string} property - The name of the material property.
|
|
88
86
|
* @return {MaterialReferenceNode<color>} A material reference node representing the property access.
|
|
89
87
|
*/
|
|
90
88
|
getColor( property ) {
|
|
@@ -96,7 +94,7 @@ class MaterialNode extends Node {
|
|
|
96
94
|
/**
|
|
97
95
|
* Returns a texture-typed material reference node for the given property name.
|
|
98
96
|
*
|
|
99
|
-
* @param {
|
|
97
|
+
* @param {string} property - The name of the material property.
|
|
100
98
|
* @return {MaterialReferenceNode} A material reference node representing the property access.
|
|
101
99
|
*/
|
|
102
100
|
getTexture( property ) {
|
|
@@ -445,6 +443,7 @@ export default MaterialNode;
|
|
|
445
443
|
/**
|
|
446
444
|
* TSL object that represents alpha test of the current material.
|
|
447
445
|
*
|
|
446
|
+
* @tsl
|
|
448
447
|
* @type {Node<float>}
|
|
449
448
|
*/
|
|
450
449
|
export const materialAlphaTest = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.ALPHA_TEST );
|
|
@@ -453,6 +452,7 @@ export const materialAlphaTest = /*@__PURE__*/ nodeImmutable( MaterialNode, Mate
|
|
|
453
452
|
* TSL object that represents the diffuse color of the current material.
|
|
454
453
|
* The value is composed via `color` * `map`.
|
|
455
454
|
*
|
|
455
|
+
* @tsl
|
|
456
456
|
* @type {Node<vec3>}
|
|
457
457
|
*/
|
|
458
458
|
export const materialColor = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.COLOR );
|
|
@@ -460,6 +460,7 @@ export const materialColor = /*@__PURE__*/ nodeImmutable( MaterialNode, Material
|
|
|
460
460
|
/**
|
|
461
461
|
* TSL object that represents the shininess of the current material.
|
|
462
462
|
*
|
|
463
|
+
* @tsl
|
|
463
464
|
* @type {Node<float>}
|
|
464
465
|
*/
|
|
465
466
|
export const materialShininess = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.SHININESS );
|
|
@@ -468,6 +469,7 @@ export const materialShininess = /*@__PURE__*/ nodeImmutable( MaterialNode, Mate
|
|
|
468
469
|
* TSL object that represents the emissive color of the current material.
|
|
469
470
|
* The value is composed via `emissive` * `emissiveIntensity` * `emissiveMap`.
|
|
470
471
|
*
|
|
472
|
+
* @tsl
|
|
471
473
|
* @type {Node<vec3>}
|
|
472
474
|
*/
|
|
473
475
|
export const materialEmissive = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.EMISSIVE );
|
|
@@ -476,6 +478,7 @@ export const materialEmissive = /*@__PURE__*/ nodeImmutable( MaterialNode, Mater
|
|
|
476
478
|
* TSL object that represents the opacity of the current material.
|
|
477
479
|
* The value is composed via `opacity` * `alphaMap`.
|
|
478
480
|
*
|
|
481
|
+
* @tsl
|
|
479
482
|
* @type {Node<float>}
|
|
480
483
|
*/
|
|
481
484
|
export const materialOpacity = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.OPACITY );
|
|
@@ -483,6 +486,7 @@ export const materialOpacity = /*@__PURE__*/ nodeImmutable( MaterialNode, Materi
|
|
|
483
486
|
/**
|
|
484
487
|
* TSL object that represents the specular of the current material.
|
|
485
488
|
*
|
|
489
|
+
* @tsl
|
|
486
490
|
* @type {Node<vec3>}
|
|
487
491
|
*/
|
|
488
492
|
export const materialSpecular = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.SPECULAR );
|
|
@@ -491,6 +495,7 @@ export const materialSpecular = /*@__PURE__*/ nodeImmutable( MaterialNode, Mater
|
|
|
491
495
|
* TSL object that represents the specular intensity of the current material.
|
|
492
496
|
* The value is composed via `specularIntensity` * `specularMap.a`.
|
|
493
497
|
*
|
|
498
|
+
* @tsl
|
|
494
499
|
* @type {Node<float>}
|
|
495
500
|
*/
|
|
496
501
|
export const materialSpecularIntensity = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.SPECULAR_INTENSITY );
|
|
@@ -499,6 +504,7 @@ export const materialSpecularIntensity = /*@__PURE__*/ nodeImmutable( MaterialNo
|
|
|
499
504
|
* TSL object that represents the specular color of the current material.
|
|
500
505
|
* The value is composed via `specularColor` * `specularMap.rgb`.
|
|
501
506
|
*
|
|
507
|
+
* @tsl
|
|
502
508
|
* @type {Node<vec3>}
|
|
503
509
|
*/
|
|
504
510
|
export const materialSpecularColor = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.SPECULAR_COLOR );
|
|
@@ -507,6 +513,7 @@ export const materialSpecularColor = /*@__PURE__*/ nodeImmutable( MaterialNode,
|
|
|
507
513
|
* TSL object that represents the specular strength of the current material.
|
|
508
514
|
* The value is composed via `specularMap.r`.
|
|
509
515
|
*
|
|
516
|
+
* @tsl
|
|
510
517
|
* @type {Node<float>}
|
|
511
518
|
*/
|
|
512
519
|
export const materialSpecularStrength = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.SPECULAR_STRENGTH );
|
|
@@ -514,6 +521,7 @@ export const materialSpecularStrength = /*@__PURE__*/ nodeImmutable( MaterialNod
|
|
|
514
521
|
/**
|
|
515
522
|
* TSL object that represents the reflectivity of the current material.
|
|
516
523
|
*
|
|
524
|
+
* @tsl
|
|
517
525
|
* @type {Node<float>}
|
|
518
526
|
*/
|
|
519
527
|
export const materialReflectivity = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.REFLECTIVITY );
|
|
@@ -522,6 +530,7 @@ export const materialReflectivity = /*@__PURE__*/ nodeImmutable( MaterialNode, M
|
|
|
522
530
|
* TSL object that represents the roughness of the current material.
|
|
523
531
|
* The value is composed via `roughness` * `roughnessMap.g`.
|
|
524
532
|
*
|
|
533
|
+
* @tsl
|
|
525
534
|
* @type {Node<float>}
|
|
526
535
|
*/
|
|
527
536
|
export const materialRoughness = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.ROUGHNESS );
|
|
@@ -530,6 +539,7 @@ export const materialRoughness = /*@__PURE__*/ nodeImmutable( MaterialNode, Mate
|
|
|
530
539
|
* TSL object that represents the metalness of the current material.
|
|
531
540
|
* The value is composed via `metalness` * `metalnessMap.b`.
|
|
532
541
|
*
|
|
542
|
+
* @tsl
|
|
533
543
|
* @type {Node<float>}
|
|
534
544
|
*/
|
|
535
545
|
export const materialMetalness = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.METALNESS );
|
|
@@ -538,6 +548,7 @@ export const materialMetalness = /*@__PURE__*/ nodeImmutable( MaterialNode, Mate
|
|
|
538
548
|
* TSL object that represents the normal of the current material.
|
|
539
549
|
* The value will be either `normalMap` * `normalScale`, `bumpMap` * `bumpScale` or `normalView`.
|
|
540
550
|
*
|
|
551
|
+
* @tsl
|
|
541
552
|
* @type {Node<vec3>}
|
|
542
553
|
*/
|
|
543
554
|
export const materialNormal = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.NORMAL );
|
|
@@ -546,6 +557,7 @@ export const materialNormal = /*@__PURE__*/ nodeImmutable( MaterialNode, Materia
|
|
|
546
557
|
* TSL object that represents the clearcoat of the current material.
|
|
547
558
|
* The value is composed via `clearcoat` * `clearcoatMap.r`
|
|
548
559
|
*
|
|
560
|
+
* @tsl
|
|
549
561
|
* @type {Node<float>}
|
|
550
562
|
*/
|
|
551
563
|
export const materialClearcoat = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.CLEARCOAT );
|
|
@@ -554,6 +566,7 @@ export const materialClearcoat = /*@__PURE__*/ nodeImmutable( MaterialNode, Mate
|
|
|
554
566
|
* TSL object that represents the clearcoat roughness of the current material.
|
|
555
567
|
* The value is composed via `clearcoatRoughness` * `clearcoatRoughnessMap.r`.
|
|
556
568
|
*
|
|
569
|
+
* @tsl
|
|
557
570
|
* @type {Node<float>}
|
|
558
571
|
*/
|
|
559
572
|
export const materialClearcoatRoughness = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.CLEARCOAT_ROUGHNESS );
|
|
@@ -562,6 +575,7 @@ export const materialClearcoatRoughness = /*@__PURE__*/ nodeImmutable( MaterialN
|
|
|
562
575
|
* TSL object that represents the clearcoat normal of the current material.
|
|
563
576
|
* The value will be either `clearcoatNormalMap` or `normalView`.
|
|
564
577
|
*
|
|
578
|
+
* @tsl
|
|
565
579
|
* @type {Node<vec3>}
|
|
566
580
|
*/
|
|
567
581
|
export const materialClearcoatNormal = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.CLEARCOAT_NORMAL );
|
|
@@ -569,6 +583,7 @@ export const materialClearcoatNormal = /*@__PURE__*/ nodeImmutable( MaterialNode
|
|
|
569
583
|
/**
|
|
570
584
|
* TSL object that represents the rotation of the current sprite material.
|
|
571
585
|
*
|
|
586
|
+
* @tsl
|
|
572
587
|
* @type {Node<float>}
|
|
573
588
|
*/
|
|
574
589
|
export const materialRotation = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.ROTATION );
|
|
@@ -577,6 +592,7 @@ export const materialRotation = /*@__PURE__*/ nodeImmutable( MaterialNode, Mater
|
|
|
577
592
|
* TSL object that represents the sheen color of the current material.
|
|
578
593
|
* The value is composed via `sheen` * `sheenColor` * `sheenColorMap`.
|
|
579
594
|
*
|
|
595
|
+
* @tsl
|
|
580
596
|
* @type {Node<vec3>}
|
|
581
597
|
*/
|
|
582
598
|
export const materialSheen = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.SHEEN );
|
|
@@ -585,6 +601,7 @@ export const materialSheen = /*@__PURE__*/ nodeImmutable( MaterialNode, Material
|
|
|
585
601
|
* TSL object that represents the sheen roughness of the current material.
|
|
586
602
|
* The value is composed via `sheenRoughness` * `sheenRoughnessMap.a`.
|
|
587
603
|
*
|
|
604
|
+
* @tsl
|
|
588
605
|
* @type {Node<float>}
|
|
589
606
|
*/
|
|
590
607
|
export const materialSheenRoughness = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.SHEEN_ROUGHNESS );
|
|
@@ -592,6 +609,7 @@ export const materialSheenRoughness = /*@__PURE__*/ nodeImmutable( MaterialNode,
|
|
|
592
609
|
/**
|
|
593
610
|
* TSL object that represents the anisotropy of the current material.
|
|
594
611
|
*
|
|
612
|
+
* @tsl
|
|
595
613
|
* @type {Node<vec2>}
|
|
596
614
|
*/
|
|
597
615
|
export const materialAnisotropy = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.ANISOTROPY );
|
|
@@ -599,6 +617,7 @@ export const materialAnisotropy = /*@__PURE__*/ nodeImmutable( MaterialNode, Mat
|
|
|
599
617
|
/**
|
|
600
618
|
* TSL object that represents the iridescence of the current material.
|
|
601
619
|
*
|
|
620
|
+
* @tsl
|
|
602
621
|
* @type {Node<float>}
|
|
603
622
|
*/
|
|
604
623
|
export const materialIridescence = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.IRIDESCENCE );
|
|
@@ -606,6 +625,7 @@ export const materialIridescence = /*@__PURE__*/ nodeImmutable( MaterialNode, Ma
|
|
|
606
625
|
/**
|
|
607
626
|
* TSL object that represents the iridescence IOR of the current material.
|
|
608
627
|
*
|
|
628
|
+
* @tsl
|
|
609
629
|
* @type {Node<float>}
|
|
610
630
|
*/
|
|
611
631
|
export const materialIridescenceIOR = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.IRIDESCENCE_IOR );
|
|
@@ -613,6 +633,7 @@ export const materialIridescenceIOR = /*@__PURE__*/ nodeImmutable( MaterialNode,
|
|
|
613
633
|
/**
|
|
614
634
|
* TSL object that represents the iridescence thickness of the current material.
|
|
615
635
|
*
|
|
636
|
+
* @tsl
|
|
616
637
|
* @type {Node<float>}
|
|
617
638
|
*/
|
|
618
639
|
export const materialIridescenceThickness = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.IRIDESCENCE_THICKNESS );
|
|
@@ -621,6 +642,7 @@ export const materialIridescenceThickness = /*@__PURE__*/ nodeImmutable( Materia
|
|
|
621
642
|
* TSL object that represents the transmission of the current material.
|
|
622
643
|
* The value is composed via `transmission` * `transmissionMap.r`.
|
|
623
644
|
*
|
|
645
|
+
* @tsl
|
|
624
646
|
* @type {Node<float>}
|
|
625
647
|
*/
|
|
626
648
|
export const materialTransmission = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.TRANSMISSION );
|
|
@@ -629,6 +651,7 @@ export const materialTransmission = /*@__PURE__*/ nodeImmutable( MaterialNode, M
|
|
|
629
651
|
* TSL object that represents the thickness of the current material.
|
|
630
652
|
* The value is composed via `thickness` * `thicknessMap.g`.
|
|
631
653
|
*
|
|
654
|
+
* @tsl
|
|
632
655
|
* @type {Node<float>}
|
|
633
656
|
*/
|
|
634
657
|
export const materialThickness = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.THICKNESS );
|
|
@@ -636,6 +659,7 @@ export const materialThickness = /*@__PURE__*/ nodeImmutable( MaterialNode, Mate
|
|
|
636
659
|
/**
|
|
637
660
|
* TSL object that represents the IOR of the current material.
|
|
638
661
|
*
|
|
662
|
+
* @tsl
|
|
639
663
|
* @type {Node<float>}
|
|
640
664
|
*/
|
|
641
665
|
export const materialIOR = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.IOR );
|
|
@@ -643,6 +667,7 @@ export const materialIOR = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNo
|
|
|
643
667
|
/**
|
|
644
668
|
* TSL object that represents the attenuation distance of the current material.
|
|
645
669
|
*
|
|
670
|
+
* @tsl
|
|
646
671
|
* @type {Node<float>}
|
|
647
672
|
*/
|
|
648
673
|
export const materialAttenuationDistance = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.ATTENUATION_DISTANCE );
|
|
@@ -650,6 +675,7 @@ export const materialAttenuationDistance = /*@__PURE__*/ nodeImmutable( Material
|
|
|
650
675
|
/**
|
|
651
676
|
* TSL object that represents the attenuation color of the current material.
|
|
652
677
|
*
|
|
678
|
+
* @tsl
|
|
653
679
|
* @type {Node<vec3>}
|
|
654
680
|
*/
|
|
655
681
|
export const materialAttenuationColor = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.ATTENUATION_COLOR );
|
|
@@ -657,6 +683,7 @@ export const materialAttenuationColor = /*@__PURE__*/ nodeImmutable( MaterialNod
|
|
|
657
683
|
/**
|
|
658
684
|
* TSL object that represents the scale of the current dashed line material.
|
|
659
685
|
*
|
|
686
|
+
* @tsl
|
|
660
687
|
* @type {Node<float>}
|
|
661
688
|
*/
|
|
662
689
|
export const materialLineScale = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.LINE_SCALE );
|
|
@@ -664,6 +691,7 @@ export const materialLineScale = /*@__PURE__*/ nodeImmutable( MaterialNode, Mate
|
|
|
664
691
|
/**
|
|
665
692
|
* TSL object that represents the dash size of the current dashed line material.
|
|
666
693
|
*
|
|
694
|
+
* @tsl
|
|
667
695
|
* @type {Node<float>}
|
|
668
696
|
*/
|
|
669
697
|
export const materialLineDashSize = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.LINE_DASH_SIZE );
|
|
@@ -671,6 +699,7 @@ export const materialLineDashSize = /*@__PURE__*/ nodeImmutable( MaterialNode, M
|
|
|
671
699
|
/**
|
|
672
700
|
* TSL object that represents the gap size of the current dashed line material.
|
|
673
701
|
*
|
|
702
|
+
* @tsl
|
|
674
703
|
* @type {Node<float>}
|
|
675
704
|
*/
|
|
676
705
|
export const materialLineGapSize = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.LINE_GAP_SIZE );
|
|
@@ -678,6 +707,7 @@ export const materialLineGapSize = /*@__PURE__*/ nodeImmutable( MaterialNode, Ma
|
|
|
678
707
|
/**
|
|
679
708
|
* TSL object that represents the line width of the current line material.
|
|
680
709
|
*
|
|
710
|
+
* @tsl
|
|
681
711
|
* @type {Node<float>}
|
|
682
712
|
*/
|
|
683
713
|
export const materialLineWidth = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.LINE_WIDTH );
|
|
@@ -685,6 +715,7 @@ export const materialLineWidth = /*@__PURE__*/ nodeImmutable( MaterialNode, Mate
|
|
|
685
715
|
/**
|
|
686
716
|
* TSL object that represents the dash offset of the current line material.
|
|
687
717
|
*
|
|
718
|
+
* @tsl
|
|
688
719
|
* @type {Node<float>}
|
|
689
720
|
*/
|
|
690
721
|
export const materialLineDashOffset = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.LINE_DASH_OFFSET );
|
|
@@ -692,6 +723,7 @@ export const materialLineDashOffset = /*@__PURE__*/ nodeImmutable( MaterialNode,
|
|
|
692
723
|
/**
|
|
693
724
|
* TSL object that represents the point size of the current points material.
|
|
694
725
|
*
|
|
726
|
+
* @tsl
|
|
695
727
|
* @type {Node<float>}
|
|
696
728
|
*/
|
|
697
729
|
export const materialPointSize = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.POINT_SIZE );
|
|
@@ -699,6 +731,7 @@ export const materialPointSize = /*@__PURE__*/ nodeImmutable( MaterialNode, Mate
|
|
|
699
731
|
/**
|
|
700
732
|
* TSL object that represents the dispersion of the current material.
|
|
701
733
|
*
|
|
734
|
+
* @tsl
|
|
702
735
|
* @type {Node<float>}
|
|
703
736
|
*/
|
|
704
737
|
export const materialDispersion = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.DISPERSION );
|
|
@@ -707,6 +740,7 @@ export const materialDispersion = /*@__PURE__*/ nodeImmutable( MaterialNode, Mat
|
|
|
707
740
|
* TSL object that represents the light map of the current material.
|
|
708
741
|
* The value is composed via `lightMapIntensity` * `lightMap.rgb`.
|
|
709
742
|
*
|
|
743
|
+
* @tsl
|
|
710
744
|
* @type {Node<vec3>}
|
|
711
745
|
*/
|
|
712
746
|
export const materialLightMap = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.LIGHT_MAP );
|
|
@@ -715,6 +749,7 @@ export const materialLightMap = /*@__PURE__*/ nodeImmutable( MaterialNode, Mater
|
|
|
715
749
|
* TSL object that represents the ambient occlusion map of the current material.
|
|
716
750
|
* The value is composed via `aoMap.r` - 1 * `aoMapIntensity` + 1.
|
|
717
751
|
*
|
|
752
|
+
* @tsl
|
|
718
753
|
* @type {Node<float>}
|
|
719
754
|
*/
|
|
720
755
|
export const materialAO = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNode.AO );
|
|
@@ -722,6 +757,7 @@ export const materialAO = /*@__PURE__*/ nodeImmutable( MaterialNode, MaterialNod
|
|
|
722
757
|
/**
|
|
723
758
|
* TSL object that represents the anisotropy vector of the current material.
|
|
724
759
|
*
|
|
760
|
+
* @tsl
|
|
725
761
|
* @type {Node<vec2>}
|
|
726
762
|
*/
|
|
727
763
|
export const materialAnisotropyVector = /*@__PURE__*/ uniform( new Vector2() ).onReference( function ( frame ) {
|
|
@@ -1,10 +1,59 @@
|
|
|
1
|
+
import { Euler } from '../../math/Euler.js';
|
|
2
|
+
import { Matrix4 } from '../../math/Matrix4.js';
|
|
1
3
|
import { uniform } from '../core/UniformNode.js';
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
const _e1 = /*@__PURE__*/ new Euler();
|
|
6
|
+
const _m1 = /*@__PURE__*/ new Matrix4();
|
|
4
7
|
|
|
5
8
|
/**
|
|
6
9
|
* TSL object that represents the refraction ratio of the material used for rendering the current object.
|
|
7
10
|
*
|
|
11
|
+
* @tsl
|
|
8
12
|
* @type {UniformNode<float>}
|
|
9
13
|
*/
|
|
10
|
-
export const materialRefractionRatio = /*@__PURE__*/ uniform( 0 ).onReference( ( { material } ) => material ).
|
|
14
|
+
export const materialRefractionRatio = /*@__PURE__*/ uniform( 0 ).onReference( ( { material } ) => material ).onObjectUpdate( ( { material } ) => material.refractionRatio );
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* TSL object that represents the intensity of environment maps of PBR materials.
|
|
18
|
+
* When `material.envMap` is set, the value is `material.envMapIntensity` otherwise `scene.environmentIntensity`.
|
|
19
|
+
*
|
|
20
|
+
* @tsl
|
|
21
|
+
* @type {Node<float>}
|
|
22
|
+
*/
|
|
23
|
+
export const materialEnvIntensity = /*@__PURE__*/ uniform( 1 ).onReference( ( { material } ) => material ).onObjectUpdate( function ( { material, scene } ) {
|
|
24
|
+
|
|
25
|
+
return material.envMap ? material.envMapIntensity : scene.environmentIntensity;
|
|
26
|
+
|
|
27
|
+
} );
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* TSL object that represents the rotation of environment maps.
|
|
31
|
+
* When `material.envMap` is set, the value is `material.envMapRotation`. `scene.environmentRotation` controls the
|
|
32
|
+
* rotation of `scene.environment` instead.
|
|
33
|
+
*
|
|
34
|
+
* @tsl
|
|
35
|
+
* @type {Node<mat4>}
|
|
36
|
+
*/
|
|
37
|
+
export const materialEnvRotation = /*@__PURE__*/ uniform( new Matrix4() ).onReference( function ( frame ) {
|
|
38
|
+
|
|
39
|
+
return frame.material;
|
|
40
|
+
|
|
41
|
+
} ).onObjectUpdate( function ( { material, scene } ) {
|
|
42
|
+
|
|
43
|
+
const rotation = ( scene.environment !== null && material.envMap === null ) ? scene.environmentRotation : material.envMapRotation;
|
|
44
|
+
|
|
45
|
+
if ( rotation ) {
|
|
46
|
+
|
|
47
|
+
_e1.copy( rotation );
|
|
48
|
+
|
|
49
|
+
_m1.makeRotationFromEuler( _e1 );
|
|
50
|
+
|
|
51
|
+
} else {
|
|
52
|
+
|
|
53
|
+
_m1.identity();
|
|
54
|
+
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return _m1;
|
|
58
|
+
|
|
59
|
+
} );
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import ReferenceNode from './ReferenceNode.js';
|
|
2
2
|
import { nodeObject } from '../tsl/TSLBase.js';
|
|
3
3
|
|
|
4
|
-
/** @module MaterialReferenceNode **/
|
|
5
|
-
|
|
6
4
|
/**
|
|
7
5
|
* This node is a special type of reference node which is intended
|
|
8
6
|
* for linking material properties with node values.
|
|
@@ -12,7 +10,7 @@ import { nodeObject } from '../tsl/TSLBase.js';
|
|
|
12
10
|
* When changing `material.opacity`, the node value of `opacityNode` will
|
|
13
11
|
* automatically be updated.
|
|
14
12
|
*
|
|
15
|
-
* @augments
|
|
13
|
+
* @augments ReferenceNode
|
|
16
14
|
*/
|
|
17
15
|
class MaterialReferenceNode extends ReferenceNode {
|
|
18
16
|
|
|
@@ -25,9 +23,9 @@ class MaterialReferenceNode extends ReferenceNode {
|
|
|
25
23
|
/**
|
|
26
24
|
* Constructs a new material reference node.
|
|
27
25
|
*
|
|
28
|
-
* @param {
|
|
29
|
-
* @param {
|
|
30
|
-
* @param {Material
|
|
26
|
+
* @param {string} property - The name of the property the node refers to.
|
|
27
|
+
* @param {string} inputType - The uniform type that should be used to represent the property value.
|
|
28
|
+
* @param {?Material} [material=null] - The material the property belongs to. When no material is set,
|
|
31
29
|
* the node refers to the material of the current rendered object.
|
|
32
30
|
*/
|
|
33
31
|
constructor( property, inputType, material = null ) {
|
|
@@ -38,7 +36,7 @@ class MaterialReferenceNode extends ReferenceNode {
|
|
|
38
36
|
* The material the property belongs to. When no material is set,
|
|
39
37
|
* the node refers to the material of the current rendered object.
|
|
40
38
|
*
|
|
41
|
-
* @type {Material
|
|
39
|
+
* @type {?Material}
|
|
42
40
|
* @default null
|
|
43
41
|
*/
|
|
44
42
|
this.material = material;
|
|
@@ -46,7 +44,7 @@ class MaterialReferenceNode extends ReferenceNode {
|
|
|
46
44
|
/**
|
|
47
45
|
* This flag can be used for type testing.
|
|
48
46
|
*
|
|
49
|
-
* @type {
|
|
47
|
+
* @type {boolean}
|
|
50
48
|
* @readonly
|
|
51
49
|
* @default true
|
|
52
50
|
*/
|
|
@@ -56,7 +54,7 @@ class MaterialReferenceNode extends ReferenceNode {
|
|
|
56
54
|
|
|
57
55
|
/**
|
|
58
56
|
* Updates the reference based on the given state. The state is only evaluated
|
|
59
|
-
* {@link
|
|
57
|
+
* {@link MaterialReferenceNode#material} is not set.
|
|
60
58
|
*
|
|
61
59
|
* @param {(NodeFrame|NodeBuilder)} state - The current state.
|
|
62
60
|
* @return {Object} The updated reference.
|
|
@@ -76,10 +74,11 @@ export default MaterialReferenceNode;
|
|
|
76
74
|
/**
|
|
77
75
|
* TSL function for creating a material reference node.
|
|
78
76
|
*
|
|
77
|
+
* @tsl
|
|
79
78
|
* @function
|
|
80
|
-
* @param {
|
|
81
|
-
* @param {
|
|
82
|
-
* @param {Material
|
|
79
|
+
* @param {string} name - The name of the property the node refers to.
|
|
80
|
+
* @param {string} type - The uniform type that should be used to represent the property value.
|
|
81
|
+
* @param {?Material} [material=null] - The material the property belongs to.
|
|
83
82
|
* When no material is set, the node refers to the material of the current rendered object.
|
|
84
83
|
* @returns {MaterialReferenceNode}
|
|
85
84
|
*/
|
|
@@ -6,15 +6,13 @@ import { Matrix4 } from '../../math/Matrix4.js';
|
|
|
6
6
|
import { cameraViewMatrix } from './Camera.js';
|
|
7
7
|
import { Matrix3 } from '../../math/Matrix3.js';
|
|
8
8
|
|
|
9
|
-
/** @module ModelNode **/
|
|
10
|
-
|
|
11
9
|
/**
|
|
12
10
|
* This type of node is a specialized version of `Object3DNode`
|
|
13
11
|
* with larger set of model related metrics. Unlike `Object3DNode`,
|
|
14
12
|
* `ModelNode` extracts the reference to the 3D object from the
|
|
15
13
|
* current node frame state.
|
|
16
14
|
*
|
|
17
|
-
* @augments
|
|
15
|
+
* @augments Object3DNode
|
|
18
16
|
*/
|
|
19
17
|
class ModelNode extends Object3DNode {
|
|
20
18
|
|
|
@@ -56,6 +54,7 @@ export default ModelNode;
|
|
|
56
54
|
/**
|
|
57
55
|
* TSL object that represents the object's direction in world space.
|
|
58
56
|
*
|
|
57
|
+
* @tsl
|
|
59
58
|
* @type {ModelNode<vec3>}
|
|
60
59
|
*/
|
|
61
60
|
export const modelDirection = /*@__PURE__*/ nodeImmutable( ModelNode, ModelNode.DIRECTION );
|
|
@@ -63,6 +62,7 @@ export const modelDirection = /*@__PURE__*/ nodeImmutable( ModelNode, ModelNode.
|
|
|
63
62
|
/**
|
|
64
63
|
* TSL object that represents the object's world matrix.
|
|
65
64
|
*
|
|
65
|
+
* @tsl
|
|
66
66
|
* @type {ModelNode<mat4>}
|
|
67
67
|
*/
|
|
68
68
|
export const modelWorldMatrix = /*@__PURE__*/ nodeImmutable( ModelNode, ModelNode.WORLD_MATRIX );
|
|
@@ -70,6 +70,7 @@ export const modelWorldMatrix = /*@__PURE__*/ nodeImmutable( ModelNode, ModelNod
|
|
|
70
70
|
/**
|
|
71
71
|
* TSL object that represents the object's position in world space.
|
|
72
72
|
*
|
|
73
|
+
* @tsl
|
|
73
74
|
* @type {ModelNode<vec3>}
|
|
74
75
|
*/
|
|
75
76
|
export const modelPosition = /*@__PURE__*/ nodeImmutable( ModelNode, ModelNode.POSITION );
|
|
@@ -77,6 +78,7 @@ export const modelPosition = /*@__PURE__*/ nodeImmutable( ModelNode, ModelNode.P
|
|
|
77
78
|
/**
|
|
78
79
|
* TSL object that represents the object's scale in world space.
|
|
79
80
|
*
|
|
81
|
+
* @tsl
|
|
80
82
|
* @type {ModelNode<vec3>}
|
|
81
83
|
*/
|
|
82
84
|
export const modelScale = /*@__PURE__*/ nodeImmutable( ModelNode, ModelNode.SCALE );
|
|
@@ -84,13 +86,23 @@ export const modelScale = /*@__PURE__*/ nodeImmutable( ModelNode, ModelNode.SCAL
|
|
|
84
86
|
/**
|
|
85
87
|
* TSL object that represents the object's position in view/camera space.
|
|
86
88
|
*
|
|
89
|
+
* @tsl
|
|
87
90
|
* @type {ModelNode<vec3>}
|
|
88
91
|
*/
|
|
89
92
|
export const modelViewPosition = /*@__PURE__*/ nodeImmutable( ModelNode, ModelNode.VIEW_POSITION );
|
|
90
93
|
|
|
94
|
+
/**
|
|
95
|
+
* TSL object that represents the object's radius.
|
|
96
|
+
*
|
|
97
|
+
* @tsl
|
|
98
|
+
* @type {ModelNode<float>}
|
|
99
|
+
*/
|
|
100
|
+
export const modelRadius = /*@__PURE__*/ nodeImmutable( ModelNode, ModelNode.RADIUS );
|
|
101
|
+
|
|
91
102
|
/**
|
|
92
103
|
* TSL object that represents the object's normal matrix.
|
|
93
104
|
*
|
|
105
|
+
* @tsl
|
|
94
106
|
* @type {UniformNode<mat3>}
|
|
95
107
|
*/
|
|
96
108
|
export const modelNormalMatrix = /*@__PURE__*/ uniform( new Matrix3() ).onObjectUpdate( ( { object }, self ) => self.value.getNormalMatrix( object.matrixWorld ) );
|
|
@@ -98,6 +110,7 @@ export const modelNormalMatrix = /*@__PURE__*/ uniform( new Matrix3() ).onObject
|
|
|
98
110
|
/**
|
|
99
111
|
* TSL object that represents the object's inverse world matrix.
|
|
100
112
|
*
|
|
113
|
+
* @tsl
|
|
101
114
|
* @type {UniformNode<mat4>}
|
|
102
115
|
*/
|
|
103
116
|
export const modelWorldMatrixInverse = /*@__PURE__*/ uniform( new Matrix4() ).onObjectUpdate( ( { object }, self ) => self.value.copy( object.matrixWorld ).invert() );
|
|
@@ -105,6 +118,7 @@ export const modelWorldMatrixInverse = /*@__PURE__*/ uniform( new Matrix4() ).on
|
|
|
105
118
|
/**
|
|
106
119
|
* TSL object that represents the object's model view matrix.
|
|
107
120
|
*
|
|
121
|
+
* @tsl
|
|
108
122
|
* @type {Node<mat4>}
|
|
109
123
|
*/
|
|
110
124
|
export const modelViewMatrix = /*@__PURE__*/ ( Fn( ( builder ) => {
|
|
@@ -118,6 +132,7 @@ export const modelViewMatrix = /*@__PURE__*/ ( Fn( ( builder ) => {
|
|
|
118
132
|
/**
|
|
119
133
|
* TSL object that represents the object's model view in `mediump` precision.
|
|
120
134
|
*
|
|
135
|
+
* @tsl
|
|
121
136
|
* @type {Node<mat4>}
|
|
122
137
|
*/
|
|
123
138
|
export const mediumpModelViewMatrix = /*@__PURE__*/ cameraViewMatrix.mul( modelWorldMatrix );
|
|
@@ -128,6 +143,7 @@ export const mediumpModelViewMatrix = /*@__PURE__*/ cameraViewMatrix.mul( modelW
|
|
|
128
143
|
* TSL object that represents the object's model view in `highp` precision
|
|
129
144
|
* which is achieved by computing the matrix in JS and not in the shader.
|
|
130
145
|
*
|
|
146
|
+
* @tsl
|
|
131
147
|
* @type {Node<mat4>}
|
|
132
148
|
*/
|
|
133
149
|
export const highpModelViewMatrix = /*@__PURE__*/ ( Fn( ( builder ) => {
|
|
@@ -146,6 +162,7 @@ export const highpModelViewMatrix = /*@__PURE__*/ ( Fn( ( builder ) => {
|
|
|
146
162
|
* TSL object that represents the object's model normal view in `highp` precision
|
|
147
163
|
* which is achieved by computing the matrix in JS and not in the shader.
|
|
148
164
|
*
|
|
165
|
+
* @tsl
|
|
149
166
|
* @type {Node<mat3>}
|
|
150
167
|
*/
|
|
151
168
|
export const highpModelNormalViewMatrix = /*@__PURE__*/ ( Fn( ( builder ) => {
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { Fn } from '../tsl/TSLCore.js';
|
|
2
2
|
|
|
3
|
-
/** @module ModelViewProjectionNode **/
|
|
4
|
-
|
|
5
3
|
/**
|
|
6
4
|
* TSL object that represents the position in clip space after the model-view-projection transform of the current rendered object.
|
|
7
5
|
*
|
|
6
|
+
* @tsl
|
|
8
7
|
* @type {VaryingNode<vec4>}
|
|
9
8
|
*/
|
|
10
9
|
export const modelViewProjection = /*@__PURE__*/ ( Fn( ( builder ) => {
|