super-three 0.177.0 → 0.181.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.
Files changed (501) hide show
  1. package/README.md +1 -1
  2. package/build/three.cjs +1994 -749
  3. package/build/three.core.js +1358 -506
  4. package/build/three.core.min.js +1 -1
  5. package/build/three.module.js +631 -247
  6. package/build/three.module.min.js +1 -1
  7. package/build/three.tsl.js +113 -33
  8. package/build/three.tsl.min.js +1 -1
  9. package/build/three.webgpu.js +9571 -3424
  10. package/build/three.webgpu.min.js +1 -1
  11. package/build/three.webgpu.nodes.js +9397 -3426
  12. package/build/three.webgpu.nodes.min.js +1 -1
  13. package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  14. package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
  15. package/examples/jsm/Addons.js +2 -3
  16. package/examples/jsm/animation/CCDIKSolver.js +1 -1
  17. package/examples/jsm/capabilities/WebGL.js +0 -27
  18. package/examples/jsm/capabilities/WebGPU.js +1 -1
  19. package/examples/jsm/controls/ArcballControls.js +9 -9
  20. package/examples/jsm/controls/DragControls.js +7 -57
  21. package/examples/jsm/controls/FirstPersonControls.js +3 -3
  22. package/examples/jsm/controls/FlyControls.js +1 -1
  23. package/examples/jsm/controls/OrbitControls.js +2 -2
  24. package/examples/jsm/controls/PointerLockControls.js +2 -10
  25. package/examples/jsm/controls/TrackballControls.js +1 -1
  26. package/examples/jsm/controls/TransformControls.js +62 -15
  27. package/examples/jsm/csm/CSMShadowNode.js +4 -4
  28. package/examples/jsm/effects/AsciiEffect.js +8 -8
  29. package/examples/jsm/environments/RoomEnvironment.js +8 -3
  30. package/examples/jsm/exporters/DRACOExporter.js +2 -2
  31. package/examples/jsm/exporters/EXRExporter.js +1 -1
  32. package/examples/jsm/exporters/GLTFExporter.js +33 -25
  33. package/examples/jsm/exporters/KTX2Exporter.js +4 -2
  34. package/examples/jsm/exporters/PLYExporter.js +1 -1
  35. package/examples/jsm/exporters/USDZExporter.js +683 -299
  36. package/examples/jsm/geometries/DecalGeometry.js +2 -2
  37. package/examples/jsm/geometries/ParametricGeometry.js +1 -1
  38. package/examples/jsm/geometries/RoundedBoxGeometry.js +47 -8
  39. package/examples/jsm/geometries/TeapotGeometry.js +2 -2
  40. package/examples/jsm/geometries/TextGeometry.js +3 -2
  41. package/examples/jsm/gpgpu/BitonicSort.js +715 -0
  42. package/examples/jsm/helpers/ViewHelper.js +43 -5
  43. package/examples/jsm/inspector/Inspector.js +427 -0
  44. package/examples/jsm/inspector/RendererInspector.js +415 -0
  45. package/examples/jsm/inspector/tabs/Console.js +204 -0
  46. package/examples/jsm/inspector/tabs/Parameters.js +332 -0
  47. package/examples/jsm/inspector/tabs/Performance.js +268 -0
  48. package/examples/jsm/inspector/tabs/Viewer.js +166 -0
  49. package/examples/jsm/inspector/ui/Graph.js +95 -0
  50. package/examples/jsm/inspector/ui/Item.js +170 -0
  51. package/examples/jsm/inspector/ui/List.js +75 -0
  52. package/examples/jsm/inspector/ui/Profiler.js +170 -0
  53. package/examples/jsm/inspector/ui/Style.js +654 -0
  54. package/examples/jsm/inspector/ui/Tab.js +46 -0
  55. package/examples/jsm/inspector/ui/Values.js +423 -0
  56. package/examples/jsm/inspector/ui/utils.js +56 -0
  57. package/examples/jsm/interactive/HTMLMesh.js +11 -13
  58. package/examples/jsm/interactive/InteractiveGroup.js +1 -1
  59. package/examples/jsm/interactive/SelectionBox.js +30 -0
  60. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  61. package/examples/jsm/libs/meshopt_decoder.module.js +75 -58
  62. package/examples/jsm/lights/LightProbeGenerator.js +14 -3
  63. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
  64. package/examples/jsm/lines/Line2.js +3 -3
  65. package/examples/jsm/lines/LineGeometry.js +1 -1
  66. package/examples/jsm/lines/LineSegments2.js +2 -2
  67. package/examples/jsm/lines/Wireframe.js +2 -2
  68. package/examples/jsm/lines/WireframeGeometry2.js +1 -1
  69. package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
  70. package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
  71. package/examples/jsm/loaders/3MFLoader.js +1 -1
  72. package/examples/jsm/loaders/ColladaLoader.js +4 -4
  73. package/examples/jsm/loaders/DDSLoader.js +1 -1
  74. package/examples/jsm/loaders/DRACOLoader.js +73 -22
  75. package/examples/jsm/loaders/EXRLoader.js +210 -22
  76. package/examples/jsm/loaders/FBXLoader.js +4 -4
  77. package/examples/jsm/loaders/FontLoader.js +23 -5
  78. package/examples/jsm/loaders/GLTFLoader.js +14 -8
  79. package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
  80. package/examples/jsm/loaders/HDRLoader.js +486 -0
  81. package/examples/jsm/loaders/KTX2Loader.js +136 -49
  82. package/examples/jsm/loaders/KTXLoader.js +2 -2
  83. package/examples/jsm/loaders/LDrawLoader.js +1 -1
  84. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  85. package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
  86. package/examples/jsm/loaders/LWOLoader.js +2 -2
  87. package/examples/jsm/loaders/MaterialXLoader.js +233 -34
  88. package/examples/jsm/loaders/OBJLoader.js +1 -1
  89. package/examples/jsm/loaders/PDBLoader.js +1 -1
  90. package/examples/jsm/loaders/RGBELoader.js +7 -473
  91. package/examples/jsm/loaders/SVGLoader.js +2 -2
  92. package/examples/jsm/loaders/TTFLoader.js +13 -1
  93. package/examples/jsm/loaders/USDLoader.js +219 -0
  94. package/examples/jsm/loaders/USDZLoader.js +4 -892
  95. package/examples/jsm/loaders/UltraHDRLoader.js +2 -2
  96. package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
  97. package/examples/jsm/loaders/usd/USDAParser.js +741 -0
  98. package/examples/jsm/loaders/usd/USDCParser.js +17 -0
  99. package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
  100. package/examples/jsm/math/ColorSpaces.js +19 -1
  101. package/examples/jsm/math/ConvexHull.js +3 -3
  102. package/examples/jsm/math/ImprovedNoise.js +1 -1
  103. package/examples/jsm/math/Lut.js +2 -2
  104. package/examples/jsm/math/SimplexNoise.js +1 -1
  105. package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
  106. package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
  107. package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
  108. package/examples/jsm/misc/TubePainter.js +383 -40
  109. package/examples/jsm/misc/Volume.js +1 -1
  110. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  111. package/examples/jsm/objects/LensflareMesh.js +3 -3
  112. package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
  113. package/examples/jsm/objects/Sky.js +1 -1
  114. package/examples/jsm/objects/SkyMesh.js +3 -3
  115. package/examples/jsm/objects/Water.js +3 -3
  116. package/examples/jsm/objects/WaterMesh.js +6 -6
  117. package/examples/jsm/physics/RapierPhysics.js +95 -16
  118. package/examples/jsm/postprocessing/GTAOPass.js +10 -9
  119. package/examples/jsm/postprocessing/GlitchPass.js +2 -2
  120. package/examples/jsm/postprocessing/OutlinePass.js +17 -17
  121. package/examples/jsm/postprocessing/SSAOPass.js +10 -9
  122. package/examples/jsm/postprocessing/SSRPass.js +37 -8
  123. package/examples/jsm/postprocessing/UnrealBloomPass.js +8 -6
  124. package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
  125. package/examples/jsm/renderers/CSS3DRenderer.js +7 -6
  126. package/examples/jsm/renderers/SVGRenderer.js +1 -1
  127. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
  128. package/examples/jsm/shaders/AfterimageShader.js +1 -1
  129. package/examples/jsm/shaders/BleachBypassShader.js +1 -1
  130. package/examples/jsm/shaders/BokehShader.js +1 -1
  131. package/examples/jsm/shaders/BokehShader2.js +1 -1
  132. package/examples/jsm/shaders/DotScreenShader.js +1 -1
  133. package/examples/jsm/shaders/FocusShader.js +1 -1
  134. package/examples/jsm/shaders/GTAOShader.js +2 -2
  135. package/examples/jsm/shaders/GodRaysShader.js +1 -1
  136. package/examples/jsm/shaders/KaleidoShader.js +1 -1
  137. package/examples/jsm/shaders/PoissonDenoiseShader.js +2 -2
  138. package/examples/jsm/shaders/SSRShader.js +1 -1
  139. package/examples/jsm/shaders/SepiaShader.js +1 -1
  140. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
  141. package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
  142. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +11 -2
  143. package/examples/jsm/shaders/VignetteShader.js +1 -1
  144. package/examples/jsm/transpiler/AST.js +381 -30
  145. package/examples/jsm/transpiler/GLSLDecoder.js +247 -104
  146. package/examples/jsm/transpiler/Linker.js +327 -0
  147. package/examples/jsm/transpiler/TSLEncoder.js +196 -92
  148. package/examples/jsm/transpiler/Transpiler.js +17 -1
  149. package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
  150. package/examples/jsm/transpiler/WGSLEncoder.js +812 -0
  151. package/examples/jsm/tsl/display/AfterImageNode.js +26 -24
  152. package/examples/jsm/tsl/display/AnamorphicNode.js +28 -4
  153. package/examples/jsm/tsl/display/BloomNode.js +11 -6
  154. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +207 -0
  155. package/examples/jsm/tsl/display/DenoiseNode.js +2 -0
  156. package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
  157. package/examples/jsm/tsl/display/GTAONode.js +53 -5
  158. package/examples/jsm/tsl/display/GaussianBlurNode.js +55 -43
  159. package/examples/jsm/tsl/display/OutlineNode.js +13 -2
  160. package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
  161. package/examples/jsm/tsl/display/SSGINode.js +654 -0
  162. package/examples/jsm/tsl/display/SSRNode.js +182 -65
  163. package/examples/jsm/tsl/display/SSSNode.js +488 -0
  164. package/examples/jsm/tsl/display/TRAANode.js +578 -0
  165. package/examples/jsm/tsl/display/boxBlur.js +65 -0
  166. package/examples/jsm/tsl/display/hashBlur.js +18 -20
  167. package/examples/jsm/tsl/lighting/TiledLightsNode.js +22 -2
  168. package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
  169. package/examples/jsm/utils/ShadowMapViewerGPU.js +12 -5
  170. package/examples/jsm/webxr/OculusHandModel.js +1 -1
  171. package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
  172. package/examples/jsm/webxr/XRHandModelFactory.js +2 -6
  173. package/package.json +5 -10
  174. package/src/Three.Core.js +5 -2
  175. package/src/Three.TSL.js +112 -32
  176. package/src/Three.WebGPU.Nodes.js +2 -0
  177. package/src/Three.WebGPU.js +4 -0
  178. package/src/animation/AnimationClip.js +20 -4
  179. package/src/animation/AnimationMixer.js +3 -3
  180. package/src/animation/AnimationObjectGroup.js +2 -1
  181. package/src/animation/KeyframeTrack.js +8 -7
  182. package/src/animation/PropertyBinding.js +12 -11
  183. package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
  184. package/src/animation/tracks/StringKeyframeTrack.js +1 -1
  185. package/src/audio/Audio.js +10 -9
  186. package/src/audio/PositionalAudio.js +1 -1
  187. package/src/cameras/Camera.js +14 -0
  188. package/src/cameras/OrthographicCamera.js +2 -2
  189. package/src/cameras/PerspectiveCamera.js +2 -2
  190. package/src/cameras/StereoCamera.js +2 -2
  191. package/src/constants.js +13 -5
  192. package/src/core/BufferAttribute.js +3 -3
  193. package/src/core/BufferGeometry.js +10 -10
  194. package/src/core/Clock.js +2 -8
  195. package/src/core/EventDispatcher.js +1 -1
  196. package/src/core/GLBufferAttribute.js +13 -1
  197. package/src/core/InterleavedBuffer.js +1 -1
  198. package/src/core/InterleavedBufferAttribute.js +3 -2
  199. package/src/core/Object3D.js +4 -3
  200. package/src/core/Raycaster.js +2 -1
  201. package/src/core/RenderTarget.js +10 -1
  202. package/{examples/jsm/misc → src/core}/Timer.js +4 -42
  203. package/src/extras/Controls.js +5 -4
  204. package/src/extras/DataUtils.js +2 -1
  205. package/src/extras/Earcut.js +6 -0
  206. package/src/extras/ImageUtils.js +2 -2
  207. package/src/extras/PMREMGenerator.js +279 -55
  208. package/src/extras/TextureUtils.js +2 -1
  209. package/src/extras/core/Curve.js +2 -1
  210. package/src/extras/core/Interpolations.js +7 -1
  211. package/src/extras/core/Path.js +22 -22
  212. package/src/extras/core/ShapePath.js +4 -4
  213. package/src/extras/lib/earcut.js +8 -8
  214. package/src/geometries/BoxGeometry.js +1 -0
  215. package/src/geometries/CapsuleGeometry.js +1 -0
  216. package/src/geometries/CircleGeometry.js +1 -0
  217. package/src/geometries/ConeGeometry.js +1 -0
  218. package/src/geometries/CylinderGeometry.js +1 -0
  219. package/src/geometries/DodecahedronGeometry.js +1 -0
  220. package/src/geometries/ExtrudeGeometry.js +8 -6
  221. package/src/geometries/IcosahedronGeometry.js +1 -0
  222. package/src/geometries/LatheGeometry.js +1 -0
  223. package/src/geometries/OctahedronGeometry.js +1 -0
  224. package/src/geometries/PlaneGeometry.js +1 -0
  225. package/src/geometries/RingGeometry.js +1 -0
  226. package/src/geometries/ShapeGeometry.js +1 -0
  227. package/src/geometries/SphereGeometry.js +1 -0
  228. package/src/geometries/TetrahedronGeometry.js +1 -0
  229. package/src/geometries/TorusGeometry.js +1 -0
  230. package/src/geometries/TorusKnotGeometry.js +1 -0
  231. package/src/geometries/TubeGeometry.js +1 -0
  232. package/src/helpers/CameraHelper.js +42 -12
  233. package/src/helpers/SkeletonHelper.js +35 -6
  234. package/src/lights/LightShadow.js +21 -8
  235. package/src/lights/PointLightShadow.js +1 -1
  236. package/src/lights/webgpu/ProjectorLight.js +1 -1
  237. package/src/loaders/AnimationLoader.js +2 -1
  238. package/src/loaders/AudioLoader.js +2 -1
  239. package/src/loaders/BufferGeometryLoader.js +2 -2
  240. package/src/loaders/Cache.js +2 -2
  241. package/src/loaders/DataTextureLoader.js +1 -1
  242. package/src/loaders/FileLoader.js +29 -5
  243. package/src/loaders/ImageBitmapLoader.js +32 -8
  244. package/src/loaders/ImageLoader.js +56 -9
  245. package/src/loaders/Loader.js +17 -3
  246. package/src/loaders/LoadingManager.js +45 -0
  247. package/src/loaders/MaterialLoader.js +3 -2
  248. package/src/loaders/ObjectLoader.js +13 -13
  249. package/src/loaders/TextureLoader.js +1 -1
  250. package/src/loaders/nodes/NodeLoader.js +3 -2
  251. package/src/materials/Material.js +16 -3
  252. package/src/materials/MeshBasicMaterial.js +2 -1
  253. package/src/materials/MeshDepthMaterial.js +1 -0
  254. package/src/materials/MeshDistanceMaterial.js +1 -1
  255. package/src/materials/MeshLambertMaterial.js +2 -1
  256. package/src/materials/MeshMatcapMaterial.js +22 -0
  257. package/src/materials/MeshNormalMaterial.js +1 -0
  258. package/src/materials/MeshPhongMaterial.js +2 -1
  259. package/src/materials/MeshPhysicalMaterial.js +2 -1
  260. package/src/materials/MeshStandardMaterial.js +8 -7
  261. package/src/materials/MeshToonMaterial.js +1 -0
  262. package/src/materials/PointsMaterial.js +1 -1
  263. package/src/materials/ShaderMaterial.js +2 -2
  264. package/src/materials/nodes/Line2NodeMaterial.js +2 -10
  265. package/src/materials/nodes/MeshBasicNodeMaterial.js +4 -3
  266. package/src/materials/nodes/MeshMatcapNodeMaterial.js +1 -1
  267. package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
  268. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -1
  269. package/src/materials/nodes/MeshSSSNodeMaterial.js +3 -3
  270. package/src/materials/nodes/NodeMaterial.js +90 -27
  271. package/src/materials/nodes/PointsNodeMaterial.js +86 -28
  272. package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
  273. package/src/materials/nodes/manager/NodeMaterialObserver.js +89 -3
  274. package/src/math/Color.js +6 -5
  275. package/src/math/ColorManagement.js +9 -3
  276. package/src/math/Cylindrical.js +1 -1
  277. package/src/math/Euler.js +2 -1
  278. package/src/math/Frustum.js +25 -9
  279. package/src/math/FrustumArray.js +10 -5
  280. package/src/math/Line3.js +129 -2
  281. package/src/math/MathUtils.js +13 -11
  282. package/src/math/Matrix2.js +1 -1
  283. package/src/math/Matrix3.js +2 -2
  284. package/src/math/Matrix4.js +55 -34
  285. package/src/math/Plane.js +1 -1
  286. package/src/math/Quaternion.js +69 -67
  287. package/src/math/Spherical.js +3 -3
  288. package/src/nodes/Nodes.js +6 -4
  289. package/src/nodes/TSL.js +9 -4
  290. package/src/nodes/accessors/AccessorsUtils.js +7 -8
  291. package/src/nodes/accessors/Bitangent.js +31 -25
  292. package/src/nodes/accessors/BufferNode.js +1 -1
  293. package/src/nodes/accessors/Camera.js +142 -16
  294. package/src/nodes/accessors/ClippingNode.js +6 -5
  295. package/src/nodes/accessors/CubeTextureNode.js +5 -4
  296. package/src/nodes/accessors/InstanceNode.js +25 -5
  297. package/src/nodes/accessors/Lights.js +10 -0
  298. package/src/nodes/accessors/Normal.js +97 -30
  299. package/src/nodes/accessors/Object3DNode.js +2 -2
  300. package/src/nodes/accessors/Position.js +25 -9
  301. package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
  302. package/src/nodes/accessors/ReferenceNode.js +20 -4
  303. package/src/nodes/accessors/ReflectVector.js +3 -3
  304. package/src/nodes/accessors/SceneNode.js +3 -2
  305. package/src/nodes/accessors/StorageBufferNode.js +2 -1
  306. package/src/nodes/accessors/StorageTextureNode.js +23 -1
  307. package/src/nodes/accessors/Tangent.js +25 -17
  308. package/src/nodes/accessors/TangentUtils.js +46 -0
  309. package/src/nodes/accessors/Texture3DNode.js +14 -1
  310. package/src/nodes/accessors/TextureBicubic.js +21 -3
  311. package/src/nodes/accessors/TextureNode.js +142 -44
  312. package/src/nodes/accessors/UniformArrayNode.js +0 -16
  313. package/src/nodes/code/FunctionCallNode.js +24 -4
  314. package/src/nodes/code/FunctionNode.js +23 -0
  315. package/src/nodes/core/ArrayNode.js +13 -0
  316. package/src/nodes/core/AssignNode.js +6 -2
  317. package/src/nodes/core/AttributeNode.js +2 -1
  318. package/src/nodes/core/ContextNode.js +48 -10
  319. package/src/nodes/core/IndexNode.js +2 -2
  320. package/src/nodes/core/InputNode.js +2 -1
  321. package/src/nodes/core/InspectorNode.js +128 -0
  322. package/src/nodes/core/{CacheNode.js → IsolateNode.js} +36 -17
  323. package/src/nodes/core/Node.js +167 -34
  324. package/src/nodes/core/NodeBuilder.js +404 -120
  325. package/src/nodes/core/NodeFrame.js +21 -21
  326. package/src/nodes/core/NodeFunction.js +2 -1
  327. package/src/nodes/core/NodeParser.js +2 -1
  328. package/src/nodes/core/NodeUniform.js +1 -1
  329. package/src/nodes/core/NodeUtils.js +17 -88
  330. package/src/nodes/core/ParameterNode.js +31 -0
  331. package/src/nodes/core/PropertyNode.js +7 -0
  332. package/src/nodes/core/StackNode.js +77 -30
  333. package/src/nodes/core/StructNode.js +5 -5
  334. package/src/nodes/core/StructTypeNode.js +1 -0
  335. package/src/nodes/core/SubBuildNode.js +89 -0
  336. package/src/nodes/core/UniformNode.js +80 -14
  337. package/src/nodes/core/VarNode.js +142 -16
  338. package/src/nodes/core/VaryingNode.js +9 -6
  339. package/src/nodes/display/BlendModes.js +7 -6
  340. package/src/nodes/display/BumpMapNode.js +1 -1
  341. package/src/nodes/display/ColorAdjustment.js +1 -1
  342. package/src/nodes/display/FrontFacingNode.js +35 -7
  343. package/src/nodes/display/NormalMapNode.js +20 -50
  344. package/src/nodes/display/PassNode.js +206 -17
  345. package/src/nodes/display/RenderOutputNode.js +28 -2
  346. package/src/nodes/display/ScreenNode.js +44 -40
  347. package/src/nodes/display/ToneMappingNode.js +31 -4
  348. package/src/nodes/display/ToonOutlinePassNode.js +8 -0
  349. package/src/nodes/display/ViewportDepthTextureNode.js +16 -4
  350. package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
  351. package/src/nodes/display/ViewportTextureNode.js +94 -4
  352. package/src/nodes/fog/Fog.js +3 -2
  353. package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
  354. package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
  355. package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
  356. package/src/nodes/functions/BSDF/DFGApprox.js +60 -19
  357. package/src/nodes/functions/BasicLightingModel.js +2 -1
  358. package/src/nodes/functions/PhongLightingModel.js +3 -3
  359. package/src/nodes/functions/PhysicalLightingModel.js +19 -18
  360. package/src/nodes/functions/VolumetricLightingModel.js +5 -5
  361. package/src/nodes/functions/material/getGeometryRoughness.js +2 -2
  362. package/src/nodes/geometry/RangeNode.js +40 -4
  363. package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
  364. package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -1
  365. package/src/nodes/gpgpu/ComputeNode.js +81 -25
  366. package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
  367. package/src/nodes/gpgpu/WorkgroupInfoNode.js +29 -3
  368. package/src/nodes/lighting/EnvironmentNode.js +11 -11
  369. package/src/nodes/lighting/LightsNode.js +7 -8
  370. package/src/nodes/lighting/PointShadowNode.js +6 -0
  371. package/src/nodes/lighting/ProjectorLightNode.js +19 -6
  372. package/src/nodes/lighting/ShadowFilterNode.js +3 -1
  373. package/src/nodes/lighting/ShadowNode.js +77 -10
  374. package/src/nodes/materialx/MaterialXNodes.js +131 -2
  375. package/src/nodes/materialx/lib/mx_noise.js +165 -1
  376. package/src/nodes/math/BitcastNode.js +156 -0
  377. package/src/nodes/math/ConditionalNode.js +25 -27
  378. package/src/nodes/math/MathNode.js +106 -65
  379. package/src/nodes/math/OperatorNode.js +28 -43
  380. package/src/nodes/pmrem/PMREMUtils.js +117 -2
  381. package/src/nodes/shapes/Shapes.js +1 -1
  382. package/src/nodes/tsl/TSLBase.js +6 -2
  383. package/src/nodes/tsl/TSLCore.js +546 -186
  384. package/src/nodes/utils/DebugNode.js +3 -2
  385. package/src/nodes/utils/EquirectUV.js +27 -0
  386. package/src/nodes/utils/EventNode.js +119 -0
  387. package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
  388. package/src/nodes/utils/JoinNode.js +6 -3
  389. package/src/nodes/utils/LoopNode.js +20 -41
  390. package/src/nodes/utils/MatcapUV.js +22 -0
  391. package/src/nodes/utils/MemberNode.js +59 -7
  392. package/src/nodes/utils/PostProcessingUtils.js +28 -1
  393. package/src/nodes/utils/RTTNode.js +33 -6
  394. package/src/nodes/utils/ReflectorNode.js +68 -10
  395. package/src/nodes/utils/SampleNode.js +91 -0
  396. package/src/nodes/utils/SplitNode.js +11 -0
  397. package/src/nodes/utils/Timer.js +0 -47
  398. package/src/nodes/utils/TriplanarTextures.js +65 -0
  399. package/src/objects/BatchedMesh.js +6 -4
  400. package/src/objects/LOD.js +1 -1
  401. package/src/objects/Line.js +2 -1
  402. package/src/objects/LineSegments.js +2 -1
  403. package/src/objects/Skeleton.js +3 -2
  404. package/src/objects/SkinnedMesh.js +3 -1
  405. package/src/objects/Sprite.js +4 -3
  406. package/src/renderers/WebGLRenderer.js +77 -66
  407. package/src/renderers/common/Animation.js +13 -1
  408. package/src/renderers/common/Attributes.js +1 -1
  409. package/src/renderers/common/Backend.js +108 -27
  410. package/src/renderers/common/Background.js +4 -3
  411. package/src/renderers/common/Bindings.js +76 -19
  412. package/src/renderers/common/CanvasTarget.js +341 -0
  413. package/src/renderers/common/ChainMap.js +1 -1
  414. package/src/renderers/common/Color4.js +2 -2
  415. package/src/renderers/common/CubeRenderTarget.js +1 -1
  416. package/src/renderers/common/DataMap.js +1 -1
  417. package/src/renderers/common/Geometries.js +26 -0
  418. package/src/renderers/common/Info.js +4 -2
  419. package/src/renderers/common/InspectorBase.js +146 -0
  420. package/src/renderers/common/Pipelines.js +1 -1
  421. package/src/renderers/common/PostProcessing.js +61 -25
  422. package/src/renderers/common/QuadMesh.js +7 -1
  423. package/src/renderers/common/RenderContext.js +2 -2
  424. package/src/renderers/common/RenderList.js +7 -3
  425. package/src/renderers/common/RenderObject.js +84 -5
  426. package/src/renderers/common/RenderObjects.js +1 -1
  427. package/src/renderers/common/Renderer.js +486 -255
  428. package/src/renderers/common/RendererUtils.js +9 -0
  429. package/src/renderers/common/SampledTexture.js +8 -68
  430. package/src/renderers/common/Sampler.js +117 -0
  431. package/src/renderers/common/Storage3DTexture.js +100 -0
  432. package/src/renderers/common/StorageArrayTexture.js +84 -0
  433. package/src/renderers/common/StorageTexture.js +27 -0
  434. package/src/renderers/common/Textures.js +138 -46
  435. package/src/renderers/common/TimestampQueryPool.js +65 -3
  436. package/src/renderers/common/UniformsGroup.js +2 -1
  437. package/src/renderers/common/XRManager.js +63 -24
  438. package/src/renderers/common/XRRenderTarget.js +21 -4
  439. package/src/renderers/common/extras/PMREMGenerator.js +161 -66
  440. package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
  441. package/src/renderers/common/nodes/NodeLibrary.js +9 -7
  442. package/src/renderers/common/nodes/NodeSampledTexture.js +0 -12
  443. package/src/renderers/common/nodes/NodeSampler.js +13 -1
  444. package/src/renderers/common/nodes/Nodes.js +38 -16
  445. package/src/renderers/shaders/DFGLUTData.js +64 -0
  446. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
  447. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -1
  448. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
  449. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +52 -18
  450. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
  451. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
  452. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
  453. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
  454. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +21 -11
  455. package/src/renderers/shaders/ShaderLib/depth.glsl.js +11 -2
  456. package/src/renderers/shaders/UniformsLib.js +1 -0
  457. package/src/renderers/shaders/UniformsUtils.js +25 -4
  458. package/src/renderers/webgl/WebGLAttributes.js +4 -0
  459. package/src/renderers/webgl/WebGLCapabilities.js +4 -3
  460. package/src/renderers/webgl/WebGLExtensions.js +2 -25
  461. package/src/renderers/webgl/WebGLInfo.js +3 -1
  462. package/src/renderers/webgl/WebGLProgram.js +25 -18
  463. package/src/renderers/webgl/WebGLPrograms.js +9 -6
  464. package/src/renderers/webgl/WebGLShadowMap.js +13 -2
  465. package/src/renderers/webgl/WebGLState.js +17 -16
  466. package/src/renderers/webgl/WebGLTextures.js +38 -21
  467. package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
  468. package/src/renderers/webgl/WebGLUtils.js +3 -2
  469. package/src/renderers/webgl-fallback/WebGLBackend.js +245 -182
  470. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +184 -30
  471. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +4 -0
  472. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
  473. package/src/renderers/webgl-fallback/utils/WebGLState.js +9 -8
  474. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +171 -19
  475. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +51 -22
  476. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -2
  477. package/src/renderers/webgpu/WebGPUBackend.js +205 -128
  478. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
  479. package/src/renderers/webgpu/WebGPURenderer.js +3 -2
  480. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +198 -121
  481. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +8 -1
  482. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +49 -33
  483. package/src/renderers/webgpu/utils/WebGPUConstants.js +14 -3
  484. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +56 -37
  485. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +6 -8
  486. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +266 -158
  487. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +32 -9
  488. package/src/renderers/webgpu/utils/WebGPUUtils.js +24 -19
  489. package/src/renderers/webxr/WebXRDepthSensing.js +6 -10
  490. package/src/renderers/webxr/WebXRManager.js +89 -13
  491. package/src/textures/ExternalTexture.js +56 -0
  492. package/src/textures/FramebufferTexture.js +2 -2
  493. package/src/textures/Source.js +14 -3
  494. package/src/textures/Texture.js +3 -2
  495. package/src/textures/VideoTexture.js +29 -2
  496. package/src/utils.js +67 -3
  497. package/examples/jsm/loaders/RGBMLoader.js +0 -1148
  498. package/examples/jsm/tsl/display/TRAAPassNode.js +0 -452
  499. package/src/nodes/utils/EquirectUVNode.js +0 -65
  500. package/src/nodes/utils/MatcapUVNode.js +0 -49
  501. package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
