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
|
@@ -7,8 +7,9 @@ import { buffer } from './BufferNode.js';
|
|
|
7
7
|
import { nodeObject } from '../tsl/TSLBase.js';
|
|
8
8
|
import { uniformArray } from './UniformArrayNode.js';
|
|
9
9
|
import ArrayElementNode from '../utils/ArrayElementNode.js';
|
|
10
|
+
import { warn } from '../../utils.js';
|
|
10
11
|
|
|
11
|
-
// TODO: Avoid duplicated code and
|
|
12
|
+
// TODO: Avoid duplicated code and use only ReferenceBaseNode or ReferenceNode
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* This class is only relevant if the referenced property is array-like.
|
|
@@ -61,7 +62,7 @@ class ReferenceElementNode extends ArrayElementNode {
|
|
|
61
62
|
*
|
|
62
63
|
* @return {string} The node type.
|
|
63
64
|
*/
|
|
64
|
-
|
|
65
|
+
generateNodeType() {
|
|
65
66
|
|
|
66
67
|
return this.referenceNode.uniformType;
|
|
67
68
|
|
|
@@ -70,8 +71,8 @@ class ReferenceElementNode extends ArrayElementNode {
|
|
|
70
71
|
generate( builder ) {
|
|
71
72
|
|
|
72
73
|
const snippet = super.generate( builder );
|
|
73
|
-
const arrayType = this.referenceNode.getNodeType();
|
|
74
|
-
const elementType = this.getNodeType();
|
|
74
|
+
const arrayType = this.referenceNode.getNodeType( builder );
|
|
75
|
+
const elementType = this.getNodeType( builder );
|
|
75
76
|
|
|
76
77
|
return builder.format( snippet, arrayType, elementType );
|
|
77
78
|
|
|
@@ -197,7 +198,7 @@ class ReferenceNode extends Node {
|
|
|
197
198
|
*/
|
|
198
199
|
element( indexNode ) {
|
|
199
200
|
|
|
200
|
-
return
|
|
201
|
+
return new ReferenceElementNode( this, nodeObject( indexNode ) );
|
|
201
202
|
|
|
202
203
|
}
|
|
203
204
|
|
|
@@ -238,7 +239,7 @@ class ReferenceNode extends Node {
|
|
|
238
239
|
*/
|
|
239
240
|
label( name ) {
|
|
240
241
|
|
|
241
|
-
|
|
242
|
+
warn( 'TSL: "label()" has been deprecated. Use "setName()" instead.' ); // @deprecated r179
|
|
242
243
|
|
|
243
244
|
return this.setName( name );
|
|
244
245
|
|
|
@@ -284,7 +285,7 @@ class ReferenceNode extends Node {
|
|
|
284
285
|
|
|
285
286
|
if ( this.name !== null ) node.setName( this.name );
|
|
286
287
|
|
|
287
|
-
this.node = node
|
|
288
|
+
this.node = node;
|
|
288
289
|
|
|
289
290
|
}
|
|
290
291
|
|
|
@@ -295,7 +296,7 @@ class ReferenceNode extends Node {
|
|
|
295
296
|
* @param {NodeBuilder} builder - The current node builder.
|
|
296
297
|
* @return {string} The node type.
|
|
297
298
|
*/
|
|
298
|
-
|
|
299
|
+
generateNodeType( builder ) {
|
|
299
300
|
|
|
300
301
|
if ( this.node === null ) {
|
|
301
302
|
|
|
@@ -406,7 +407,7 @@ export default ReferenceNode;
|
|
|
406
407
|
* @param {?Object} [object] - The object the property belongs to.
|
|
407
408
|
* @returns {ReferenceNode}
|
|
408
409
|
*/
|
|
409
|
-
export const reference = ( name, type, object ) =>
|
|
410
|
+
export const reference = ( name, type, object ) => new ReferenceNode( name, type, object );
|
|
410
411
|
|
|
411
412
|
/**
|
|
412
413
|
* TSL function for creating a reference node. Use this function if you want need a reference
|
|
@@ -420,4 +421,4 @@ export const reference = ( name, type, object ) => nodeObject( new ReferenceNode
|
|
|
420
421
|
* @param {Object} object - An array-like object the property belongs to.
|
|
421
422
|
* @returns {ReferenceNode}
|
|
422
423
|
*/
|
|
423
|
-
export const referenceBuffer = ( name, type, count, object ) =>
|
|
424
|
+
export const referenceBuffer = ( name, type, count, object ) => new ReferenceNode( name, type, object, count );
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import ReferenceBaseNode from './ReferenceBaseNode.js';
|
|
2
|
-
import { nodeObject } from '../tsl/TSLCore.js';
|
|
3
2
|
import { renderGroup } from '../core/UniformGroupNode.js';
|
|
4
3
|
|
|
5
4
|
/**
|
|
@@ -76,4 +75,4 @@ export default RendererReferenceNode;
|
|
|
76
75
|
* the node refers to the renderer of the current state.
|
|
77
76
|
* @returns {RendererReferenceNode}
|
|
78
77
|
*/
|
|
79
|
-
export const rendererReference = ( name, type, renderer = null ) =>
|
|
78
|
+
export const rendererReference = ( name, type, renderer = null ) => new RendererReferenceNode( name, type, renderer );
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { UVMapping } from '../../constants.js';
|
|
2
|
+
import { Matrix4 } from '../../math/Matrix4.js';
|
|
3
|
+
import { renderGroup } from '../core/UniformGroupNode.js';
|
|
4
|
+
import { uniform } from '../tsl/TSLBase.js';
|
|
5
|
+
|
|
6
|
+
const _m1 = /*@__PURE__*/ new Matrix4();
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* TSL object that represents the scene's background blurriness.
|
|
10
|
+
*
|
|
11
|
+
* @tsl
|
|
12
|
+
* @type {Node<float>}
|
|
13
|
+
*/
|
|
14
|
+
export const backgroundBlurriness = /*@__PURE__*/ uniform( 0 ).setGroup( renderGroup ).onRenderUpdate( ( { scene } ) => scene.backgroundBlurriness );
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* TSL object that represents the scene's background intensity.
|
|
18
|
+
*
|
|
19
|
+
* @tsl
|
|
20
|
+
* @type {Node<float>}
|
|
21
|
+
*/
|
|
22
|
+
export const backgroundIntensity = /*@__PURE__*/ uniform( 1 ).setGroup( renderGroup ).onRenderUpdate( ( { scene } ) => scene.backgroundIntensity );
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* TSL object that represents the scene's background rotation.
|
|
26
|
+
*
|
|
27
|
+
* @tsl
|
|
28
|
+
* @type {Node<mat4>}
|
|
29
|
+
*/
|
|
30
|
+
export const backgroundRotation = /*@__PURE__*/ uniform( new Matrix4() ).setGroup( renderGroup ).onRenderUpdate( ( { scene } ) => {
|
|
31
|
+
|
|
32
|
+
const background = scene.background;
|
|
33
|
+
|
|
34
|
+
if ( background !== null && background.isTexture && background.mapping !== UVMapping ) {
|
|
35
|
+
|
|
36
|
+
// note: since the matrix is orthonormal, we can use the more-efficient transpose() in lieu of invert()
|
|
37
|
+
_m1.makeRotationFromEuler( scene.backgroundRotation ).transpose();
|
|
38
|
+
|
|
39
|
+
} else {
|
|
40
|
+
|
|
41
|
+
_m1.identity();
|
|
42
|
+
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return _m1;
|
|
46
|
+
|
|
47
|
+
} );
|
|
@@ -9,7 +9,6 @@ import { positionLocal, positionPrevious } from './Position.js';
|
|
|
9
9
|
import { tangentLocal } from './Tangent.js';
|
|
10
10
|
import { uniform } from '../core/UniformNode.js';
|
|
11
11
|
import { buffer } from './BufferNode.js';
|
|
12
|
-
import { getDataFromObject } from '../core/NodeUtils.js';
|
|
13
12
|
import { storage } from './StorageBufferNode.js';
|
|
14
13
|
import { InstancedBufferAttribute } from '../../core/InstancedBufferAttribute.js';
|
|
15
14
|
import { instanceIndex } from '../core/IndexNode.js';
|
|
@@ -147,13 +146,14 @@ class SkinningNode extends Node {
|
|
|
147
146
|
}
|
|
148
147
|
|
|
149
148
|
/**
|
|
150
|
-
* Transforms the given vertex normal via skinning.
|
|
149
|
+
* Transforms the given vertex normal and tangent via skinning.
|
|
151
150
|
*
|
|
152
151
|
* @param {Node} [boneMatrices=this.boneMatricesNode] - The bone matrices
|
|
153
152
|
* @param {Node<vec3>} [normal=normalLocal] - The vertex normal in local space.
|
|
154
|
-
* @
|
|
153
|
+
* @param {Node<vec3>} [tangent=tangentLocal] - The vertex tangent in local space.
|
|
154
|
+
* @return {{skinNormal: Node<vec3>, skinTangent:Node<vec3>}} The transformed vertex normal and tangent.
|
|
155
155
|
*/
|
|
156
|
-
|
|
156
|
+
getSkinnedNormalAndTangent( boneMatrices = this.boneMatricesNode, normal = normalLocal, tangent = tangentLocal ) {
|
|
157
157
|
|
|
158
158
|
const { skinIndexNode, skinWeightNode, bindMatrixNode, bindMatrixInverseNode } = this;
|
|
159
159
|
|
|
@@ -162,7 +162,7 @@ class SkinningNode extends Node {
|
|
|
162
162
|
const boneMatZ = boneMatrices.element( skinIndexNode.z );
|
|
163
163
|
const boneMatW = boneMatrices.element( skinIndexNode.w );
|
|
164
164
|
|
|
165
|
-
// NORMAL
|
|
165
|
+
// NORMAL and TANGENT
|
|
166
166
|
|
|
167
167
|
let skinMatrix = add(
|
|
168
168
|
skinWeightNode.x.mul( boneMatX ),
|
|
@@ -173,7 +173,10 @@ class SkinningNode extends Node {
|
|
|
173
173
|
|
|
174
174
|
skinMatrix = bindMatrixInverseNode.mul( skinMatrix ).mul( bindMatrixNode );
|
|
175
175
|
|
|
176
|
-
|
|
176
|
+
const skinNormal = skinMatrix.transformDirection( normal ).xyz;
|
|
177
|
+
const skinTangent = skinMatrix.transformDirection( tangent ).xyz;
|
|
178
|
+
|
|
179
|
+
return { skinNormal, skinTangent };
|
|
177
180
|
|
|
178
181
|
}
|
|
179
182
|
|
|
@@ -199,21 +202,6 @@ class SkinningNode extends Node {
|
|
|
199
202
|
|
|
200
203
|
}
|
|
201
204
|
|
|
202
|
-
/**
|
|
203
|
-
* Returns `true` if bone matrices from the previous frame are required. Relevant
|
|
204
|
-
* when computing motion vectors with {@link VelocityNode}.
|
|
205
|
-
*
|
|
206
|
-
* @param {NodeBuilder} builder - The current node builder.
|
|
207
|
-
* @return {boolean} Whether bone matrices from the previous frame are required or not.
|
|
208
|
-
*/
|
|
209
|
-
needsPreviousBoneMatrices( builder ) {
|
|
210
|
-
|
|
211
|
-
const mrt = builder.renderer.getMRT();
|
|
212
|
-
|
|
213
|
-
return ( mrt && mrt.has( 'velocity' ) ) || getDataFromObject( builder.object ).useVelocity === true;
|
|
214
|
-
|
|
215
|
-
}
|
|
216
|
-
|
|
217
205
|
/**
|
|
218
206
|
* Setups the skinning node by assigning the transformed vertex data to predefined node variables.
|
|
219
207
|
*
|
|
@@ -222,7 +210,7 @@ class SkinningNode extends Node {
|
|
|
222
210
|
*/
|
|
223
211
|
setup( builder ) {
|
|
224
212
|
|
|
225
|
-
if (
|
|
213
|
+
if ( builder.needsPreviousData() ) {
|
|
226
214
|
|
|
227
215
|
positionPrevious.assign( this.getPreviousSkinnedPosition( builder ) );
|
|
228
216
|
|
|
@@ -236,13 +224,13 @@ class SkinningNode extends Node {
|
|
|
236
224
|
|
|
237
225
|
if ( builder.hasGeometryAttribute( 'normal' ) ) {
|
|
238
226
|
|
|
239
|
-
const skinNormal = this.
|
|
227
|
+
const { skinNormal, skinTangent } = this.getSkinnedNormalAndTangent();
|
|
240
228
|
|
|
241
229
|
normalLocal.assign( skinNormal );
|
|
242
230
|
|
|
243
231
|
if ( builder.hasGeometryAttribute( 'tangent' ) ) {
|
|
244
232
|
|
|
245
|
-
tangentLocal.assign(
|
|
233
|
+
tangentLocal.assign( skinTangent );
|
|
246
234
|
|
|
247
235
|
}
|
|
248
236
|
|
|
@@ -282,7 +270,20 @@ class SkinningNode extends Node {
|
|
|
282
270
|
|
|
283
271
|
_frameId.set( skeleton, frame.frameId );
|
|
284
272
|
|
|
285
|
-
if ( this.previousBoneMatricesNode !== null )
|
|
273
|
+
if ( this.previousBoneMatricesNode !== null ) {
|
|
274
|
+
|
|
275
|
+
if ( skeleton.previousBoneMatrices === null ) {
|
|
276
|
+
|
|
277
|
+
// cloned skeletons miss "previousBoneMatrices" in their first updated
|
|
278
|
+
|
|
279
|
+
skeleton.previousBoneMatrices = new Float32Array( skeleton.boneMatrices );
|
|
280
|
+
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
skeleton.previousBoneMatrices.set( skeleton.boneMatrices );
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
}
|
|
286
287
|
|
|
287
288
|
skeleton.update();
|
|
288
289
|
|
|
@@ -300,7 +301,7 @@ export default SkinningNode;
|
|
|
300
301
|
* @param {SkinnedMesh} skinnedMesh - The skinned mesh.
|
|
301
302
|
* @returns {SkinningNode}
|
|
302
303
|
*/
|
|
303
|
-
export const skinning = ( skinnedMesh ) =>
|
|
304
|
+
export const skinning = ( skinnedMesh ) => new SkinningNode( skinnedMesh );
|
|
304
305
|
|
|
305
306
|
/**
|
|
306
307
|
* TSL function for computing skinning.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import BufferNode from './BufferNode.js';
|
|
2
2
|
import { bufferAttribute } from './BufferAttributeNode.js';
|
|
3
|
-
import {
|
|
3
|
+
import { varying } from '../tsl/TSLBase.js';
|
|
4
4
|
import { storageElement } from '../utils/StorageArrayElementNode.js';
|
|
5
5
|
import { NodeAccess } from '../core/constants.js';
|
|
6
6
|
import { getTypeFromLength } from '../core/NodeUtils.js';
|
|
@@ -125,6 +125,7 @@ class StorageBufferNode extends BufferNode {
|
|
|
125
125
|
/**
|
|
126
126
|
* A reference to the internal buffer attribute node.
|
|
127
127
|
*
|
|
128
|
+
* @private
|
|
128
129
|
* @type {?BufferAttributeNode}
|
|
129
130
|
* @default null
|
|
130
131
|
*/
|
|
@@ -133,6 +134,7 @@ class StorageBufferNode extends BufferNode {
|
|
|
133
134
|
/**
|
|
134
135
|
* A reference to the internal varying node.
|
|
135
136
|
*
|
|
137
|
+
* @private
|
|
136
138
|
* @type {?VaryingNode}
|
|
137
139
|
* @default null
|
|
138
140
|
*/
|
|
@@ -166,6 +168,8 @@ class StorageBufferNode extends BufferNode {
|
|
|
166
168
|
*/
|
|
167
169
|
getHash( builder ) {
|
|
168
170
|
|
|
171
|
+
let id;
|
|
172
|
+
|
|
169
173
|
if ( this.bufferCount === 0 ) {
|
|
170
174
|
|
|
171
175
|
let bufferData = builder.globalCache.getData( this.value );
|
|
@@ -180,11 +184,15 @@ class StorageBufferNode extends BufferNode {
|
|
|
180
184
|
|
|
181
185
|
}
|
|
182
186
|
|
|
183
|
-
|
|
187
|
+
id = bufferData.node.id;
|
|
188
|
+
|
|
189
|
+
} else {
|
|
190
|
+
|
|
191
|
+
id = this.id;
|
|
184
192
|
|
|
185
193
|
}
|
|
186
194
|
|
|
187
|
-
return
|
|
195
|
+
return String( id );
|
|
188
196
|
|
|
189
197
|
}
|
|
190
198
|
|
|
@@ -315,7 +323,7 @@ class StorageBufferNode extends BufferNode {
|
|
|
315
323
|
* @param {NodeBuilder} builder - The current node builder.
|
|
316
324
|
* @return {string} The node type.
|
|
317
325
|
*/
|
|
318
|
-
|
|
326
|
+
generateNodeType( builder ) {
|
|
319
327
|
|
|
320
328
|
if ( this.structTypeNode !== null ) {
|
|
321
329
|
|
|
@@ -325,7 +333,7 @@ class StorageBufferNode extends BufferNode {
|
|
|
325
333
|
|
|
326
334
|
if ( builder.isAvailable( 'storageBuffer' ) || builder.isAvailable( 'indirectStorageBuffer' ) ) {
|
|
327
335
|
|
|
328
|
-
return super.
|
|
336
|
+
return super.generateNodeType( builder );
|
|
329
337
|
|
|
330
338
|
}
|
|
331
339
|
|
|
@@ -394,22 +402,4 @@ export default StorageBufferNode;
|
|
|
394
402
|
* @param {number} [count=0] - The buffer count.
|
|
395
403
|
* @returns {StorageBufferNode}
|
|
396
404
|
*/
|
|
397
|
-
export const storage = ( value, type = null, count = 0 ) =>
|
|
398
|
-
|
|
399
|
-
/**
|
|
400
|
-
* @tsl
|
|
401
|
-
* @function
|
|
402
|
-
* @deprecated since r171. Use `storage().setPBO( true )` instead.
|
|
403
|
-
*
|
|
404
|
-
* @param {StorageBufferAttribute|StorageInstancedBufferAttribute|BufferAttribute} value - The buffer data.
|
|
405
|
-
* @param {?string} type - The buffer type (e.g. `'vec3'`).
|
|
406
|
-
* @param {number} count - The buffer count.
|
|
407
|
-
* @returns {StorageBufferNode}
|
|
408
|
-
*/
|
|
409
|
-
export const storageObject = ( value, type, count ) => { // @deprecated, r171
|
|
410
|
-
|
|
411
|
-
console.warn( 'THREE.TSL: "storageObject()" is deprecated. Use "storage().setPBO( true )" instead.' );
|
|
412
|
-
|
|
413
|
-
return storage( value, type, count ).setPBO( true );
|
|
414
|
-
|
|
415
|
-
};
|
|
405
|
+
export const storage = ( value, type = null, count = 0 ) => new StorageBufferNode( value, type, count );
|
|
@@ -60,6 +60,14 @@ class StorageTextureNode extends TextureNode {
|
|
|
60
60
|
*/
|
|
61
61
|
this.storeNode = storeNode;
|
|
62
62
|
|
|
63
|
+
/**
|
|
64
|
+
* The mip level to write to for storage textures.
|
|
65
|
+
*
|
|
66
|
+
* @type {number}
|
|
67
|
+
* @default 0
|
|
68
|
+
*/
|
|
69
|
+
this.mipLevel = 0;
|
|
70
|
+
|
|
63
71
|
/**
|
|
64
72
|
* This flag can be used for type testing.
|
|
65
73
|
*
|
|
@@ -115,6 +123,19 @@ class StorageTextureNode extends TextureNode {
|
|
|
115
123
|
|
|
116
124
|
}
|
|
117
125
|
|
|
126
|
+
/**
|
|
127
|
+
* Sets the mip level to write to.
|
|
128
|
+
*
|
|
129
|
+
* @param {number} level - The mip level.
|
|
130
|
+
* @return {StorageTextureNode} A reference to this node.
|
|
131
|
+
*/
|
|
132
|
+
setMipLevel( level ) {
|
|
133
|
+
|
|
134
|
+
this.mipLevel = level;
|
|
135
|
+
return this;
|
|
136
|
+
|
|
137
|
+
}
|
|
138
|
+
|
|
118
139
|
/**
|
|
119
140
|
* Generates the code snippet of the storage node. If no `storeNode`
|
|
120
141
|
* is defined, the texture node is generated as normal texture.
|
|
@@ -125,19 +146,36 @@ class StorageTextureNode extends TextureNode {
|
|
|
125
146
|
*/
|
|
126
147
|
generate( builder, output ) {
|
|
127
148
|
|
|
128
|
-
let snippet;
|
|
129
|
-
|
|
130
149
|
if ( this.storeNode !== null ) {
|
|
131
150
|
|
|
132
|
-
|
|
151
|
+
this.generateStore( builder );
|
|
152
|
+
return '';
|
|
153
|
+
|
|
154
|
+
}
|
|
133
155
|
|
|
134
|
-
|
|
156
|
+
return super.generate( builder, output );
|
|
135
157
|
|
|
136
|
-
|
|
158
|
+
}
|
|
137
159
|
|
|
138
|
-
|
|
160
|
+
/**
|
|
161
|
+
* Generates the snippet for the storage texture.
|
|
162
|
+
*
|
|
163
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
164
|
+
* @param {string} textureProperty - The texture property.
|
|
165
|
+
* @param {string} uvSnippet - The uv snippet.
|
|
166
|
+
* @param {?string} levelSnippet - The level snippet.
|
|
167
|
+
* @param {?string} biasSnippet - The bias snippet.
|
|
168
|
+
* @param {?string} depthSnippet - The depth snippet.
|
|
169
|
+
* @param {?string} compareSnippet - The compare snippet.
|
|
170
|
+
* @param {?Array<string>} gradSnippet - The grad snippet.
|
|
171
|
+
* @param {?string} offsetSnippet - The offset snippet.
|
|
172
|
+
* @return {string} The generated code snippet.
|
|
173
|
+
*/
|
|
174
|
+
generateSnippet( builder, textureProperty, uvSnippet, levelSnippet, biasSnippet, depthSnippet, compareSnippet, gradSnippet, offsetSnippet ) {
|
|
139
175
|
|
|
140
|
-
|
|
176
|
+
const texture = this.value;
|
|
177
|
+
|
|
178
|
+
return builder.generateStorageTextureLoad( texture, textureProperty, uvSnippet, levelSnippet, depthSnippet, offsetSnippet );
|
|
141
179
|
|
|
142
180
|
}
|
|
143
181
|
|
|
@@ -190,7 +228,7 @@ class StorageTextureNode extends TextureNode {
|
|
|
190
228
|
const storeSnippet = storeNode.build( builder, 'vec4' );
|
|
191
229
|
const depthSnippet = depthNode ? depthNode.build( builder, 'int' ) : null;
|
|
192
230
|
|
|
193
|
-
const snippet = builder.generateTextureStore(
|
|
231
|
+
const snippet = builder.generateTextureStore( this.value, textureProperty, uvSnippet, depthSnippet, storeSnippet );
|
|
194
232
|
|
|
195
233
|
builder.addLineFlowCode( snippet, this );
|
|
196
234
|
|
|
@@ -200,6 +238,8 @@ class StorageTextureNode extends TextureNode {
|
|
|
200
238
|
|
|
201
239
|
const newNode = super.clone();
|
|
202
240
|
newNode.storeNode = this.storeNode;
|
|
241
|
+
newNode.mipLevel = this.mipLevel;
|
|
242
|
+
newNode.access = this.access;
|
|
203
243
|
return newNode;
|
|
204
244
|
|
|
205
245
|
}
|
|
@@ -233,7 +273,20 @@ export const storageTexture = /*@__PURE__*/ nodeProxy( StorageTextureNode ).setP
|
|
|
233
273
|
*/
|
|
234
274
|
export const textureStore = ( value, uvNode, storeNode ) => {
|
|
235
275
|
|
|
236
|
-
|
|
276
|
+
let node;
|
|
277
|
+
|
|
278
|
+
if ( value.isStorageTextureNode === true ) {
|
|
279
|
+
|
|
280
|
+
// Derive new storage texture node from existing one
|
|
281
|
+
node = value.clone();
|
|
282
|
+
node.uvNode = uvNode;
|
|
283
|
+
node.storeNode = storeNode;
|
|
284
|
+
|
|
285
|
+
} else {
|
|
286
|
+
|
|
287
|
+
node = storageTexture( value, uvNode, storeNode );
|
|
288
|
+
|
|
289
|
+
}
|
|
237
290
|
|
|
238
291
|
if ( storeNode !== null ) node.toStack();
|
|
239
292
|
|
|
@@ -11,17 +11,7 @@ import { directionToFaceDirection } from '../display/FrontFacingNode.js';
|
|
|
11
11
|
* @tsl
|
|
12
12
|
* @type {Node<vec4>}
|
|
13
13
|
*/
|
|
14
|
-
export const tangentGeometry = /*@__PURE__*/
|
|
15
|
-
|
|
16
|
-
if ( builder.geometry.hasAttribute( 'tangent' ) === false ) {
|
|
17
|
-
|
|
18
|
-
builder.geometry.computeTangents();
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
return attribute( 'tangent', 'vec4' );
|
|
23
|
-
|
|
24
|
-
} )();
|
|
14
|
+
export const tangentGeometry = /*@__PURE__*/ attribute( 'tangent', 'vec4' );
|
|
25
15
|
|
|
26
16
|
/**
|
|
27
17
|
* TSL object that represents the vertex tangent in local space of the current rendered object.
|
|
@@ -37,11 +27,11 @@ export const tangentLocal = /*@__PURE__*/ tangentGeometry.xyz.toVar( 'tangentLoc
|
|
|
37
27
|
* @tsl
|
|
38
28
|
* @type {Node<vec3>}
|
|
39
29
|
*/
|
|
40
|
-
export const tangentView = /*@__PURE__*/ ( Fn( (
|
|
30
|
+
export const tangentView = /*@__PURE__*/ ( Fn( ( builder ) => {
|
|
41
31
|
|
|
42
32
|
let node;
|
|
43
33
|
|
|
44
|
-
if ( subBuildFn === 'VERTEX' || geometry.hasAttribute( 'tangent' ) ) {
|
|
34
|
+
if ( builder.subBuildFn === 'VERTEX' || builder.geometry.hasAttribute( 'tangent' ) ) {
|
|
45
35
|
|
|
46
36
|
node = modelViewMatrix.mul( vec4( tangentLocal, 0 ) ).xyz.toVarying( 'v_tangentView' ).normalize();
|
|
47
37
|
|
|
@@ -51,7 +41,7 @@ export const tangentView = /*@__PURE__*/ ( Fn( ( { subBuildFn, geometry, materia
|
|
|
51
41
|
|
|
52
42
|
}
|
|
53
43
|
|
|
54
|
-
if (
|
|
44
|
+
if ( builder.isFlatShading() !== true ) {
|
|
55
45
|
|
|
56
46
|
node = directionToFaceDirection( node );
|
|
57
47
|
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import TextureNode from './TextureNode.js';
|
|
2
|
-
import { nodeProxy, vec3, Fn, If
|
|
3
|
-
import { textureSize } from './TextureSizeNode.js';
|
|
2
|
+
import { nodeProxy, vec3, Fn, If } from '../tsl/TSLBase.js';
|
|
4
3
|
|
|
5
4
|
const normal = Fn( ( { texture, uv } ) => {
|
|
6
5
|
|
|
@@ -116,52 +115,38 @@ class Texture3DNode extends TextureNode {
|
|
|
116
115
|
setUpdateMatrix( /*value*/ ) { } // Ignore .updateMatrix for 3d TextureNode
|
|
117
116
|
|
|
118
117
|
/**
|
|
119
|
-
*
|
|
118
|
+
* Generates the uv code snippet.
|
|
120
119
|
*
|
|
121
120
|
* @param {NodeBuilder} builder - The current node builder.
|
|
122
|
-
* @param {Node} uvNode - The uv node to
|
|
123
|
-
* @return {
|
|
121
|
+
* @param {Node} uvNode - The uv node to generate code for.
|
|
122
|
+
* @return {string} The generated code snippet.
|
|
124
123
|
*/
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
const texture = this.value;
|
|
128
|
-
|
|
129
|
-
if ( builder.isFlipY() && ( texture.isRenderTargetTexture === true || texture.isFramebufferTexture === true ) ) {
|
|
130
|
-
|
|
131
|
-
if ( this.sampler ) {
|
|
132
|
-
|
|
133
|
-
uvNode = uvNode.flipY();
|
|
134
|
-
|
|
135
|
-
} else {
|
|
136
|
-
|
|
137
|
-
uvNode = uvNode.setY( int( textureSize( this, this.levelNode ).y ).sub( uvNode.y ).sub( 1 ) );
|
|
138
|
-
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
}
|
|
124
|
+
generateUV( builder, uvNode ) {
|
|
142
125
|
|
|
143
|
-
return uvNode;
|
|
126
|
+
return uvNode.build( builder, this.sampler === true ? 'vec3' : 'ivec3' );
|
|
144
127
|
|
|
145
128
|
}
|
|
146
129
|
|
|
147
130
|
/**
|
|
148
|
-
* Generates the
|
|
131
|
+
* Generates the offset code snippet.
|
|
149
132
|
*
|
|
150
133
|
* @param {NodeBuilder} builder - The current node builder.
|
|
151
|
-
* @param {Node}
|
|
134
|
+
* @param {Node} offsetNode - The offset node to generate code for.
|
|
152
135
|
* @return {string} The generated code snippet.
|
|
153
136
|
*/
|
|
154
|
-
|
|
137
|
+
generateOffset( builder, offsetNode ) {
|
|
155
138
|
|
|
156
|
-
return
|
|
139
|
+
return offsetNode.build( builder, 'ivec3' );
|
|
157
140
|
|
|
158
141
|
}
|
|
159
142
|
|
|
160
143
|
/**
|
|
161
|
-
*
|
|
144
|
+
* Computes the normal for the given uv. These texture coordiantes represent a
|
|
145
|
+
* position inside the 3D texture. Unlike geometric normals, this normal
|
|
146
|
+
* represents a slope or gradient of scalar data inside the 3D texture.
|
|
162
147
|
*
|
|
163
|
-
* @param {Node<vec3>} uvNode - The uv node .
|
|
164
|
-
* @return {Node<vec3>}
|
|
148
|
+
* @param {Node<vec3>} uvNode - The uv node that defines a position in the 3D texture.
|
|
149
|
+
* @return {Node<vec3>} The normal representing the slope/gradient in the data.
|
|
165
150
|
*/
|
|
166
151
|
normal( uvNode ) {
|
|
167
152
|
|
|
@@ -179,8 +164,33 @@ export default Texture3DNode;
|
|
|
179
164
|
* @tsl
|
|
180
165
|
* @function
|
|
181
166
|
* @param {Data3DTexture} value - The 3D texture.
|
|
182
|
-
* @param {?Node<
|
|
167
|
+
* @param {?Node<vec3>} [uvNode=null] - The uv node.
|
|
183
168
|
* @param {?Node<int>} [levelNode=null] - The level node.
|
|
184
169
|
* @returns {Texture3DNode}
|
|
185
170
|
*/
|
|
186
171
|
export const texture3D = /*@__PURE__*/ nodeProxy( Texture3DNode ).setParameterLength( 1, 3 );
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* TSL function for creating a texture node that fetches/loads texels without interpolation.
|
|
175
|
+
*
|
|
176
|
+
* @tsl
|
|
177
|
+
* @function
|
|
178
|
+
* @param {?(Texture|TextureNode)} [value=EmptyTexture] - The texture.
|
|
179
|
+
* @param {?Node<vec3>} [uvNode=null] - The uv node.
|
|
180
|
+
* @param {?Node<int>} [levelNode=null] - The level node.
|
|
181
|
+
* @param {?Node<float>} [biasNode=null] - The bias node.
|
|
182
|
+
* @returns {TextureNode}
|
|
183
|
+
*/
|
|
184
|
+
export const texture3DLoad = ( ...params ) => texture3D( ...params ).setSampler( false );
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* TSL function for creating a texture node that fetches/loads texels without interpolation.
|
|
188
|
+
*
|
|
189
|
+
* @tsl
|
|
190
|
+
* @function
|
|
191
|
+
* @param {?(Texture|TextureNode)} [value=EmptyTexture] - The texture.
|
|
192
|
+
* @param {?Node<vec3>} [uvNode=null] - The uv node.
|
|
193
|
+
* @param {?Node<int>} [levelNode=null] - The level node.
|
|
194
|
+
* @returns {TextureNode}
|
|
195
|
+
*/
|
|
196
|
+
export const texture3DLevel = ( value, uvNode, levelNode ) => texture3D( value, uvNode ).level( levelNode );
|