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,3 +1,4 @@
1
+ import { warn, error } from '../utils.js';
1
2
  // Characters [].:/ are reserved for track binding syntax.
2
3
  const _RESERVED_CHARS_RE = '\\[\\]\\.:\\/';
3
4
  const _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );
@@ -507,7 +508,7 @@ class PropertyBinding {
507
508
  // ensure there is a value node
508
509
  if ( ! targetObject ) {
509
510
 
510
- console.warn( 'THREE.PropertyBinding: No target node found for track: ' + this.path + '.' );
511
+ warn( 'PropertyBinding: No target node found for track: ' + this.path + '.' );
511
512
  return;
512
513
 
513
514
  }
@@ -523,14 +524,14 @@ class PropertyBinding {
523
524
 
524
525
  if ( ! targetObject.material ) {
525
526
 
526
- console.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );
527
+ error( 'PropertyBinding: Can not bind to material as node does not have a material.', this );
527
528
  return;
528
529
 
529
530
  }
530
531
 
531
532
  if ( ! targetObject.material.materials ) {
532
533
 
533
- console.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );
534
+ error( 'PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );
534
535
  return;
535
536
 
536
537
  }
@@ -543,7 +544,7 @@ class PropertyBinding {
543
544
 
544
545
  if ( ! targetObject.skeleton ) {
545
546
 
546
- console.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );
547
+ error( 'PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );
547
548
  return;
548
549
 
549
550
  }
@@ -578,14 +579,14 @@ class PropertyBinding {
578
579
 
579
580
  if ( ! targetObject.material ) {
580
581
 
581
- console.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );
582
+ error( 'PropertyBinding: Can not bind to material as node does not have a material.', this );
582
583
  return;
583
584
 
584
585
  }
585
586
 
586
587
  if ( ! targetObject.material.map ) {
587
588
 
588
- console.error( 'THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.', this );
589
+ error( 'PropertyBinding: Can not bind to material.map as node.material does not have a map.', this );
589
590
  return;
590
591
 
591
592
  }
@@ -597,7 +598,7 @@ class PropertyBinding {
597
598
 
598
599
  if ( targetObject[ objectName ] === undefined ) {
599
600
 
600
- console.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );
601
+ error( 'PropertyBinding: Can not bind to objectName of node undefined.', this );
601
602
  return;
602
603
 
603
604
  }
@@ -611,7 +612,7 @@ class PropertyBinding {
611
612
 
612
613
  if ( targetObject[ objectIndex ] === undefined ) {
613
614
 
614
- console.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );
615
+ error( 'PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );
615
616
  return;
616
617
 
617
618
  }
@@ -629,7 +630,7 @@ class PropertyBinding {
629
630
 
630
631
  const nodeName = parsedPath.nodeName;
631
632
 
632
- console.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +
633
+ error( 'PropertyBinding: Trying to update property for track: ' + nodeName +
633
634
  '.' + propertyName + ' but it wasn\'t found.', targetObject );
634
635
  return;
635
636
 
@@ -664,14 +665,14 @@ class PropertyBinding {
664
665
  // support resolving morphTarget names into indices.
665
666
  if ( ! targetObject.geometry ) {
666
667
 
667
- console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );
668
+ error( 'PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );
668
669
  return;
669
670
 
670
671
  }
671
672
 
672
673
  if ( ! targetObject.geometry.morphAttributes ) {
673
674
 
674
- console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );
675
+ error( 'PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );
675
676
  return;
676
677
 
677
678
  }
@@ -16,7 +16,7 @@ class BooleanKeyframeTrack extends KeyframeTrack {
16
16
  *
17
17
  * @param {string} name - The keyframe track's name.
18
18
  * @param {Array<number>} times - A list of keyframe times.
19
- * @param {Array<number>} values - A list of keyframe values.
19
+ * @param {Array<boolean>} values - A list of keyframe values.
20
20
  */
21
21
  constructor( name, times, values ) {
22
22
 
@@ -16,7 +16,7 @@ class StringKeyframeTrack extends KeyframeTrack {
16
16
  *
17
17
  * @param {string} name - The keyframe track's name.
18
18
  * @param {Array<number>} times - A list of keyframe times.
19
- * @param {Array<number>} values - A list of keyframe values.
19
+ * @param {Array<string>} values - A list of keyframe values.
20
20
  */
21
21
  constructor( name, times, values ) {
22
22
 
@@ -1,9 +1,10 @@
1
1
  import { Object3D } from '../core/Object3D.js';
2
+ import { warn } from '../utils.js';
2
3
 
3
4
  /**
4
5
  * Represents a non-positional ( global ) audio object.
5
6
  *
6
- * This and related audio modules make use of the [Web Audio API]{@link https://www.w3.org/TR/webaudio-1.1/}.
7
+ * This and related audio modules make use of the [Web Audio API](https://www.w3.org/TR/webaudio-1.1/).
7
8
  *
8
9
  * ```js
9
10
  * // create an AudioListener and add it to the camera
@@ -314,14 +315,14 @@ class Audio extends Object3D {
314
315
 
315
316
  if ( this.isPlaying === true ) {
316
317
 
317
- console.warn( 'THREE.Audio: Audio is already playing.' );
318
+ warn( 'Audio: Audio is already playing.' );
318
319
  return;
319
320
 
320
321
  }
321
322
 
322
323
  if ( this.hasPlaybackControl === false ) {
323
324
 
324
- console.warn( 'THREE.Audio: this Audio has no playback control.' );
325
+ warn( 'Audio: this Audio has no playback control.' );
325
326
  return;
326
327
 
327
328
  }
@@ -358,7 +359,7 @@ class Audio extends Object3D {
358
359
 
359
360
  if ( this.hasPlaybackControl === false ) {
360
361
 
361
- console.warn( 'THREE.Audio: this Audio has no playback control.' );
362
+ warn( 'Audio: this Audio has no playback control.' );
362
363
  return;
363
364
 
364
365
  }
@@ -400,7 +401,7 @@ class Audio extends Object3D {
400
401
 
401
402
  if ( this.hasPlaybackControl === false ) {
402
403
 
403
- console.warn( 'THREE.Audio: this Audio has no playback control.' );
404
+ warn( 'Audio: this Audio has no playback control.' );
404
405
  return;
405
406
 
406
407
  }
@@ -593,7 +594,7 @@ class Audio extends Object3D {
593
594
 
594
595
  if ( this.hasPlaybackControl === false ) {
595
596
 
596
- console.warn( 'THREE.Audio: this Audio has no playback control.' );
597
+ warn( 'Audio: this Audio has no playback control.' );
597
598
  return;
598
599
 
599
600
  }
@@ -642,7 +643,7 @@ class Audio extends Object3D {
642
643
 
643
644
  if ( this.hasPlaybackControl === false ) {
644
645
 
645
- console.warn( 'THREE.Audio: this Audio has no playback control.' );
646
+ warn( 'Audio: this Audio has no playback control.' );
646
647
  return false;
647
648
 
648
649
  }
@@ -663,7 +664,7 @@ class Audio extends Object3D {
663
664
 
664
665
  if ( this.hasPlaybackControl === false ) {
665
666
 
666
- console.warn( 'THREE.Audio: this Audio has no playback control.' );
667
+ warn( 'Audio: this Audio has no playback control.' );
667
668
  return;
668
669
 
669
670
  }
@@ -741,7 +742,7 @@ class Audio extends Object3D {
741
742
 
742
743
  if ( source.sourceType !== 'buffer' ) {
743
744
 
744
- console.warn( 'THREE.Audio: Audio source type cannot be copied.' );
745
+ warn( 'Audio: Audio source type cannot be copied.' );
745
746
 
746
747
  return this;
747
748
 
@@ -154,7 +154,7 @@ class PositionalAudio extends Audio {
154
154
  * Defines which algorithm to use to reduce the volume of the audio source
155
155
  * as it moves away from the listener.
156
156
  *
157
- * Read [the spec]{@link https://www.w3.org/TR/webaudio-1.1/#enumdef-distancemodeltype}
157
+ * Read [the spec](https://www.w3.org/TR/webaudio-1.1/#enumdef-distancemodeltype)
158
158
  * for more details.
159
159
  *
160
160
  * @param {('linear'|'inverse'|'exponential')} value - The distance model to set.
@@ -57,6 +57,20 @@ class Camera extends Object3D {
57
57
  */
58
58
  this.coordinateSystem = WebGLCoordinateSystem;
59
59
 
60
+ this._reversedDepth = false;
61
+
62
+ }
63
+
64
+ /**
65
+ * The flag that indicates whether the camera uses a reversed depth buffer.
66
+ *
67
+ * @type {boolean}
68
+ * @default false
69
+ */
70
+ get reversedDepth() {
71
+
72
+ return this._reversedDepth;
73
+
60
74
  }
61
75
 
62
76
  copy( source, recursive ) {
@@ -1,7 +1,7 @@
1
1
  import { Camera } from './Camera.js';
2
2
 
3
3
  /**
4
- * Camera that uses [orthographic projection]{@link https://en.wikipedia.org/wiki/Orthographic_projection}.
4
+ * Camera that uses [orthographic projection](https://en.wikipedia.org/wiki/Orthographic_projection).
5
5
  *
6
6
  * In this projection mode, an object's size in the rendered image stays
7
7
  * constant regardless of its distance from the camera. This can be useful
@@ -216,7 +216,7 @@ class OrthographicCamera extends Camera {
216
216
 
217
217
  }
218
218
 
219
- this.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far, this.coordinateSystem );
219
+ this.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far, this.coordinateSystem, this.reversedDepth );
220
220
 
221
221
  this.projectionMatrixInverse.copy( this.projectionMatrix ).invert();
222
222
 
@@ -8,7 +8,7 @@ const _minTarget = /*@__PURE__*/ new Vector2();
8
8
  const _maxTarget = /*@__PURE__*/ new Vector2();
9
9
 
10
10
  /**
11
- * Camera that uses [perspective projection]{@link https://en.wikipedia.org/wiki/Perspective_(graphical)}.
11
+ * Camera that uses [perspective projection](https://en.wikipedia.org/wiki/Perspective_(graphical)).
12
12
  *
13
13
  * This projection mode is designed to mimic the way the human eye sees. It
14
14
  * is the most common projection mode used for rendering a 3D scene.
@@ -374,7 +374,7 @@ class PerspectiveCamera extends Camera {
374
374
  const skew = this.filmOffset;
375
375
  if ( skew !== 0 ) left += near * skew / this.getFilmWidth();
376
376
 
377
- this.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far, this.coordinateSystem );
377
+ this.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far, this.coordinateSystem, this.reversedDepth );
378
378
 
379
379
  this.projectionMatrixInverse.copy( this.projectionMatrix ).invert();
380
380
 
@@ -9,8 +9,8 @@ const _projectionMatrix = /*@__PURE__*/ new Matrix4();
9
9
  /**
10
10
  * A special type of camera that uses two perspective cameras with
11
11
  * stereoscopic projection. Can be used for rendering stereo effects
12
- * like [3D Anaglyph]{@link https://en.wikipedia.org/wiki/Anaglyph_3D} or
13
- * [Parallax Barrier]{@link https://en.wikipedia.org/wiki/parallax_barrier}.
12
+ * like [3D Anaglyph](https://en.wikipedia.org/wiki/Anaglyph_3D) or
13
+ * [Parallax Barrier](https://en.wikipedia.org/wiki/parallax_barrier).
14
14
  */
15
15
  class StereoCamera {
16
16
 
package/src/constants.js CHANGED
@@ -1,4 +1,4 @@
1
- export const REVISION = '177';
1
+ export const REVISION = '181';
2
2
 
3
3
  /**
4
4
  * Represents mouse buttons and interaction types in context of controls.
@@ -721,6 +721,14 @@ export const UnsignedInt248Type = 1020;
721
721
  */
722
722
  export const UnsignedInt5999Type = 35902;
723
723
 
724
+ /**
725
+ * An unsigned int 10_11_11 (packed) data type for textures.
726
+ *
727
+ * @type {number}
728
+ * @constant
729
+ */
730
+ export const UnsignedInt101111Type = 35899;
731
+
724
732
  /**
725
733
  * Discards the red, green and blue components and reads just the alpha component.
726
734
  *
@@ -1612,8 +1620,8 @@ export const InterpolationSamplingMode = {
1612
1620
  NORMAL: 'normal',
1613
1621
  CENTROID: 'centroid',
1614
1622
  SAMPLE: 'sample',
1615
- FLAT_FIRST: 'flat first',
1616
- FLAT_EITHER: 'flat either'
1623
+ FIRST: 'first',
1624
+ EITHER: 'either'
1617
1625
  };
1618
1626
 
1619
1627
  /**
@@ -1662,6 +1670,6 @@ export const InterpolationSamplingMode = {
1662
1670
  * @property {string} NORMAL - Normal sampling mode.
1663
1671
  * @property {string} CENTROID - Centroid sampling mode.
1664
1672
  * @property {string} SAMPLE - Sample-specific sampling mode.
1665
- * @property {string} FLAT_FIRST - Flat interpolation using the first vertex.
1666
- * @property {string} FLAT_EITHER - Flat interpolation using either vertex.
1673
+ * @property {string} FIRST - Flat interpolation using the first vertex.
1674
+ * @property {string} EITHER - Flat interpolation using either vertex.
1667
1675
  */
@@ -88,7 +88,7 @@ class BufferAttribute {
88
88
  /**
89
89
  * Applies to integer data only. Indicates how the underlying data in the buffer maps to
90
90
  * the values in the GLSL code. For instance, if `array` is an instance of `UInt16Array`,
91
- * and `normalized` is `true`, the values `0 -+65535` in the array data will be mapped to
91
+ * and `normalized` is `true`, the values `0 - +65535` in the array data will be mapped to
92
92
  * `0.0f - +1.0f` in the GLSL attribute. If `normalized` is `false`, the values will be converted
93
93
  * to floats unmodified, i.e. `65535` becomes `65535.0f`.
94
94
  *
@@ -841,8 +841,8 @@ class Uint32BufferAttribute extends BufferAttribute {
841
841
  * Convenient class that can be used when creating a `Float16` buffer attribute with
842
842
  * a plain `Array` instance.
843
843
  *
844
- * This class automatically converts to and from FP16 since `Float16Array` is not
845
- * natively supported in JavaScript.
844
+ * This class automatically converts to and from FP16 via `Uint16Array` since `Float16Array`
845
+ * browser support is still problematic.
846
846
  *
847
847
  * @augments BufferAttribute
848
848
  */
@@ -8,7 +8,7 @@ import { Object3D } from './Object3D.js';
8
8
  import { Matrix4 } from '../math/Matrix4.js';
9
9
  import { Matrix3 } from '../math/Matrix3.js';
10
10
  import { generateUUID } from '../math/MathUtils.js';
11
- import { arrayNeedsUint32 } from '../utils.js';
11
+ import { arrayNeedsUint32, warn, error } from '../utils.js';
12
12
 
13
13
  let _id = 0;
14
14
 
@@ -156,7 +156,7 @@ class BufferGeometry extends EventDispatcher {
156
156
  /**
157
157
  * Bounding box for the geometry which can be calculated with `computeBoundingBox()`.
158
158
  *
159
- * @type {Box3}
159
+ * @type {?Box3}
160
160
  * @default null
161
161
  */
162
162
  this.boundingBox = null;
@@ -164,7 +164,7 @@ class BufferGeometry extends EventDispatcher {
164
164
  /**
165
165
  * Bounding sphere for the geometry which can be calculated with `computeBoundingSphere()`.
166
166
  *
167
- * @type {Sphere}
167
+ * @type {?Sphere}
168
168
  * @default null
169
169
  */
170
170
  this.boundingSphere = null;
@@ -596,7 +596,7 @@ class BufferGeometry extends EventDispatcher {
596
596
 
597
597
  if ( points.length > positionAttribute.count ) {
598
598
 
599
- console.warn( 'THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry.' );
599
+ warn( 'BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry.' );
600
600
 
601
601
  }
602
602
 
@@ -626,7 +626,7 @@ class BufferGeometry extends EventDispatcher {
626
626
 
627
627
  if ( position && position.isGLBufferAttribute ) {
628
628
 
629
- console.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.', this );
629
+ error( 'BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.', this );
630
630
 
631
631
  this.boundingBox.set(
632
632
  new Vector3( - Infinity, - Infinity, - Infinity ),
@@ -677,7 +677,7 @@ class BufferGeometry extends EventDispatcher {
677
677
 
678
678
  if ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {
679
679
 
680
- console.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this );
680
+ error( 'BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this );
681
681
 
682
682
  }
683
683
 
@@ -701,7 +701,7 @@ class BufferGeometry extends EventDispatcher {
701
701
 
702
702
  if ( position && position.isGLBufferAttribute ) {
703
703
 
704
- console.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.', this );
704
+ error( 'BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.', this );
705
705
 
706
706
  this.boundingSphere.set( new Vector3(), Infinity );
707
707
 
@@ -792,7 +792,7 @@ class BufferGeometry extends EventDispatcher {
792
792
 
793
793
  if ( isNaN( this.boundingSphere.radius ) ) {
794
794
 
795
- console.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this );
795
+ error( 'BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this );
796
796
 
797
797
  }
798
798
 
@@ -820,7 +820,7 @@ class BufferGeometry extends EventDispatcher {
820
820
  attributes.normal === undefined ||
821
821
  attributes.uv === undefined ) {
822
822
 
823
- console.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );
823
+ error( 'BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );
824
824
  return;
825
825
 
826
826
  }
@@ -1130,7 +1130,7 @@ class BufferGeometry extends EventDispatcher {
1130
1130
 
1131
1131
  if ( this.index === null ) {
1132
1132
 
1133
- console.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );
1133
+ warn( 'BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );
1134
1134
  return this;
1135
1135
 
1136
1136
  }
package/src/core/Clock.js CHANGED
@@ -61,7 +61,7 @@ class Clock {
61
61
  */
62
62
  start() {
63
63
 
64
- this.startTime = now();
64
+ this.startTime = performance.now();
65
65
 
66
66
  this.oldTime = this.startTime;
67
67
  this.elapsedTime = 0;
@@ -110,7 +110,7 @@ class Clock {
110
110
 
111
111
  if ( this.running ) {
112
112
 
113
- const newTime = now();
113
+ const newTime = performance.now();
114
114
 
115
115
  diff = ( newTime - this.oldTime ) / 1000;
116
116
  this.oldTime = newTime;
@@ -125,10 +125,4 @@ class Clock {
125
125
 
126
126
  }
127
127
 
128
- function now() {
129
-
130
- return performance.now();
131
-
132
- }
133
-
134
128
  export { Clock };
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * This modules allows to dispatch event objects on custom JavaScript objects.
3
3
  *
4
- * Main repository: [eventdispatcher.js]{@link https://github.com/mrdoob/eventdispatcher.js/}
4
+ * Main repository: [eventdispatcher.js](https://github.com/mrdoob/eventdispatcher.js/)
5
5
  *
6
6
  * Code Example:
7
7
  * ```js
@@ -19,8 +19,9 @@ class GLBufferAttribute {
19
19
  * @param {number} itemSize - The item size.
20
20
  * @param {number} elementSize - The corresponding size (in bytes) for the given `type` parameter.
21
21
  * @param {number} count - The expected number of vertices in VBO.
22
+ * @param {boolean} [normalized=false] - Whether the data are normalized or not.
22
23
  */
23
- constructor( buffer, type, itemSize, elementSize, count ) {
24
+ constructor( buffer, type, itemSize, elementSize, count, normalized = false ) {
24
25
 
25
26
  /**
26
27
  * This flag can be used for type testing.
@@ -73,6 +74,17 @@ class GLBufferAttribute {
73
74
  */
74
75
  this.count = count;
75
76
 
77
+ /**
78
+ * Applies to integer data only. Indicates how the underlying data in the buffer maps to
79
+ * the values in the GLSL code. For instance, if `buffer` contains data of `gl.UNSIGNED_SHORT`,
80
+ * and `normalized` is `true`, the values `0 - +65535` in the buffer data will be mapped to
81
+ * `0.0f - +1.0f` in the GLSL attribute. If `normalized` is `false`, the values will be converted
82
+ * to floats unmodified, i.e. `65535` becomes `65535.0f`.
83
+ *
84
+ * @type {boolean}
85
+ */
86
+ this.normalized = normalized;
87
+
76
88
  /**
77
89
  * A version number, incremented every time the `needsUpdate` is set to `true`.
78
90
  *
@@ -5,7 +5,7 @@ import { StaticDrawUsage } from '../constants.js';
5
5
  * "Interleaved" means that multiple attributes, possibly of different types,
6
6
  * (e.g., position, normal, uv, color) are packed into a single array buffer.
7
7
  *
8
- * An introduction into interleaved arrays can be found here: [Interleaved array basics]{@link https://blog.tojicode.com/2011/05/interleaved-array-basics.html}
8
+ * An introduction into interleaved arrays can be found here: [Interleaved array basics](https://blog.tojicode.com/2011/05/interleaved-array-basics.html)
9
9
  */
10
10
  class InterleavedBuffer {
11
11
 
@@ -1,6 +1,7 @@
1
1
  import { Vector3 } from '../math/Vector3.js';
2
2
  import { BufferAttribute } from './BufferAttribute.js';
3
3
  import { denormalize, normalize } from '../math/MathUtils.js';
4
+ import { log } from '../utils.js';
4
5
 
5
6
  const _vector = /*@__PURE__*/ new Vector3();
6
7
 
@@ -439,7 +440,7 @@ class InterleavedBufferAttribute {
439
440
 
440
441
  if ( data === undefined ) {
441
442
 
442
- console.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.' );
443
+ log( 'InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.' );
443
444
 
444
445
  const array = [];
445
446
 
@@ -489,7 +490,7 @@ class InterleavedBufferAttribute {
489
490
 
490
491
  if ( data === undefined ) {
491
492
 
492
- console.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.' );
493
+ log( 'InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.' );
493
494
 
494
495
  const array = [];
495
496
 
@@ -6,6 +6,7 @@ import { Euler } from '../math/Euler.js';
6
6
  import { Layers } from './Layers.js';
7
7
  import { Matrix3 } from '../math/Matrix3.js';
8
8
  import { generateUUID } from '../math/MathUtils.js';
9
+ import { error } from '../utils.js';
9
10
 
10
11
  let _object3DId = 0;
11
12
 
@@ -47,7 +48,7 @@ const _removedEvent = { type: 'removed' };
47
48
  const _childaddedEvent = { type: 'childadded', child: null };
48
49
 
49
50
  /**
50
- * Fires when a new child object has been added.
51
+ * Fires when a child object has been removed.
51
52
  *
52
53
  * @event Object3D#childremoved
53
54
  * @type {Object}
@@ -733,7 +734,7 @@ class Object3D extends EventDispatcher {
733
734
 
734
735
  if ( object === this ) {
735
736
 
736
- console.error( 'THREE.Object3D.add: object can\'t be added as a child of itself.', object );
737
+ error( 'Object3D.add: object can\'t be added as a child of itself.', object );
737
738
  return this;
738
739
 
739
740
  }
@@ -752,7 +753,7 @@ class Object3D extends EventDispatcher {
752
753
 
753
754
  } else {
754
755
 
755
- console.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );
756
+ error( 'Object3D.add: object not an instance of THREE.Object3D.', object );
756
757
 
757
758
  }
758
759
 
@@ -1,6 +1,7 @@
1
1
  import { Matrix4 } from '../math/Matrix4.js';
2
2
  import { Ray } from '../math/Ray.js';
3
3
  import { Layers } from './Layers.js';
4
+ import { error } from '../utils.js';
4
5
 
5
6
  const _matrix = /*@__PURE__*/ new Matrix4();
6
7
 
@@ -131,7 +132,7 @@ class Raycaster {
131
132
 
132
133
  } else {
133
134
 
134
- console.error( 'THREE.Raycaster: Unsupported camera type: ' + camera.type );
135
+ error( 'Raycaster: Unsupported camera type: ' + camera.type );
135
136
 
136
137
  }
137
138
 
@@ -294,7 +294,16 @@ class RenderTarget extends EventDispatcher {
294
294
  this.textures[ i ].image.width = width;
295
295
  this.textures[ i ].image.height = height;
296
296
  this.textures[ i ].image.depth = depth;
297
- this.textures[ i ].isArrayTexture = this.textures[ i ].image.depth > 1;
297
+
298
+ if ( this.textures[ i ].isData3DTexture !== true ) { // Fix for #31693
299
+
300
+ // TODO: Reconsider setting isArrayTexture flag here and in the ctor of Texture.
301
+ // Maybe a method `isArrayTexture()` or just a getter could replace a flag since
302
+ // both are evaluated on each call?
303
+
304
+ this.textures[ i ].isArrayTexture = this.textures[ i ].image.depth > 1;
305
+
306
+ }
298
307
 
299
308
  }
300
309