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
|
@@ -4,12 +4,16 @@ import { textureSize } from './TextureSizeNode.js';
|
|
|
4
4
|
import { colorSpaceToWorking } from '../display/ColorSpaceNode.js';
|
|
5
5
|
import { expression } from '../code/ExpressionNode.js';
|
|
6
6
|
import { maxMipLevel } from '../utils/MaxMipLevelNode.js';
|
|
7
|
-
import { nodeProxy, vec3, nodeObject, int } from '../tsl/TSLBase.js';
|
|
7
|
+
import { nodeProxy, vec3, nodeObject, int, Fn } from '../tsl/TSLBase.js';
|
|
8
|
+
import { step } from '../math/MathNode.js';
|
|
8
9
|
import { NodeUpdateType } from '../core/constants.js';
|
|
9
10
|
|
|
10
|
-
import { IntType, NearestFilter, UnsignedIntType } from '../../constants.js';
|
|
11
|
+
import { Compatibility, GreaterCompare, GreaterEqualCompare, IntType, LessCompare, LessEqualCompare, NearestFilter, UnsignedIntType } from '../../constants.js';
|
|
11
12
|
|
|
12
13
|
import { Texture } from '../../textures/Texture.js';
|
|
14
|
+
import { warn, warnOnce } from '../../utils.js';
|
|
15
|
+
|
|
16
|
+
import NodeError from '../core/NodeError.js';
|
|
13
17
|
|
|
14
18
|
const EmptyTexture = /*@__PURE__*/ new Texture();
|
|
15
19
|
|
|
@@ -95,6 +99,15 @@ class TextureNode extends UniformNode {
|
|
|
95
99
|
*/
|
|
96
100
|
this.gradNode = null;
|
|
97
101
|
|
|
102
|
+
/**
|
|
103
|
+
* Represents the optional texel offset applied to the unnormalized texture
|
|
104
|
+
* coordinate before sampling the texture.
|
|
105
|
+
*
|
|
106
|
+
* @type {?Node<ivec2|ivec3>}
|
|
107
|
+
* @default null
|
|
108
|
+
*/
|
|
109
|
+
this.offsetNode = null;
|
|
110
|
+
|
|
98
111
|
/**
|
|
99
112
|
* Whether texture values should be sampled or fetched.
|
|
100
113
|
*
|
|
@@ -114,9 +127,9 @@ class TextureNode extends UniformNode {
|
|
|
114
127
|
this.updateMatrix = false;
|
|
115
128
|
|
|
116
129
|
/**
|
|
117
|
-
* By default the `update()` method is not executed.
|
|
118
|
-
*
|
|
119
|
-
*
|
|
130
|
+
* By default the `update()` method is not executed. Depending on
|
|
131
|
+
* whether a uv transformation matrix and/or flipY is applied, `update()`
|
|
132
|
+
* is executed per object.
|
|
120
133
|
*
|
|
121
134
|
* @type {string}
|
|
122
135
|
* @default 'none'
|
|
@@ -144,9 +157,19 @@ class TextureNode extends UniformNode {
|
|
|
144
157
|
*
|
|
145
158
|
* @private
|
|
146
159
|
* @type {?UniformNode<mat3>}
|
|
160
|
+
* @default null
|
|
147
161
|
*/
|
|
148
162
|
this._matrixUniform = null;
|
|
149
163
|
|
|
164
|
+
/**
|
|
165
|
+
* The uniform node that represents the y-flip. Only required for WebGL.
|
|
166
|
+
*
|
|
167
|
+
* @private
|
|
168
|
+
* @type {?UniformNode<bool>}
|
|
169
|
+
* @default null
|
|
170
|
+
*/
|
|
171
|
+
this._flipYUniform = null;
|
|
172
|
+
|
|
150
173
|
this.setUpdateMatrix( uvNode === null );
|
|
151
174
|
|
|
152
175
|
}
|
|
@@ -194,7 +217,7 @@ class TextureNode extends UniformNode {
|
|
|
194
217
|
* @param {NodeBuilder} builder - The current node builder.
|
|
195
218
|
* @return {string} The node type.
|
|
196
219
|
*/
|
|
197
|
-
|
|
220
|
+
generateNodeType( /*builder*/ ) {
|
|
198
221
|
|
|
199
222
|
if ( this.value.isDepthTexture === true ) return 'float';
|
|
200
223
|
|
|
@@ -270,7 +293,6 @@ class TextureNode extends UniformNode {
|
|
|
270
293
|
setUpdateMatrix( value ) {
|
|
271
294
|
|
|
272
295
|
this.updateMatrix = value;
|
|
273
|
-
this.updateType = value ? NodeUpdateType.OBJECT : NodeUpdateType.NONE;
|
|
274
296
|
|
|
275
297
|
return this;
|
|
276
298
|
|
|
@@ -286,17 +308,19 @@ class TextureNode extends UniformNode {
|
|
|
286
308
|
*/
|
|
287
309
|
setupUV( builder, uvNode ) {
|
|
288
310
|
|
|
289
|
-
|
|
311
|
+
if ( builder.isFlipY() ) {
|
|
312
|
+
|
|
313
|
+
if ( this._flipYUniform === null ) this._flipYUniform = uniform( false );
|
|
290
314
|
|
|
291
|
-
|
|
315
|
+
uvNode = uvNode.toVar();
|
|
292
316
|
|
|
293
317
|
if ( this.sampler ) {
|
|
294
318
|
|
|
295
|
-
uvNode = uvNode.flipY();
|
|
319
|
+
uvNode = this._flipYUniform.select( uvNode.flipY(), uvNode );
|
|
296
320
|
|
|
297
321
|
} else {
|
|
298
322
|
|
|
299
|
-
uvNode = uvNode.setY( int( textureSize( this, this.levelNode ).y ).sub( uvNode.y ).sub( 1 ) );
|
|
323
|
+
uvNode = this._flipYUniform.select( uvNode.setY( int( textureSize( this, this.levelNode ).y ).sub( uvNode.y ).sub( 1 ) ), uvNode );
|
|
300
324
|
|
|
301
325
|
}
|
|
302
326
|
|
|
@@ -322,29 +346,41 @@ class TextureNode extends UniformNode {
|
|
|
322
346
|
|
|
323
347
|
if ( ! texture || texture.isTexture !== true ) {
|
|
324
348
|
|
|
325
|
-
throw new
|
|
349
|
+
throw new NodeError( 'THREE.TSL: `texture( value )` function expects a valid instance of THREE.Texture().', this.stackTrace );
|
|
326
350
|
|
|
327
351
|
}
|
|
328
352
|
|
|
329
353
|
//
|
|
330
354
|
|
|
331
|
-
|
|
355
|
+
const uvNode = Fn( () => {
|
|
332
356
|
|
|
333
|
-
|
|
357
|
+
let uvNode = this.uvNode;
|
|
334
358
|
|
|
335
|
-
uvNode
|
|
359
|
+
if ( ( uvNode === null || builder.context.forceUVContext === true ) && builder.context.getUV ) {
|
|
336
360
|
|
|
337
|
-
|
|
361
|
+
uvNode = builder.context.getUV( this, builder );
|
|
338
362
|
|
|
339
|
-
|
|
363
|
+
}
|
|
340
364
|
|
|
341
|
-
|
|
365
|
+
if ( ! uvNode ) uvNode = this.getDefaultUV();
|
|
342
366
|
|
|
343
|
-
|
|
367
|
+
if ( this.updateMatrix === true ) {
|
|
344
368
|
|
|
345
|
-
|
|
369
|
+
uvNode = this.getTransformedUV( uvNode );
|
|
370
|
+
|
|
371
|
+
}
|
|
346
372
|
|
|
347
|
-
|
|
373
|
+
uvNode = this.setupUV( builder, uvNode );
|
|
374
|
+
|
|
375
|
+
//
|
|
376
|
+
|
|
377
|
+
this.updateType = ( this._matrixUniform !== null || this._flipYUniform !== null ) ? NodeUpdateType.OBJECT : NodeUpdateType.NONE;
|
|
378
|
+
|
|
379
|
+
//
|
|
380
|
+
|
|
381
|
+
return uvNode;
|
|
382
|
+
|
|
383
|
+
} )();
|
|
348
384
|
|
|
349
385
|
//
|
|
350
386
|
|
|
@@ -358,12 +394,43 @@ class TextureNode extends UniformNode {
|
|
|
358
394
|
|
|
359
395
|
//
|
|
360
396
|
|
|
397
|
+
let compareNode = null;
|
|
398
|
+
let compareStepNode = null;
|
|
399
|
+
|
|
400
|
+
if ( this.compareNode !== null ) {
|
|
401
|
+
|
|
402
|
+
if ( builder.renderer.hasCompatibility( Compatibility.TEXTURE_COMPARE ) ) {
|
|
403
|
+
|
|
404
|
+
compareNode = this.compareNode;
|
|
405
|
+
|
|
406
|
+
} else {
|
|
407
|
+
|
|
408
|
+
const compareFunction = texture.compareFunction;
|
|
409
|
+
|
|
410
|
+
if ( compareFunction === null || compareFunction === LessCompare || compareFunction === LessEqualCompare || compareFunction === GreaterCompare || compareFunction === GreaterEqualCompare ) {
|
|
411
|
+
|
|
412
|
+
compareStepNode = this.compareNode;
|
|
413
|
+
|
|
414
|
+
} else {
|
|
415
|
+
|
|
416
|
+
compareNode = this.compareNode;
|
|
417
|
+
|
|
418
|
+
warnOnce( 'TSL: Only "LessCompare", "LessEqualCompare", "GreaterCompare" and "GreaterEqualCompare" are supported for depth texture comparison fallback.' );
|
|
419
|
+
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
}
|
|
425
|
+
|
|
361
426
|
properties.uvNode = uvNode;
|
|
362
427
|
properties.levelNode = levelNode;
|
|
363
428
|
properties.biasNode = this.biasNode;
|
|
364
|
-
properties.compareNode =
|
|
429
|
+
properties.compareNode = compareNode;
|
|
430
|
+
properties.compareStepNode = compareStepNode;
|
|
365
431
|
properties.gradNode = this.gradNode;
|
|
366
432
|
properties.depthNode = this.depthNode;
|
|
433
|
+
properties.offsetNode = this.offsetNode;
|
|
367
434
|
|
|
368
435
|
}
|
|
369
436
|
|
|
@@ -380,6 +447,19 @@ class TextureNode extends UniformNode {
|
|
|
380
447
|
|
|
381
448
|
}
|
|
382
449
|
|
|
450
|
+
/**
|
|
451
|
+
* Generates the offset code snippet.
|
|
452
|
+
*
|
|
453
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
454
|
+
* @param {Node} offsetNode - The offset node to generate code for.
|
|
455
|
+
* @return {string} The generated code snippet.
|
|
456
|
+
*/
|
|
457
|
+
generateOffset( builder, offsetNode ) {
|
|
458
|
+
|
|
459
|
+
return offsetNode.build( builder, 'ivec2' );
|
|
460
|
+
|
|
461
|
+
}
|
|
462
|
+
|
|
383
463
|
/**
|
|
384
464
|
* Generates the snippet for the texture sampling.
|
|
385
465
|
*
|
|
@@ -391,37 +471,38 @@ class TextureNode extends UniformNode {
|
|
|
391
471
|
* @param {?string} depthSnippet - The depth snippet.
|
|
392
472
|
* @param {?string} compareSnippet - The compare snippet.
|
|
393
473
|
* @param {?Array<string>} gradSnippet - The grad snippet.
|
|
474
|
+
* @param {?string} offsetSnippet - The offset snippet.
|
|
394
475
|
* @return {string} The generated code snippet.
|
|
395
476
|
*/
|
|
396
|
-
generateSnippet( builder, textureProperty, uvSnippet, levelSnippet, biasSnippet, depthSnippet, compareSnippet, gradSnippet ) {
|
|
477
|
+
generateSnippet( builder, textureProperty, uvSnippet, levelSnippet, biasSnippet, depthSnippet, compareSnippet, gradSnippet, offsetSnippet ) {
|
|
397
478
|
|
|
398
479
|
const texture = this.value;
|
|
399
480
|
|
|
400
481
|
let snippet;
|
|
401
482
|
|
|
402
|
-
if (
|
|
403
|
-
|
|
404
|
-
snippet = builder.generateTextureLevel( texture, textureProperty, uvSnippet, levelSnippet, depthSnippet );
|
|
483
|
+
if ( biasSnippet ) {
|
|
405
484
|
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
snippet = builder.generateTextureBias( texture, textureProperty, uvSnippet, biasSnippet, depthSnippet );
|
|
485
|
+
snippet = builder.generateTextureBias( texture, textureProperty, uvSnippet, biasSnippet, depthSnippet, offsetSnippet );
|
|
409
486
|
|
|
410
487
|
} else if ( gradSnippet ) {
|
|
411
488
|
|
|
412
|
-
snippet = builder.generateTextureGrad( texture, textureProperty, uvSnippet, gradSnippet, depthSnippet );
|
|
489
|
+
snippet = builder.generateTextureGrad( texture, textureProperty, uvSnippet, gradSnippet, depthSnippet, offsetSnippet );
|
|
413
490
|
|
|
414
491
|
} else if ( compareSnippet ) {
|
|
415
492
|
|
|
416
|
-
snippet = builder.generateTextureCompare( texture, textureProperty, uvSnippet, compareSnippet, depthSnippet );
|
|
493
|
+
snippet = builder.generateTextureCompare( texture, textureProperty, uvSnippet, compareSnippet, depthSnippet, offsetSnippet );
|
|
417
494
|
|
|
418
495
|
} else if ( this.sampler === false ) {
|
|
419
496
|
|
|
420
|
-
snippet = builder.generateTextureLoad( texture, textureProperty, uvSnippet, depthSnippet );
|
|
497
|
+
snippet = builder.generateTextureLoad( texture, textureProperty, uvSnippet, levelSnippet, depthSnippet, offsetSnippet );
|
|
498
|
+
|
|
499
|
+
} else if ( levelSnippet ) {
|
|
500
|
+
|
|
501
|
+
snippet = builder.generateTextureLevel( texture, textureProperty, uvSnippet, levelSnippet, depthSnippet, offsetSnippet );
|
|
421
502
|
|
|
422
503
|
} else {
|
|
423
504
|
|
|
424
|
-
snippet = builder.generateTexture( texture, textureProperty, uvSnippet, depthSnippet );
|
|
505
|
+
snippet = builder.generateTexture( texture, textureProperty, uvSnippet, depthSnippet, offsetSnippet );
|
|
425
506
|
|
|
426
507
|
}
|
|
427
508
|
|
|
@@ -455,24 +536,52 @@ class TextureNode extends UniformNode {
|
|
|
455
536
|
|
|
456
537
|
const nodeData = builder.getDataFromNode( this );
|
|
457
538
|
|
|
539
|
+
const nodeType = this.getNodeType( builder );
|
|
540
|
+
|
|
458
541
|
let propertyName = nodeData.propertyName;
|
|
459
542
|
|
|
460
543
|
if ( propertyName === undefined ) {
|
|
461
544
|
|
|
462
|
-
const { uvNode, levelNode, biasNode, compareNode, depthNode, gradNode } = properties;
|
|
545
|
+
const { uvNode, levelNode, biasNode, compareNode, compareStepNode, depthNode, gradNode, offsetNode } = properties;
|
|
463
546
|
|
|
464
547
|
const uvSnippet = this.generateUV( builder, uvNode );
|
|
465
548
|
const levelSnippet = levelNode ? levelNode.build( builder, 'float' ) : null;
|
|
466
549
|
const biasSnippet = biasNode ? biasNode.build( builder, 'float' ) : null;
|
|
467
550
|
const depthSnippet = depthNode ? depthNode.build( builder, 'int' ) : null;
|
|
468
551
|
const compareSnippet = compareNode ? compareNode.build( builder, 'float' ) : null;
|
|
552
|
+
const compareStepSnippet = compareStepNode ? compareStepNode.build( builder, 'float' ) : null;
|
|
469
553
|
const gradSnippet = gradNode ? [ gradNode[ 0 ].build( builder, 'vec2' ), gradNode[ 1 ].build( builder, 'vec2' ) ] : null;
|
|
554
|
+
const offsetSnippet = offsetNode ? this.generateOffset( builder, offsetNode ) : null;
|
|
555
|
+
|
|
556
|
+
let finalDepthSnippet = depthSnippet;
|
|
557
|
+
|
|
558
|
+
if ( finalDepthSnippet === null && texture.isArrayTexture && this.isTexture3DNode !== true ) {
|
|
559
|
+
|
|
560
|
+
finalDepthSnippet = '0';
|
|
561
|
+
|
|
562
|
+
}
|
|
470
563
|
|
|
471
564
|
const nodeVar = builder.getVarFromNode( this );
|
|
472
565
|
|
|
473
566
|
propertyName = builder.getPropertyName( nodeVar );
|
|
474
567
|
|
|
475
|
-
|
|
568
|
+
let snippet = this.generateSnippet( builder, textureProperty, uvSnippet, levelSnippet, biasSnippet, finalDepthSnippet, compareSnippet, gradSnippet, offsetSnippet );
|
|
569
|
+
|
|
570
|
+
if ( compareStepSnippet !== null ) {
|
|
571
|
+
|
|
572
|
+
const compareFunction = texture.compareFunction;
|
|
573
|
+
|
|
574
|
+
if ( compareFunction === GreaterCompare || compareFunction === GreaterEqualCompare ) {
|
|
575
|
+
|
|
576
|
+
snippet = step( expression( snippet, nodeType ), expression( compareStepSnippet, 'float' ) ).build( builder, nodeType );
|
|
577
|
+
|
|
578
|
+
} else {
|
|
579
|
+
|
|
580
|
+
snippet = step( expression( compareStepSnippet, 'float' ), expression( snippet, nodeType ) ).build( builder, nodeType );
|
|
581
|
+
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
}
|
|
476
585
|
|
|
477
586
|
builder.addLineFlowCode( `${propertyName} = ${snippet}`, this );
|
|
478
587
|
|
|
@@ -482,7 +591,6 @@ class TextureNode extends UniformNode {
|
|
|
482
591
|
}
|
|
483
592
|
|
|
484
593
|
let snippet = propertyName;
|
|
485
|
-
const nodeType = this.getNodeType( builder );
|
|
486
594
|
|
|
487
595
|
if ( builder.needsToWorkingColorSpace( texture ) ) {
|
|
488
596
|
|
|
@@ -523,21 +631,6 @@ class TextureNode extends UniformNode {
|
|
|
523
631
|
|
|
524
632
|
// @TODO: Move to TSL
|
|
525
633
|
|
|
526
|
-
/**
|
|
527
|
-
* @function
|
|
528
|
-
* @deprecated since r172. Use {@link TextureNode#sample} instead.
|
|
529
|
-
*
|
|
530
|
-
* @param {Node} uvNode - The uv node.
|
|
531
|
-
* @return {TextureNode} A texture node representing the texture sample.
|
|
532
|
-
*/
|
|
533
|
-
uv( uvNode ) { // @deprecated, r172
|
|
534
|
-
|
|
535
|
-
console.warn( 'THREE.TextureNode: .uv() has been renamed. Use .sample() instead.' );
|
|
536
|
-
|
|
537
|
-
return this.sample( uvNode );
|
|
538
|
-
|
|
539
|
-
}
|
|
540
|
-
|
|
541
634
|
/**
|
|
542
635
|
* Samples the texture with the given uv node.
|
|
543
636
|
*
|
|
@@ -548,7 +641,7 @@ class TextureNode extends UniformNode {
|
|
|
548
641
|
|
|
549
642
|
const textureNode = this.clone();
|
|
550
643
|
textureNode.uvNode = nodeObject( uvNode );
|
|
551
|
-
textureNode.referenceNode = this.
|
|
644
|
+
textureNode.referenceNode = this.getBase();
|
|
552
645
|
|
|
553
646
|
return nodeObject( textureNode );
|
|
554
647
|
|
|
@@ -576,13 +669,13 @@ class TextureNode extends UniformNode {
|
|
|
576
669
|
|
|
577
670
|
const textureNode = this.clone();
|
|
578
671
|
textureNode.biasNode = nodeObject( amountNode ).mul( maxMipLevel( textureNode ) );
|
|
579
|
-
textureNode.referenceNode = this.
|
|
672
|
+
textureNode.referenceNode = this.getBase();
|
|
580
673
|
|
|
581
674
|
const map = textureNode.value;
|
|
582
675
|
|
|
583
676
|
if ( textureNode.generateMipmaps === false && ( map && map.generateMipmaps === false || map.minFilter === NearestFilter || map.magFilter === NearestFilter ) ) {
|
|
584
677
|
|
|
585
|
-
|
|
678
|
+
warn( 'TSL: texture().blur() requires mipmaps and sampling. Use .generateMipmaps=true and .minFilter/.magFilter=THREE.LinearFilter in the Texture.' );
|
|
586
679
|
|
|
587
680
|
textureNode.biasNode = null;
|
|
588
681
|
|
|
@@ -602,7 +695,7 @@ class TextureNode extends UniformNode {
|
|
|
602
695
|
|
|
603
696
|
const textureNode = this.clone();
|
|
604
697
|
textureNode.levelNode = nodeObject( levelNode );
|
|
605
|
-
textureNode.referenceNode = this.
|
|
698
|
+
textureNode.referenceNode = this.getBase();
|
|
606
699
|
|
|
607
700
|
return nodeObject( textureNode );
|
|
608
701
|
|
|
@@ -630,12 +723,22 @@ class TextureNode extends UniformNode {
|
|
|
630
723
|
|
|
631
724
|
const textureNode = this.clone();
|
|
632
725
|
textureNode.biasNode = nodeObject( biasNode );
|
|
633
|
-
textureNode.referenceNode = this.
|
|
726
|
+
textureNode.referenceNode = this.getBase();
|
|
634
727
|
|
|
635
728
|
return nodeObject( textureNode );
|
|
636
729
|
|
|
637
730
|
}
|
|
638
731
|
|
|
732
|
+
/**
|
|
733
|
+
* Returns the base texture of this node.
|
|
734
|
+
* @return {TextureNode} The base texture node.
|
|
735
|
+
*/
|
|
736
|
+
getBase() {
|
|
737
|
+
|
|
738
|
+
return this.referenceNode ? this.referenceNode.getBase() : this;
|
|
739
|
+
|
|
740
|
+
}
|
|
741
|
+
|
|
639
742
|
/**
|
|
640
743
|
* Samples the texture by executing a compare operation.
|
|
641
744
|
*
|
|
@@ -646,7 +749,7 @@ class TextureNode extends UniformNode {
|
|
|
646
749
|
|
|
647
750
|
const textureNode = this.clone();
|
|
648
751
|
textureNode.compareNode = nodeObject( compareNode );
|
|
649
|
-
textureNode.referenceNode = this.
|
|
752
|
+
textureNode.referenceNode = this.getBase();
|
|
650
753
|
|
|
651
754
|
return nodeObject( textureNode );
|
|
652
755
|
|
|
@@ -663,7 +766,7 @@ class TextureNode extends UniformNode {
|
|
|
663
766
|
|
|
664
767
|
const textureNode = this.clone();
|
|
665
768
|
textureNode.gradNode = [ nodeObject( gradNodeX ), nodeObject( gradNodeY ) ];
|
|
666
|
-
textureNode.referenceNode = this.
|
|
769
|
+
textureNode.referenceNode = this.getBase();
|
|
667
770
|
|
|
668
771
|
return nodeObject( textureNode );
|
|
669
772
|
|
|
@@ -679,7 +782,23 @@ class TextureNode extends UniformNode {
|
|
|
679
782
|
|
|
680
783
|
const textureNode = this.clone();
|
|
681
784
|
textureNode.depthNode = nodeObject( depthNode );
|
|
682
|
-
textureNode.referenceNode = this.
|
|
785
|
+
textureNode.referenceNode = this.getBase();
|
|
786
|
+
|
|
787
|
+
return nodeObject( textureNode );
|
|
788
|
+
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
/**
|
|
792
|
+
* Samples the texture by defining an offset node.
|
|
793
|
+
*
|
|
794
|
+
* @param {Node<ivec2>} offsetNode - The offset node.
|
|
795
|
+
* @return {TextureNode} A texture node representing the texture sample.
|
|
796
|
+
*/
|
|
797
|
+
offset( offsetNode ) {
|
|
798
|
+
|
|
799
|
+
const textureNode = this.clone();
|
|
800
|
+
textureNode.offsetNode = nodeObject( offsetNode );
|
|
801
|
+
textureNode.referenceNode = this.getBase();
|
|
683
802
|
|
|
684
803
|
return nodeObject( textureNode );
|
|
685
804
|
|
|
@@ -725,6 +844,16 @@ class TextureNode extends UniformNode {
|
|
|
725
844
|
|
|
726
845
|
}
|
|
727
846
|
|
|
847
|
+
//
|
|
848
|
+
|
|
849
|
+
const flipYUniform = this._flipYUniform;
|
|
850
|
+
|
|
851
|
+
if ( flipYUniform !== null ) {
|
|
852
|
+
|
|
853
|
+
flipYUniform.value = ( ( texture.image instanceof ImageBitmap && texture.flipY === true ) || texture.isRenderTargetTexture === true || texture.isFramebufferTexture === true || texture.isDepthTexture === true );
|
|
854
|
+
|
|
855
|
+
}
|
|
856
|
+
|
|
728
857
|
}
|
|
729
858
|
|
|
730
859
|
/**
|
|
@@ -739,6 +868,7 @@ class TextureNode extends UniformNode {
|
|
|
739
868
|
newNode.depthNode = this.depthNode;
|
|
740
869
|
newNode.compareNode = this.compareNode;
|
|
741
870
|
newNode.gradNode = this.gradNode;
|
|
871
|
+
newNode.offsetNode = this.offsetNode;
|
|
742
872
|
|
|
743
873
|
return newNode;
|
|
744
874
|
|
|
@@ -766,7 +896,7 @@ const textureBase = /*@__PURE__*/ nodeProxy( TextureNode ).setParameterLength( 1
|
|
|
766
896
|
*
|
|
767
897
|
* @tsl
|
|
768
898
|
* @function
|
|
769
|
-
* @param {?Texture|TextureNode} [value=EmptyTexture] - The texture.
|
|
899
|
+
* @param {?(Texture|TextureNode)} [value=EmptyTexture] - The texture.
|
|
770
900
|
* @param {?Node<vec2|vec3>} [uvNode=null] - The uv node.
|
|
771
901
|
* @param {?Node<int>} [levelNode=null] - The level node.
|
|
772
902
|
* @param {?Node<float>} [biasNode=null] - The bias node.
|
|
@@ -779,7 +909,7 @@ export const texture = ( value = EmptyTexture, uvNode = null, levelNode = null,
|
|
|
779
909
|
if ( value && value.isTextureNode === true ) {
|
|
780
910
|
|
|
781
911
|
textureNode = nodeObject( value.clone() );
|
|
782
|
-
textureNode.referenceNode = value.
|
|
912
|
+
textureNode.referenceNode = value.getBase(); // Ensure the reference is set to the original node
|
|
783
913
|
|
|
784
914
|
if ( uvNode !== null ) textureNode.uvNode = nodeObject( uvNode );
|
|
785
915
|
if ( levelNode !== null ) textureNode.levelNode = nodeObject( levelNode );
|
|
@@ -810,7 +940,7 @@ export const uniformTexture = ( value = EmptyTexture ) => texture( value );
|
|
|
810
940
|
*
|
|
811
941
|
* @tsl
|
|
812
942
|
* @function
|
|
813
|
-
* @param {?Texture|TextureNode} [value=EmptyTexture] - The texture.
|
|
943
|
+
* @param {?(Texture|TextureNode)} [value=EmptyTexture] - The texture.
|
|
814
944
|
* @param {?Node<vec2|vec3>} [uvNode=null] - The uv node.
|
|
815
945
|
* @param {?Node<int>} [levelNode=null] - The level node.
|
|
816
946
|
* @param {?Node<float>} [biasNode=null] - The bias node.
|
|
@@ -818,7 +948,7 @@ export const uniformTexture = ( value = EmptyTexture ) => texture( value );
|
|
|
818
948
|
*/
|
|
819
949
|
export const textureLoad = ( ...params ) => texture( ...params ).setSampler( false );
|
|
820
950
|
|
|
821
|
-
|
|
951
|
+
export const textureLevel = ( value, uv, level ) => texture( value, uv ).level( level );
|
|
822
952
|
|
|
823
953
|
/**
|
|
824
954
|
* Converts a texture or texture node to a sampler.
|
|
@@ -41,7 +41,7 @@ class UniformArrayElementNode extends ArrayElementNode {
|
|
|
41
41
|
generate( builder ) {
|
|
42
42
|
|
|
43
43
|
const snippet = super.generate( builder );
|
|
44
|
-
const type = this.getNodeType();
|
|
44
|
+
const type = this.getNodeType( builder );
|
|
45
45
|
const paddedType = this.node.getPaddedType();
|
|
46
46
|
|
|
47
47
|
return builder.format( snippet, paddedType, type );
|
|
@@ -135,7 +135,7 @@ class UniformArrayNode extends BufferNode {
|
|
|
135
135
|
* @param {NodeBuilder} builder - The current node builder.
|
|
136
136
|
* @return {string} The node type.
|
|
137
137
|
*/
|
|
138
|
-
|
|
138
|
+
generateNodeType( /*builder*/ ) {
|
|
139
139
|
|
|
140
140
|
return this.paddedType;
|
|
141
141
|
|
|
@@ -315,6 +315,8 @@ class UniformArrayNode extends BufferNode {
|
|
|
315
315
|
this.bufferCount = length;
|
|
316
316
|
this.bufferType = paddedType;
|
|
317
317
|
|
|
318
|
+
this.update(); // initialize the buffer values
|
|
319
|
+
|
|
318
320
|
return super.setup( builder );
|
|
319
321
|
|
|
320
322
|
}
|
|
@@ -328,7 +330,7 @@ class UniformArrayNode extends BufferNode {
|
|
|
328
330
|
*/
|
|
329
331
|
element( indexNode ) {
|
|
330
332
|
|
|
331
|
-
return
|
|
333
|
+
return new UniformArrayElementNode( this, nodeObject( indexNode ) );
|
|
332
334
|
|
|
333
335
|
}
|
|
334
336
|
|
|
@@ -345,4 +347,4 @@ export default UniformArrayNode;
|
|
|
345
347
|
* @param {?string} [nodeType] - The data type of the array elements.
|
|
346
348
|
* @returns {UniformArrayNode}
|
|
347
349
|
*/
|
|
348
|
-
export const uniformArray = ( values, nodeType ) =>
|
|
350
|
+
export const uniformArray = ( values, nodeType ) => new UniformArrayNode( values, nodeType );
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import ReferenceNode from './ReferenceNode.js';
|
|
2
|
-
import { nodeObject } from '../tsl/TSLBase.js';
|
|
3
2
|
|
|
4
3
|
/**
|
|
5
4
|
* A special type of reference node that allows to link values in
|
|
@@ -74,4 +73,4 @@ export default UserDataNode;
|
|
|
74
73
|
* @param {?Object} userData - A reference to the `userData` object. If not provided, the `userData` property of the 3D object that uses the node material is evaluated.
|
|
75
74
|
* @returns {UserDataNode}
|
|
76
75
|
*/
|
|
77
|
-
export const userData = ( name, inputType, userData ) =>
|
|
76
|
+
export const userData = ( name, inputType, userData ) => new UserDataNode( name, inputType, userData );
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import AttributeNode from '../core/AttributeNode.js';
|
|
2
|
-
import { nodeObject } from '../tsl/TSLBase.js';
|
|
3
2
|
import { Vector4 } from '../../math/Vector4.js';
|
|
4
3
|
|
|
5
4
|
/**
|
|
@@ -107,4 +106,4 @@ export default VertexColorNode;
|
|
|
107
106
|
* @param {number} [index=0] - The attribute index.
|
|
108
107
|
* @returns {VertexColorNode}
|
|
109
108
|
*/
|
|
110
|
-
export const vertexColor = ( index = 0 ) =>
|
|
109
|
+
export const vertexColor = ( index = 0 ) => new VertexColorNode( index );
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import TempNode from '../core/TempNode.js';
|
|
2
2
|
import { addMethodChaining, nodeArray, nodeObject, nodeObjects, float } from '../tsl/TSLCore.js';
|
|
3
|
+
import { error } from '../../utils.js';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* This module represents the call of a {@link FunctionNode}. Developers are usually not confronted
|
|
@@ -69,12 +70,31 @@ class FunctionCallNode extends TempNode {
|
|
|
69
70
|
|
|
70
71
|
}
|
|
71
72
|
|
|
72
|
-
|
|
73
|
+
/**
|
|
74
|
+
* Returns the type of this function call node.
|
|
75
|
+
*
|
|
76
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
77
|
+
* @returns {string} The type of this node.
|
|
78
|
+
*/
|
|
79
|
+
generateNodeType( builder ) {
|
|
73
80
|
|
|
74
81
|
return this.functionNode.getNodeType( builder );
|
|
75
82
|
|
|
76
83
|
}
|
|
77
84
|
|
|
85
|
+
/**
|
|
86
|
+
* Returns the function node of this function call node.
|
|
87
|
+
*
|
|
88
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
89
|
+
* @param {string} [name] - The name of the member.
|
|
90
|
+
* @returns {string} The type of the member.
|
|
91
|
+
*/
|
|
92
|
+
getMemberType( builder, name ) {
|
|
93
|
+
|
|
94
|
+
return this.functionNode.getMemberType( builder, name );
|
|
95
|
+
|
|
96
|
+
}
|
|
97
|
+
|
|
78
98
|
generate( builder ) {
|
|
79
99
|
|
|
80
100
|
const params = [];
|
|
@@ -102,13 +122,13 @@ class FunctionCallNode extends TempNode {
|
|
|
102
122
|
|
|
103
123
|
if ( parameters.length > inputs.length ) {
|
|
104
124
|
|
|
105
|
-
|
|
125
|
+
error( 'TSL: The number of provided parameters exceeds the expected number of inputs in \'Fn()\'.' );
|
|
106
126
|
|
|
107
127
|
parameters.length = inputs.length;
|
|
108
128
|
|
|
109
129
|
} else if ( parameters.length < inputs.length ) {
|
|
110
130
|
|
|
111
|
-
|
|
131
|
+
error( 'TSL: The number of provided parameters is less than the expected number of inputs in \'Fn()\'.' );
|
|
112
132
|
|
|
113
133
|
while ( parameters.length < inputs.length ) {
|
|
114
134
|
|
|
@@ -136,7 +156,7 @@ class FunctionCallNode extends TempNode {
|
|
|
136
156
|
|
|
137
157
|
} else {
|
|
138
158
|
|
|
139
|
-
|
|
159
|
+
error( `TSL: Input '${ inputNode.name }' not found in \'Fn()\'.` );
|
|
140
160
|
|
|
141
161
|
params.push( generateInput( float( 0 ), inputNode ) );
|
|
142
162
|
|
|
@@ -160,7 +180,7 @@ export const call = ( func, ...params ) => {
|
|
|
160
180
|
|
|
161
181
|
params = params.length > 1 || ( params[ 0 ] && params[ 0 ].isNode === true ) ? nodeArray( params ) : nodeObjects( params[ 0 ] );
|
|
162
182
|
|
|
163
|
-
return
|
|
183
|
+
return new FunctionCallNode( nodeObject( func ), params );
|
|
164
184
|
|
|
165
185
|
};
|
|
166
186
|
|