@@ -1,4 +1,5 @@
1
1
  import { clamp } from './MathUtils.js';
2
+ import { warn } from '../utils.js';
2
3
 
3
4
  /**
4
5
  * Class for representing a Quaternion. Quaternions are used in three.js to represent rotations.
@@ -45,7 +46,7 @@ class Quaternion {
45
46
 
46
47
  /**
47
48
  * Interpolates between two quaternions via SLERP. This implementation assumes the
48
- * quaternion data are managed in flat arrays.
49
+ * quaternion data are managed in flat arrays.
49
50
  *
50
51
  * @param {Array<number>} dst - The destination array.
51
52
  * @param {number} dstOffset - An offset into the destination array.
@@ -58,65 +59,78 @@ class Quaternion {
58
59
  */
59
60
  static slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {
60
61
 
61
- // fuzz-free, array-based Quaternion SLERP operation
62
-
63
62
  let x0 = src0[ srcOffset0 + 0 ],
64
63
  y0 = src0[ srcOffset0 + 1 ],
65
64
  z0 = src0[ srcOffset0 + 2 ],
66
65
  w0 = src0[ srcOffset0 + 3 ];
67
66
 
68
- const x1 = src1[ srcOffset1 + 0 ],
67
+ let x1 = src1[ srcOffset1 + 0 ],
69
68
  y1 = src1[ srcOffset1 + 1 ],
70
69
  z1 = src1[ srcOffset1 + 2 ],
71
70
  w1 = src1[ srcOffset1 + 3 ];
72
71
 
73
- if ( t === 0 ) {
72
+ if ( t <= 0 ) {
74
73
 
75
74
  dst[ dstOffset + 0 ] = x0;
76
75
  dst[ dstOffset + 1 ] = y0;
77
76
  dst[ dstOffset + 2 ] = z0;
78
77
  dst[ dstOffset + 3 ] = w0;
78
+
79
79
  return;
80
80
 
81
81
  }
82
82
 
83
- if ( t === 1 ) {
83
+ if ( t >= 1 ) {
84
84
 
85
85
  dst[ dstOffset + 0 ] = x1;
86
86
  dst[ dstOffset + 1 ] = y1;
87
87
  dst[ dstOffset + 2 ] = z1;
88
88
  dst[ dstOffset + 3 ] = w1;
89
+
89
90
  return;
90
91
 
91
92
  }
92
93
 
93
94
  if ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {
94
95
 
95
- let s = 1 - t;
96
- const cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,
97
- dir = ( cos >= 0 ? 1 : - 1 ),
98
- sqrSin = 1 - cos * cos;
96
+ let dot = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1;
99
97
 
100
- // Skip the Slerp for tiny steps to avoid numeric problems:
101
- if ( sqrSin > Number.EPSILON ) {
98
+ if ( dot < 0 ) {
102
99
 
103
- const sin = Math.sqrt( sqrSin ),
104
- len = Math.atan2( sin, cos * dir );
100
+ x1 = - x1;
101
+ y1 = - y1;
102
+ z1 = - z1;
103
+ w1 = - w1;
105
104
 
106
- s = Math.sin( s * len ) / sin;
107
- t = Math.sin( t * len ) / sin;
105
+ dot = - dot;
108
106
 
109
107
  }
110
108
 
111
- const tDir = t * dir;
109
+ let s = 1 - t;
110
+
111
+ if ( dot < 0.9995 ) {
112
+
113
+ // slerp
114
+
115
+ const theta = Math.acos( dot );
116
+ const sin = Math.sin( theta );
117
+
118
+ s = Math.sin( s * theta ) / sin;
119
+ t = Math.sin( t * theta ) / sin;
120
+
121
+ x0 = x0 * s + x1 * t;
122
+ y0 = y0 * s + y1 * t;
123
+ z0 = z0 * s + z1 * t;
124
+ w0 = w0 * s + w1 * t;
125
+
126
+ } else {
112
127
 
113
- x0 = x0 * s + x1 * tDir;
114
- y0 = y0 * s + y1 * tDir;
115
- z0 = z0 * s + z1 * tDir;
116
- w0 = w0 * s + w1 * tDir;
128
+ // for small angles, lerp then normalize
117
129
 
118
- // Normalize in case we just did a lerp:
119
- if ( s === 1 - t ) {
130
+ x0 = x0 * s + x1 * t;
131
+ y0 = y0 * s + y1 * t;
132
+ z0 = z0 * s + z1 * t;
133
+ w0 = w0 * s + w1 * t;
120
134
 
121
135
  const f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );
122
136
 
@@ -370,7 +384,7 @@ class Quaternion {
370
384
  break;
371
385
 
372
386
  default:
373
- console.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );
387
+ warn( 'Quaternion: .setFromEuler() encountered an unknown order: ' + order );
374
388
 
375
389
  }
376
390
 
@@ -482,7 +496,7 @@ class Quaternion {
482
496
 
483
497
  let r = vFrom.dot( vTo ) + 1;
484
498
 
485
- if ( r < Number.EPSILON ) {
499
+ if ( r < 1e-8 ) { // the epsilon value has been discussed in #31286
486
500
 
487
501
  // vFrom and vTo point in opposite directions
488
502
 
@@ -726,68 +740,56 @@ class Quaternion {
726
740
  */
727
741
  slerp( qb, t ) {
728
742
 
729
- if ( t === 0 ) return this;
730
- if ( t === 1 ) return this.copy( qb );
743
+ if ( t <= 0 ) return this;
731
744
 
732
- const x = this._x, y = this._y, z = this._z, w = this._w;
745
+ if ( t >= 1 ) return this.copy( qb ); // copy calls _onChangeCallback()
733
746
 
734
- // http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/
747
+ let x = qb._x, y = qb._y, z = qb._z, w = qb._w;
735
748
 
736
- let cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;
749
+ let dot = this.dot( qb );
737
750
 
738
- if ( cosHalfTheta < 0 ) {
751
+ if ( dot < 0 ) {
739
752
 
740
- this._w = - qb._w;
741
- this._x = - qb._x;
742
- this._y = - qb._y;
743
- this._z = - qb._z;
753
+ x = - x;
754
+ y = - y;
755
+ z = - z;
756
+ w = - w;
744
757
 
745
- cosHalfTheta = - cosHalfTheta;
746
-
747
- } else {
748
-
749
- this.copy( qb );
758
+ dot = - dot;
750
759
 
751
760
  }
752
761
 
753
- if ( cosHalfTheta >= 1.0 ) {
762
+ let s = 1 - t;
754
763
 
755
- this._w = w;
756
- this._x = x;
757
- this._y = y;
758
- this._z = z;
764
+ if ( dot < 0.9995 ) {
759
765
 
760
- return this;
766
+ // slerp
761
767
 
762
- }
763
-
764
- const sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;
768
+ const theta = Math.acos( dot );
769
+ const sin = Math.sin( theta );
765
770
 
766
- if ( sqrSinHalfTheta <= Number.EPSILON ) {
771
+ s = Math.sin( s * theta ) / sin;
772
+ t = Math.sin( t * theta ) / sin;
767
773
 
768
- const s = 1 - t;
769
- this._w = s * w + t * this._w;
770
- this._x = s * x + t * this._x;
771
- this._y = s * y + t * this._y;
772
- this._z = s * z + t * this._z;
774
+ this._x = this._x * s + x * t;
775
+ this._y = this._y * s + y * t;
776
+ this._z = this._z * s + z * t;
777
+ this._w = this._w * s + w * t;
773
778
 
774
- this.normalize(); // normalize calls _onChangeCallback()
779
+ this._onChangeCallback();
775
780
 
776
- return this;
781
+ } else {
777
782
 
778
- }
783
+ // for small angles, lerp then normalize
779
784
 
780
- const sinHalfTheta = Math.sqrt( sqrSinHalfTheta );
781
- const halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );
782
- const ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,
783
- ratioB = Math.sin( t * halfTheta ) / sinHalfTheta;
785
+ this._x = this._x * s + x * t;
786
+ this._y = this._y * s + y * t;
787
+ this._z = this._z * s + z * t;
788
+ this._w = this._w * s + w * t;
784
789
 
785
- this._w = ( w * ratioA + this._w * ratioB );
786
- this._x = ( x * ratioA + this._x * ratioB );
787
- this._y = ( y * ratioA + this._y * ratioB );
788
- this._z = ( z * ratioA + this._z * ratioB );
790
+ this.normalize(); // normalize calls _onChangeCallback()
789
791
 
790
- this._onChangeCallback();
792
+ }
791
793
 
792
794
  return this;
793
795
 
@@ -2,7 +2,7 @@ import { clamp } from './MathUtils.js';
2
2
 
3
3
  /**
4
4
  * This class can be used to represent points in 3D space as
5
- * [Spherical coordinates]{@link https://en.wikipedia.org/wiki/Spherical_coordinate_system}.
5
+ * [Spherical coordinates](https://en.wikipedia.org/wiki/Spherical_coordinate_system).
6
6
  */
7
7
  class Spherical {
8
8
 
@@ -107,8 +107,8 @@ class Spherical {
107
107
  * Sets the spherical components from the given Cartesian coordinates.
108
108
  *
109
109
  * @param {number} x - The x value.
110
- * @param {number} y - The x value.
111
- * @param {number} z - The x value.
110
+ * @param {number} y - The y value.
111
+ * @param {number} z - The z value.
112
112
  * @return {Spherical} A reference to this spherical.
113
113
  */
114
114
  setFromCartesianCoords( x, y, z ) {
@@ -6,7 +6,7 @@ export { default as ArrayNode } from './core/ArrayNode.js';
6
6
  export { default as AssignNode } from './core/AssignNode.js';
7
7
  export { default as AttributeNode } from './core/AttributeNode.js';
8
8
  export { default as BypassNode } from './core/BypassNode.js';
9
- export { default as CacheNode } from './core/CacheNode.js';
9
+ export { default as IsolateNode } from './core/IsolateNode.js';
10
10
  export { default as ConstNode } from './core/ConstNode.js';
11
11
  export { default as ContextNode } from './core/ContextNode.js';
12
12
  export { default as IndexNode } from './core/IndexNode.js';
@@ -33,6 +33,7 @@ export { default as StructNode } from './core/StructNode.js';
33
33
  export { default as StructTypeNode } from './core/StructTypeNode.js';
34
34
  export { default as OutputStructNode } from './core/OutputStructNode.js';
35
35
  export { default as MRTNode } from './core/MRTNode.js';
36
+ export { default as SubBuildNode } from './core/SubBuildNode.js';
36
37
 
37
38
  import * as NodeUtils from './core/NodeUtils.js';
38
39
  export { NodeUtils };
@@ -40,11 +41,9 @@ export { NodeUtils };
40
41
  // utils
41
42
  export { default as ArrayElementNode } from './utils/ArrayElementNode.js';
42
43
  export { default as ConvertNode } from './utils/ConvertNode.js';
43
- export { default as EquirectUVNode } from './utils/EquirectUVNode.js';
44
44
  export { default as FunctionOverloadingNode } from './utils/FunctionOverloadingNode.js';
45
45
  export { default as JoinNode } from './utils/JoinNode.js';
46
46
  export { default as LoopNode } from './utils/LoopNode.js';
47
- export { default as MatcapUVNode } from './utils/MatcapUVNode.js';
48
47
  export { default as MaxMipLevelNode } from './utils/MaxMipLevelNode.js';
49
48
  export { default as RemapNode } from './utils/RemapNode.js';
50
49
  export { default as RotateNode } from './utils/RotateNode.js';
@@ -52,11 +51,14 @@ export { default as SetNode } from './utils/SetNode.js';
52
51
  export { default as SplitNode } from './utils/SplitNode.js';
53
52
  export { default as SpriteSheetUVNode } from './utils/SpriteSheetUVNode.js';
54
53
  export { default as StorageArrayElementNode } from './utils/StorageArrayElementNode.js';
55
- export { default as TriplanarTexturesNode } from './utils/TriplanarTexturesNode.js';
56
54
  export { default as ReflectorNode } from './utils/ReflectorNode.js';
57
55
  export { default as RTTNode } from './utils/RTTNode.js';
58
56
  export { default as MemberNode } from './utils/MemberNode.js';
59
57
  export { default as DebugNode } from './utils/DebugNode.js';
58
+ export { default as EventNode } from './utils/EventNode.js';
59
+
60
+ // math
61
+ export { default as BitcastNode } from './math/BitcastNode.js';
60
62
 
61
63
  // accessors
62
64
  export { default as UniformArrayNode } from './accessors/UniformArrayNode.js';
package/src/nodes/TSL.js CHANGED
@@ -5,7 +5,7 @@ export * from './core/constants.js';
5
5
  export * from './core/AssignNode.js';
6
6
  export * from './core/AttributeNode.js';
7
7
  export * from './core/BypassNode.js';
8
- export * from './core/CacheNode.js';
8
+ export * from './core/IsolateNode.js';
9
9
  export * from './core/ContextNode.js';
10
10
  export * from './core/IndexNode.js';
11
11
  export * from './core/ParameterNode.js';
@@ -19,15 +19,16 @@ export * from './core/OutputStructNode.js';
19
19
  export * from './core/MRTNode.js';
20
20
 
21
21
  // math
22
+ export * from './math/BitcastNode.js';
22
23
  export * from './math/Hash.js';
23
24
  export * from './math/MathUtils.js';
24
25
  export * from './math/TriNoise3D.js';
25
26
 
26
27
  // utils
27
- export * from './utils/EquirectUVNode.js';
28
+ export * from './utils/EquirectUV.js';
28
29
  export * from './utils/FunctionOverloadingNode.js';
29
30
  export * from './utils/LoopNode.js';
30
- export * from './utils/MatcapUVNode.js';
31
+ export * from './utils/MatcapUV.js';
31
32
  export * from './utils/MaxMipLevelNode.js';
32
33
  export * from './utils/Oscillators.js';
33
34
  export * from './utils/Packing.js';
@@ -38,10 +39,12 @@ export * from './utils/ViewportUtils.js';
38
39
  export * from './utils/RotateNode.js';
39
40
  export * from './utils/SpriteSheetUVNode.js';
40
41
  export * from './utils/Timer.js';
41
- export * from './utils/TriplanarTexturesNode.js';
42
+ export * from './utils/TriplanarTextures.js';
42
43
  export * from './utils/ReflectorNode.js';
43
44
  export * from './utils/RTTNode.js';
44
45
  export * from './utils/PostProcessingUtils.js';
46
+ export * from './utils/SampleNode.js';
47
+ export * from './utils/EventNode.js';
45
48
 
46
49
  // three.js shading language
47
50
  export * from './tsl/TSLBase.js';
@@ -53,6 +56,7 @@ export * from './accessors/UniformArrayNode.js';
53
56
  export * from './accessors/Bitangent.js';
54
57
  export * from './accessors/BufferAttributeNode.js';
55
58
  export * from './accessors/BufferNode.js';
59
+ export * from './accessors/BuiltinNode.js';
56
60
  export * from './accessors/Camera.js';
57
61
  export * from './accessors/VertexColorNode.js';
58
62
  export * from './accessors/CubeTextureNode.js';
@@ -127,6 +131,7 @@ export * from './gpgpu/ComputeBuiltinNode.js';
127
131
  export * from './gpgpu/BarrierNode.js';
128
132
  export * from './gpgpu/WorkgroupInfoNode.js';
129
133
  export * from './gpgpu/AtomicFunctionNode.js';
134
+ export * from './gpgpu/SubgroupFunctionNode.js';
130
135
 
131
136
  // lighting
132
137
  export * from './accessors/Lights.js';
@@ -1,7 +1,7 @@
1
- import { bitangentView } from './Bitangent.js';
2
- import { normalView, transformedNormalView } from './Normal.js';
1
+ import { normalView } from './Normal.js';
3
2
  import { tangentView } from './Tangent.js';
4
- import { mat3 } from '../tsl/TSLBase.js';
3
+ import { bitangentView } from './Bitangent.js';
4
+ import { Fn, mat3 } from '../tsl/TSLBase.js';
5
5
  import { mix } from '../math/MathNode.js';
6
6
  import { anisotropy, anisotropyB, roughness } from '../core/PropertyNode.js';
7
7
  import { positionViewDirection } from './Position.js';
@@ -12,7 +12,7 @@ import { positionViewDirection } from './Position.js';
12
12
  * @tsl
13
13
  * @type {Node<mat3>}
14
14
  */
15
- export const TBNViewMatrix = /*@__PURE__*/ mat3( tangentView, bitangentView, normalView );
15
+ export const TBNViewMatrix = /*@__PURE__*/ mat3( tangentView, bitangentView, normalView ).toVar( 'TBNViewMatrix' );
16
16
 
17
17
  /**
18
18
  * TSL object that represents the parallax direction.
@@ -40,15 +40,14 @@ export const parallaxUV = ( uv, scale ) => uv.sub( parallaxDirection.mul( scale
40
40
  * @function
41
41
  * @returns {Node<vec3>} Bent normals.
42
42
  */
43
- export const transformedBentNormalView = /*@__PURE__*/ ( () => {
43
+ export const bentNormalView = /*@__PURE__*/ ( Fn( () => {
44
44
 
45
45
  // https://google.github.io/filament/Filament.md.html#lighting/imagebasedlights/anisotropy
46
46
 
47
47
  let bentNormal = anisotropyB.cross( positionViewDirection );
48
48
  bentNormal = bentNormal.cross( anisotropyB ).normalize();
49
- bentNormal = mix( bentNormal, transformedNormalView, anisotropy.mul( roughness.oneMinus() ).oneMinus().pow2().pow2() ).normalize();
49
+ bentNormal = mix( bentNormal, normalView, anisotropy.mul( roughness.oneMinus() ).oneMinus().pow2().pow2() ).normalize();
50
50
 
51
51
  return bentNormal;
52
52
 
53
-
54
- } )();
53
+ } ).once() )();
@@ -1,8 +1,8 @@
1
- import { varying } from '../core/VaryingNode.js';
2
1
  import { Fn } from '../tsl/TSLCore.js';
3
- import { cameraViewMatrix } from './Camera.js';
4
- import { normalGeometry, normalLocal, normalView, normalWorld, transformedNormalView } from './Normal.js';
5
- import { tangentGeometry, tangentLocal, tangentView, tangentWorld, transformedTangentView } from './Tangent.js';
2
+ import { normalGeometry, normalLocal, normalView, normalWorld } from './Normal.js';
3
+ import { tangentGeometry, tangentLocal, tangentView, tangentWorld } from './Tangent.js';
4
+ import { bitangentViewFrame } from './TangentUtils.js';
5
+ import { directionToFaceDirection } from '../display/FrontFacingNode.js';
6
6
 
7
7
  /**
8
8
  * Returns the bitangent node and assigns it to a varying if the material is not flat shaded.
@@ -13,19 +13,19 @@ import { tangentGeometry, tangentLocal, tangentView, tangentWorld, transformedTa
13
13
  * @param {string} varyingName - The name of the varying to assign the bitangent to.
14
14
  * @returns {Node<vec3>} The bitangent node.
15
15
  */
16
- const getBitangent = /*@__PURE__*/ Fn( ( [ crossNormalTangent, varyingName ], builder ) => {
16
+ const getBitangent = /*@__PURE__*/ Fn( ( [ crossNormalTangent, varyingName ], { subBuildFn, material } ) => {
17
17
 
18
18
  let bitangent = crossNormalTangent.mul( tangentGeometry.w ).xyz;
19
19
 
20
- if ( builder.material.flatShading !== true ) {
20
+ if ( subBuildFn === 'NORMAL' && material.flatShading !== true ) {
21
21
 
22
- bitangent = varying( bitangent, varyingName );
22
+ bitangent = bitangent.toVarying( varyingName );
23
23
 
24
24
  }
25
25
 
26
26
  return bitangent;
27
27
 
28
- } ).once();
28
+ } ).once( [ 'NORMAL' ] );
29
29
 
30
30
  /**
31
31
  * TSL object that represents the bitangent attribute of the current rendered object.
@@ -49,7 +49,29 @@ export const bitangentLocal = /*@__PURE__*/ getBitangent( normalLocal.cross( tan
49
49
  * @tsl
50
50
  * @type {Node<vec3>}
51
51
  */
52
- export const bitangentView = getBitangent( normalView.cross( tangentView ), 'v_bitangentView' ).normalize().toVar( 'bitangentView' );
52
+ export const bitangentView = /*@__PURE__*/ ( Fn( ( { subBuildFn, geometry, material } ) => {
53
+
54
+ let node;
55
+
56
+ if ( subBuildFn === 'VERTEX' || geometry.hasAttribute( 'tangent' ) ) {
57
+
58
+ node = getBitangent( normalView.cross( tangentView ), 'v_bitangentView' ).normalize();
59
+
60
+ } else {
61
+
62
+ node = bitangentViewFrame;
63
+
64
+ }
65
+
66
+ if ( material.flatShading !== true ) {
67
+
68
+ node = directionToFaceDirection( node );
69
+
70
+ }
71
+
72
+ return node;
73
+
74
+ }, 'vec3' ).once( [ 'NORMAL', 'VERTEX' ] ) )().toVar( 'bitangentView' );
53
75
 
54
76
  /**
55
77
  * TSL object that represents the vertex bitangent in world space of the current rendered object.
@@ -58,19 +80,3 @@ export const bitangentView = getBitangent( normalView.cross( tangentView ), 'v_b
58
80
  * @type {Node<vec3>}
59
81
  */
60
82
  export const bitangentWorld = /*@__PURE__*/ getBitangent( normalWorld.cross( tangentWorld ), 'v_bitangentWorld' ).normalize().toVar( 'bitangentWorld' );
61
-
62
- /**
63
- * TSL object that represents the transformed vertex bitangent in view space of the current rendered object.
64
- *
65
- * @tsl
66
- * @type {Node<vec3>}
67
- */
68
- export const transformedBitangentView = /*@__PURE__*/ getBitangent( transformedNormalView.cross( transformedTangentView ), 'v_transformedBitangentView' ).normalize().toVar( 'transformedBitangentView' );
69
-
70
- /**
71
- * TSL object that represents the transformed vertex bitangent in world space of the current rendered object.
72
- *
73
- * @tsl
74
- * @type {Node<vec4>}
75
- */
76
- export const transformedBitangentWorld = /*@__PURE__*/ transformedBitangentView.transformDirection( cameraViewMatrix ).normalize().toVar( 'transformedBitangentWorld' );
@@ -93,7 +93,7 @@ export default BufferNode;
93
93
  *
94
94
  * @tsl
95
95
  * @function
96
- * @param {Array} value - Array-like buffer data.
96
+ * @param {Array<number>} value - Array-like buffer data.
97
97
  * @param {string} type - The data type of a buffer element.
98
98
  * @param {number} count - The count of buffer elements.
99
99
  * @returns {BufferNode}