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
@@ -13,6 +13,7 @@ import { Vector4 } from '../../math/Vector4.js';
13
13
  import { Matrix4 } from '../../math/Matrix4.js';
14
14
  import { RenderTarget } from '../../core/RenderTarget.js';
15
15
  import { DepthTexture } from '../../textures/DepthTexture.js';
16
+ import { warnOnce } from '../../utils.js';
16
17
 
17
18
  const _reflectorPlane = new Plane();
18
19
  const _normal = new Vector3();
@@ -61,10 +62,11 @@ class ReflectorNode extends TextureNode {
61
62
  *
62
63
  * @param {Object} [parameters={}] - An object holding configuration parameters.
63
64
  * @param {Object3D} [parameters.target=new Object3D()] - The 3D object the reflector is linked to.
64
- * @param {number} [parameters.resolution=1] - The resolution scale.
65
+ * @param {number} [parameters.resolutionScale=1] - The resolution scale.
65
66
  * @param {boolean} [parameters.generateMipmaps=false] - Whether mipmaps should be generated or not.
66
67
  * @param {boolean} [parameters.bounces=true] - Whether reflectors can render other reflector nodes or not.
67
68
  * @param {boolean} [parameters.depth=false] - Whether depth data should be generated or not.
69
+ * @param {number} [parameters.samples] - Anti-Aliasing samples of the internal render-target.
68
70
  * @param {TextureNode} [parameters.defaultTexture] - The default texture node.
69
71
  * @param {ReflectorBaseNode} [parameters.reflector] - The reflector base node.
70
72
  */
@@ -154,10 +156,18 @@ class ReflectorNode extends TextureNode {
154
156
 
155
157
  clone() {
156
158
 
157
- const texture = new this.constructor( this.reflectorNode );
158
- texture._reflectorBaseNode = this._reflectorBaseNode;
159
+ const newNode = new this.constructor( this.reflectorNode );
160
+ newNode.uvNode = this.uvNode;
161
+ newNode.levelNode = this.levelNode;
162
+ newNode.biasNode = this.biasNode;
163
+ newNode.sampler = this.sampler;
164
+ newNode.depthNode = this.depthNode;
165
+ newNode.compareNode = this.compareNode;
166
+ newNode.gradNode = this.gradNode;
167
+ newNode.offsetNode = this.offsetNode;
168
+ newNode._reflectorBaseNode = this._reflectorBaseNode;
159
169
 
160
- return texture;
170
+ return newNode;
161
171
 
162
172
  }
163
173
 
@@ -197,10 +207,11 @@ class ReflectorBaseNode extends Node {
197
207
  * @param {TextureNode} textureNode - Represents the rendered reflections as a texture node.
198
208
  * @param {Object} [parameters={}] - An object holding configuration parameters.
199
209
  * @param {Object3D} [parameters.target=new Object3D()] - The 3D object the reflector is linked to.
200
- * @param {number} [parameters.resolution=1] - The resolution scale.
210
+ * @param {number} [parameters.resolutionScale=1] - The resolution scale.
201
211
  * @param {boolean} [parameters.generateMipmaps=false] - Whether mipmaps should be generated or not.
202
212
  * @param {boolean} [parameters.bounces=true] - Whether reflectors can render other reflector nodes or not.
203
213
  * @param {boolean} [parameters.depth=false] - Whether depth data should be generated or not.
214
+ * @param {number} [parameters.samples] - Anti-Aliasing samples of the internal render-target.
204
215
  */
205
216
  constructor( textureNode, parameters = {} ) {
206
217
 
@@ -208,10 +219,11 @@ class ReflectorBaseNode extends Node {
208
219
 
209
220
  const {
210
221
  target = new Object3D(),
211
- resolution = 1,
222
+ resolutionScale = 1,
212
223
  generateMipmaps = false,
213
224
  bounces = true,
214
- depth = false
225
+ depth = false,
226
+ samples = 0
215
227
  } = parameters;
216
228
 
217
229
  /**
@@ -235,7 +247,15 @@ class ReflectorBaseNode extends Node {
235
247
  * @type {number}
236
248
  * @default {1}
237
249
  */
238
- this.resolution = resolution;
250
+ this.resolutionScale = resolutionScale;
251
+
252
+ if ( parameters.resolution !== undefined ) {
253
+
254
+ warnOnce( 'ReflectorNode: The "resolution" parameter has been renamed to "resolutionScale".' ); // @deprecated r180
255
+
256
+ this.resolutionScale = parameters.resolution;
257
+
258
+ }
239
259
 
240
260
  /**
241
261
  * Whether mipmaps should be generated or not.
@@ -261,6 +281,14 @@ class ReflectorBaseNode extends Node {
261
281
  */
262
282
  this.depth = depth;
263
283
 
284
+ /**
285
+ * The number of anti-aliasing samples for the render-target
286
+ *
287
+ * @type {number}
288
+ * @default {0}
289
+ */
290
+ this.samples = samples;
291
+
264
292
  /**
265
293
  * The `updateBeforeType` is set to `NodeUpdateType.RENDER` when {@link ReflectorBaseNode#bounces}
266
294
  * is `true`. Otherwise it's `NodeUpdateType.FRAME`.
@@ -314,7 +342,7 @@ class ReflectorBaseNode extends Node {
314
342
  */
315
343
  _updateResolution( renderTarget, renderer ) {
316
344
 
317
- const resolution = this.resolution;
345
+ const resolution = this.resolutionScale;
318
346
 
319
347
  renderer.getDrawingBufferSize( _size );
320
348
 
@@ -381,7 +409,7 @@ class ReflectorBaseNode extends Node {
381
409
 
382
410
  if ( renderTarget === undefined ) {
383
411
 
384
- renderTarget = new RenderTarget( 0, 0, { type: HalfFloatType } );
412
+ renderTarget = new RenderTarget( 0, 0, { type: HalfFloatType, samples: this.samples } );
385
413
 
386
414
  if ( this.generateMipmaps === true ) {
387
415
 
@@ -524,6 +552,10 @@ class ReflectorBaseNode extends Node {
524
552
  renderer.setRenderTarget( renderTarget );
525
553
  renderer.autoClear = true;
526
554
 
555
+ const previousName = scene.name;
556
+
557
+ scene.name = ( scene.name || 'Scene' ) + ' [ Reflector ]'; // TODO: Add bounce index
558
+
527
559
  if ( needsClear ) {
528
560
 
529
561
  renderer.clear();
@@ -538,6 +570,8 @@ class ReflectorBaseNode extends Node {
538
570
 
539
571
  }
540
572
 
573
+ scene.name = previousName;
574
+
541
575
  renderer.setMRT( currentMRT );
542
576
  renderer.setRenderTarget( currentRenderTarget );
543
577
  renderer.autoClear = currentAutoClear;
@@ -550,6 +584,29 @@ class ReflectorBaseNode extends Node {
550
584
 
551
585
  }
552
586
 
587
+ /**
588
+ * The resolution scale.
589
+ *
590
+ * @deprecated
591
+ * @type {number}
592
+ * @default {1}
593
+ */
594
+ get resolution() {
595
+
596
+ warnOnce( 'ReflectorNode: The "resolution" property has been renamed to "resolutionScale".' ); // @deprecated r180
597
+
598
+ return this.resolutionScale;
599
+
600
+ }
601
+
602
+ set resolution( value ) {
603
+
604
+ warnOnce( 'ReflectorNode: The "resolution" property has been renamed to "resolutionScale".' ); // @deprecated r180
605
+
606
+ this.resolutionScale = value;
607
+
608
+ }
609
+
553
610
  }
554
611
 
555
612
  /**
@@ -563,6 +620,7 @@ class ReflectorBaseNode extends Node {
563
620
  * @param {boolean} [parameters.generateMipmaps=false] - Whether mipmaps should be generated or not.
564
621
  * @param {boolean} [parameters.bounces=true] - Whether reflectors can render other reflector nodes or not.
565
622
  * @param {boolean} [parameters.depth=false] - Whether depth data should be generated or not.
623
+ * @param {number} [parameters.samples] - Anti-Aliasing samples of the internal render-target.
566
624
  * @param {TextureNode} [parameters.defaultTexture] - The default texture node.
567
625
  * @param {ReflectorBaseNode} [parameters.reflector] - The reflector base node.
568
626
  * @returns {ReflectorNode}
@@ -0,0 +1,91 @@
1
+ import Node from '../core/Node.js';
2
+ import { uv } from '../accessors/UV.js';
3
+ import { nodeObject } from '../tsl/TSLCore.js';
4
+
5
+ /**
6
+ * Class representing a node that samples a value using a provided callback function.
7
+ *
8
+ * @extends Node
9
+ */
10
+ class SampleNode extends Node {
11
+
12
+ /**
13
+ * Returns the type of the node.
14
+ *
15
+ * @type {string}
16
+ * @readonly
17
+ * @static
18
+ */
19
+ static get type() {
20
+
21
+ return 'SampleNode';
22
+
23
+ }
24
+
25
+ /**
26
+ * Creates an instance of SampleNode.
27
+ *
28
+ * @param {Function} callback - The function to be called when sampling. Should accept a UV node and return a value.
29
+ * @param {?Node<vec2>} [uvNode=null] - The UV node to be used in the texture sampling.
30
+ */
31
+ constructor( callback, uvNode = null ) {
32
+
33
+ super();
34
+
35
+ this.callback = callback;
36
+
37
+ /**
38
+ * Represents the texture coordinates.
39
+ *
40
+ * @type {?Node<vec2|vec3>}
41
+ * @default null
42
+ */
43
+ this.uvNode = uvNode;
44
+
45
+ /**
46
+ * This flag can be used for type testing.
47
+ *
48
+ * @type {boolean}
49
+ * @readonly
50
+ * @default true
51
+ */
52
+ this.isSampleNode = true;
53
+
54
+ }
55
+
56
+ /**
57
+ * Sets up the node by sampling with the default UV accessor.
58
+ *
59
+ * @returns {Node} The result of the callback function when called with the UV node.
60
+ */
61
+ setup() {
62
+
63
+ return this.sample( uv() );
64
+
65
+ }
66
+
67
+ /**
68
+ * Calls the callback function with the provided UV node.
69
+ *
70
+ * @param {Node<vec2>} uv - The UV node or value to be passed to the callback.
71
+ * @returns {Node} The result of the callback function.
72
+ */
73
+ sample( uv ) {
74
+
75
+ return this.callback( uv );
76
+
77
+ }
78
+
79
+ }
80
+
81
+ export default SampleNode;
82
+
83
+ /**
84
+ * Helper function to create a SampleNode wrapped as a node object.
85
+ *
86
+ * @function
87
+ * @param {Function} callback - The function to be called when sampling. Should accept a UV node and return a value.
88
+ * @param {?Node<vec2>} [uv=null] - The UV node to be used in the texture sampling.
89
+ * @returns {SampleNode} The created SampleNode instance wrapped as a node object.
90
+ */
91
+ export const sample = ( callback, uv = null ) => nodeObject( new SampleNode( callback, nodeObject( uv ) ) );
@@ -100,6 +100,17 @@ class SplitNode extends Node {
100
100
 
101
101
  }
102
102
 
103
+ /**
104
+ * Returns the scope of the node.
105
+ *
106
+ * @return {Node} The scope of the node.
107
+ */
108
+ getScope() {
109
+
110
+ return this.node.getScope();
111
+
112
+ }
113
+
103
114
  generate( builder, output ) {
104
115
 
105
116
  const node = this.node;
@@ -24,50 +24,3 @@ export const deltaTime = /*@__PURE__*/ uniform( 0 ).setGroup( renderGroup ).onRe
24
24
  * @type {UniformNode<uint>}
25
25
  */
26
26
  export const frameId = /*@__PURE__*/ uniform( 0, 'uint' ).setGroup( renderGroup ).onRenderUpdate( ( frame ) => frame.frameId );
27
-
28
- // Deprecated
29
-
30
- /**
31
- * @tsl
32
- * @function
33
- * @deprecated since r170. Use {@link time} instead.
34
- *
35
- * @param {number} [timeScale=1] - The time scale.
36
- * @returns {UniformNode<float>}
37
- */
38
- export const timerLocal = ( timeScale = 1 ) => { // @deprecated, r170
39
-
40
- console.warn( 'TSL: timerLocal() is deprecated. Use "time" instead.' );
41
- return time.mul( timeScale );
42
-
43
- };
44
-
45
- /**
46
- * @tsl
47
- * @function
48
- * @deprecated since r170. Use {@link time} instead.
49
- *
50
- * @param {number} [timeScale=1] - The time scale.
51
- * @returns {UniformNode<float>}
52
- */
53
- export const timerGlobal = ( timeScale = 1 ) => { // @deprecated, r170
54
-
55
- console.warn( 'TSL: timerGlobal() is deprecated. Use "time" instead.' );
56
- return time.mul( timeScale );
57
-
58
- };
59
-
60
- /**
61
- * @tsl
62
- * @function
63
- * @deprecated since r170. Use {@link deltaTime} instead.
64
- *
65
- * @param {number} [timeScale=1] - The time scale.
66
- * @returns {UniformNode<float>}
67
- */
68
- export const timerDelta = ( timeScale = 1 ) => { // @deprecated, r170
69
-
70
- console.warn( 'TSL: timerDelta() is deprecated. Use "deltaTime" instead.' );
71
- return deltaTime.mul( timeScale );
72
-
73
- };
@@ -0,0 +1,65 @@
1
+ import { add } from '../math/OperatorNode.js';
2
+ import { normalLocal } from '../accessors/Normal.js';
3
+ import { positionLocal } from '../accessors/Position.js';
4
+ import { texture } from '../accessors/TextureNode.js';
5
+ import { float, vec3, Fn } from '../tsl/TSLBase.js';
6
+
7
+ /**
8
+ * TSL function for creating a triplanar textures node.
9
+ *
10
+ * Can be used for triplanar texture mapping.
11
+ *
12
+ * ```js
13
+ * material.colorNode = triplanarTexture( texture( diffuseMap ) );
14
+ * ```
15
+ *
16
+ * @tsl
17
+ * @function
18
+ * @param {Node} textureXNode - First texture node.
19
+ * @param {?Node} [textureYNode=null] - Second texture node. When not set, the shader will sample from `textureXNode` instead.
20
+ * @param {?Node} [textureZNode=null] - Third texture node. When not set, the shader will sample from `textureXNode` instead.
21
+ * @param {?Node<float>} [scaleNode=float(1)] - The scale node.
22
+ * @param {?Node<vec3>} [positionNode=positionLocal] - Vertex positions in local space.
23
+ * @param {?Node<vec3>} [normalNode=normalLocal] - Normals in local space.
24
+ * @returns {Node<vec4>}
25
+ */
26
+ export const triplanarTextures = /*@__PURE__*/ Fn( ( [ textureXNode, textureYNode = null, textureZNode = null, scaleNode = float( 1 ), positionNode = positionLocal, normalNode = normalLocal ] ) => {
27
+
28
+ // Reference: https://github.com/keijiro/StandardTriplanar
29
+
30
+ // Blending factor of triplanar mapping
31
+ let bf = normalNode.abs().normalize();
32
+ bf = bf.div( bf.dot( vec3( 1.0 ) ) );
33
+
34
+ // Triplanar mapping
35
+ const tx = positionNode.yz.mul( scaleNode );
36
+ const ty = positionNode.zx.mul( scaleNode );
37
+ const tz = positionNode.xy.mul( scaleNode );
38
+
39
+ // Base color
40
+ const textureX = textureXNode.value;
41
+ const textureY = textureYNode !== null ? textureYNode.value : textureX;
42
+ const textureZ = textureZNode !== null ? textureZNode.value : textureX;
43
+
44
+ const cx = texture( textureX, tx ).mul( bf.x );
45
+ const cy = texture( textureY, ty ).mul( bf.y );
46
+ const cz = texture( textureZ, tz ).mul( bf.z );
47
+
48
+ return add( cx, cy, cz );
49
+
50
+ } );
51
+
52
+ /**
53
+ * TSL function for creating a triplanar textures node.
54
+ *
55
+ * @tsl
56
+ * @function
57
+ * @param {Node} textureXNode - First texture node.
58
+ * @param {?Node} [textureYNode=null] - Second texture node. When not set, the shader will sample from `textureXNode` instead.
59
+ * @param {?Node} [textureZNode=null] - Third texture node. When not set, the shader will sample from `textureXNode` instead.
60
+ * @param {?Node<float>} [scaleNode=float(1)] - The scale node.
61
+ * @param {?Node<vec3>} [positionNode=positionLocal] - Vertex positions in local space.
62
+ * @param {?Node<vec3>} [normalNode=normalLocal] - Normals in local space.
63
+ * @returns {Node<vec4>}
64
+ */
65
+ export const triplanarTexture = ( ...params ) => triplanarTextures( ...params );
@@ -971,7 +971,7 @@ class BatchedMesh extends Mesh {
971
971
  *
972
972
  * @param {number} geometryId - The ID of the geometry to return the bounding box for.
973
973
  * @param {Box3} target - The target object that is used to store the method's result.
974
- * @return {Box3|null} The geometry's bounding box. Returns `null` if no geometry has been found for the given ID.
974
+ * @return {?Box3} The geometry's bounding box. Returns `null` if no geometry has been found for the given ID.
975
975
  */
976
976
  getBoundingBoxAt( geometryId, target ) {
977
977
 
@@ -1016,7 +1016,7 @@ class BatchedMesh extends Mesh {
1016
1016
  *
1017
1017
  * @param {number} geometryId - The ID of the geometry to return the bounding sphere for.
1018
1018
  * @param {Sphere} target - The target object that is used to store the method's result.
1019
- * @return {Sphere|null} The geometry's bounding sphere. Returns `null` if no geometry has been found for the given ID.
1019
+ * @return {?Sphere} The geometry's bounding sphere. Returns `null` if no geometry has been found for the given ID.
1020
1020
  */
1021
1021
  getBoundingSphereAt( geometryId, target ) {
1022
1022
 
@@ -1251,7 +1251,7 @@ class BatchedMesh extends Mesh {
1251
1251
  const availableInstanceIds = this._availableInstanceIds;
1252
1252
  const instanceInfo = this._instanceInfo;
1253
1253
  availableInstanceIds.sort( ascIdSort );
1254
- while ( availableInstanceIds[ availableInstanceIds.length - 1 ] === instanceInfo.length ) {
1254
+ while ( availableInstanceIds[ availableInstanceIds.length - 1 ] === instanceInfo.length - 1 ) {
1255
1255
 
1256
1256
  instanceInfo.pop();
1257
1257
  availableInstanceIds.pop();
@@ -1529,9 +1529,11 @@ class BatchedMesh extends Mesh {
1529
1529
  _matrix
1530
1530
  .multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse )
1531
1531
  .multiply( this.matrixWorld );
1532
+
1532
1533
  _frustum.setFromProjectionMatrix(
1533
1534
  _matrix,
1534
- renderer.coordinateSystem
1535
+ camera.coordinateSystem,
1536
+ camera.reversedDepth
1535
1537
  );
1536
1538
 
1537
1539
  }
@@ -183,7 +183,7 @@ class LOD extends Object3D {
183
183
  * the given distance.
184
184
  *
185
185
  * @param {number} distance - The LOD distance.
186
- * @return {Object3D|null} The found 3D object. `null` if no 3D object has been found.
186
+ * @return {?Object3D} The found 3D object. `null` if no 3D object has been found.
187
187
  */
188
188
  getObjectForDistance( distance ) {
189
189
 
@@ -6,6 +6,7 @@ import { Vector3 } from '../math/Vector3.js';
6
6
  import { LineBasicMaterial } from '../materials/LineBasicMaterial.js';
7
7
  import { BufferGeometry } from '../core/BufferGeometry.js';
8
8
  import { Float32BufferAttribute } from '../core/BufferAttribute.js';
9
+ import { warn } from '../utils.js';
9
10
 
10
11
  const _vStart = /*@__PURE__*/ new Vector3();
11
12
  const _vEnd = /*@__PURE__*/ new Vector3();
@@ -142,7 +143,7 @@ class Line extends Object3D {
142
143
 
143
144
  } else {
144
145
 
145
- console.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );
146
+ warn( 'Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );
146
147
 
147
148
  }
148
149
 
@@ -1,6 +1,7 @@
1
1
  import { Line } from './Line.js';
2
2
  import { Vector3 } from '../math/Vector3.js';
3
3
  import { Float32BufferAttribute } from '../core/BufferAttribute.js';
4
+ import { warn } from '../utils.js';
4
5
 
5
6
  const _start = /*@__PURE__*/ new Vector3();
6
7
  const _end = /*@__PURE__*/ new Vector3();
@@ -60,7 +61,7 @@ class LineSegments extends Line {
60
61
 
61
62
  } else {
62
63
 
63
- console.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );
64
+ warn( 'LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );
64
65
 
65
66
  }
66
67
 
@@ -6,6 +6,7 @@ import { Bone } from './Bone.js';
6
6
  import { Matrix4 } from '../math/Matrix4.js';
7
7
  import { DataTexture } from '../textures/DataTexture.js';
8
8
  import { generateUUID } from '../math/MathUtils.js';
9
+ import { warn } from '../utils.js';
9
10
 
10
11
  const _offsetMatrix = /*@__PURE__*/ new Matrix4();
11
12
  const _identityMatrix = /*@__PURE__*/ new Matrix4();
@@ -106,7 +107,7 @@ class Skeleton {
106
107
 
107
108
  if ( bones.length !== boneInverses.length ) {
108
109
 
109
- console.warn( 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.' );
110
+ warn( 'Skeleton: Number of inverse bone matrices does not match amount of bones.' );
110
111
 
111
112
  this.boneInverses = [];
112
113
 
@@ -324,7 +325,7 @@ class Skeleton {
324
325
 
325
326
  if ( bone === undefined ) {
326
327
 
327
- console.warn( 'THREE.Skeleton: No bone found with UUID:', uuid );
328
+ warn( 'Skeleton: No bone found with UUID:', uuid );
328
329
  bone = new Bone();
329
330
 
330
331
  }
@@ -6,6 +6,7 @@ import { Vector3 } from '../math/Vector3.js';
6
6
  import { Vector4 } from '../math/Vector4.js';
7
7
  import { Ray } from '../math/Ray.js';
8
8
  import { AttachedBindMode, DetachedBindMode } from '../constants.js';
9
+ import { warn } from '../utils.js';
9
10
 
10
11
  const _basePosition = /*@__PURE__*/ new Vector3();
11
12
 
@@ -32,6 +33,7 @@ const _ray = /*@__PURE__*/ new Ray();
32
33
  * or {@link FBXLoader } import respective models.
33
34
  *
34
35
  * @augments Mesh
36
+ * @demo scenes/bones-browser.html
35
37
  */
36
38
  class SkinnedMesh extends Mesh {
37
39
 
@@ -299,7 +301,7 @@ class SkinnedMesh extends Mesh {
299
301
 
300
302
  } else {
301
303
 
302
- console.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );
304
+ warn( 'SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );
303
305
 
304
306
  }
305
307
 
@@ -7,6 +7,7 @@ import { BufferGeometry } from '../core/BufferGeometry.js';
7
7
  import { InterleavedBuffer } from '../core/InterleavedBuffer.js';
8
8
  import { InterleavedBufferAttribute } from '../core/InterleavedBufferAttribute.js';
9
9
  import { SpriteMaterial } from '../materials/SpriteMaterial.js';
10
+ import { error } from '../utils.js';
10
11
 
11
12
  let _geometry;
12
13
 
@@ -48,7 +49,7 @@ class Sprite extends Object3D {
48
49
  /**
49
50
  * Constructs a new sprite.
50
51
  *
51
- * @param {SpriteMaterial} [material] - The sprite material.
52
+ * @param {(SpriteMaterial|SpriteNodeMaterial)} [material] - The sprite material.
52
53
  */
53
54
  constructor( material = new SpriteMaterial() ) {
54
55
 
@@ -94,7 +95,7 @@ class Sprite extends Object3D {
94
95
  /**
95
96
  * The sprite material.
96
97
  *
97
- * @type {SpriteMaterial}
98
+ * @type {(SpriteMaterial|SpriteNodeMaterial)}
98
99
  */
99
100
  this.material = material;
100
101
 
@@ -129,7 +130,7 @@ class Sprite extends Object3D {
129
130
 
130
131
  if ( raycaster.camera === null ) {
131
132
 
132
- console.error( 'THREE.Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.' );
133
+ error( 'Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.' );
133
134
 
134
135
  }
135
136