super-three 0.179.0 → 0.184.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 +3 -4
- package/build/three.cjs +14522 -12207
- package/build/three.core.js +12005 -10954
- package/build/three.core.min.js +2 -2
- package/build/three.module.js +2270 -1005
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +63 -18
- package/build/three.tsl.min.js +2 -2
- package/build/three.webgpu.js +16573 -7890
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +16533 -7888
- 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 +12 -4
- package/examples/jsm/animation/CCDIKSolver.js +8 -4
- package/examples/jsm/controls/ArcballControls.js +15 -12
- package/examples/jsm/controls/DragControls.js +9 -59
- package/examples/jsm/controls/FirstPersonControls.js +61 -57
- package/examples/jsm/controls/FlyControls.js +5 -1
- package/examples/jsm/controls/MapControls.js +55 -1
- package/examples/jsm/controls/OrbitControls.js +113 -10
- package/examples/jsm/controls/PointerLockControls.js +2 -10
- package/examples/jsm/controls/TrackballControls.js +9 -9
- package/examples/jsm/controls/TransformControls.js +35 -3
- package/examples/jsm/csm/CSM.js +2 -1
- package/examples/jsm/csm/CSMShadowNode.js +6 -2
- package/examples/jsm/effects/AnaglyphEffect.js +102 -7
- package/examples/jsm/effects/AsciiEffect.js +8 -8
- package/examples/jsm/environments/ColorEnvironment.js +59 -0
- package/examples/jsm/environments/RoomEnvironment.js +3 -0
- package/examples/jsm/exporters/DRACOExporter.js +2 -2
- package/examples/jsm/exporters/EXRExporter.js +2 -2
- package/examples/jsm/exporters/GLTFExporter.js +185 -34
- package/examples/jsm/exporters/KTX2Exporter.js +4 -2
- package/examples/jsm/exporters/PLYExporter.js +1 -1
- package/examples/jsm/exporters/USDZExporter.js +31 -5
- package/examples/jsm/geometries/DecalGeometry.js +3 -3
- package/examples/jsm/geometries/ParametricGeometry.js +1 -1
- package/examples/jsm/geometries/TeapotGeometry.js +2 -2
- package/examples/jsm/geometries/TextGeometry.js +21 -2
- package/examples/jsm/gpgpu/BitonicSort.js +715 -0
- package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
- package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
- package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
- package/examples/jsm/helpers/ViewHelper.js +110 -13
- package/examples/jsm/inspector/Extension.js +13 -0
- package/examples/jsm/inspector/Inspector.js +542 -0
- package/examples/jsm/inspector/RendererInspector.js +425 -0
- package/examples/jsm/inspector/extensions/extensions.json +6 -0
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
- package/examples/jsm/inspector/tabs/Console.js +238 -0
- package/examples/jsm/inspector/tabs/Memory.js +128 -0
- package/examples/jsm/inspector/tabs/Parameters.js +380 -0
- package/examples/jsm/inspector/tabs/Performance.js +268 -0
- package/examples/jsm/inspector/tabs/Settings.js +264 -0
- package/examples/jsm/inspector/tabs/Timeline.js +1611 -0
- package/examples/jsm/inspector/tabs/Viewer.js +268 -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 +2072 -0
- package/examples/jsm/inspector/ui/Style.js +1667 -0
- package/examples/jsm/inspector/ui/Tab.js +265 -0
- package/examples/jsm/inspector/ui/Values.js +476 -0
- package/examples/jsm/inspector/ui/utils.js +69 -0
- package/examples/jsm/interaction/InteractionManager.js +226 -0
- package/examples/jsm/interactive/HTMLMesh.js +6 -10
- package/examples/jsm/interactive/InteractiveGroup.js +1 -1
- package/examples/jsm/interactive/SelectionBox.js +30 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
- package/examples/jsm/lighting/DynamicLighting.js +82 -0
- package/examples/jsm/lighting/LightProbeGrid.js +651 -0
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/lines/Line2.js +3 -3
- package/examples/jsm/lines/LineGeometry.js +1 -1
- package/examples/jsm/lines/LineMaterial.js +7 -1
- package/examples/jsm/lines/LineSegments2.js +2 -2
- package/examples/jsm/lines/Wireframe.js +2 -2
- package/examples/jsm/lines/WireframeGeometry2.js +1 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
- package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
- package/examples/jsm/loaders/3DMLoader.js +5 -4
- package/examples/jsm/loaders/3MFLoader.js +3 -3
- package/examples/jsm/loaders/AMFLoader.js +2 -2
- package/examples/jsm/loaders/ColladaLoader.js +27 -4029
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -22
- package/examples/jsm/loaders/EXRLoader.js +692 -53
- package/examples/jsm/loaders/FBXLoader.js +237 -39
- package/examples/jsm/loaders/FontLoader.js +23 -5
- package/examples/jsm/loaders/GCodeLoader.js +34 -8
- package/examples/jsm/loaders/GLTFLoader.js +159 -185
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
- package/examples/jsm/loaders/HDRLoader.js +485 -0
- package/examples/jsm/loaders/KMZLoader.js +5 -5
- package/examples/jsm/loaders/KTX2Loader.js +162 -53
- package/examples/jsm/loaders/KTXLoader.js +2 -2
- package/examples/jsm/loaders/LDrawLoader.js +41 -50
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
- package/examples/jsm/loaders/LWOLoader.js +9 -41
- package/examples/jsm/loaders/MaterialXLoader.js +22 -5
- package/examples/jsm/loaders/NRRDLoader.js +2 -2
- package/examples/jsm/loaders/OBJLoader.js +1 -1
- package/examples/jsm/loaders/PCDLoader.js +4 -2
- package/examples/jsm/loaders/PDBLoader.js +1 -1
- package/examples/jsm/loaders/RGBELoader.js +7 -473
- package/examples/jsm/loaders/SVGLoader.js +4 -4
- package/examples/jsm/loaders/TDSLoader.js +0 -2
- package/examples/jsm/loaders/TGALoader.js +0 -2
- package/examples/jsm/loaders/TTFLoader.js +4 -4
- package/examples/jsm/loaders/USDLoader.js +100 -40
- package/examples/jsm/loaders/UltraHDRLoader.js +287 -162
- package/examples/jsm/loaders/VOXLoader.js +660 -117
- package/examples/jsm/loaders/VRMLLoader.js +79 -2
- package/examples/jsm/loaders/VTKLoader.js +42 -25
- package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
- package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
- package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
- package/examples/jsm/loaders/usd/USDAParser.js +450 -363
- package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
- package/examples/jsm/loaders/usd/USDComposer.js +4594 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
- package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
- package/examples/jsm/math/ColorSpaces.js +19 -1
- package/examples/jsm/math/ConvexHull.js +3 -3
- package/examples/jsm/math/ImprovedNoise.js +1 -1
- package/examples/jsm/math/Lut.js +2 -2
- package/examples/jsm/math/Octree.js +131 -1
- package/examples/jsm/math/SimplexNoise.js +1 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
- package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
- package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
- package/examples/jsm/misc/RollerCoaster.js +42 -4
- package/examples/jsm/misc/TubePainter.js +383 -40
- package/examples/jsm/misc/Volume.js +1 -2
- package/examples/jsm/misc/VolumeSlice.js +0 -1
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/modifiers/TessellateModifier.js +1 -1
- package/examples/jsm/objects/LensflareMesh.js +1 -1
- package/examples/jsm/objects/Reflector.js +73 -25
- package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
- package/examples/jsm/objects/Sky.js +91 -7
- package/examples/jsm/objects/SkyMesh.js +151 -17
- package/examples/jsm/objects/Water.js +7 -6
- package/examples/jsm/objects/Water2.js +5 -3
- package/examples/jsm/objects/WaterMesh.js +11 -13
- package/examples/jsm/physics/AmmoPhysics.js +12 -7
- package/examples/jsm/physics/JoltPhysics.js +10 -6
- package/examples/jsm/physics/RapierPhysics.js +9 -5
- package/examples/jsm/postprocessing/EffectComposer.js +7 -5
- package/examples/jsm/postprocessing/GlitchPass.js +2 -2
- package/examples/jsm/postprocessing/OutlinePass.js +1 -1
- package/examples/jsm/postprocessing/OutputPass.js +9 -0
- package/examples/jsm/postprocessing/RenderPass.js +10 -0
- package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
- package/examples/jsm/postprocessing/SSRPass.js +37 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +56 -24
- package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
- package/examples/jsm/renderers/CSS3DRenderer.js +8 -7
- package/examples/jsm/renderers/Projector.js +246 -28
- package/examples/jsm/renderers/SVGRenderer.js +175 -61
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
- package/examples/jsm/shaders/AfterimageShader.js +1 -1
- package/examples/jsm/shaders/BleachBypassShader.js +1 -1
- package/examples/jsm/shaders/BokehShader.js +1 -1
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/DotScreenShader.js +1 -1
- package/examples/jsm/shaders/FocusShader.js +1 -1
- package/examples/jsm/shaders/GTAOShader.js +21 -8
- package/examples/jsm/shaders/HalftoneShader.js +12 -1
- package/examples/jsm/shaders/KaleidoShader.js +1 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +8 -4
- package/examples/jsm/shaders/SAOShader.js +17 -4
- package/examples/jsm/shaders/SSAOShader.js +11 -1
- package/examples/jsm/shaders/SSRShader.js +7 -6
- package/examples/jsm/shaders/SepiaShader.js +1 -1
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
- package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +3 -5
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +44 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +85 -25
- package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
- package/examples/jsm/transpiler/TSLEncoder.js +52 -10
- package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
- package/examples/jsm/transpiler/WGSLEncoder.js +51 -0
- package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +36 -24
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
- package/examples/jsm/tsl/display/AnamorphicNode.js +40 -5
- package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
- package/examples/jsm/tsl/display/BloomNode.js +23 -9
- package/examples/jsm/tsl/display/CRT.js +150 -0
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +5 -37
- package/examples/jsm/tsl/display/DenoiseNode.js +3 -1
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
- package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
- package/examples/jsm/tsl/display/FSR1Node.js +477 -0
- package/examples/jsm/tsl/display/FXAANode.js +2 -2
- package/examples/jsm/tsl/display/GTAONode.js +59 -9
- package/examples/jsm/tsl/display/GaussianBlurNode.js +68 -35
- package/examples/jsm/tsl/display/GodraysNode.js +615 -0
- package/examples/jsm/tsl/display/LensflareNode.js +1 -1
- package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
- package/examples/jsm/tsl/display/OutlineNode.js +81 -20
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
- package/examples/jsm/tsl/display/PixelationPassNode.js +7 -6
- package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
- package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
- package/examples/jsm/tsl/display/SMAANode.js +2 -2
- package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
- package/examples/jsm/tsl/display/SSGINode.js +638 -0
- package/examples/jsm/tsl/display/SSRNode.js +186 -69
- package/examples/jsm/tsl/display/SSSNode.js +490 -0
- package/examples/jsm/tsl/display/Shape.js +29 -0
- package/examples/jsm/tsl/display/SharpenNode.js +283 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
- package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
- package/examples/jsm/tsl/display/TAAUNode.js +835 -0
- package/examples/jsm/tsl/display/TRAANode.js +381 -75
- package/examples/jsm/tsl/display/TransitionNode.js +1 -1
- 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 +16 -18
- package/examples/jsm/tsl/display/radialBlur.js +68 -0
- package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +21 -1
- package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
- package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
- package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
- package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
- package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
- package/examples/jsm/tsl/math/Bayer.js +53 -3
- package/examples/jsm/utils/BufferGeometryUtils.js +3 -4
- package/examples/jsm/utils/ColorUtils.js +76 -0
- package/examples/jsm/utils/LDrawUtils.js +1 -1
- package/examples/jsm/utils/ShadowMapViewer.js +24 -10
- package/examples/jsm/utils/ShadowMapViewerGPU.js +13 -6
- package/examples/jsm/utils/SkeletonUtils.js +14 -8
- package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
- package/examples/jsm/webxr/OculusHandModel.js +1 -1
- package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
- package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
- package/examples/jsm/webxr/XRHandModelFactory.js +4 -7
- package/package.json +27 -38
- package/src/Three.Core.js +7 -3
- package/src/Three.TSL.js +61 -16
- package/src/Three.WebGPU.Nodes.js +7 -0
- package/src/Three.WebGPU.js +11 -0
- package/src/Three.js +1 -0
- package/src/animation/AnimationAction.js +12 -2
- package/src/animation/AnimationClip.js +21 -5
- package/src/animation/AnimationMixer.js +9 -3
- package/src/animation/AnimationObjectGroup.js +2 -1
- package/src/animation/AnimationUtils.js +1 -12
- package/src/animation/KeyframeTrack.js +54 -14
- package/src/animation/PropertyBinding.js +12 -11
- package/src/animation/PropertyMixer.js +4 -4
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
- package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
- package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
- package/src/audio/Audio.js +11 -10
- package/src/audio/AudioContext.js +2 -2
- package/src/audio/AudioListener.js +5 -3
- package/src/audio/PositionalAudio.js +1 -1
- package/src/cameras/Camera.js +32 -2
- package/src/cameras/CubeCamera.js +20 -0
- package/src/cameras/OrthographicCamera.js +1 -1
- package/src/cameras/PerspectiveCamera.js +1 -1
- package/src/cameras/StereoCamera.js +2 -2
- package/src/constants.js +100 -7
- package/src/core/BufferAttribute.js +13 -1
- package/src/core/BufferGeometry.js +24 -12
- package/src/core/Clock.js +7 -0
- package/src/core/EventDispatcher.js +1 -1
- package/src/core/InterleavedBuffer.js +1 -1
- package/src/core/InterleavedBufferAttribute.js +3 -2
- package/src/core/Object3D.js +55 -6
- package/src/core/Raycaster.js +4 -3
- package/src/core/RenderTarget.js +14 -5
- package/src/extras/Controls.js +5 -4
- package/src/extras/DataUtils.js +2 -1
- package/src/extras/Earcut.js +6 -0
- package/src/extras/ImageUtils.js +2 -2
- package/src/extras/PMREMGenerator.js +259 -57
- package/src/extras/TextureUtils.js +6 -1
- package/src/extras/core/Curve.js +2 -1
- package/src/extras/core/Interpolations.js +7 -1
- package/src/extras/core/ShapePath.js +4 -4
- package/src/extras/curves/CatmullRomCurve3.js +3 -2
- package/src/extras/lib/earcut.js +8 -8
- package/src/geometries/BoxGeometry.js +1 -0
- package/src/geometries/CapsuleGeometry.js +1 -0
- package/src/geometries/CircleGeometry.js +1 -0
- package/src/geometries/ConeGeometry.js +1 -0
- package/src/geometries/CylinderGeometry.js +1 -0
- package/src/geometries/DodecahedronGeometry.js +1 -0
- package/src/geometries/ExtrudeGeometry.js +10 -8
- package/src/geometries/IcosahedronGeometry.js +1 -0
- package/src/geometries/LatheGeometry.js +1 -0
- package/src/geometries/OctahedronGeometry.js +1 -0
- package/src/geometries/PlaneGeometry.js +1 -0
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/RingGeometry.js +1 -0
- package/src/geometries/ShapeGeometry.js +1 -0
- package/src/geometries/SphereGeometry.js +1 -0
- package/src/geometries/TetrahedronGeometry.js +1 -0
- package/src/geometries/TorusGeometry.js +9 -3
- package/src/geometries/TorusKnotGeometry.js +1 -0
- package/src/geometries/TubeGeometry.js +1 -0
- package/src/helpers/CameraHelper.js +4 -1
- package/src/helpers/DirectionalLightHelper.js +4 -1
- package/src/helpers/HemisphereLightHelper.js +3 -0
- package/src/helpers/PointLightHelper.js +1 -25
- package/src/helpers/SpotLightHelper.js +3 -0
- package/src/lights/DirectionalLight.js +13 -0
- package/src/lights/HemisphereLight.js +10 -0
- package/src/lights/Light.js +1 -11
- package/src/lights/LightProbe.js +0 -15
- package/src/lights/LightShadow.js +15 -6
- package/src/lights/PointLight.js +15 -0
- package/src/lights/PointLightShadow.js +0 -86
- package/src/lights/SpotLight.js +22 -1
- package/src/lights/webgpu/IESSpotLight.js +2 -1
- package/src/lights/webgpu/ProjectorLight.js +1 -1
- package/src/loaders/AnimationLoader.js +2 -1
- package/src/loaders/AudioLoader.js +13 -2
- package/src/loaders/BufferGeometryLoader.js +2 -2
- package/src/loaders/Cache.js +30 -2
- package/src/loaders/DataTextureLoader.js +6 -4
- package/src/loaders/FileLoader.js +4 -4
- package/src/loaders/ImageBitmapLoader.js +17 -13
- package/src/loaders/ImageLoader.js +1 -1
- package/src/loaders/Loader.js +9 -3
- package/src/loaders/LoadingManager.js +25 -3
- package/src/loaders/MaterialLoader.js +6 -4
- package/src/loaders/ObjectLoader.js +57 -17
- package/src/loaders/TextureLoader.js +1 -1
- package/src/loaders/nodes/NodeLoader.js +5 -4
- package/src/loaders/nodes/NodeObjectLoader.js +18 -0
- package/src/materials/Material.js +18 -3
- package/src/materials/MeshBasicMaterial.js +1 -0
- package/src/materials/MeshDepthMaterial.js +1 -0
- package/src/materials/MeshDistanceMaterial.js +1 -1
- package/src/materials/MeshLambertMaterial.js +11 -1
- package/src/materials/MeshMatcapMaterial.js +22 -0
- package/src/materials/MeshNormalMaterial.js +1 -0
- package/src/materials/MeshPhongMaterial.js +11 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -1
- package/src/materials/MeshStandardMaterial.js +8 -7
- package/src/materials/MeshToonMaterial.js +2 -1
- package/src/materials/PointsMaterial.js +1 -1
- package/src/materials/ShaderMaterial.js +22 -3
- package/src/materials/nodes/Line2NodeMaterial.js +36 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +5 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -4
- package/src/materials/nodes/NodeMaterial.js +95 -35
- package/src/materials/nodes/PointsNodeMaterial.js +81 -28
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
- package/src/materials/nodes/manager/NodeMaterialObserver.js +194 -88
- package/src/math/Color.js +6 -5
- package/src/math/ColorManagement.js +9 -3
- package/src/math/Cylindrical.js +1 -1
- package/src/math/Euler.js +2 -1
- package/src/math/Line3.js +6 -5
- package/src/math/MathUtils.js +23 -21
- package/src/math/Matrix2.js +14 -10
- package/src/math/Matrix3.js +15 -11
- package/src/math/Matrix4.js +94 -81
- package/src/math/Plane.js +5 -4
- package/src/math/Quaternion.js +60 -84
- package/src/math/Sphere.js +1 -1
- package/src/math/Spherical.js +1 -1
- package/src/math/Triangle.js +1 -1
- package/src/math/Vector2.js +11 -7
- package/src/math/Vector3.js +15 -13
- package/src/math/Vector4.js +13 -9
- package/src/math/interpolants/BezierInterpolant.js +108 -0
- package/src/nodes/Nodes.js +86 -65
- package/src/nodes/TSL.js +11 -8
- package/src/nodes/accessors/Arrays.js +1 -1
- package/src/nodes/accessors/BatchNode.js +10 -10
- package/src/nodes/accessors/Bitangent.js +5 -5
- package/src/nodes/accessors/BufferAttributeNode.js +107 -15
- package/src/nodes/accessors/BufferNode.js +30 -3
- package/src/nodes/accessors/Camera.js +260 -13
- package/src/nodes/accessors/ClippingNode.js +10 -9
- package/src/nodes/accessors/CubeTextureNode.js +32 -6
- package/src/nodes/accessors/InstanceNode.js +164 -39
- package/src/nodes/accessors/Lights.js +10 -0
- package/src/nodes/accessors/MaterialNode.js +9 -1
- package/src/nodes/accessors/MaterialProperties.js +2 -5
- package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
- package/src/nodes/accessors/ModelNode.js +1 -1
- package/src/nodes/accessors/Normal.js +16 -15
- package/src/nodes/accessors/Object3DNode.js +2 -2
- package/src/nodes/accessors/Position.js +51 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +7 -7
- package/src/nodes/accessors/ReferenceNode.js +11 -10
- package/src/nodes/accessors/RendererReferenceNode.js +1 -2
- package/src/nodes/accessors/SceneProperties.js +47 -0
- package/src/nodes/accessors/SkinningNode.js +27 -26
- package/src/nodes/accessors/StorageBufferNode.js +14 -24
- package/src/nodes/accessors/StorageTextureNode.js +62 -9
- package/src/nodes/accessors/Tangent.js +4 -14
- package/src/nodes/accessors/Texture3DNode.js +41 -31
- package/src/nodes/accessors/TextureNode.js +193 -63
- package/src/nodes/accessors/UniformArrayNode.js +6 -4
- package/src/nodes/accessors/UserDataNode.js +1 -2
- package/src/nodes/accessors/VertexColorNode.js +1 -2
- package/src/nodes/code/FunctionCallNode.js +25 -5
- package/src/nodes/code/FunctionNode.js +25 -3
- package/src/nodes/core/ArrayNode.js +22 -2
- package/src/nodes/core/AssignNode.js +6 -5
- package/src/nodes/core/AttributeNode.js +5 -4
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/ContextNode.js +133 -15
- package/src/nodes/core/IndexNode.js +4 -3
- package/src/nodes/core/InputNode.js +3 -2
- package/src/nodes/core/InspectorNode.js +128 -0
- package/src/nodes/core/{CacheNode.js → IsolateNode.js} +41 -8
- package/src/nodes/core/MRTNode.js +48 -2
- package/src/nodes/core/Node.js +264 -46
- package/src/nodes/core/NodeBuilder.js +453 -87
- package/src/nodes/core/NodeError.js +28 -0
- package/src/nodes/core/NodeFrame.js +31 -23
- package/src/nodes/core/NodeFunction.js +2 -1
- package/src/nodes/core/NodeParser.js +2 -1
- package/src/nodes/core/NodeUniform.js +1 -1
- package/src/nodes/core/NodeUtils.js +25 -97
- package/src/nodes/core/OutputStructNode.js +12 -10
- package/src/nodes/core/ParameterNode.js +34 -3
- package/src/nodes/core/PropertyNode.js +26 -3
- package/src/nodes/core/StackNode.js +99 -23
- package/src/nodes/core/StackTrace.js +139 -0
- package/src/nodes/core/StructNode.js +22 -8
- package/src/nodes/core/StructTypeNode.js +13 -18
- package/src/nodes/core/SubBuildNode.js +4 -4
- package/src/nodes/core/UniformGroupNode.js +36 -6
- package/src/nodes/core/UniformNode.js +37 -13
- package/src/nodes/core/VarNode.js +96 -34
- package/src/nodes/core/VaryingNode.js +2 -18
- package/src/nodes/display/BlendModes.js +0 -63
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/ColorAdjustment.js +18 -1
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/FrontFacingNode.js +4 -8
- package/src/nodes/display/NormalMapNode.js +41 -5
- package/src/nodes/display/PassNode.js +175 -25
- package/src/nodes/display/RenderOutputNode.js +35 -9
- package/src/nodes/display/ScreenNode.js +47 -15
- package/src/nodes/display/ToneMappingNode.js +32 -5
- package/src/nodes/display/ToonOutlinePassNode.js +10 -2
- package/src/nodes/display/ViewportDepthNode.js +52 -4
- package/src/nodes/display/ViewportDepthTextureNode.js +14 -6
- package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
- package/src/nodes/display/ViewportTextureNode.js +72 -14
- package/src/nodes/fog/Fog.js +18 -34
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
- package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/BasicLightingModel.js +2 -1
- package/src/nodes/functions/PhysicalLightingModel.js +128 -46
- package/src/nodes/functions/VolumetricLightingModel.js +5 -5
- package/src/nodes/geometry/RangeNode.js +44 -6
- package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
- package/src/nodes/gpgpu/BarrierNode.js +9 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +4 -4
- package/src/nodes/gpgpu/ComputeNode.js +76 -38
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +5 -4
- package/src/nodes/lighting/AnalyticLightNode.js +53 -0
- package/src/nodes/lighting/EnvironmentNode.js +34 -9
- package/src/nodes/lighting/LightsNode.js +10 -32
- package/src/nodes/lighting/PointShadowNode.js +167 -148
- package/src/nodes/lighting/ShadowFilterNode.js +55 -65
- package/src/nodes/lighting/ShadowNode.js +189 -44
- package/src/nodes/math/BitcastNode.js +156 -0
- package/src/nodes/math/BitcountNode.js +433 -0
- package/src/nodes/math/ConditionalNode.js +25 -8
- package/src/nodes/math/MathNode.js +98 -57
- package/src/nodes/math/OperatorNode.js +8 -5
- package/src/nodes/math/PackFloatNode.js +98 -0
- package/src/nodes/math/UnpackFloatNode.js +96 -0
- package/src/nodes/pmrem/PMREMNode.js +1 -1
- package/src/nodes/pmrem/PMREMUtils.js +111 -2
- package/src/nodes/shapes/Shapes.js +1 -1
- package/src/nodes/tsl/TSLBase.js +6 -3
- package/src/nodes/tsl/TSLCore.js +488 -166
- package/src/nodes/utils/ArrayElementNode.js +14 -1
- package/src/nodes/utils/ConvertNode.js +1 -1
- package/src/nodes/utils/DebugNode.js +14 -13
- package/src/nodes/utils/EventNode.js +67 -2
- package/src/nodes/utils/FlipNode.js +1 -1
- package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
- package/src/nodes/utils/JoinNode.js +7 -4
- package/src/nodes/utils/LoopNode.js +20 -24
- package/src/nodes/utils/MemberNode.js +60 -8
- package/src/nodes/utils/Packing.js +13 -1
- package/src/nodes/utils/PostProcessingUtils.js +60 -1
- package/src/nodes/utils/RTTNode.js +14 -4
- package/src/nodes/utils/ReflectorNode.js +61 -11
- package/src/nodes/utils/Remap.js +48 -0
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SampleNode.js +12 -2
- package/src/nodes/utils/SetNode.js +1 -1
- package/src/nodes/utils/SplitNode.js +12 -1
- package/src/nodes/utils/SpriteSheetUV.js +35 -0
- package/src/nodes/utils/Timer.js +0 -47
- package/src/nodes/utils/UVUtils.js +28 -0
- package/src/objects/BatchedMesh.js +46 -18
- package/src/objects/InstancedMesh.js +30 -3
- package/src/objects/LOD.js +1 -1
- package/src/objects/Line.js +3 -2
- package/src/objects/LineSegments.js +2 -1
- package/src/objects/Mesh.js +1 -1
- package/src/objects/Points.js +1 -1
- package/src/objects/Skeleton.js +12 -2
- package/src/objects/SkinnedMesh.js +29 -10
- package/src/objects/Sprite.js +4 -3
- package/src/renderers/WebGLRenderer.js +372 -179
- package/src/renderers/common/Animation.js +16 -4
- package/src/renderers/common/Attributes.js +16 -2
- package/src/renderers/common/Backend.js +137 -35
- package/src/renderers/common/Background.js +28 -14
- package/src/renderers/common/BindGroup.js +1 -16
- package/src/renderers/common/Binding.js +11 -0
- package/src/renderers/common/Bindings.js +83 -12
- package/src/renderers/common/BlendMode.js +143 -0
- package/src/renderers/common/Buffer.js +40 -0
- package/src/renderers/common/BundleGroup.js +1 -1
- package/src/renderers/common/CanvasTarget.js +341 -0
- package/src/renderers/common/ChainMap.js +30 -6
- package/src/renderers/common/ComputePipeline.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +51 -7
- package/src/renderers/common/DataMap.js +1 -1
- package/src/renderers/common/Geometries.js +55 -3
- package/src/renderers/common/Info.js +337 -6
- package/src/renderers/common/InspectorBase.js +151 -0
- package/src/renderers/common/Lighting.js +5 -21
- package/src/renderers/common/Pipelines.js +41 -8
- package/src/renderers/common/PostProcessing.js +9 -226
- package/src/renderers/common/QuadMesh.js +7 -1
- package/src/renderers/common/ReadbackBuffer.js +78 -0
- package/src/renderers/common/RenderBundle.js +3 -1
- package/src/renderers/common/RenderBundles.js +7 -3
- package/src/renderers/common/RenderContext.js +18 -2
- package/src/renderers/common/RenderContexts.js +33 -49
- package/src/renderers/common/RenderList.js +7 -3
- package/src/renderers/common/RenderLists.js +2 -1
- package/src/renderers/common/RenderObject.js +32 -6
- package/src/renderers/common/RenderObjectPipeline.js +40 -0
- package/src/renderers/common/RenderObjects.js +22 -6
- package/src/renderers/common/RenderPipeline.js +232 -17
- package/src/renderers/common/Renderer.js +927 -335
- package/src/renderers/common/RendererUtils.js +9 -0
- package/src/renderers/common/SampledTexture.js +9 -1
- package/src/renderers/common/Sampler.js +52 -14
- package/src/renderers/common/StorageBuffer.js +13 -1
- package/src/renderers/common/StorageTexture.js +9 -1
- package/src/renderers/common/Textures.js +208 -47
- package/src/renderers/common/TimestampQueryPool.js +70 -6
- package/src/renderers/common/Uniform.js +8 -0
- package/src/renderers/common/UniformsGroup.js +64 -2
- package/src/renderers/common/XRManager.js +79 -51
- package/src/renderers/common/extras/PMREMGenerator.js +176 -79
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/NodeLibrary.js +9 -7
- package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +260 -95
- package/src/renderers/common/nodes/NodeSampler.js +13 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +52 -0
- 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/common.glsl.js +0 -12
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -2
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +8 -12
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -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_pars_begin.glsl.js +2 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +152 -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/normal_fragment_maps.glsl.js +7 -0
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +221 -190
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
- 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.js +5 -3
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +4 -1
- 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 -6
- package/src/renderers/shaders/UniformsLib.js +8 -5
- package/src/renderers/shaders/UniformsUtils.js +52 -9
- package/src/renderers/webgl/WebGLAnimation.js +2 -1
- package/src/renderers/webgl/WebGLBackground.js +15 -15
- package/src/renderers/webgl/WebGLBindingStates.js +99 -27
- package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLCapabilities.js +11 -5
- package/src/renderers/webgl/WebGLEnvironments.js +228 -0
- package/src/renderers/webgl/WebGLExtensions.js +2 -25
- package/src/renderers/webgl/WebGLGeometries.js +10 -7
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLInfo.js +3 -1
- package/src/renderers/webgl/WebGLLights.js +18 -1
- package/src/renderers/webgl/WebGLMaterials.js +24 -13
- package/src/renderers/webgl/WebGLObjects.js +3 -1
- package/src/renderers/webgl/WebGLOutput.js +270 -0
- package/src/renderers/webgl/WebGLProgram.js +63 -122
- package/src/renderers/webgl/WebGLPrograms.js +65 -52
- package/src/renderers/webgl/WebGLRenderLists.js +15 -0
- package/src/renderers/webgl/WebGLRenderStates.js +13 -2
- package/src/renderers/webgl/WebGLShadowMap.js +191 -26
- package/src/renderers/webgl/WebGLState.js +79 -40
- package/src/renderers/webgl/WebGLTextures.js +234 -68
- package/src/renderers/webgl/WebGLUniforms.js +40 -3
- package/src/renderers/webgl/WebGLUniformsGroups.js +24 -3
- package/src/renderers/webgl/WebGLUtils.js +8 -3
- package/src/renderers/webgl-fallback/WebGLBackend.js +438 -235
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +339 -84
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
- package/src/renderers/webgl-fallback/utils/WebGLState.js +229 -11
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +237 -72
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +56 -27
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +8 -3
- package/src/renderers/webgpu/WebGPUBackend.js +403 -253
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
- package/src/renderers/webgpu/WebGPURenderer.js +5 -3
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +491 -123
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +108 -34
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +360 -201
- package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
- package/src/renderers/webgpu/utils/WebGPUConstants.js +17 -2
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +111 -54
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +155 -205
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +407 -149
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +36 -13
- package/src/renderers/webgpu/utils/WebGPUUtils.js +55 -13
- package/src/renderers/webxr/WebXRController.js +12 -0
- package/src/renderers/webxr/WebXRManager.js +45 -29
- package/src/textures/CubeDepthTexture.js +76 -0
- package/src/textures/ExternalTexture.js +15 -4
- package/src/textures/HTMLTexture.js +74 -0
- package/src/textures/Source.js +5 -4
- package/src/textures/Texture.js +19 -7
- package/src/textures/VideoTexture.js +2 -3
- package/src/utils.js +344 -3
- package/examples/jsm/loaders/RGBMLoader.js +0 -1148
- package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
- package/examples/jsm/shaders/GodRaysShader.js +0 -333
- package/src/nodes/accessors/SceneNode.js +0 -144
- package/src/nodes/code/ScriptableNode.js +0 -726
- package/src/nodes/code/ScriptableValueNode.js +0 -253
- package/src/nodes/display/PosterizeNode.js +0 -65
- package/src/nodes/functions/BSDF/DFGApprox.js +0 -30
- package/src/nodes/utils/RemapNode.js +0 -125
- package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
- package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
- package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
package/src/nodes/Nodes.js
CHANGED
|
@@ -6,140 +6,161 @@ export { default as ArrayNode } from './core/ArrayNode.js';
|
|
|
6
6
|
export { default as AssignNode } from './core/AssignNode.js';
|
|
7
7
|
export { default as AttributeNode } from './core/AttributeNode.js';
|
|
8
8
|
export { default as BypassNode } from './core/BypassNode.js';
|
|
9
|
-
export { default as CacheNode } from './core/CacheNode.js';
|
|
10
9
|
export { default as ConstNode } from './core/ConstNode.js';
|
|
11
10
|
export { default as ContextNode } from './core/ContextNode.js';
|
|
12
11
|
export { default as IndexNode } from './core/IndexNode.js';
|
|
12
|
+
export { default as InputNode } from './core/InputNode.js';
|
|
13
|
+
export { default as InspectorNode } from './core/InspectorNode.js';
|
|
14
|
+
export { default as IsolateNode } from './core/IsolateNode.js';
|
|
13
15
|
export { default as LightingModel } from './core/LightingModel.js';
|
|
16
|
+
export { default as MRTNode } from './core/MRTNode.js';
|
|
14
17
|
export { default as Node } from './core/Node.js';
|
|
15
|
-
export { default as VarNode } from './core/VarNode.js';
|
|
16
18
|
export { default as NodeAttribute } from './core/NodeAttribute.js';
|
|
17
19
|
export { default as NodeBuilder } from './core/NodeBuilder.js';
|
|
18
20
|
export { default as NodeCache } from './core/NodeCache.js';
|
|
19
21
|
export { default as NodeCode } from './core/NodeCode.js';
|
|
22
|
+
export { default as NodeError } from './core/NodeError.js';
|
|
20
23
|
export { default as NodeFrame } from './core/NodeFrame.js';
|
|
21
24
|
export { default as NodeFunctionInput } from './core/NodeFunctionInput.js';
|
|
22
25
|
export { default as NodeUniform } from './core/NodeUniform.js';
|
|
23
26
|
export { default as NodeVar } from './core/NodeVar.js';
|
|
24
27
|
export { default as NodeVarying } from './core/NodeVarying.js';
|
|
28
|
+
export { default as OutputStructNode } from './core/OutputStructNode.js';
|
|
25
29
|
export { default as ParameterNode } from './core/ParameterNode.js';
|
|
26
30
|
export { default as PropertyNode } from './core/PropertyNode.js';
|
|
27
31
|
export { default as StackNode } from './core/StackNode.js';
|
|
32
|
+
export { default as StackTrace } from './core/StackTrace.js';
|
|
33
|
+
export { default as StructNode } from './core/StructNode.js';
|
|
34
|
+
export { default as StructTypeNode } from './core/StructTypeNode.js';
|
|
35
|
+
export { default as SubBuildNode } from './core/SubBuildNode.js';
|
|
28
36
|
export { default as TempNode } from './core/TempNode.js';
|
|
29
37
|
export { default as UniformGroupNode } from './core/UniformGroupNode.js';
|
|
30
38
|
export { default as UniformNode } from './core/UniformNode.js';
|
|
39
|
+
export { default as VarNode } from './core/VarNode.js';
|
|
31
40
|
export { default as VaryingNode } from './core/VaryingNode.js';
|
|
32
|
-
export { default as StructNode } from './core/StructNode.js';
|
|
33
|
-
export { default as StructTypeNode } from './core/StructTypeNode.js';
|
|
34
|
-
export { default as OutputStructNode } from './core/OutputStructNode.js';
|
|
35
|
-
export { default as MRTNode } from './core/MRTNode.js';
|
|
36
|
-
export { default as SubBuildNode } from './core/SubBuildNode.js';
|
|
37
41
|
|
|
38
42
|
import * as NodeUtils from './core/NodeUtils.js';
|
|
39
43
|
export { NodeUtils };
|
|
40
44
|
|
|
41
|
-
// utils
|
|
42
|
-
export { default as ArrayElementNode } from './utils/ArrayElementNode.js';
|
|
43
|
-
export { default as ConvertNode } from './utils/ConvertNode.js';
|
|
44
|
-
export { default as FunctionOverloadingNode } from './utils/FunctionOverloadingNode.js';
|
|
45
|
-
export { default as JoinNode } from './utils/JoinNode.js';
|
|
46
|
-
export { default as LoopNode } from './utils/LoopNode.js';
|
|
47
|
-
export { default as MaxMipLevelNode } from './utils/MaxMipLevelNode.js';
|
|
48
|
-
export { default as RemapNode } from './utils/RemapNode.js';
|
|
49
|
-
export { default as RotateNode } from './utils/RotateNode.js';
|
|
50
|
-
export { default as SetNode } from './utils/SetNode.js';
|
|
51
|
-
export { default as SplitNode } from './utils/SplitNode.js';
|
|
52
|
-
export { default as SpriteSheetUVNode } from './utils/SpriteSheetUVNode.js';
|
|
53
|
-
export { default as StorageArrayElementNode } from './utils/StorageArrayElementNode.js';
|
|
54
|
-
export { default as ReflectorNode } from './utils/ReflectorNode.js';
|
|
55
|
-
export { default as RTTNode } from './utils/RTTNode.js';
|
|
56
|
-
export { default as MemberNode } from './utils/MemberNode.js';
|
|
57
|
-
export { default as DebugNode } from './utils/DebugNode.js';
|
|
58
|
-
export { default as EventNode } from './utils/EventNode.js';
|
|
59
|
-
|
|
60
45
|
// accessors
|
|
61
|
-
export { default as
|
|
46
|
+
export { default as BatchNode } from './accessors/BatchNode.js';
|
|
62
47
|
export { default as BufferAttributeNode } from './accessors/BufferAttributeNode.js';
|
|
63
48
|
export { default as BufferNode } from './accessors/BufferNode.js';
|
|
64
|
-
export { default as
|
|
49
|
+
export { default as BuiltinNode } from './accessors/BuiltinNode.js';
|
|
50
|
+
export { default as ClippingNode } from './accessors/ClippingNode.js';
|
|
65
51
|
export { default as CubeTextureNode } from './accessors/CubeTextureNode.js';
|
|
66
52
|
export { default as InstanceNode } from './accessors/InstanceNode.js';
|
|
67
53
|
export { default as InstancedMeshNode } from './accessors/InstancedMeshNode.js';
|
|
68
|
-
export { default as BatchNode } from './accessors/BatchNode.js';
|
|
69
54
|
export { default as MaterialNode } from './accessors/MaterialNode.js';
|
|
70
55
|
export { default as MaterialReferenceNode } from './accessors/MaterialReferenceNode.js';
|
|
71
|
-
export { default as RendererReferenceNode } from './accessors/RendererReferenceNode.js';
|
|
72
|
-
export { default as MorphNode } from './accessors/MorphNode.js';
|
|
73
56
|
export { default as ModelNode } from './accessors/ModelNode.js';
|
|
57
|
+
export { default as MorphNode } from './accessors/MorphNode.js';
|
|
74
58
|
export { default as Object3DNode } from './accessors/Object3DNode.js';
|
|
75
59
|
export { default as PointUVNode } from './accessors/PointUVNode.js';
|
|
60
|
+
export { default as ReferenceBaseNode } from './accessors/ReferenceBaseNode.js';
|
|
76
61
|
export { default as ReferenceNode } from './accessors/ReferenceNode.js';
|
|
62
|
+
export { default as RendererReferenceNode } from './accessors/RendererReferenceNode.js';
|
|
77
63
|
export { default as SkinningNode } from './accessors/SkinningNode.js';
|
|
78
|
-
export { default as SceneNode } from './accessors/SceneNode.js';
|
|
79
64
|
export { default as StorageBufferNode } from './accessors/StorageBufferNode.js';
|
|
80
|
-
export { default as TextureNode } from './accessors/TextureNode.js';
|
|
81
|
-
export { default as TextureSizeNode } from './accessors/TextureSizeNode.js';
|
|
82
65
|
export { default as StorageTextureNode } from './accessors/StorageTextureNode.js';
|
|
83
66
|
export { default as Texture3DNode } from './accessors/Texture3DNode.js';
|
|
67
|
+
export { default as TextureNode } from './accessors/TextureNode.js';
|
|
68
|
+
export { default as TextureSizeNode } from './accessors/TextureSizeNode.js';
|
|
69
|
+
export { default as UniformArrayNode } from './accessors/UniformArrayNode.js';
|
|
84
70
|
export { default as UserDataNode } from './accessors/UserDataNode.js';
|
|
71
|
+
export { default as VelocityNode } from './accessors/VelocityNode.js';
|
|
72
|
+
export { default as VertexColorNode } from './accessors/VertexColorNode.js';
|
|
73
|
+
|
|
74
|
+
// code
|
|
75
|
+
export { default as CodeNode } from './code/CodeNode.js';
|
|
76
|
+
export { default as ExpressionNode } from './code/ExpressionNode.js';
|
|
77
|
+
export { default as FunctionCallNode } from './code/FunctionCallNode.js';
|
|
78
|
+
export { default as FunctionNode } from './code/FunctionNode.js';
|
|
85
79
|
|
|
86
80
|
// display
|
|
87
81
|
export { default as BumpMapNode } from './display/BumpMapNode.js';
|
|
88
82
|
export { default as ColorSpaceNode } from './display/ColorSpaceNode.js';
|
|
89
83
|
export { default as FrontFacingNode } from './display/FrontFacingNode.js';
|
|
90
84
|
export { default as NormalMapNode } from './display/NormalMapNode.js';
|
|
91
|
-
export { default as PosterizeNode } from './display/PosterizeNode.js';
|
|
92
|
-
export { default as ToneMappingNode } from './display/ToneMappingNode.js';
|
|
93
|
-
export { default as ScreenNode } from './display/ScreenNode.js';
|
|
94
|
-
export { default as ViewportTextureNode } from './display/ViewportTextureNode.js';
|
|
95
|
-
export { default as ViewportSharedTextureNode } from './display/ViewportSharedTextureNode.js';
|
|
96
|
-
export { default as ViewportDepthTextureNode } from './display/ViewportDepthTextureNode.js';
|
|
97
|
-
export { default as ViewportDepthNode } from './display/ViewportDepthNode.js';
|
|
98
|
-
export { default as RenderOutputNode } from './display/RenderOutputNode.js';
|
|
99
85
|
export { default as PassNode } from './display/PassNode.js';
|
|
86
|
+
export { default as RenderOutputNode } from './display/RenderOutputNode.js';
|
|
87
|
+
export { default as ScreenNode } from './display/ScreenNode.js';
|
|
88
|
+
export { default as ToneMappingNode } from './display/ToneMappingNode.js';
|
|
100
89
|
export { default as ToonOutlinePassNode } from './display/ToonOutlinePassNode.js';
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
export { default as
|
|
104
|
-
export { default as
|
|
105
|
-
export { default as FunctionCallNode } from './code/FunctionCallNode.js';
|
|
106
|
-
export { default as FunctionNode } from './code/FunctionNode.js';
|
|
107
|
-
export { default as ScriptableNode } from './code/ScriptableNode.js';
|
|
108
|
-
export { default as ScriptableValueNode } from './code/ScriptableValueNode.js';
|
|
90
|
+
export { default as ViewportDepthNode } from './display/ViewportDepthNode.js';
|
|
91
|
+
export { default as ViewportDepthTextureNode } from './display/ViewportDepthTextureNode.js';
|
|
92
|
+
export { default as ViewportSharedTextureNode } from './display/ViewportSharedTextureNode.js';
|
|
93
|
+
export { default as ViewportTextureNode } from './display/ViewportTextureNode.js';
|
|
109
94
|
|
|
110
95
|
// geometry
|
|
111
96
|
export { default as RangeNode } from './geometry/RangeNode.js';
|
|
112
97
|
|
|
113
98
|
// gpgpu
|
|
99
|
+
export { default as AtomicFunctionNode } from './gpgpu/AtomicFunctionNode.js';
|
|
100
|
+
export { default as BarrierNode } from './gpgpu/BarrierNode.js';
|
|
101
|
+
export { default as ComputeBuiltinNode } from './gpgpu/ComputeBuiltinNode.js';
|
|
114
102
|
export { default as ComputeNode } from './gpgpu/ComputeNode.js';
|
|
103
|
+
export { default as SubgroupFunctionNode } from './gpgpu/SubgroupFunctionNode.js';
|
|
104
|
+
export { default as WorkgroupInfoNode } from './gpgpu/WorkgroupInfoNode.js';
|
|
115
105
|
|
|
116
106
|
// lighting
|
|
117
|
-
export { default as
|
|
107
|
+
export { default as AmbientLightNode } from './lighting/AmbientLightNode.js';
|
|
108
|
+
export { default as AnalyticLightNode } from './lighting/AnalyticLightNode.js';
|
|
109
|
+
export { default as AONode } from './lighting/AONode.js';
|
|
110
|
+
export { default as BasicEnvironmentNode } from './lighting/BasicEnvironmentNode.js';
|
|
111
|
+
export { default as BasicLightMapNode } from './lighting/BasicLightMapNode.js';
|
|
118
112
|
export { default as DirectionalLightNode } from './lighting/DirectionalLightNode.js';
|
|
119
|
-
export { default as
|
|
120
|
-
export { default as
|
|
113
|
+
export { default as EnvironmentNode } from './lighting/EnvironmentNode.js';
|
|
114
|
+
export { default as HemisphereLightNode } from './lighting/HemisphereLightNode.js';
|
|
121
115
|
export { default as IESSpotLightNode } from './lighting/IESSpotLightNode.js';
|
|
122
|
-
export { default as
|
|
123
|
-
export { default as AmbientLightNode } from './lighting/AmbientLightNode.js';
|
|
124
|
-
export { default as LightsNode } from './lighting/LightsNode.js';
|
|
125
|
-
export { default as LightingNode } from './lighting/LightingNode.js';
|
|
116
|
+
export { default as IrradianceNode } from './lighting/IrradianceNode.js';
|
|
126
117
|
export { default as LightingContextNode } from './lighting/LightingContextNode.js';
|
|
127
|
-
export { default as
|
|
118
|
+
export { default as LightingNode } from './lighting/LightingNode.js';
|
|
128
119
|
export { default as LightProbeNode } from './lighting/LightProbeNode.js';
|
|
129
|
-
export { default as
|
|
130
|
-
export { default as
|
|
131
|
-
export { default as
|
|
132
|
-
export { default as
|
|
133
|
-
export { default as
|
|
120
|
+
export { default as LightsNode } from './lighting/LightsNode.js';
|
|
121
|
+
export { default as PointLightNode } from './lighting/PointLightNode.js';
|
|
122
|
+
export { default as PointShadowNode } from './lighting/PointShadowNode.js';
|
|
123
|
+
export { default as ProjectorLightNode } from './lighting/ProjectorLightNode.js';
|
|
124
|
+
export { default as RectAreaLightNode } from './lighting/RectAreaLightNode.js';
|
|
134
125
|
export { default as ShadowBaseNode } from './lighting/ShadowBaseNode.js';
|
|
135
126
|
export { default as ShadowNode } from './lighting/ShadowNode.js';
|
|
127
|
+
export { default as SpotLightNode } from './lighting/SpotLightNode.js';
|
|
136
128
|
|
|
137
|
-
//
|
|
138
|
-
export { default as
|
|
129
|
+
// math
|
|
130
|
+
export { default as BitcastNode } from './math/BitcastNode.js';
|
|
131
|
+
export { default as BitcountNode } from './math/BitcountNode.js';
|
|
132
|
+
export { default as ConditionalNode } from './math/ConditionalNode.js';
|
|
133
|
+
export { default as MathNode } from './math/MathNode.js';
|
|
134
|
+
export { default as OperatorNode } from './math/OperatorNode.js';
|
|
135
|
+
export { default as PackFloatNode } from './math/PackFloatNode.js';
|
|
136
|
+
export { default as UnpackFloatNode } from './math/UnpackFloatNode.js';
|
|
139
137
|
|
|
140
138
|
// parsers
|
|
141
139
|
export { default as GLSLNodeParser } from './parsers/GLSLNodeParser.js'; // @TODO: Move to jsm/renderers/webgl.
|
|
142
140
|
|
|
141
|
+
// pmrem
|
|
142
|
+
export { default as PMREMNode } from './pmrem/PMREMNode.js';
|
|
143
|
+
|
|
144
|
+
// utils
|
|
145
|
+
export { default as ArrayElementNode } from './utils/ArrayElementNode.js';
|
|
146
|
+
export { default as ConvertNode } from './utils/ConvertNode.js';
|
|
147
|
+
export { default as CubeMapNode } from './utils/CubeMapNode.js';
|
|
148
|
+
export { default as DebugNode } from './utils/DebugNode.js';
|
|
149
|
+
export { default as EventNode } from './utils/EventNode.js';
|
|
150
|
+
export { default as FlipNode } from './utils/FlipNode.js';
|
|
151
|
+
export { default as FunctionOverloadingNode } from './utils/FunctionOverloadingNode.js';
|
|
152
|
+
export { default as JoinNode } from './utils/JoinNode.js';
|
|
153
|
+
export { default as LoopNode } from './utils/LoopNode.js';
|
|
154
|
+
export { default as MaxMipLevelNode } from './utils/MaxMipLevelNode.js';
|
|
155
|
+
export { default as MemberNode } from './utils/MemberNode.js';
|
|
156
|
+
export { default as ReflectorNode } from './utils/ReflectorNode.js';
|
|
157
|
+
export { default as RotateNode } from './utils/RotateNode.js';
|
|
158
|
+
export { default as RTTNode } from './utils/RTTNode.js';
|
|
159
|
+
export { default as SampleNode } from './utils/SampleNode.js';
|
|
160
|
+
export { default as SetNode } from './utils/SetNode.js';
|
|
161
|
+
export { default as SplitNode } from './utils/SplitNode.js';
|
|
162
|
+
export { default as StorageArrayElementNode } from './utils/StorageArrayElementNode.js';
|
|
163
|
+
|
|
143
164
|
// lighting models
|
|
144
165
|
export { default as PhongLightingModel } from './functions/PhongLightingModel.js';
|
|
145
166
|
export { default as PhysicalLightingModel } from './functions/PhysicalLightingModel.js';
|
package/src/nodes/TSL.js
CHANGED
|
@@ -5,7 +5,7 @@ export * from './core/constants.js';
|
|
|
5
5
|
export * from './core/AssignNode.js';
|
|
6
6
|
export * from './core/AttributeNode.js';
|
|
7
7
|
export * from './core/BypassNode.js';
|
|
8
|
-
export * from './core/
|
|
8
|
+
export * from './core/IsolateNode.js';
|
|
9
9
|
export * from './core/ContextNode.js';
|
|
10
10
|
export * from './core/IndexNode.js';
|
|
11
11
|
export * from './core/ParameterNode.js';
|
|
@@ -19,8 +19,12 @@ export * from './core/OutputStructNode.js';
|
|
|
19
19
|
export * from './core/MRTNode.js';
|
|
20
20
|
|
|
21
21
|
// math
|
|
22
|
+
export * from './math/BitcastNode.js';
|
|
23
|
+
export * from './math/BitcountNode.js';
|
|
22
24
|
export * from './math/Hash.js';
|
|
23
25
|
export * from './math/MathUtils.js';
|
|
26
|
+
export * from './math/PackFloatNode.js';
|
|
27
|
+
export * from './math/UnpackFloatNode.js';
|
|
24
28
|
export * from './math/TriNoise3D.js';
|
|
25
29
|
|
|
26
30
|
// utils
|
|
@@ -31,12 +35,12 @@ export * from './utils/MatcapUV.js';
|
|
|
31
35
|
export * from './utils/MaxMipLevelNode.js';
|
|
32
36
|
export * from './utils/Oscillators.js';
|
|
33
37
|
export * from './utils/Packing.js';
|
|
34
|
-
export * from './utils/
|
|
38
|
+
export * from './utils/Remap.js';
|
|
35
39
|
export * from './utils/UVUtils.js';
|
|
36
40
|
export * from './utils/SpriteUtils.js';
|
|
37
41
|
export * from './utils/ViewportUtils.js';
|
|
38
42
|
export * from './utils/RotateNode.js';
|
|
39
|
-
export * from './utils/
|
|
43
|
+
export * from './utils/SpriteSheetUV.js';
|
|
40
44
|
export * from './utils/Timer.js';
|
|
41
45
|
export * from './utils/TriplanarTextures.js';
|
|
42
46
|
export * from './utils/ReflectorNode.js';
|
|
@@ -55,6 +59,7 @@ export * from './accessors/UniformArrayNode.js';
|
|
|
55
59
|
export * from './accessors/Bitangent.js';
|
|
56
60
|
export * from './accessors/BufferAttributeNode.js';
|
|
57
61
|
export * from './accessors/BufferNode.js';
|
|
62
|
+
export * from './accessors/BuiltinNode.js';
|
|
58
63
|
export * from './accessors/Camera.js';
|
|
59
64
|
export * from './accessors/VertexColorNode.js';
|
|
60
65
|
export * from './accessors/CubeTextureNode.js';
|
|
@@ -76,7 +81,7 @@ export * from './accessors/Position.js';
|
|
|
76
81
|
export * from './accessors/ReferenceNode.js';
|
|
77
82
|
export * from './accessors/ReflectVector.js';
|
|
78
83
|
export * from './accessors/SkinningNode.js';
|
|
79
|
-
export * from './accessors/
|
|
84
|
+
export * from './accessors/SceneProperties.js';
|
|
80
85
|
export * from './accessors/StorageBufferNode.js';
|
|
81
86
|
export * from './accessors/Tangent.js';
|
|
82
87
|
export * from './accessors/TextureNode.js';
|
|
@@ -94,7 +99,6 @@ export * from './display/ColorAdjustment.js';
|
|
|
94
99
|
export * from './display/ColorSpaceNode.js';
|
|
95
100
|
export * from './display/FrontFacingNode.js';
|
|
96
101
|
export * from './display/NormalMapNode.js';
|
|
97
|
-
export * from './display/PosterizeNode.js';
|
|
98
102
|
export * from './display/ToneMappingNode.js';
|
|
99
103
|
export * from './display/ScreenNode.js';
|
|
100
104
|
export * from './display/ViewportTextureNode.js';
|
|
@@ -114,8 +118,6 @@ export * from './code/ExpressionNode.js';
|
|
|
114
118
|
export * from './code/CodeNode.js';
|
|
115
119
|
export * from './code/FunctionCallNode.js';
|
|
116
120
|
export * from './code/FunctionNode.js';
|
|
117
|
-
export * from './code/ScriptableNode.js';
|
|
118
|
-
export * from './code/ScriptableValueNode.js';
|
|
119
121
|
|
|
120
122
|
// fog
|
|
121
123
|
export * from './fog/Fog.js';
|
|
@@ -129,6 +131,7 @@ export * from './gpgpu/ComputeBuiltinNode.js';
|
|
|
129
131
|
export * from './gpgpu/BarrierNode.js';
|
|
130
132
|
export * from './gpgpu/WorkgroupInfoNode.js';
|
|
131
133
|
export * from './gpgpu/AtomicFunctionNode.js';
|
|
134
|
+
export * from './gpgpu/SubgroupFunctionNode.js';
|
|
132
135
|
|
|
133
136
|
// lighting
|
|
134
137
|
export * from './accessors/Lights.js';
|
|
@@ -157,7 +160,7 @@ export * from './materialx/MaterialXNodes.js';
|
|
|
157
160
|
export { default as BRDF_GGX } from './functions/BSDF/BRDF_GGX.js';
|
|
158
161
|
export { default as BRDF_Lambert } from './functions/BSDF/BRDF_Lambert.js';
|
|
159
162
|
export { default as D_GGX } from './functions/BSDF/D_GGX.js';
|
|
160
|
-
export { default as
|
|
163
|
+
export { default as DFGLUT } from './functions/BSDF/DFGLUT.js';
|
|
161
164
|
export { default as F_Schlick } from './functions/BSDF/F_Schlick.js';
|
|
162
165
|
export { default as Schlick_to_F0 } from './functions/BSDF/Schlick_to_F0.js';
|
|
163
166
|
export { default as V_GGX_SmithCorrelated } from './functions/BSDF/V_GGX_SmithCorrelated.js';
|
|
@@ -61,7 +61,7 @@ export const instancedArray = ( count, type = 'float' ) => {
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
const buffer = new StorageInstancedBufferAttribute( count, itemSize, typedArray );
|
|
64
|
-
const node = storage( buffer, type, count );
|
|
64
|
+
const node = storage( buffer, type, buffer.count );
|
|
65
65
|
|
|
66
66
|
return node;
|
|
67
67
|
|
|
@@ -74,9 +74,9 @@ class BatchNode extends Node {
|
|
|
74
74
|
|
|
75
75
|
const getIndirectIndex = Fn( ( [ id ] ) => {
|
|
76
76
|
|
|
77
|
-
const size = int( textureSize( textureLoad( this.batchMesh._indirectTexture ), 0 ).x );
|
|
78
|
-
const x = int( id ).mod( size );
|
|
79
|
-
const y = int( id ).div( size );
|
|
77
|
+
const size = int( textureSize( textureLoad( this.batchMesh._indirectTexture ), 0 ).x ).toConst();
|
|
78
|
+
const x = int( id ).mod( size ).toConst();
|
|
79
|
+
const y = int( id ).div( size ).toConst();
|
|
80
80
|
return textureLoad( this.batchMesh._indirectTexture, ivec2( x, y ) ).x;
|
|
81
81
|
|
|
82
82
|
} ).setLayout( {
|
|
@@ -91,11 +91,11 @@ class BatchNode extends Node {
|
|
|
91
91
|
|
|
92
92
|
const matricesTexture = this.batchMesh._matricesTexture;
|
|
93
93
|
|
|
94
|
-
const size = int( textureSize( textureLoad( matricesTexture ), 0 ).x );
|
|
95
|
-
const j = float( indirectId ).mul( 4 ).toInt().
|
|
94
|
+
const size = int( textureSize( textureLoad( matricesTexture ), 0 ).x ).toConst();
|
|
95
|
+
const j = float( indirectId ).mul( 4 ).toInt().toConst();
|
|
96
96
|
|
|
97
|
-
const x = j.mod( size );
|
|
98
|
-
const y = j.div( size );
|
|
97
|
+
const x = j.mod( size ).toConst();
|
|
98
|
+
const y = j.div( size ).toConst();
|
|
99
99
|
const batchingMatrix = mat4(
|
|
100
100
|
textureLoad( matricesTexture, ivec2( x, y ) ),
|
|
101
101
|
textureLoad( matricesTexture, ivec2( x.add( 1 ), y ) ),
|
|
@@ -110,10 +110,10 @@ class BatchNode extends Node {
|
|
|
110
110
|
|
|
111
111
|
const getBatchingColor = Fn( ( [ id ] ) => {
|
|
112
112
|
|
|
113
|
-
const size = int( textureSize( textureLoad( colorsTexture ), 0 ).x );
|
|
113
|
+
const size = int( textureSize( textureLoad( colorsTexture ), 0 ).x ).toConst();
|
|
114
114
|
const j = id;
|
|
115
|
-
const x = j.mod( size );
|
|
116
|
-
const y = j.div( size );
|
|
115
|
+
const x = j.mod( size ).toConst();
|
|
116
|
+
const y = j.div( size ).toConst();
|
|
117
117
|
return textureLoad( colorsTexture, ivec2( x, y ) ).rgb;
|
|
118
118
|
|
|
119
119
|
} ).setLayout( {
|
|
@@ -13,11 +13,11 @@ import { directionToFaceDirection } from '../display/FrontFacingNode.js';
|
|
|
13
13
|
* @param {string} varyingName - The name of the varying to assign the bitangent to.
|
|
14
14
|
* @returns {Node<vec3>} The bitangent node.
|
|
15
15
|
*/
|
|
16
|
-
const getBitangent = /*@__PURE__*/ Fn( ( [ crossNormalTangent, varyingName ],
|
|
16
|
+
const getBitangent = /*@__PURE__*/ Fn( ( [ crossNormalTangent, varyingName ], builder ) => {
|
|
17
17
|
|
|
18
18
|
let bitangent = crossNormalTangent.mul( tangentGeometry.w ).xyz;
|
|
19
19
|
|
|
20
|
-
if ( subBuildFn === 'NORMAL' &&
|
|
20
|
+
if ( builder.subBuildFn === 'NORMAL' && builder.isFlatShading() !== true ) {
|
|
21
21
|
|
|
22
22
|
bitangent = bitangent.toVarying( varyingName );
|
|
23
23
|
|
|
@@ -49,11 +49,11 @@ export const bitangentLocal = /*@__PURE__*/ getBitangent( normalLocal.cross( tan
|
|
|
49
49
|
* @tsl
|
|
50
50
|
* @type {Node<vec3>}
|
|
51
51
|
*/
|
|
52
|
-
export const bitangentView = /*@__PURE__*/ ( Fn( (
|
|
52
|
+
export const bitangentView = /*@__PURE__*/ ( Fn( ( builder ) => {
|
|
53
53
|
|
|
54
54
|
let node;
|
|
55
55
|
|
|
56
|
-
if ( subBuildFn === 'VERTEX' || geometry.hasAttribute( 'tangent' ) ) {
|
|
56
|
+
if ( builder.subBuildFn === 'VERTEX' || builder.geometry.hasAttribute( 'tangent' ) ) {
|
|
57
57
|
|
|
58
58
|
node = getBitangent( normalView.cross( tangentView ), 'v_bitangentView' ).normalize();
|
|
59
59
|
|
|
@@ -63,7 +63,7 @@ export const bitangentView = /*@__PURE__*/ ( Fn( ( { subBuildFn, geometry, mater
|
|
|
63
63
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
if (
|
|
66
|
+
if ( builder.isFlatShading() !== true ) {
|
|
67
67
|
|
|
68
68
|
node = directionToFaceDirection( node );
|
|
69
69
|
|
|
@@ -1,11 +1,43 @@
|
|
|
1
1
|
import InputNode from '../core/InputNode.js';
|
|
2
|
-
import {
|
|
2
|
+
import { addMethodChaining, mat3, mat4 } from '../tsl/TSLCore.js';
|
|
3
3
|
import { varying } from '../core/VaryingNode.js';
|
|
4
4
|
|
|
5
5
|
import { InterleavedBufferAttribute } from '../../core/InterleavedBufferAttribute.js';
|
|
6
6
|
import { InterleavedBuffer } from '../../core/InterleavedBuffer.js';
|
|
7
7
|
import { StaticDrawUsage, DynamicDrawUsage } from '../../constants.js';
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Internal buffer attribute library.
|
|
11
|
+
*
|
|
12
|
+
* @private
|
|
13
|
+
* @type {WeakMap<TypedArray, InterleavedBuffer>}
|
|
14
|
+
*/
|
|
15
|
+
const _bufferLib = new WeakMap();
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Internal method for retrieving or creating interleaved buffers.
|
|
19
|
+
*
|
|
20
|
+
* @private
|
|
21
|
+
* @param {TypedArray} value - The attribute data.
|
|
22
|
+
* @param {number} itemSize - The attribute item size.
|
|
23
|
+
* @returns {InterleavedBuffer} The interleaved buffer.
|
|
24
|
+
*/
|
|
25
|
+
function _getBufferAttribute( value, itemSize ) {
|
|
26
|
+
|
|
27
|
+
let buffer = _bufferLib.get( value );
|
|
28
|
+
|
|
29
|
+
if ( buffer === undefined ) {
|
|
30
|
+
|
|
31
|
+
buffer = new InterleavedBuffer( value, itemSize );
|
|
32
|
+
|
|
33
|
+
_bufferLib.set( value, buffer );
|
|
34
|
+
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return buffer;
|
|
38
|
+
|
|
39
|
+
}
|
|
40
|
+
|
|
9
41
|
/**
|
|
10
42
|
* In earlier `three.js` versions it was only possible to define attribute data
|
|
11
43
|
* on geometry level. With `BufferAttributeNode`, it is also possible to do this
|
|
@@ -114,7 +146,7 @@ class BufferAttributeNode extends InputNode {
|
|
|
114
146
|
*/
|
|
115
147
|
this.global = true;
|
|
116
148
|
|
|
117
|
-
if ( value && value.isBufferAttribute === true ) {
|
|
149
|
+
if ( value && value.isBufferAttribute === true && value.itemSize <= 4 ) {
|
|
118
150
|
|
|
119
151
|
this.attribute = value;
|
|
120
152
|
this.usage = value.usage;
|
|
@@ -133,6 +165,8 @@ class BufferAttributeNode extends InputNode {
|
|
|
133
165
|
*/
|
|
134
166
|
getHash( builder ) {
|
|
135
167
|
|
|
168
|
+
let id;
|
|
169
|
+
|
|
136
170
|
if ( this.bufferStride === 0 && this.bufferOffset === 0 ) {
|
|
137
171
|
|
|
138
172
|
let bufferData = builder.globalCache.getData( this.value );
|
|
@@ -147,11 +181,15 @@ class BufferAttributeNode extends InputNode {
|
|
|
147
181
|
|
|
148
182
|
}
|
|
149
183
|
|
|
150
|
-
|
|
184
|
+
id = bufferData.node.id;
|
|
185
|
+
|
|
186
|
+
} else {
|
|
187
|
+
|
|
188
|
+
id = this.id;
|
|
151
189
|
|
|
152
190
|
}
|
|
153
191
|
|
|
154
|
-
return
|
|
192
|
+
return String( id );
|
|
155
193
|
|
|
156
194
|
}
|
|
157
195
|
|
|
@@ -162,7 +200,7 @@ class BufferAttributeNode extends InputNode {
|
|
|
162
200
|
* @param {NodeBuilder} builder - The current node builder.
|
|
163
201
|
* @return {string} The node type.
|
|
164
202
|
*/
|
|
165
|
-
|
|
203
|
+
generateNodeType( builder ) {
|
|
166
204
|
|
|
167
205
|
if ( this.bufferType === null ) {
|
|
168
206
|
|
|
@@ -185,13 +223,30 @@ class BufferAttributeNode extends InputNode {
|
|
|
185
223
|
|
|
186
224
|
if ( this.attribute !== null ) return;
|
|
187
225
|
|
|
226
|
+
//
|
|
227
|
+
|
|
188
228
|
const type = this.getNodeType( builder );
|
|
189
|
-
const array = this.value;
|
|
190
229
|
const itemSize = builder.getTypeLength( type );
|
|
230
|
+
const value = this.value;
|
|
191
231
|
const stride = this.bufferStride || itemSize;
|
|
192
232
|
const offset = this.bufferOffset;
|
|
193
233
|
|
|
194
|
-
|
|
234
|
+
let buffer;
|
|
235
|
+
|
|
236
|
+
if ( value.isInterleavedBuffer === true ) {
|
|
237
|
+
|
|
238
|
+
buffer = value;
|
|
239
|
+
|
|
240
|
+
} else if ( value.isBufferAttribute === true ) {
|
|
241
|
+
|
|
242
|
+
buffer = _getBufferAttribute( value.array, stride );
|
|
243
|
+
|
|
244
|
+
} else {
|
|
245
|
+
|
|
246
|
+
buffer = _getBufferAttribute( value, stride );
|
|
247
|
+
|
|
248
|
+
}
|
|
249
|
+
|
|
195
250
|
const bufferAttribute = new InterleavedBufferAttribute( buffer, itemSize, offset );
|
|
196
251
|
|
|
197
252
|
buffer.setUsage( this.usage );
|
|
@@ -284,6 +339,43 @@ class BufferAttributeNode extends InputNode {
|
|
|
284
339
|
|
|
285
340
|
export default BufferAttributeNode;
|
|
286
341
|
|
|
342
|
+
/**
|
|
343
|
+
* Internal method for creating buffer attribute nodes.
|
|
344
|
+
*
|
|
345
|
+
* @private
|
|
346
|
+
* @param {BufferAttribute|InterleavedBuffer|TypedArray} array - The attribute data.
|
|
347
|
+
* @param {?string} [type=null] - The buffer type (e.g. `'vec3'`).
|
|
348
|
+
* @param {number} [stride=0] - The buffer stride.
|
|
349
|
+
* @param {number} [offset=0] - The buffer offset.
|
|
350
|
+
* @param {number} [usage=StaticDrawUsage] - The buffer usage.
|
|
351
|
+
* @param {boolean} [instanced=false] - Whether the buffer is instanced.
|
|
352
|
+
* @returns {BufferAttributeNode|Node} The buffer attribute node.
|
|
353
|
+
*/
|
|
354
|
+
function createBufferAttribute( array, type = null, stride = 0, offset = 0, usage = StaticDrawUsage, instanced = false ) {
|
|
355
|
+
|
|
356
|
+
if ( type === 'mat3' || ( type === null && array.itemSize === 9 ) ) {
|
|
357
|
+
|
|
358
|
+
return mat3(
|
|
359
|
+
new BufferAttributeNode( array, 'vec3', 9, 0 ).setUsage( usage ).setInstanced( instanced ),
|
|
360
|
+
new BufferAttributeNode( array, 'vec3', 9, 3 ).setUsage( usage ).setInstanced( instanced ),
|
|
361
|
+
new BufferAttributeNode( array, 'vec3', 9, 6 ).setUsage( usage ).setInstanced( instanced )
|
|
362
|
+
);
|
|
363
|
+
|
|
364
|
+
} else if ( type === 'mat4' || ( type === null && array.itemSize === 16 ) ) {
|
|
365
|
+
|
|
366
|
+
return mat4(
|
|
367
|
+
new BufferAttributeNode( array, 'vec4', 16, 0 ).setUsage( usage ).setInstanced( instanced ),
|
|
368
|
+
new BufferAttributeNode( array, 'vec4', 16, 4 ).setUsage( usage ).setInstanced( instanced ),
|
|
369
|
+
new BufferAttributeNode( array, 'vec4', 16, 8 ).setUsage( usage ).setInstanced( instanced ),
|
|
370
|
+
new BufferAttributeNode( array, 'vec4', 16, 12 ).setUsage( usage ).setInstanced( instanced )
|
|
371
|
+
);
|
|
372
|
+
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
return new BufferAttributeNode( array, type, stride, offset ).setUsage( usage );
|
|
376
|
+
|
|
377
|
+
}
|
|
378
|
+
|
|
287
379
|
/**
|
|
288
380
|
* TSL function for creating a buffer attribute node.
|
|
289
381
|
*
|
|
@@ -293,9 +385,9 @@ export default BufferAttributeNode;
|
|
|
293
385
|
* @param {?string} [type=null] - The buffer type (e.g. `'vec3'`).
|
|
294
386
|
* @param {number} [stride=0] - The buffer stride.
|
|
295
387
|
* @param {number} [offset=0] - The buffer offset.
|
|
296
|
-
* @returns {BufferAttributeNode}
|
|
388
|
+
* @returns {BufferAttributeNode|Node}
|
|
297
389
|
*/
|
|
298
|
-
export const bufferAttribute = ( array, type = null, stride = 0, offset = 0 ) =>
|
|
390
|
+
export const bufferAttribute = ( array, type = null, stride = 0, offset = 0 ) => createBufferAttribute( array, type, stride, offset );
|
|
299
391
|
|
|
300
392
|
/**
|
|
301
393
|
* TSL function for creating a buffer attribute node but with dynamic draw usage.
|
|
@@ -307,9 +399,9 @@ export const bufferAttribute = ( array, type = null, stride = 0, offset = 0 ) =>
|
|
|
307
399
|
* @param {?string} [type=null] - The buffer type (e.g. `'vec3'`).
|
|
308
400
|
* @param {number} [stride=0] - The buffer stride.
|
|
309
401
|
* @param {number} [offset=0] - The buffer offset.
|
|
310
|
-
* @returns {BufferAttributeNode}
|
|
402
|
+
* @returns {BufferAttributeNode|Node}
|
|
311
403
|
*/
|
|
312
|
-
export const dynamicBufferAttribute = ( array, type = null, stride = 0, offset = 0 ) =>
|
|
404
|
+
export const dynamicBufferAttribute = ( array, type = null, stride = 0, offset = 0 ) => createBufferAttribute( array, type, stride, offset, DynamicDrawUsage );
|
|
313
405
|
|
|
314
406
|
/**
|
|
315
407
|
* TSL function for creating a buffer attribute node but with enabled instancing
|
|
@@ -320,9 +412,9 @@ export const dynamicBufferAttribute = ( array, type = null, stride = 0, offset =
|
|
|
320
412
|
* @param {?string} [type=null] - The buffer type (e.g. `'vec3'`).
|
|
321
413
|
* @param {number} [stride=0] - The buffer stride.
|
|
322
414
|
* @param {number} [offset=0] - The buffer offset.
|
|
323
|
-
* @returns {BufferAttributeNode}
|
|
415
|
+
* @returns {BufferAttributeNode|Node}
|
|
324
416
|
*/
|
|
325
|
-
export const instancedBufferAttribute = ( array, type = null, stride = 0, offset = 0 ) =>
|
|
417
|
+
export const instancedBufferAttribute = ( array, type = null, stride = 0, offset = 0 ) => createBufferAttribute( array, type, stride, offset, StaticDrawUsage, true );
|
|
326
418
|
|
|
327
419
|
/**
|
|
328
420
|
* TSL function for creating a buffer attribute node but with dynamic draw usage and enabled instancing
|
|
@@ -333,8 +425,8 @@ export const instancedBufferAttribute = ( array, type = null, stride = 0, offset
|
|
|
333
425
|
* @param {?string} [type=null] - The buffer type (e.g. `'vec3'`).
|
|
334
426
|
* @param {number} [stride=0] - The buffer stride.
|
|
335
427
|
* @param {number} [offset=0] - The buffer offset.
|
|
336
|
-
* @returns {BufferAttributeNode}
|
|
428
|
+
* @returns {BufferAttributeNode|Node}
|
|
337
429
|
*/
|
|
338
|
-
export const instancedDynamicBufferAttribute = ( array, type = null, stride = 0, offset = 0 ) =>
|
|
430
|
+
export const instancedDynamicBufferAttribute = ( array, type = null, stride = 0, offset = 0 ) => createBufferAttribute( array, type, stride, offset, DynamicDrawUsage, true );
|
|
339
431
|
|
|
340
432
|
addMethodChaining( 'toAttribute', ( bufferNode ) => bufferAttribute( bufferNode.value ) );
|