@needle-tools/three 0.169.20-experimental.0 → 0.183.2-canary.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/LICENSE +1 -1
- package/README.md +5 -6
- package/build/three.cjs +54184 -56703
- package/build/three.core.js +59506 -0
- package/build/three.core.min.js +6 -0
- package/build/three.module.js +11645 -73000
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +648 -0
- package/build/three.tsl.min.js +6 -0
- package/build/three.webgpu.js +53912 -51652
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +53888 -51806
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
- package/examples/jsm/Addons.js +5 -15
- package/examples/jsm/animation/AnimationClipCreator.js +58 -6
- package/examples/jsm/animation/CCDIKSolver.js +152 -45
- package/examples/jsm/capabilities/WebGL.js +28 -29
- package/examples/jsm/capabilities/WebGPU.js +19 -17
- package/examples/jsm/controls/ArcballControls.js +474 -178
- package/examples/jsm/controls/DragControls.js +100 -58
- package/examples/jsm/controls/FirstPersonControls.js +116 -6
- package/examples/jsm/controls/FlyControls.js +50 -2
- package/examples/jsm/controls/MapControls.js +96 -8
- package/examples/jsm/controls/OrbitControls.js +496 -57
- package/examples/jsm/controls/PointerLockControls.js +115 -22
- package/examples/jsm/controls/TrackballControls.js +166 -14
- package/examples/jsm/controls/TransformControls.js +336 -26
- package/examples/jsm/csm/CSM.js +232 -18
- package/examples/jsm/csm/CSMFrustum.js +61 -4
- package/examples/jsm/csm/CSMHelper.js +50 -0
- package/examples/jsm/csm/CSMShader.js +13 -1
- package/examples/jsm/csm/CSMShadowNode.js +599 -0
- package/examples/jsm/curves/CurveExtras.js +303 -31
- package/examples/jsm/curves/NURBSCurve.js +91 -16
- package/examples/jsm/curves/NURBSSurface.js +52 -6
- package/examples/jsm/curves/NURBSUtils.js +102 -112
- package/examples/jsm/curves/NURBSVolume.js +24 -4
- package/examples/jsm/effects/AnaglyphEffect.js +134 -7
- package/examples/jsm/effects/AsciiEffect.js +69 -22
- package/examples/jsm/effects/OutlineEffect.js +61 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +30 -0
- package/examples/jsm/effects/StereoEffect.js +31 -0
- package/examples/jsm/environments/ColorEnvironment.js +59 -0
- package/examples/jsm/environments/DebugEnvironment.js +50 -0
- package/examples/jsm/environments/RoomEnvironment.js +83 -42
- package/examples/jsm/exporters/DRACOExporter.js +56 -14
- package/examples/jsm/exporters/EXRExporter.js +40 -9
- package/examples/jsm/exporters/GLTFExporter.js +502 -169
- package/examples/jsm/exporters/OBJExporter.js +21 -1
- package/examples/jsm/exporters/PLYExporter.js +44 -12
- package/examples/jsm/exporters/STLExporter.js +27 -5
- package/examples/jsm/exporters/USDZExporter.js +781 -291
- package/examples/jsm/geometries/BoxLineGeometry.js +23 -0
- package/examples/jsm/geometries/ConvexGeometry.js +19 -0
- package/examples/jsm/geometries/DecalGeometry.js +91 -30
- package/examples/jsm/geometries/ParametricFunctions.js +100 -0
- package/examples/jsm/geometries/ParametricGeometry.js +38 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +68 -7
- package/examples/jsm/geometries/TeapotGeometry.js +23 -38
- package/examples/jsm/geometries/TextGeometry.js +48 -29
- package/examples/jsm/gpgpu/BitonicSort.js +715 -0
- package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
- package/examples/jsm/helpers/LightProbeHelper.js +36 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +38 -1
- package/examples/jsm/helpers/OctreeHelper.js +36 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +60 -0
- package/examples/jsm/helpers/RapierHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +36 -3
- package/examples/jsm/helpers/TextureHelper.js +28 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +214 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +61 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +47 -2
- package/examples/jsm/helpers/ViewHelper.js +181 -9
- package/examples/jsm/inspector/Inspector.js +487 -0
- package/examples/jsm/inspector/RendererInspector.js +425 -0
- package/examples/jsm/inspector/tabs/Console.js +238 -0
- package/examples/jsm/inspector/tabs/Parameters.js +348 -0
- package/examples/jsm/inspector/tabs/Performance.js +268 -0
- package/examples/jsm/inspector/tabs/Viewer.js +166 -0
- package/examples/jsm/inspector/ui/Graph.js +95 -0
- package/examples/jsm/inspector/ui/Item.js +170 -0
- package/examples/jsm/inspector/ui/List.js +75 -0
- package/examples/jsm/inspector/ui/Profiler.js +1975 -0
- package/examples/jsm/inspector/ui/Style.js +1613 -0
- package/examples/jsm/inspector/ui/Tab.js +233 -0
- package/examples/jsm/inspector/ui/Values.js +439 -0
- package/examples/jsm/inspector/ui/utils.js +56 -0
- package/examples/jsm/interactive/HTMLMesh.js +43 -12
- package/examples/jsm/interactive/InteractiveGroup.js +170 -52
- package/examples/jsm/interactive/SelectionBox.js +106 -9
- package/examples/jsm/interactive/SelectionHelper.js +76 -30
- package/examples/jsm/libs/demuxer_mp4.js +109 -0
- package/examples/jsm/libs/meshopt_decoder.module.js +76 -58
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +42 -0
- package/examples/jsm/lights/LightProbeGenerator.js +44 -7
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +50 -14
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +16 -0
- package/examples/jsm/lines/Line2.js +41 -4
- package/examples/jsm/lines/LineGeometry.js +80 -2
- package/examples/jsm/lines/LineMaterial.js +105 -5
- package/examples/jsm/lines/LineSegments2.js +54 -4
- package/examples/jsm/lines/LineSegmentsGeometry.js +65 -8
- package/examples/jsm/lines/Wireframe.js +41 -4
- package/examples/jsm/lines/WireframeGeometry2.js +27 -2
- package/examples/jsm/lines/webgpu/Line2.js +28 -2
- package/examples/jsm/lines/webgpu/LineSegments2.js +59 -24
- package/examples/jsm/lines/webgpu/Wireframe.js +86 -0
- package/examples/jsm/loaders/3DMLoader.js +78 -6
- package/examples/jsm/loaders/3MFLoader.js +148 -7
- package/examples/jsm/loaders/AMFLoader.js +34 -14
- package/examples/jsm/loaders/BVHLoader.js +59 -12
- package/examples/jsm/loaders/ColladaLoader.js +61 -4027
- package/examples/jsm/loaders/DDSLoader.js +68 -1
- package/examples/jsm/loaders/DRACOLoader.js +146 -22
- package/examples/jsm/loaders/EXRLoader.js +255 -34
- package/examples/jsm/loaders/FBXLoader.js +80 -42
- package/examples/jsm/loaders/FontLoader.js +83 -6
- package/examples/jsm/loaders/GCodeLoader.js +71 -14
- package/examples/jsm/loaders/GLTFLoader.js +381 -263
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +52 -3
- package/examples/jsm/loaders/HDRLoader.js +485 -0
- package/examples/jsm/loaders/IESLoader.js +42 -0
- package/examples/jsm/loaders/KMZLoader.js +39 -6
- package/examples/jsm/loaders/KTX2Loader.js +124 -48
- package/examples/jsm/loaders/KTXLoader.js +31 -10
- package/examples/jsm/loaders/LDrawLoader.js +192 -145
- package/examples/jsm/loaders/LUT3dlLoader.js +47 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +46 -9
- package/examples/jsm/loaders/LUTImageLoader.js +79 -38
- package/examples/jsm/loaders/LWOLoader.js +54 -59
- package/examples/jsm/loaders/LottieLoader.js +54 -1
- package/examples/jsm/loaders/MD2Loader.js +37 -1
- package/examples/jsm/loaders/MDDLoader.js +57 -12
- package/examples/jsm/loaders/MTLLoader.js +60 -35
- package/examples/jsm/loaders/MaterialXLoader.js +268 -34
- package/examples/jsm/loaders/NRRDLoader.js +40 -8
- package/examples/jsm/loaders/OBJLoader.js +51 -2
- package/examples/jsm/loaders/PCDLoader.js +173 -21
- package/examples/jsm/loaders/PDBLoader.js +41 -2
- package/examples/jsm/loaders/PLYLoader.js +70 -39
- package/examples/jsm/loaders/PVRLoader.js +25 -6
- package/examples/jsm/loaders/RGBELoader.js +6 -438
- package/examples/jsm/loaders/STLLoader.js +48 -38
- package/examples/jsm/loaders/SVGLoader.js +119 -25
- package/examples/jsm/loaders/TDSLoader.js +92 -74
- package/examples/jsm/loaders/TGALoader.js +23 -2
- package/examples/jsm/loaders/TIFFLoader.js +23 -0
- package/examples/jsm/loaders/TTFLoader.js +50 -3
- package/examples/jsm/loaders/USDLoader.js +279 -0
- package/examples/jsm/loaders/USDZLoader.js +4 -858
- package/examples/jsm/loaders/UltraHDRLoader.js +338 -166
- package/examples/jsm/loaders/VOXLoader.js +688 -87
- package/examples/jsm/loaders/VRMLLoader.js +121 -12
- package/examples/jsm/loaders/VTKLoader.js +77 -25
- package/examples/jsm/loaders/XYZLoader.js +36 -0
- package/examples/jsm/loaders/collada/ColladaComposer.js +2950 -0
- package/examples/jsm/loaders/collada/ColladaParser.js +1962 -0
- package/examples/jsm/loaders/lwo/IFFParser.js +77 -77
- package/examples/jsm/loaders/usd/USDAParser.js +822 -0
- package/examples/jsm/loaders/usd/USDCParser.js +1852 -0
- package/examples/jsm/loaders/usd/USDComposer.js +4041 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +183 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +154 -0
- package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
- package/examples/jsm/math/Capsule.js +91 -14
- package/examples/jsm/math/ColorConverter.js +22 -0
- package/examples/jsm/math/ColorSpaces.js +74 -2
- package/examples/jsm/math/ConvexHull.js +517 -93
- package/examples/jsm/math/ImprovedNoise.js +32 -15
- package/examples/jsm/math/Lut.js +113 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +78 -13
- package/examples/jsm/math/OBB.js +141 -29
- package/examples/jsm/math/Octree.js +283 -7
- package/examples/jsm/math/SimplexNoise.js +68 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +45 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +96 -20
- package/examples/jsm/misc/Gyroscope.js +12 -0
- package/examples/jsm/misc/MD2Character.js +117 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +175 -11
- package/examples/jsm/misc/MorphAnimMesh.js +44 -0
- package/examples/jsm/misc/MorphBlendMesh.js +103 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +100 -54
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +322 -0
- package/examples/jsm/misc/RollerCoaster.js +57 -0
- package/examples/jsm/misc/TubePainter.js +437 -40
- package/examples/jsm/misc/Volume.js +123 -76
- package/examples/jsm/misc/VolumeSlice.js +95 -49
- package/examples/jsm/modifiers/CurveModifier.js +66 -38
- package/examples/jsm/modifiers/CurveModifierGPU.js +42 -19
- package/examples/jsm/modifiers/EdgeSplitModifier.js +20 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +24 -10
- package/examples/jsm/modifiers/TessellateModifier.js +35 -2
- package/examples/jsm/objects/GroundedSkybox.js +25 -6
- package/examples/jsm/objects/Lensflare.js +94 -2
- package/examples/jsm/objects/LensflareMesh.js +64 -10
- package/examples/jsm/objects/MarchingCubes.js +90 -5
- package/examples/jsm/objects/Reflector.js +76 -2
- package/examples/jsm/objects/ReflectorForSSRPass.js +41 -0
- package/examples/jsm/objects/Refractor.js +62 -0
- package/examples/jsm/objects/ShadowMesh.js +54 -4
- package/examples/jsm/objects/Sky.js +106 -16
- package/examples/jsm/objects/SkyMesh.js +211 -38
- package/examples/jsm/objects/Water.js +49 -8
- package/examples/jsm/objects/Water2.js +49 -7
- package/examples/jsm/objects/Water2Mesh.js +50 -9
- package/examples/jsm/objects/WaterMesh.js +136 -43
- package/examples/jsm/physics/AmmoPhysics.js +60 -7
- package/examples/jsm/physics/JoltPhysics.js +65 -12
- package/examples/jsm/physics/RapierPhysics.js +217 -21
- package/examples/jsm/postprocessing/AfterimagePass.js +110 -29
- package/examples/jsm/postprocessing/BloomPass.js +128 -26
- package/examples/jsm/postprocessing/BokehPass.js +99 -22
- package/examples/jsm/postprocessing/ClearPass.js +54 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +82 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +59 -10
- package/examples/jsm/postprocessing/EffectComposer.js +140 -6
- package/examples/jsm/postprocessing/FXAAPass.js +40 -0
- package/examples/jsm/postprocessing/FilmPass.js +54 -5
- package/examples/jsm/postprocessing/GTAOPass.js +202 -57
- package/examples/jsm/postprocessing/GlitchPass.js +86 -34
- package/examples/jsm/postprocessing/HalftonePass.js +65 -10
- package/examples/jsm/postprocessing/LUTPass.js +38 -8
- package/examples/jsm/postprocessing/MaskPass.js +91 -0
- package/examples/jsm/postprocessing/OutlinePass.js +272 -135
- package/examples/jsm/postprocessing/OutputPass.js +65 -14
- package/examples/jsm/postprocessing/Pass.js +100 -4
- package/examples/jsm/postprocessing/RenderPass.js +94 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +124 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +120 -21
- package/examples/jsm/postprocessing/SAOPass.js +128 -55
- package/examples/jsm/postprocessing/SMAAPass.js +106 -75
- package/examples/jsm/postprocessing/SSAARenderPass.js +118 -35
- package/examples/jsm/postprocessing/SSAOPass.js +173 -60
- package/examples/jsm/postprocessing/SSRPass.js +268 -53
- package/examples/jsm/postprocessing/SavePass.js +69 -16
- package/examples/jsm/postprocessing/ShaderPass.js +65 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +79 -24
- package/examples/jsm/postprocessing/TexturePass.js +72 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +168 -59
- package/examples/jsm/renderers/CSS2DRenderer.js +98 -5
- package/examples/jsm/renderers/CSS3DRenderer.js +111 -7
- package/examples/jsm/renderers/Projector.js +288 -32
- package/examples/jsm/renderers/SVGRenderer.js +323 -61
- package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +3 -1
- package/examples/jsm/renderers/webgl-legacy/nodes/SlotNode.js +1 -1
- package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +5 -1
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +12 -5
- package/examples/jsm/shaders/AfterimageShader.js +8 -3
- package/examples/jsm/shaders/BasicShader.js +8 -1
- package/examples/jsm/shaders/BleachBypassShader.js +10 -3
- package/examples/jsm/shaders/BlendShader.js +8 -1
- package/examples/jsm/shaders/BokehShader.js +9 -3
- package/examples/jsm/shaders/BokehShader2.js +11 -4
- package/examples/jsm/shaders/BrightnessContrastShader.js +10 -4
- package/examples/jsm/shaders/ColorCorrectionShader.js +8 -1
- package/examples/jsm/shaders/ColorifyShader.js +8 -1
- package/examples/jsm/shaders/ConvolutionShader.js +9 -38
- package/examples/jsm/shaders/CopyShader.js +8 -1
- package/examples/jsm/shaders/DOFMipMapShader.js +10 -3
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +10 -1
- package/examples/jsm/shaders/DigitalGlitch.js +10 -7
- package/examples/jsm/shaders/DotScreenShader.js +8 -3
- package/examples/jsm/shaders/ExposureShader.js +8 -1
- package/examples/jsm/shaders/FXAAShader.js +233 -221
- package/examples/jsm/shaders/FilmShader.js +13 -0
- package/examples/jsm/shaders/FocusShader.js +8 -3
- package/examples/jsm/shaders/FreiChenShader.js +10 -3
- package/examples/jsm/shaders/GTAOShader.js +55 -45
- package/examples/jsm/shaders/GammaCorrectionShader.js +11 -2
- package/examples/jsm/shaders/HalftoneShader.js +24 -4
- package/examples/jsm/shaders/HorizontalBlurShader.js +12 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +9 -2
- package/examples/jsm/shaders/HueSaturationShader.js +10 -3
- package/examples/jsm/shaders/KaleidoShader.js +11 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +8 -4
- package/examples/jsm/shaders/LuminosityShader.js +8 -2
- package/examples/jsm/shaders/MirrorShader.js +10 -4
- package/examples/jsm/shaders/NormalMapShader.js +7 -2
- package/examples/jsm/shaders/OutputShader.js +19 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +30 -17
- package/examples/jsm/shaders/RGBShiftShader.js +8 -1
- package/examples/jsm/shaders/SAOShader.js +27 -5
- package/examples/jsm/shaders/SMAAShader.js +24 -1
- package/examples/jsm/shaders/SSAOShader.js +37 -6
- package/examples/jsm/shaders/SSRShader.js +32 -6
- package/examples/jsm/shaders/SepiaShader.js +8 -3
- package/examples/jsm/shaders/SobelOperatorShader.js +9 -3
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +13 -8
- package/examples/jsm/shaders/TechnicolorShader.js +10 -4
- package/examples/jsm/shaders/ToonShader.js +29 -6
- package/examples/jsm/shaders/TriangleBlurShader.js +9 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +19 -6
- package/examples/jsm/shaders/VelocityShader.js +8 -1
- package/examples/jsm/shaders/VerticalBlurShader.js +9 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +8 -1
- package/examples/jsm/shaders/VignetteShader.js +8 -3
- package/examples/jsm/shaders/VolumeShader.js +11 -2
- package/examples/jsm/shaders/WaterRefractionShader.js +11 -0
- package/examples/jsm/textures/FlakesTexture.js +14 -0
- package/examples/jsm/transpiler/AST.js +436 -31
- package/examples/jsm/transpiler/GLSLDecoder.js +380 -135
- package/examples/jsm/transpiler/Linker.js +327 -0
- package/examples/jsm/transpiler/ShaderToyDecoder.js +3 -1
- package/examples/jsm/transpiler/TSLEncoder.js +363 -97
- package/examples/jsm/transpiler/Transpiler.js +50 -1
- package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
- package/examples/jsm/transpiler/WGSLEncoder.js +839 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +244 -0
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +549 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +282 -0
- package/examples/jsm/tsl/display/BilateralBlurNode.js +364 -0
- package/{src/nodes → examples/jsm/tsl}/display/BleachBypass.js +11 -4
- package/examples/jsm/tsl/display/BloomNode.js +534 -0
- package/examples/jsm/tsl/display/CRT.js +150 -0
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +207 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +334 -0
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +554 -0
- package/examples/jsm/tsl/display/DotScreenNode.js +104 -0
- package/examples/jsm/tsl/display/FXAANode.js +365 -0
- package/examples/jsm/tsl/display/FilmNode.js +101 -0
- package/examples/jsm/tsl/display/GTAONode.js +571 -0
- package/examples/jsm/tsl/display/GaussianBlurNode.js +389 -0
- package/examples/jsm/tsl/display/GodraysNode.js +624 -0
- package/examples/jsm/tsl/display/LensflareNode.js +279 -0
- package/examples/jsm/tsl/display/Lut3DNode.js +109 -0
- package/examples/jsm/tsl/display/MotionBlur.js +33 -0
- package/examples/jsm/tsl/display/OutlineNode.js +762 -0
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +89 -0
- package/examples/jsm/tsl/display/PixelationPassNode.js +335 -0
- package/examples/jsm/tsl/display/RGBShiftNode.js +96 -0
- package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
- package/examples/jsm/tsl/display/SMAANode.js +768 -0
- package/{src/nodes → examples/jsm/tsl}/display/SSAAPassNode.js +120 -49
- package/examples/jsm/tsl/display/SSGINode.js +642 -0
- package/examples/jsm/tsl/display/SSRNode.js +656 -0
- package/examples/jsm/tsl/display/SSSNode.js +490 -0
- package/{src/nodes → examples/jsm/tsl}/display/Sepia.js +9 -2
- package/examples/jsm/tsl/display/Shape.js +29 -0
- package/{src/nodes → examples/jsm/tsl}/display/SobelOperatorNode.js +61 -19
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +192 -0
- package/{src/nodes → examples/jsm/tsl}/display/StereoPassNode.js +48 -12
- package/examples/jsm/tsl/display/TRAANode.js +726 -0
- package/examples/jsm/tsl/display/TransitionNode.js +141 -0
- package/examples/jsm/tsl/display/boxBlur.js +65 -0
- package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
- package/examples/jsm/tsl/display/hashBlur.js +54 -0
- package/examples/jsm/tsl/display/radialBlur.js +68 -0
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +442 -0
- package/examples/jsm/tsl/math/Bayer.js +73 -0
- package/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
- package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
- package/examples/jsm/tsl/utils/Raymarching.js +70 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +91 -29
- package/examples/jsm/utils/CameraUtils.js +15 -6
- package/examples/jsm/utils/GeometryCompressionUtils.js +23 -30
- package/examples/jsm/utils/GeometryUtils.js +32 -27
- package/examples/jsm/utils/LDrawUtils.js +14 -5
- package/examples/jsm/utils/SceneOptimizer.js +458 -0
- package/examples/jsm/utils/SceneUtils.js +53 -3
- package/examples/jsm/utils/ShadowMapViewer.js +72 -33
- package/examples/jsm/utils/ShadowMapViewerGPU.js +61 -29
- package/examples/jsm/utils/SkeletonUtils.js +48 -0
- package/examples/jsm/utils/SortUtils.js +17 -5
- package/examples/jsm/utils/UVsDebug.js +12 -4
- package/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +16 -0
- package/examples/jsm/utils/{TextureUtilsGPU.js → WebGPUTextureUtils.js} +20 -2
- package/examples/jsm/utils/WorkerPool.js +67 -2
- package/examples/jsm/webxr/ARButton.js +19 -0
- package/examples/jsm/webxr/OculusHandModel.js +84 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +148 -22
- package/examples/jsm/webxr/Text2D.js +20 -6
- package/examples/jsm/webxr/VRButton.js +31 -0
- package/examples/jsm/webxr/XRButton.js +23 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +94 -3
- package/examples/jsm/webxr/XREstimatedLight.js +35 -4
- package/examples/jsm/webxr/XRHandMeshModel.js +37 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +96 -6
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +44 -0
- package/examples/jsm/webxr/XRPlanes.js +18 -0
- package/package.json +29 -37
- package/src/Three.Core.js +198 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +641 -0
- package/src/Three.WebGPU.Nodes.js +14 -186
- package/src/Three.WebGPU.js +16 -186
- package/src/Three.js +2 -197
- package/src/animation/AnimationAction.js +263 -31
- package/src/animation/AnimationClip.js +162 -7
- package/src/animation/AnimationMixer.js +105 -15
- package/src/animation/AnimationObjectGroup.js +45 -21
- package/src/animation/AnimationUtils.js +163 -24
- package/src/animation/KeyframeTrack.js +191 -17
- package/src/animation/PropertyBinding.js +91 -16
- 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 +386 -8
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +94 -13
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +37 -0
- package/src/cameras/Camera.js +61 -0
- package/src/cameras/CubeCamera.js +86 -0
- package/src/cameras/OrthographicCamera.js +110 -1
- package/src/cameras/PerspectiveCamera.js +174 -35
- package/src/cameras/StereoCamera.js +48 -2
- package/src/constants.js +1546 -11
- package/src/core/BufferAttribute.js +417 -3
- package/src/core/BufferGeometry.js +407 -22
- package/src/core/Clock.js +69 -8
- package/src/core/EventDispatcher.js +52 -8
- package/src/core/GLBufferAttribute.js +113 -2
- 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 +141 -7
- package/src/core/InterleavedBufferAttribute.js +200 -2
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +673 -26
- package/src/core/Raycaster.js +136 -2
- package/src/core/RenderTarget.js +256 -27
- package/src/core/RenderTarget3D.js +48 -0
- package/src/core/Timer.js +184 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +89 -1
- package/src/extras/DataUtils.js +50 -9
- package/src/extras/Earcut.js +18 -779
- package/src/extras/ImageUtils.js +22 -14
- package/src/extras/PMREMGenerator.js +316 -67
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +101 -15
- package/src/extras/core/Curve.js +156 -55
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +34 -2
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +66 -3
- package/src/extras/core/ShapePath.js +80 -4
- 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 +39 -0
- package/src/geometries/CapsuleGeometry.js +196 -11
- package/src/geometries/CircleGeometry.js +41 -0
- package/src/geometries/ConeGeometry.js +39 -0
- package/src/geometries/CylinderGeometry.js +42 -2
- package/src/geometries/DodecahedronGeometry.js +33 -0
- package/src/geometries/EdgesGeometry.js +30 -2
- package/src/geometries/ExtrudeGeometry.js +148 -52
- package/src/geometries/IcosahedronGeometry.js +33 -0
- package/src/geometries/LatheGeometry.js +44 -3
- package/src/geometries/OctahedronGeometry.js +33 -0
- package/src/geometries/PlaneGeometry.js +35 -0
- package/src/geometries/PolyhedronGeometry.js +30 -1
- package/src/geometries/RingGeometry.js +37 -0
- package/src/geometries/ShapeGeometry.js +38 -0
- package/src/geometries/SphereGeometry.js +38 -0
- package/src/geometries/TetrahedronGeometry.js +33 -0
- package/src/geometries/TorusGeometry.js +44 -3
- package/src/geometries/TorusKnotGeometry.js +39 -0
- package/src/geometries/TubeGeometry.js +50 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +62 -5
- 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 +103 -27
- package/src/helpers/DirectionalLightHelper.js +55 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +42 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -24
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +73 -7
- package/src/helpers/SpotLightHelper.js +43 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +70 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +42 -0
- package/src/lights/Light.js +37 -11
- package/src/lights/LightProbe.js +37 -9
- package/src/lights/LightShadow.js +202 -7
- package/src/lights/PointLight.js +74 -0
- package/src/lights/PointLightShadow.js +15 -80
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +124 -1
- package/src/lights/SpotLightShadow.js +33 -3
- package/src/lights/webgpu/IESSpotLight.js +22 -0
- package/src/lights/webgpu/ProjectorLight.js +46 -0
- package/src/loaders/AnimationLoader.js +34 -2
- package/src/loaders/AudioLoader.js +34 -2
- package/src/loaders/BufferGeometryLoader.js +38 -13
- package/src/loaders/Cache.js +75 -2
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +45 -4
- package/src/loaders/FileLoader.js +85 -5
- package/src/loaders/ImageBitmapLoader.js +113 -11
- package/src/loaders/ImageLoader.js +85 -8
- package/src/loaders/Loader.js +150 -0
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +187 -0
- package/src/loaders/MaterialLoader.js +62 -3
- package/src/loaders/ObjectLoader.js +131 -31
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +68 -4
- package/src/loaders/nodes/NodeMaterialLoader.js +45 -0
- package/src/loaders/nodes/NodeObjectLoader.js +61 -0
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -1
- package/src/materials/Material.js +502 -8
- package/src/materials/MeshBasicMaterial.js +168 -2
- package/src/materials/MeshDepthMaterial.js +94 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +283 -0
- package/src/materials/MeshMatcapMaterial.js +164 -0
- package/src/materials/MeshNormalMaterial.js +114 -0
- package/src/materials/MeshPhongMaterial.js +298 -0
- package/src/materials/MeshPhysicalMaterial.js +296 -4
- package/src/materials/MeshStandardMaterial.js +300 -2
- package/src/materials/MeshToonMaterial.js +219 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +234 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +158 -53
- package/src/materials/nodes/LineBasicNodeMaterial.js +17 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +81 -6
- package/src/materials/nodes/MeshBasicNodeMaterial.js +59 -2
- package/src/materials/nodes/MeshLambertNodeMaterial.js +35 -0
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +23 -3
- package/src/materials/nodes/MeshNormalNodeMaterial.js +27 -4
- package/src/materials/nodes/MeshPhongNodeMaterial.js +64 -1
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +276 -3
- package/src/materials/nodes/MeshSSSNodeMaterial.js +98 -10
- package/src/materials/nodes/MeshStandardNodeMaterial.js +83 -4
- package/src/materials/nodes/MeshToonNodeMaterial.js +28 -0
- package/src/materials/nodes/NodeMaterial.js +789 -74
- package/src/materials/nodes/NodeMaterials.js +0 -1
- package/src/materials/nodes/PointsNodeMaterial.js +180 -11
- package/src/materials/nodes/ShadowNodeMaterial.js +38 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +86 -23
- package/src/materials/nodes/VolumeNodeMaterial.js +57 -84
- package/src/materials/nodes/manager/NodeMaterialObserver.js +329 -12
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +271 -0
- package/src/math/Color.js +355 -11
- package/src/math/ColorManagement.js +158 -92
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +139 -5
- package/src/math/Frustum.js +108 -9
- package/src/math/FrustumArray.js +258 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +221 -2
- package/src/math/MathUtils.js +408 -20
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +489 -94
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +322 -90
- package/src/math/Ray.js +162 -0
- package/src/math/Sphere.js +175 -0
- package/src/math/Spherical.js +73 -11
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +206 -2
- package/src/math/Vector2.js +396 -10
- package/src/math/Vector3.js +550 -15
- package/src/math/Vector4.js +415 -9
- package/src/math/interpolants/BezierInterpolant.js +108 -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 +91 -88
- package/src/nodes/TSL.js +32 -38
- package/src/nodes/accessors/AccessorsUtils.js +37 -9
- package/src/nodes/accessors/Arrays.js +68 -0
- package/src/nodes/accessors/BatchNode.js +49 -14
- package/src/nodes/accessors/Bitangent.js +82 -13
- package/src/nodes/accessors/BufferAttributeNode.js +269 -8
- package/src/nodes/accessors/BufferNode.js +91 -2
- package/src/nodes/accessors/BuiltinNode.js +63 -0
- package/src/nodes/accessors/Camera.js +400 -10
- package/src/nodes/accessors/ClippingNode.js +149 -45
- package/src/nodes/accessors/CubeTextureNode.js +137 -7
- package/src/nodes/accessors/InstanceNode.js +245 -40
- package/src/nodes/accessors/InstancedMeshNode.js +50 -0
- package/src/nodes/accessors/Lights.js +88 -0
- package/src/nodes/accessors/MaterialNode.js +355 -13
- package/src/nodes/accessors/MaterialProperties.js +57 -1
- package/src/nodes/accessors/MaterialReferenceNode.js +52 -14
- package/src/nodes/accessors/ModelNode.js +117 -5
- package/src/nodes/accessors/ModelViewProjectionNode.js +10 -39
- package/src/nodes/accessors/MorphNode.js +73 -26
- package/src/nodes/accessors/Normal.js +174 -19
- package/src/nodes/accessors/Object3DNode.js +146 -12
- package/src/nodes/accessors/PointUVNode.js +25 -0
- package/src/nodes/accessors/Position.js +119 -7
- package/src/nodes/accessors/ReferenceBaseNode.js +190 -4
- package/src/nodes/accessors/ReferenceNode.js +223 -8
- package/src/nodes/accessors/ReflectVector.js +29 -3
- package/src/nodes/accessors/RendererReferenceNode.js +45 -2
- package/src/nodes/accessors/SceneProperties.js +53 -0
- package/src/nodes/accessors/SkinningNode.js +180 -43
- package/src/nodes/accessors/StorageBufferNode.js +278 -26
- package/src/nodes/accessors/StorageTextureNode.js +205 -12
- package/src/nodes/accessors/Tangent.js +48 -10
- package/src/nodes/accessors/TangentUtils.js +46 -0
- package/src/nodes/accessors/Texture3DNode.js +104 -11
- package/src/nodes/accessors/TextureBicubic.js +31 -4
- package/src/nodes/accessors/TextureNode.js +564 -52
- package/src/nodes/accessors/TextureSizeNode.js +42 -1
- package/src/nodes/accessors/UV.js +9 -1
- package/src/nodes/accessors/UniformArrayNode.js +226 -34
- package/src/nodes/accessors/UserDataNode.js +46 -2
- package/src/nodes/accessors/VelocityNode.js +93 -3
- package/src/nodes/accessors/VertexColorNode.js +39 -4
- package/src/nodes/code/CodeNode.js +101 -8
- package/src/nodes/code/ExpressionNode.js +29 -2
- package/src/nodes/code/FunctionCallNode.js +98 -10
- package/src/nodes/code/FunctionNode.js +69 -2
- package/src/nodes/core/ArrayNode.js +174 -0
- package/src/nodes/core/AssignNode.js +80 -9
- package/src/nodes/core/AttributeNode.js +47 -4
- package/src/nodes/core/BypassNode.js +47 -3
- package/src/nodes/core/ConstNode.js +32 -0
- package/src/nodes/core/ContextNode.js +220 -14
- package/src/nodes/core/IndexNode.js +72 -7
- package/src/nodes/core/InputNode.js +50 -1
- package/src/nodes/core/InspectorNode.js +128 -0
- package/src/nodes/core/IsolateNode.js +133 -0
- package/src/nodes/core/LightingModel.js +65 -5
- package/src/nodes/core/MRTNode.js +113 -2
- package/src/nodes/core/Node.js +595 -36
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +1840 -121
- package/src/nodes/core/NodeCache.js +41 -2
- package/src/nodes/core/NodeCode.js +31 -0
- package/src/nodes/core/NodeError.js +28 -0
- package/src/nodes/core/NodeFrame.js +153 -24
- package/src/nodes/core/NodeFunction.js +48 -1
- package/src/nodes/core/NodeFunctionInput.js +44 -0
- package/src/nodes/core/NodeParser.js +13 -1
- package/src/nodes/core/NodeUniform.js +53 -1
- package/src/nodes/core/NodeUtils.js +201 -51
- package/src/nodes/core/NodeVar.js +47 -1
- package/src/nodes/core/NodeVarying.js +47 -1
- package/src/nodes/core/OutputStructNode.js +54 -12
- package/src/nodes/core/ParameterNode.js +60 -2
- package/src/nodes/core/PropertyNode.js +286 -7
- package/src/nodes/core/StackNode.js +337 -20
- package/src/nodes/core/StackTrace.js +139 -0
- package/src/nodes/core/StructNode.js +134 -0
- package/src/nodes/core/StructType.js +13 -0
- package/src/nodes/core/StructTypeNode.js +126 -6
- package/src/nodes/core/SubBuildNode.js +89 -0
- package/src/nodes/core/TempNode.js +31 -5
- package/src/nodes/core/UniformGroupNode.js +85 -7
- package/src/nodes/core/UniformNode.js +163 -16
- package/src/nodes/core/VarNode.js +317 -10
- package/src/nodes/core/VaryingNode.js +115 -13
- package/src/nodes/core/constants.js +40 -0
- package/src/nodes/display/BlendModes.js +171 -0
- package/src/nodes/display/BumpMapNode.js +38 -2
- package/src/nodes/display/ColorAdjustment.js +118 -6
- package/src/nodes/display/ColorSpaceFunctions.js +22 -6
- package/src/nodes/display/ColorSpaceNode.js +97 -47
- package/src/nodes/display/FrontFacingNode.js +64 -7
- package/src/nodes/display/NormalMapNode.js +101 -54
- package/src/nodes/display/PassNode.js +690 -33
- package/src/nodes/display/RenderOutputNode.js +94 -4
- package/src/nodes/display/ScreenNode.js +138 -27
- package/src/nodes/display/ToneMappingFunctions.js +62 -10
- package/src/nodes/display/ToneMappingNode.js +88 -8
- package/src/nodes/display/ToonOutlinePassNode.js +84 -4
- package/src/nodes/display/ViewportDepthNode.js +227 -10
- package/src/nodes/display/ViewportDepthTextureNode.js +39 -5
- package/src/nodes/display/ViewportSharedTextureNode.js +35 -1
- package/src/nodes/display/ViewportTextureNode.js +171 -7
- package/src/nodes/fog/Fog.js +97 -0
- package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
- package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/LTC.js +45 -1
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +1 -1
- package/src/nodes/functions/BasicLightingModel.js +28 -6
- package/src/nodes/functions/PhongLightingModel.js +36 -6
- package/src/nodes/functions/PhysicalLightingModel.js +336 -91
- package/src/nodes/functions/ShadowMaskModel.js +30 -3
- package/src/nodes/functions/ToonLightingModel.js +21 -2
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
- package/src/nodes/functions/material/getGeometryRoughness.js +10 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
- package/src/nodes/geometry/RangeNode.js +97 -8
- package/src/nodes/gpgpu/AtomicFunctionNode.js +198 -23
- package/src/nodes/gpgpu/BarrierNode.js +52 -3
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +135 -6
- package/src/nodes/gpgpu/ComputeNode.js +212 -16
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +143 -9
- package/src/nodes/lighting/AONode.js +18 -0
- package/src/nodes/lighting/AmbientLightNode.js +10 -0
- package/src/nodes/lighting/AnalyticLightNode.js +186 -399
- package/src/nodes/lighting/BasicEnvironmentNode.js +19 -0
- package/src/nodes/lighting/BasicLightMapNode.js +17 -0
- package/src/nodes/lighting/DirectionalLightNode.js +12 -11
- package/src/nodes/lighting/EnvironmentNode.js +59 -19
- package/src/nodes/lighting/HemisphereLightNode.js +33 -2
- package/src/nodes/lighting/IESSpotLightNode.js +13 -1
- package/src/nodes/lighting/IrradianceNode.js +17 -0
- package/src/nodes/lighting/LightProbeNode.js +20 -0
- package/src/nodes/lighting/LightUtils.js +11 -3
- package/src/nodes/lighting/LightingContextNode.js +52 -4
- package/src/nodes/lighting/LightingNode.js +15 -6
- package/src/nodes/lighting/LightsNode.js +238 -35
- package/src/nodes/lighting/PointLightNode.js +60 -25
- package/src/nodes/lighting/PointShadowNode.js +325 -0
- package/src/nodes/lighting/ProjectorLightNode.js +91 -0
- package/src/nodes/lighting/RectAreaLightNode.js +50 -14
- package/src/nodes/lighting/ShadowBaseNode.js +81 -0
- package/src/nodes/lighting/ShadowFilterNode.js +264 -0
- package/src/nodes/lighting/ShadowNode.js +867 -0
- package/src/nodes/lighting/SpotLightNode.js +99 -18
- package/src/nodes/materialx/MaterialXNodes.js +131 -2
- package/src/nodes/materialx/lib/mx_noise.js +166 -2
- package/src/nodes/math/BitcastNode.js +156 -0
- package/src/nodes/math/BitcountNode.js +433 -0
- package/src/nodes/math/ConditionalNode.js +110 -21
- package/src/nodes/math/Hash.js +8 -0
- package/src/nodes/math/MathNode.js +820 -97
- package/src/nodes/math/MathUtils.js +47 -1
- package/src/nodes/math/OperatorNode.js +517 -84
- package/src/nodes/math/PackFloatNode.js +98 -0
- package/src/nodes/math/TriNoise3D.js +17 -7
- package/src/nodes/math/UnpackFloatNode.js +96 -0
- package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
- package/src/nodes/parsers/GLSLNodeParser.js +11 -0
- package/src/nodes/pmrem/PMREMNode.js +180 -23
- package/src/nodes/pmrem/PMREMUtils.js +114 -5
- package/src/nodes/procedural/Checker.js +8 -0
- package/src/nodes/shapes/Shapes.js +33 -0
- package/src/nodes/tsl/TSLBase.js +10 -4
- package/src/nodes/tsl/TSLCore.js +732 -160
- package/src/nodes/utils/ArrayElementNode.js +55 -4
- package/src/nodes/utils/ConvertNode.js +31 -0
- package/src/nodes/utils/CubeMapNode.js +79 -2
- package/src/nodes/utils/DebugNode.js +83 -0
- package/src/nodes/utils/Discard.js +18 -2
- package/src/nodes/utils/EquirectUV.js +27 -0
- package/src/nodes/utils/EventNode.js +118 -0
- package/src/nodes/utils/FlipNode.js +38 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +91 -22
- package/src/nodes/utils/JoinNode.js +57 -4
- package/src/nodes/utils/LoopNode.js +193 -55
- package/src/nodes/utils/MatcapUV.js +22 -0
- package/src/nodes/utils/MaxMipLevelNode.js +49 -1
- package/src/nodes/utils/MemberNode.js +120 -0
- package/src/nodes/utils/Oscillators.js +41 -0
- package/src/nodes/utils/Packing.js +30 -1
- package/src/nodes/utils/PostProcessingUtils.js +154 -0
- package/src/nodes/utils/RTTNode.js +165 -9
- package/src/nodes/utils/ReflectorNode.js +407 -21
- package/src/nodes/utils/RemapNode.js +81 -2
- package/src/nodes/utils/RotateNode.js +41 -1
- package/src/nodes/utils/SampleNode.js +91 -0
- package/src/nodes/utils/SetNode.js +44 -1
- package/src/nodes/utils/SplitNode.js +66 -3
- package/src/nodes/utils/SpriteSheetUV.js +35 -0
- package/src/nodes/utils/SpriteUtils.js +16 -0
- package/src/nodes/utils/StorageArrayElementNode.js +56 -3
- package/src/nodes/utils/Timer.js +26 -0
- package/src/nodes/utils/TriplanarTextures.js +65 -0
- package/src/nodes/utils/UVUtils.js +48 -0
- package/src/nodes/utils/ViewportUtils.js +12 -0
- package/src/objects/BatchedMesh.js +798 -309
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +68 -0
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +131 -2
- package/src/objects/LOD.js +99 -5
- package/src/objects/Line.js +90 -7
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +20 -1
- package/src/objects/Mesh.js +84 -0
- package/src/objects/Points.js +60 -0
- package/src/objects/Skeleton.js +120 -5
- package/src/objects/SkinnedMesh.js +102 -6
- package/src/objects/Sprite.js +65 -1
- package/src/renderers/WebGL3DRenderTarget.js +26 -0
- package/src/renderers/WebGLArrayRenderTarget.js +26 -0
- package/src/renderers/WebGLCubeRenderTarget.js +41 -5
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +1016 -278
- package/src/renderers/common/Animation.js +123 -14
- package/src/renderers/common/Attributes.js +41 -1
- package/src/renderers/common/Backend.js +623 -44
- package/src/renderers/common/Background.js +99 -16
- package/src/renderers/common/BindGroup.js +37 -2
- package/src/renderers/common/Binding.js +46 -0
- package/src/renderers/common/Bindings.js +211 -20
- package/src/renderers/common/BlendMode.js +143 -0
- package/src/renderers/common/Buffer.js +89 -0
- package/src/renderers/common/BufferUtils.js +25 -0
- package/src/renderers/common/BundleGroup.js +57 -0
- package/src/renderers/common/CanvasTarget.js +341 -0
- package/src/renderers/common/ChainMap.js +73 -10
- package/src/renderers/common/ClippingContext.js +172 -87
- package/src/renderers/common/Color4.js +40 -0
- package/src/renderers/common/ComputePipeline.js +24 -0
- package/src/renderers/common/Constants.js +2 -1
- package/src/renderers/common/CubeRenderTarget.js +77 -7
- package/src/renderers/common/DataMap.js +37 -1
- package/src/renderers/common/Geometries.js +163 -14
- package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
- package/src/renderers/common/Info.js +81 -36
- package/src/renderers/common/InspectorBase.js +146 -0
- package/src/renderers/common/Lighting.js +57 -0
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +150 -7
- package/src/renderers/common/PostProcessing.js +22 -84
- package/src/renderers/common/ProgrammableStage.js +60 -2
- package/src/renderers/common/QuadMesh.js +63 -6
- package/src/renderers/common/RenderBundle.js +14 -8
- package/src/renderers/common/RenderBundles.js +40 -10
- package/src/renderers/common/RenderContext.js +219 -4
- package/src/renderers/common/RenderContexts.js +54 -17
- package/src/renderers/common/RenderList.js +233 -24
- package/src/renderers/common/RenderLists.js +46 -6
- package/src/renderers/common/RenderObject.js +548 -46
- package/src/renderers/common/RenderObjectPipeline.js +40 -0
- package/src/renderers/common/RenderObjects.js +133 -15
- package/src/renderers/common/RenderPipeline.js +216 -6
- package/src/renderers/common/Renderer.js +2155 -332
- package/src/renderers/common/RendererUtils.js +200 -0
- package/src/renderers/common/SampledTexture.js +99 -39
- package/src/renderers/common/Sampler.js +148 -1
- package/src/renderers/common/Storage3DTexture.js +100 -0
- package/src/renderers/common/StorageArrayTexture.js +84 -0
- package/src/renderers/common/StorageBuffer.js +38 -2
- package/src/renderers/common/StorageBufferAttribute.js +31 -2
- package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
- package/src/renderers/common/StorageTexture.js +65 -0
- package/src/renderers/common/Textures.js +273 -57
- package/src/renderers/common/TimestampQueryPool.js +163 -0
- package/src/renderers/common/Uniform.js +233 -3
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +235 -26
- package/src/renderers/common/XRManager.js +1677 -0
- package/src/renderers/common/XRRenderTarget.js +91 -0
- package/src/renderers/common/extras/PMREMGenerator.js +371 -108
- package/src/renderers/common/nodes/NodeBuilderState.js +100 -6
- package/src/renderers/common/nodes/NodeLibrary.js +95 -17
- package/src/renderers/common/nodes/NodeManager.js +852 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +84 -8
- package/src/renderers/common/nodes/NodeSampler.js +41 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +48 -3
- package/src/renderers/common/nodes/NodeUniform.js +285 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +81 -0
- package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
- package/src/renderers/shaders/DFGLUTData.js +49 -0
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
- package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -24
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
- package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +7 -11
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +5 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +154 -59
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +230 -181
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
- package/src/renderers/shaders/ShaderChunk.js +3 -3
- package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +14 -2
- package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +1 -2
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib.js +7 -5
- package/src/renderers/shaders/UniformsLib.js +2 -7
- package/src/renderers/shaders/UniformsUtils.js +21 -2
- package/src/renderers/webgl/WebGLAttributes.js +4 -0
- package/src/renderers/webgl/WebGLBackground.js +30 -5
- package/src/renderers/webgl/WebGLBindingStates.js +99 -27
- package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLCapabilities.js +7 -14
- package/src/renderers/webgl/WebGLEnvironments.js +228 -0
- package/src/renderers/webgl/WebGLExtensions.js +2 -25
- package/src/renderers/webgl/WebGLGeometries.js +10 -35
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLInfo.js +3 -1
- package/src/renderers/webgl/WebGLLights.js +18 -1
- package/src/renderers/webgl/WebGLMaterials.js +12 -0
- package/src/renderers/webgl/WebGLObjects.js +3 -1
- package/src/renderers/webgl/WebGLOutput.js +267 -0
- package/src/renderers/webgl/WebGLProgram.js +87 -148
- package/src/renderers/webgl/WebGLPrograms.js +53 -51
- package/src/renderers/webgl/WebGLRenderLists.js +15 -0
- package/src/renderers/webgl/WebGLShadowMap.js +204 -28
- package/src/renderers/webgl/WebGLState.js +88 -56
- package/src/renderers/webgl/WebGLTextures.js +293 -59
- package/src/renderers/webgl/WebGLUniforms.js +40 -3
- package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
- package/src/renderers/webgl/WebGLUtils.js +7 -5
- package/src/renderers/webgl-fallback/WebGLBackend.js +1416 -293
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +5 -10
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +785 -92
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +62 -1
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +3 -3
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +584 -20
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +468 -80
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +396 -0
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +72 -24
- package/src/renderers/webgpu/WebGPUBackend.js +1517 -428
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +31 -4
- package/src/renderers/webgpu/WebGPURenderer.js +55 -4
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +23 -16
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +37 -42
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +1335 -241
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +32 -4
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +144 -20
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +460 -116
- package/src/renderers/webgpu/utils/WebGPUConstants.js +17 -4
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +283 -69
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +225 -178
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +583 -191
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +310 -0
- package/src/renderers/webgpu/utils/WebGPUUtils.js +150 -28
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +52 -7
- package/src/renderers/webxr/WebXRManager.js +275 -15
- 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/CubeDepthTexture.js +76 -0
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +79 -2
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +59 -11
- package/src/textures/ExternalTexture.js +56 -0
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +106 -4
- package/src/textures/Texture.js +488 -6
- package/src/textures/VideoFrameTexture.js +72 -0
- package/src/textures/VideoTexture.js +78 -6
- package/src/utils.js +322 -3
- package/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
- package/examples/jsm/animation/MMDPhysics.js +0 -1406
- package/examples/jsm/cameras/CinematicCamera.js +0 -208
- package/examples/jsm/effects/PeppersGhostEffect.js +0 -153
- package/examples/jsm/exporters/MMDExporter.js +0 -217
- package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
- package/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/GLTFLoaderAnimationPointer.js +0 -729
- package/examples/jsm/loaders/MMDLoader.js +0 -2295
- package/examples/jsm/loaders/RGBMLoader.js +0 -1081
- package/examples/jsm/materials/MeshGouraudMaterial.js +0 -432
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -144
- package/examples/jsm/misc/Timer.js +0 -128
- package/examples/jsm/objects/InstancedPoints.js +0 -21
- package/examples/jsm/shaders/GodRaysShader.js +0 -321
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/src/materials/nodes/InstancedPointsNodeMaterial.js +0 -156
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -24
- package/src/nodes/accessors/SceneNode.js +0 -55
- package/src/nodes/code/ScriptableNode.js +0 -505
- package/src/nodes/code/ScriptableValueNode.js +0 -170
- package/src/nodes/core/CacheNode.js +0 -50
- package/src/nodes/core/UniformGroup.js +0 -13
- package/src/nodes/display/AfterImageNode.js +0 -158
- package/src/nodes/display/AnaglyphPassNode.js +0 -67
- package/src/nodes/display/AnamorphicNode.js +0 -151
- package/src/nodes/display/BlendMode.js +0 -54
- package/src/nodes/display/BloomNode.js +0 -341
- package/src/nodes/display/DenoiseNode.js +0 -204
- package/src/nodes/display/DepthOfFieldNode.js +0 -124
- package/src/nodes/display/DotScreenNode.js +0 -66
- package/src/nodes/display/FXAANode.js +0 -332
- package/src/nodes/display/FilmNode.js +0 -56
- package/src/nodes/display/GTAONode.js +0 -331
- package/src/nodes/display/GaussianBlurNode.js +0 -213
- package/src/nodes/display/Lut3DNode.js +0 -57
- package/src/nodes/display/MotionBlur.js +0 -25
- package/src/nodes/display/ParallaxBarrierPassNode.js +0 -58
- package/src/nodes/display/PixelationPassNode.js +0 -213
- package/src/nodes/display/PosterizeNode.js +0 -33
- package/src/nodes/display/RGBShiftNode.js +0 -53
- package/src/nodes/display/StereoCompositePassNode.js +0 -110
- package/src/nodes/display/TransitionNode.js +0 -80
- package/src/nodes/fog/FogExp2Node.js +0 -35
- package/src/nodes/fog/FogNode.js +0 -50
- package/src/nodes/fog/FogRangeNode.js +0 -36
- package/src/nodes/functions/BSDF/DFGApprox.js +0 -30
- package/src/nodes/utils/EquirectUVNode.js +0 -36
- package/src/nodes/utils/MatcapUVNode.js +0 -33
- package/src/nodes/utils/OscNode.js +0 -85
- package/src/nodes/utils/SpriteSheetUVNode.js +0 -45
- package/src/nodes/utils/TimerNode.js +0 -97
- package/src/nodes/utils/TriplanarTexturesNode.js +0 -64
- package/src/renderers/common/nodes/Nodes.js +0 -534
- package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
- package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -136
|
@@ -19,9 +19,11 @@ import {
|
|
|
19
19
|
/**
|
|
20
20
|
* Make a new DataTexture to store the descriptions of the curves.
|
|
21
21
|
*
|
|
22
|
-
* @
|
|
22
|
+
* @private
|
|
23
|
+
* @param {number} numberOfCurves - The number of curves needed to be described by this texture.
|
|
24
|
+
* @returns {DataTexture}
|
|
23
25
|
*/
|
|
24
|
-
|
|
26
|
+
function initSplineTexture( numberOfCurves = 1 ) {
|
|
25
27
|
|
|
26
28
|
const dataArray = new Uint16Array( TEXTURE_WIDTH * TEXTURE_HEIGHT * numberOfCurves * CHANNELS );
|
|
27
29
|
const dataTexture = new DataTexture(
|
|
@@ -43,13 +45,14 @@ export function initSplineTexture( numberOfCurves = 1 ) {
|
|
|
43
45
|
}
|
|
44
46
|
|
|
45
47
|
/**
|
|
46
|
-
* Write the curve description to the data texture
|
|
48
|
+
* Write the curve description to the data texture.
|
|
47
49
|
*
|
|
48
|
-
* @
|
|
49
|
-
* @param {
|
|
50
|
-
* @param {
|
|
50
|
+
* @private
|
|
51
|
+
* @param {DataTexture} texture - The data texture to write to.
|
|
52
|
+
* @param {Curve} splineCurve - The curve to describe.
|
|
53
|
+
* @param {number} offset - Which curve slot to write to.
|
|
51
54
|
*/
|
|
52
|
-
|
|
55
|
+
function updateSplineTexture( texture, splineCurve, offset = 0 ) {
|
|
53
56
|
|
|
54
57
|
const numberOfPoints = Math.floor( TEXTURE_WIDTH * ( TEXTURE_HEIGHT / 4 ) );
|
|
55
58
|
splineCurve.arcLengthDivisions = numberOfPoints / 2;
|
|
@@ -77,7 +80,6 @@ export function updateSplineTexture( texture, splineCurve, offset = 0 ) {
|
|
|
77
80
|
|
|
78
81
|
}
|
|
79
82
|
|
|
80
|
-
|
|
81
83
|
function setTextureValue( texture, index, x, y, z, o ) {
|
|
82
84
|
|
|
83
85
|
const image = texture.image;
|
|
@@ -91,11 +93,12 @@ function setTextureValue( texture, index, x, y, z, o ) {
|
|
|
91
93
|
}
|
|
92
94
|
|
|
93
95
|
/**
|
|
94
|
-
* Create a new set of uniforms for describing the curve modifier
|
|
96
|
+
* Create a new set of uniforms for describing the curve modifier.
|
|
95
97
|
*
|
|
96
|
-
* @param {
|
|
98
|
+
* @param {DataTexture} splineTexture - Which holds the curve description.
|
|
99
|
+
* @returns {Object} The uniforms object to be used in the shader.
|
|
97
100
|
*/
|
|
98
|
-
|
|
101
|
+
function getUniforms( splineTexture ) {
|
|
99
102
|
|
|
100
103
|
const uniforms = {
|
|
101
104
|
spineTexture: { value: splineTexture },
|
|
@@ -109,7 +112,7 @@ export function getUniforms( splineTexture ) {
|
|
|
109
112
|
|
|
110
113
|
}
|
|
111
114
|
|
|
112
|
-
|
|
115
|
+
function modifyShader( material, uniforms, numberOfCurves = 1 ) {
|
|
113
116
|
|
|
114
117
|
if ( material.__ok ) return;
|
|
115
118
|
material.__ok = true;
|
|
@@ -137,10 +140,10 @@ export function modifyShader( material, uniforms, numberOfCurves = 1 ) {
|
|
|
137
140
|
// chunk import moved in front of modified shader below
|
|
138
141
|
.replace( '#include <beginnormal_vertex>', '' )
|
|
139
142
|
|
|
140
|
-
// vec3 transformedNormal declaration
|
|
143
|
+
// vec3 transformedNormal declaration overridden below
|
|
141
144
|
.replace( '#include <defaultnormal_vertex>', '' )
|
|
142
145
|
|
|
143
|
-
// vec3 transformed declaration
|
|
146
|
+
// vec3 transformed declaration overridden below
|
|
144
147
|
.replace( '#include <begin_vertex>', '' )
|
|
145
148
|
|
|
146
149
|
// shader override
|
|
@@ -196,19 +199,26 @@ vec3 transformedNormal = normalMatrix * (basis * objectNormal);
|
|
|
196
199
|
}
|
|
197
200
|
|
|
198
201
|
/**
|
|
199
|
-
* A
|
|
202
|
+
* A modifier for making meshes bend around curves.
|
|
203
|
+
*
|
|
204
|
+
* This module can only be used with {@link WebGLRenderer}. When using {@link WebGPURenderer},
|
|
205
|
+
* import the class from `CurveModifierGPU.js`.
|
|
206
|
+
*
|
|
207
|
+
* @three_import import { Flow } from 'three/addons/modifiers/CurveModifier.js';
|
|
200
208
|
*/
|
|
201
209
|
export class Flow {
|
|
202
210
|
|
|
203
211
|
/**
|
|
204
|
-
*
|
|
205
|
-
*
|
|
212
|
+
* Constructs a new Flow instance.
|
|
213
|
+
*
|
|
214
|
+
* @param {Mesh} mesh - The mesh to clone and modify to bend around the curve.
|
|
215
|
+
* @param {number} numberOfCurves - The amount of space that should preallocated for additional curves.
|
|
206
216
|
*/
|
|
207
217
|
constructor( mesh, numberOfCurves = 1 ) {
|
|
208
218
|
|
|
209
219
|
const obj3D = mesh.clone();
|
|
210
|
-
const
|
|
211
|
-
const uniforms = getUniforms(
|
|
220
|
+
const splineTexture = initSplineTexture( numberOfCurves );
|
|
221
|
+
const uniforms = getUniforms( splineTexture );
|
|
212
222
|
obj3D.traverse( function ( child ) {
|
|
213
223
|
|
|
214
224
|
if (
|
|
@@ -245,22 +255,33 @@ export class Flow {
|
|
|
245
255
|
this.curveLengthArray = new Array( numberOfCurves );
|
|
246
256
|
|
|
247
257
|
this.object3D = obj3D;
|
|
248
|
-
this.
|
|
258
|
+
this.splineTexture = splineTexture;
|
|
249
259
|
this.uniforms = uniforms;
|
|
250
260
|
|
|
251
261
|
}
|
|
252
262
|
|
|
263
|
+
/**
|
|
264
|
+
* Updates the curve for the given curve index.
|
|
265
|
+
*
|
|
266
|
+
* @param {number} index - The curve index.
|
|
267
|
+
* @param {Curve} curve - The curve that should be used to bend the mesh.
|
|
268
|
+
*/
|
|
253
269
|
updateCurve( index, curve ) {
|
|
254
270
|
|
|
255
|
-
if ( index >= this.curveArray.length ) throw Error( 'Index out of range
|
|
271
|
+
if ( index >= this.curveArray.length ) throw Error( 'Flow: Index out of range.' );
|
|
256
272
|
const curveLength = curve.getLength();
|
|
257
273
|
this.uniforms.spineLength.value = curveLength;
|
|
258
274
|
this.curveLengthArray[ index ] = curveLength;
|
|
259
275
|
this.curveArray[ index ] = curve;
|
|
260
|
-
updateSplineTexture( this.
|
|
276
|
+
updateSplineTexture( this.splineTexture, curve, index );
|
|
261
277
|
|
|
262
278
|
}
|
|
263
279
|
|
|
280
|
+
/**
|
|
281
|
+
* Moves the mesh along the curve.
|
|
282
|
+
*
|
|
283
|
+
* @param {number} amount - The offset.
|
|
284
|
+
*/
|
|
264
285
|
moveAlongCurve( amount ) {
|
|
265
286
|
|
|
266
287
|
this.uniforms.pathOffset.value += amount;
|
|
@@ -268,19 +289,26 @@ export class Flow {
|
|
|
268
289
|
}
|
|
269
290
|
|
|
270
291
|
}
|
|
271
|
-
|
|
292
|
+
|
|
293
|
+
const _matrix = new Matrix4();
|
|
272
294
|
|
|
273
295
|
/**
|
|
274
|
-
*
|
|
296
|
+
* An instanced version of {@link Flow} for making meshes bend around curves, where the instances are placed on the curve.
|
|
297
|
+
*
|
|
298
|
+
* This module can only be used with {@link WebGLRenderer}.
|
|
299
|
+
*
|
|
300
|
+
* @augments Flow
|
|
301
|
+
* @three_import import { InstancedFlow } from 'three/addons/modifiers/CurveModifier.js';
|
|
275
302
|
*/
|
|
276
303
|
export class InstancedFlow extends Flow {
|
|
277
304
|
|
|
278
305
|
/**
|
|
306
|
+
* Constructs a new InstancedFlow instance.
|
|
279
307
|
*
|
|
280
|
-
* @param {number} count The number of instanced elements
|
|
281
|
-
* @param {number} curveCount The number of curves to preallocate for
|
|
282
|
-
* @param {Geometry} geometry The geometry to use for the instanced mesh
|
|
283
|
-
* @param {Material} material The material to use for the instanced mesh
|
|
308
|
+
* @param {number} count - The number of instanced elements.
|
|
309
|
+
* @param {number} curveCount - The number of curves to preallocate for.
|
|
310
|
+
* @param {Geometry} geometry - The geometry to use for the instanced mesh.
|
|
311
|
+
* @param {Material} material - The material to use for the instanced mesh.
|
|
284
312
|
*/
|
|
285
313
|
constructor( count, curveCount, geometry, material ) {
|
|
286
314
|
|
|
@@ -302,25 +330,25 @@ export class InstancedFlow extends Flow {
|
|
|
302
330
|
* The extra information about which curve and curve position is stored in the translation components of the matrix for the instanced objects
|
|
303
331
|
* This writes that information to the matrix and marks it as needing update.
|
|
304
332
|
*
|
|
305
|
-
* @param {number} index of
|
|
333
|
+
* @param {number} index - The index of tge instanced element to update.
|
|
306
334
|
*/
|
|
307
335
|
writeChanges( index ) {
|
|
308
336
|
|
|
309
|
-
|
|
337
|
+
_matrix.makeTranslation(
|
|
310
338
|
this.curveLengthArray[ this.whichCurve[ index ] ],
|
|
311
339
|
this.whichCurve[ index ],
|
|
312
340
|
this.offsets[ index ]
|
|
313
341
|
);
|
|
314
|
-
this.object3D.setMatrixAt( index,
|
|
342
|
+
this.object3D.setMatrixAt( index, _matrix );
|
|
315
343
|
this.object3D.instanceMatrix.needsUpdate = true;
|
|
316
344
|
|
|
317
345
|
}
|
|
318
346
|
|
|
319
347
|
/**
|
|
320
|
-
* Move an individual element along the curve by a specific amount
|
|
348
|
+
* Move an individual element along the curve by a specific amount.
|
|
321
349
|
*
|
|
322
|
-
* @param {number} index Which element to update
|
|
323
|
-
* @param {number} offset
|
|
350
|
+
* @param {number} index - Which element to update.
|
|
351
|
+
* @param {number} offset - The offset.
|
|
324
352
|
*/
|
|
325
353
|
moveIndividualAlongCurve( index, offset ) {
|
|
326
354
|
|
|
@@ -330,14 +358,14 @@ export class InstancedFlow extends Flow {
|
|
|
330
358
|
}
|
|
331
359
|
|
|
332
360
|
/**
|
|
333
|
-
* Select which curve to use for an element
|
|
361
|
+
* Select which curve to use for an element.
|
|
334
362
|
*
|
|
335
|
-
* @param {number} index
|
|
336
|
-
* @param {number} curveNo
|
|
363
|
+
* @param {number} index - The index of the instanced element to update.
|
|
364
|
+
* @param {number} curveNo - The index of the curve it should use.
|
|
337
365
|
*/
|
|
338
366
|
setCurve( index, curveNo ) {
|
|
339
367
|
|
|
340
|
-
if ( isNaN( curveNo ) ) throw Error( '
|
|
368
|
+
if ( isNaN( curveNo ) ) throw Error( 'InstancedFlow: Curve index being set is Not a Number (NaN).' );
|
|
341
369
|
this.whichCurve[ index ] = curveNo;
|
|
342
370
|
this.writeChanges( index );
|
|
343
371
|
|
|
@@ -19,9 +19,11 @@ import { modelWorldMatrix, normalLocal, vec2, vec3, vec4, mat3, varyingProperty,
|
|
|
19
19
|
/**
|
|
20
20
|
* Make a new DataTexture to store the descriptions of the curves.
|
|
21
21
|
*
|
|
22
|
-
* @
|
|
22
|
+
* @private
|
|
23
|
+
* @param {number} [numberOfCurves=1] - The number of curves needed to be described by this texture.
|
|
24
|
+
* @returns {DataTexture} The new data texture.
|
|
23
25
|
*/
|
|
24
|
-
|
|
26
|
+
function initSplineTexture( numberOfCurves = 1 ) {
|
|
25
27
|
|
|
26
28
|
const dataArray = new Uint16Array( TEXTURE_WIDTH * TEXTURE_HEIGHT * numberOfCurves * CHANNELS );
|
|
27
29
|
const dataTexture = new DataTexture(
|
|
@@ -43,13 +45,14 @@ export function initSplineTexture( numberOfCurves = 1 ) {
|
|
|
43
45
|
}
|
|
44
46
|
|
|
45
47
|
/**
|
|
46
|
-
* Write the curve description to the data texture
|
|
48
|
+
* Write the curve description to the data texture.
|
|
47
49
|
*
|
|
48
|
-
* @
|
|
49
|
-
* @param {
|
|
50
|
-
* @param {
|
|
50
|
+
* @private
|
|
51
|
+
* @param {DataTexture} texture - The data texture to write to.
|
|
52
|
+
* @param {Curve} splineCurve - The curve to describe.
|
|
53
|
+
* @param {number} [offset=0] - Which curve slot to write to.
|
|
51
54
|
*/
|
|
52
|
-
|
|
55
|
+
function updateSplineTexture( texture, splineCurve, offset = 0 ) {
|
|
53
56
|
|
|
54
57
|
const numberOfPoints = Math.floor( TEXTURE_WIDTH * ( TEXTURE_HEIGHT / 4 ) );
|
|
55
58
|
splineCurve.arcLengthDivisions = numberOfPoints / 2;
|
|
@@ -92,11 +95,13 @@ function setTextureValue( texture, index, x, y, z, o ) {
|
|
|
92
95
|
}
|
|
93
96
|
|
|
94
97
|
/**
|
|
95
|
-
* Create a new set of uniforms for describing the curve modifier
|
|
98
|
+
* Create a new set of uniforms for describing the curve modifier.
|
|
96
99
|
*
|
|
97
|
-
* @
|
|
100
|
+
* @private
|
|
101
|
+
* @param {DataTexture} splineTexture - Which holds the curve description.
|
|
102
|
+
* @returns {Object} The uniforms object.
|
|
98
103
|
*/
|
|
99
|
-
|
|
104
|
+
function getUniforms( splineTexture ) {
|
|
100
105
|
|
|
101
106
|
return {
|
|
102
107
|
spineTexture: splineTexture,
|
|
@@ -109,7 +114,7 @@ export function getUniforms( splineTexture ) {
|
|
|
109
114
|
|
|
110
115
|
}
|
|
111
116
|
|
|
112
|
-
|
|
117
|
+
function modifyShader( material, uniforms, numberOfCurves ) {
|
|
113
118
|
|
|
114
119
|
const spineTexture = uniforms.spineTexture;
|
|
115
120
|
|
|
@@ -155,19 +160,26 @@ export function modifyShader( material, uniforms, numberOfCurves ) {
|
|
|
155
160
|
}
|
|
156
161
|
|
|
157
162
|
/**
|
|
158
|
-
* A
|
|
163
|
+
* A modifier for making meshes bend around curves.
|
|
164
|
+
*
|
|
165
|
+
* This module can only be used with {@link WebGPURenderer}. When using {@link WebGLRenderer},
|
|
166
|
+
* import the class from `CurveModifier.js`.
|
|
167
|
+
*
|
|
168
|
+
* @three_import import { Flow } from 'three/addons/modifiers/CurveModifierGPU.js';
|
|
159
169
|
*/
|
|
160
170
|
export class Flow {
|
|
161
171
|
|
|
162
172
|
/**
|
|
163
|
-
*
|
|
164
|
-
*
|
|
173
|
+
* Constructs a new Flow instance.
|
|
174
|
+
*
|
|
175
|
+
* @param {Mesh} mesh - The mesh to clone and modify to bend around the curve.
|
|
176
|
+
* @param {number} numberOfCurves - The amount of space that should preallocated for additional curves.
|
|
165
177
|
*/
|
|
166
178
|
constructor( mesh, numberOfCurves = 1 ) {
|
|
167
179
|
|
|
168
180
|
const obj3D = mesh.clone();
|
|
169
|
-
const
|
|
170
|
-
const uniforms = getUniforms(
|
|
181
|
+
const splineTexture = initSplineTexture( numberOfCurves );
|
|
182
|
+
const uniforms = getUniforms( splineTexture );
|
|
171
183
|
|
|
172
184
|
obj3D.traverse( function ( child ) {
|
|
173
185
|
|
|
@@ -205,14 +217,20 @@ export class Flow {
|
|
|
205
217
|
this.curveLengthArray = new Array( numberOfCurves );
|
|
206
218
|
|
|
207
219
|
this.object3D = obj3D;
|
|
208
|
-
this.
|
|
220
|
+
this.splineTexture = splineTexture;
|
|
209
221
|
this.uniforms = uniforms;
|
|
210
222
|
|
|
211
223
|
}
|
|
212
224
|
|
|
225
|
+
/**
|
|
226
|
+
* Updates the curve for the given curve index.
|
|
227
|
+
*
|
|
228
|
+
* @param {number} index - The curve index.
|
|
229
|
+
* @param {Curve} curve - The curve that should be used to bend the mesh.
|
|
230
|
+
*/
|
|
213
231
|
updateCurve( index, curve ) {
|
|
214
232
|
|
|
215
|
-
if ( index >= this.curveArray.length ) throw Error( 'Index out of range
|
|
233
|
+
if ( index >= this.curveArray.length ) throw Error( 'Flow: Index out of range.' );
|
|
216
234
|
|
|
217
235
|
const curveLength = curve.getLength();
|
|
218
236
|
|
|
@@ -220,10 +238,15 @@ export class Flow {
|
|
|
220
238
|
this.curveLengthArray[ index ] = curveLength;
|
|
221
239
|
this.curveArray[ index ] = curve;
|
|
222
240
|
|
|
223
|
-
updateSplineTexture( this.
|
|
241
|
+
updateSplineTexture( this.splineTexture, curve, index );
|
|
224
242
|
|
|
225
243
|
}
|
|
226
244
|
|
|
245
|
+
/**
|
|
246
|
+
* Moves the mesh along the curve.
|
|
247
|
+
*
|
|
248
|
+
* @param {number} amount - The offset.
|
|
249
|
+
*/
|
|
227
250
|
moveAlongCurve( amount ) {
|
|
228
251
|
|
|
229
252
|
this.uniforms.pathOffset += amount;
|
|
@@ -9,8 +9,28 @@ const _A = new Vector3();
|
|
|
9
9
|
const _B = new Vector3();
|
|
10
10
|
const _C = new Vector3();
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* The modifier can be used to split faces at sharp edges. This allows to compute
|
|
14
|
+
* normals without smoothing the edges which can lead to an improved visual result.
|
|
15
|
+
*
|
|
16
|
+
* ```js
|
|
17
|
+
* const modifier = new EdgeSplitModifier();
|
|
18
|
+
* geometry = modifier.modify( geometry, Math.PI * 0.4 );
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @three_import import { EdgeSplitModifier } from 'three/addons/modifiers/EdgeSplitModifier.js';
|
|
22
|
+
*/
|
|
12
23
|
class EdgeSplitModifier {
|
|
13
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Returns a new, modified version of the given geometry by applying an edge-split operation.
|
|
27
|
+
* Please note that the resulting geometry is always indexed.
|
|
28
|
+
*
|
|
29
|
+
* @param {BufferGeometry} geometry - The geometry to modify.
|
|
30
|
+
* @param {number} cutOffAngle - The cut off angle in radians.
|
|
31
|
+
* @param {boolean} [tryKeepNormals=true] - Whether to try to keep normals or not.
|
|
32
|
+
* @return {BufferGeometry} A new, modified geometry.
|
|
33
|
+
*/
|
|
14
34
|
modify( geometry, cutOffAngle, tryKeepNormals = true ) {
|
|
15
35
|
|
|
16
36
|
function computeNormals() {
|
|
@@ -8,18 +8,32 @@ import {
|
|
|
8
8
|
} from 'three';
|
|
9
9
|
import * as BufferGeometryUtils from '../utils/BufferGeometryUtils.js';
|
|
10
10
|
|
|
11
|
-
/**
|
|
12
|
-
* Simplification Geometry Modifier
|
|
13
|
-
* - based on code and technique
|
|
14
|
-
* - by Stan Melax in 1998
|
|
15
|
-
* - Progressive Mesh type Polygon Reduction Algorithm
|
|
16
|
-
* - http://www.melax.com/polychop/
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
11
|
const _cb = new Vector3(), _ab = new Vector3();
|
|
20
12
|
|
|
13
|
+
/**
|
|
14
|
+
* This class can be used to modify a geometry by simplifying it. A typical use
|
|
15
|
+
* case for such a modifier is automatic LOD generation.
|
|
16
|
+
*
|
|
17
|
+
* The implementation is based on [Progressive Mesh type Polygon Reduction Algorithm](https://web.archive.org/web/20230610044040/http://www.melax.com/polychop/)
|
|
18
|
+
* by Stan Melax in 1998.
|
|
19
|
+
*
|
|
20
|
+
* ```js
|
|
21
|
+
* const modifier = new SimplifyModifier();
|
|
22
|
+
* geometry = modifier.modify( geometry );
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @three_import import { SimplifyModifier } from 'three/addons/modifiers/SimplifyModifier.js';
|
|
26
|
+
*/
|
|
21
27
|
class SimplifyModifier {
|
|
22
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Returns a new, modified version of the given geometry by applying a simplification.
|
|
31
|
+
* Please note that the resulting geometry is always non-indexed.
|
|
32
|
+
*
|
|
33
|
+
* @param {BufferGeometry} geometry - The geometry to modify.
|
|
34
|
+
* @param {number} count - The number of vertices to remove.
|
|
35
|
+
* @return {BufferGeometry} A new, modified geometry.
|
|
36
|
+
*/
|
|
23
37
|
modify( geometry, count ) {
|
|
24
38
|
|
|
25
39
|
geometry = geometry.clone();
|
|
@@ -29,7 +43,7 @@ class SimplifyModifier {
|
|
|
29
43
|
delete geometry.morphAttributes.normal;
|
|
30
44
|
const attributes = geometry.attributes;
|
|
31
45
|
|
|
32
|
-
// this modifier can only process indexed and non-indexed
|
|
46
|
+
// this modifier can only process indexed and non-indexed geometries with at least a position attribute
|
|
33
47
|
|
|
34
48
|
for ( const name in attributes ) {
|
|
35
49
|
|
|
@@ -584,7 +598,7 @@ class Vertex {
|
|
|
584
598
|
|
|
585
599
|
// these will be computed in computeEdgeCostAtVertex()
|
|
586
600
|
this.collapseCost = 0; // cost of collapsing this vertex, the less the better. aka objdist
|
|
587
|
-
this.collapseNeighbor = null; // best
|
|
601
|
+
this.collapseNeighbor = null; // best candidate for collapsing
|
|
588
602
|
|
|
589
603
|
}
|
|
590
604
|
|
|
@@ -7,18 +7,51 @@ import {
|
|
|
7
7
|
} from 'three';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
10
|
+
* This class can be used to modify a geometry by breaking its edges if they
|
|
11
|
+
* are longer than maximum length.
|
|
12
|
+
*
|
|
13
|
+
* ```js
|
|
14
|
+
* const modifier = new TessellateModifier( 8, 6 );
|
|
15
|
+
* geometry = modifier.modify( geometry );
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @three_import import { TessellateModifier } from 'three/addons/modifiers/TessellateModifier.js';
|
|
11
19
|
*/
|
|
12
|
-
|
|
13
20
|
class TessellateModifier {
|
|
14
21
|
|
|
22
|
+
/**
|
|
23
|
+
* Constructs a new Tessellate modifier.
|
|
24
|
+
*
|
|
25
|
+
* @param {number} [maxEdgeLength=0.1] - The maximum edge length.
|
|
26
|
+
* @param {number} [maxIterations=6] - The number of iterations.
|
|
27
|
+
*/
|
|
15
28
|
constructor( maxEdgeLength = 0.1, maxIterations = 6 ) {
|
|
16
29
|
|
|
30
|
+
/**
|
|
31
|
+
* The maximum edge length.
|
|
32
|
+
*
|
|
33
|
+
* @type {number}
|
|
34
|
+
* @default 0.1
|
|
35
|
+
*/
|
|
17
36
|
this.maxEdgeLength = maxEdgeLength;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* The maximum edge length.
|
|
40
|
+
*
|
|
41
|
+
* @type {number}
|
|
42
|
+
* @default 0.1
|
|
43
|
+
*/
|
|
18
44
|
this.maxIterations = maxIterations;
|
|
19
45
|
|
|
20
46
|
}
|
|
21
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Returns a new, modified version of the given geometry by applying a tesselation.
|
|
50
|
+
* Please note that the resulting geometry is always non-indexed.
|
|
51
|
+
*
|
|
52
|
+
* @param {BufferGeometry} geometry - The geometry to modify.
|
|
53
|
+
* @return {BufferGeometry} A new, modified geometry.
|
|
54
|
+
*/
|
|
22
55
|
modify( geometry ) {
|
|
23
56
|
|
|
24
57
|
if ( geometry.index !== null ) {
|
|
@@ -1,14 +1,33 @@
|
|
|
1
1
|
import { Mesh, MeshBasicMaterial, SphereGeometry, Vector3 } from 'three';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* A ground-projected skybox.
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* A ground-projected skybox.
|
|
5
|
+
*
|
|
6
|
+
* By default the object is centered at the camera, so it is often helpful to set
|
|
7
|
+
* `skybox.position.y = height` to put the ground at the origin.
|
|
8
|
+
*
|
|
9
|
+
* ```js
|
|
10
|
+
* const height = 15, radius = 100;
|
|
11
|
+
*
|
|
12
|
+
* const skybox = new GroundedSkybox( envMap, height, radius );
|
|
13
|
+
* skybox.position.y = height;
|
|
14
|
+
* scene.add( skybox );
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* @augments Mesh
|
|
18
|
+
* @three_import import { GroundedSkybox } from 'three/addons/objects/GroundedSkybox.js';
|
|
8
19
|
*/
|
|
9
|
-
|
|
10
20
|
class GroundedSkybox extends Mesh {
|
|
11
21
|
|
|
22
|
+
/**
|
|
23
|
+
* Constructs a new ground-projected skybox.
|
|
24
|
+
*
|
|
25
|
+
* @param {Texture} map - The environment map to use.
|
|
26
|
+
* @param {number} height - The height is how far the camera that took the photo was above the ground.
|
|
27
|
+
* A larger value will magnify the downward part of the image.
|
|
28
|
+
* @param {number} radius - The radius of the skybox. Must be large enough to ensure the scene's camera stays inside.
|
|
29
|
+
* @param {number} [resolution=128] - The geometry resolution of the skybox.
|
|
30
|
+
*/
|
|
12
31
|
constructor( map, height, radius, resolution = 128 ) {
|
|
13
32
|
|
|
14
33
|
if ( height <= 0 || radius <= 0 || resolution <= 0 ) {
|
|
@@ -18,7 +37,7 @@ class GroundedSkybox extends Mesh {
|
|
|
18
37
|
}
|
|
19
38
|
|
|
20
39
|
const geometry = new SphereGeometry( radius, 2 * resolution, resolution );
|
|
21
|
-
geometry.scale( 1, 1, -1 );
|
|
40
|
+
geometry.scale( 1, 1, - 1 );
|
|
22
41
|
|
|
23
42
|
const pos = geometry.getAttribute( 'position' );
|
|
24
43
|
const tmp = new Vector3();
|
|
@@ -15,16 +15,60 @@ import {
|
|
|
15
15
|
Vector4
|
|
16
16
|
} from 'three';
|
|
17
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Creates a simulated lens flare that tracks a light.
|
|
20
|
+
*
|
|
21
|
+
* Note that this class can only be used with {@link WebGLRenderer}.
|
|
22
|
+
* When using {@link WebGPURenderer}, use {@link LensflareMesh}.
|
|
23
|
+
*
|
|
24
|
+
* ```js
|
|
25
|
+
* const light = new THREE.PointLight( 0xffffff, 1.5, 2000 );
|
|
26
|
+
*
|
|
27
|
+
* const lensflare = new Lensflare();
|
|
28
|
+
* lensflare.addElement( new LensflareElement( textureFlare0, 512, 0 ) );
|
|
29
|
+
* lensflare.addElement( new LensflareElement( textureFlare1, 512, 0 ) );
|
|
30
|
+
* lensflare.addElement( new LensflareElement( textureFlare2, 60, 0.6 ) );
|
|
31
|
+
*
|
|
32
|
+
* light.add( lensflare );
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* @augments Mesh
|
|
36
|
+
* @three_import import { Lensflare } from 'three/addons/objects/Lensflare.js';
|
|
37
|
+
*/
|
|
18
38
|
class Lensflare extends Mesh {
|
|
19
39
|
|
|
40
|
+
/**
|
|
41
|
+
* Constructs a new lensflare.
|
|
42
|
+
*/
|
|
20
43
|
constructor() {
|
|
21
44
|
|
|
22
45
|
super( Lensflare.Geometry, new MeshBasicMaterial( { opacity: 0, transparent: true } ) );
|
|
23
46
|
|
|
47
|
+
/**
|
|
48
|
+
* This flag can be used for type testing.
|
|
49
|
+
*
|
|
50
|
+
* @type {boolean}
|
|
51
|
+
* @readonly
|
|
52
|
+
* @default true
|
|
53
|
+
*/
|
|
24
54
|
this.isLensflare = true;
|
|
25
55
|
|
|
26
56
|
this.type = 'Lensflare';
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Overwritten to disable view-frustum culling by default.
|
|
60
|
+
*
|
|
61
|
+
* @type {boolean}
|
|
62
|
+
* @default false
|
|
63
|
+
*/
|
|
27
64
|
this.frustumCulled = false;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Overwritten to make sure lensflares a rendered last.
|
|
68
|
+
*
|
|
69
|
+
* @type {number}
|
|
70
|
+
* @default Infinity
|
|
71
|
+
*/
|
|
28
72
|
this.renderOrder = Infinity;
|
|
29
73
|
|
|
30
74
|
//
|
|
@@ -149,6 +193,11 @@ class Lensflare extends Mesh {
|
|
|
149
193
|
|
|
150
194
|
const mesh2 = new Mesh( geometry, material2 );
|
|
151
195
|
|
|
196
|
+
/**
|
|
197
|
+
* Adds the given lensflare element to this instance.
|
|
198
|
+
*
|
|
199
|
+
* @param {LensflareElement} element - The element to add.
|
|
200
|
+
*/
|
|
152
201
|
this.addElement = function ( element ) {
|
|
153
202
|
|
|
154
203
|
elements.push( element );
|
|
@@ -263,6 +312,10 @@ class Lensflare extends Mesh {
|
|
|
263
312
|
|
|
264
313
|
};
|
|
265
314
|
|
|
315
|
+
/**
|
|
316
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
317
|
+
* method whenever this instance is no longer used in your app.
|
|
318
|
+
*/
|
|
266
319
|
this.dispose = function () {
|
|
267
320
|
|
|
268
321
|
material1a.dispose();
|
|
@@ -284,15 +337,54 @@ class Lensflare extends Mesh {
|
|
|
284
337
|
|
|
285
338
|
}
|
|
286
339
|
|
|
287
|
-
|
|
288
|
-
|
|
340
|
+
/**
|
|
341
|
+
* Represents a single flare that can be added to a {@link Lensflare} container.
|
|
342
|
+
*
|
|
343
|
+
* @three_import import { LensflareElement } from 'three/addons/objects/Lensflare.js';
|
|
344
|
+
*/
|
|
289
345
|
class LensflareElement {
|
|
290
346
|
|
|
347
|
+
/**
|
|
348
|
+
* Constructs a new lensflare element.
|
|
349
|
+
*
|
|
350
|
+
* @param {Texture} texture - The flare's texture.
|
|
351
|
+
* @param {number} [size=1] - The size in pixels.
|
|
352
|
+
* @param {number} [distance=0] - The normalized distance (`[0,1]`) from the light source.
|
|
353
|
+
* A value of `0` means the flare is located at light source.
|
|
354
|
+
* @param {Color} [color] - The flare's color
|
|
355
|
+
*/
|
|
291
356
|
constructor( texture, size = 1, distance = 0, color = new Color( 0xffffff ) ) {
|
|
292
357
|
|
|
358
|
+
/**
|
|
359
|
+
* The flare's texture.
|
|
360
|
+
*
|
|
361
|
+
* @type {Texture}
|
|
362
|
+
*/
|
|
293
363
|
this.texture = texture;
|
|
364
|
+
|
|
365
|
+
/**
|
|
366
|
+
* The size in pixels.
|
|
367
|
+
*
|
|
368
|
+
* @type {number}
|
|
369
|
+
* @default 1
|
|
370
|
+
*/
|
|
294
371
|
this.size = size;
|
|
372
|
+
|
|
373
|
+
/**
|
|
374
|
+
* The normalized distance (`[0,1]`) from the light source.
|
|
375
|
+
* A value of `0` means the flare is located at light source.
|
|
376
|
+
*
|
|
377
|
+
* @type {number}
|
|
378
|
+
* @default 0
|
|
379
|
+
*/
|
|
295
380
|
this.distance = distance;
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* The flare's color
|
|
384
|
+
*
|
|
385
|
+
* @type {Color}
|
|
386
|
+
* @default (1,1,1)
|
|
387
|
+
*/
|
|
296
388
|
this.color = color;
|
|
297
389
|
|
|
298
390
|
}
|