@plastic-software/three 0.179.0 → 0.181.1

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 (430) hide show
  1. package/build/three.cjs +1108 -591
  2. package/build/three.core.js +616 -345
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +488 -250
  5. package/build/three.module.min.js +1 -1
  6. package/build/three.tsl.js +37 -6
  7. package/build/three.tsl.min.js +1 -1
  8. package/build/three.webgpu.js +6576 -2152
  9. package/build/three.webgpu.min.js +1 -1
  10. package/build/three.webgpu.nodes.js +6575 -2151
  11. package/build/three.webgpu.nodes.min.js +1 -1
  12. package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  13. package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
  14. package/examples/jsm/Addons.js +1 -1
  15. package/examples/jsm/animation/CCDIKSolver.js +1 -1
  16. package/examples/jsm/controls/ArcballControls.js +8 -8
  17. package/examples/jsm/controls/DragControls.js +7 -57
  18. package/examples/jsm/controls/FirstPersonControls.js +3 -3
  19. package/examples/jsm/controls/FlyControls.js +1 -1
  20. package/examples/jsm/controls/OrbitControls.js +2 -2
  21. package/examples/jsm/controls/PointerLockControls.js +2 -10
  22. package/examples/jsm/controls/TrackballControls.js +1 -1
  23. package/examples/jsm/controls/TransformControls.js +1 -1
  24. package/examples/jsm/effects/AsciiEffect.js +8 -8
  25. package/examples/jsm/exporters/DRACOExporter.js +2 -2
  26. package/examples/jsm/exporters/EXRExporter.js +1 -1
  27. package/examples/jsm/exporters/GLTFExporter.js +33 -25
  28. package/examples/jsm/exporters/KTX2Exporter.js +4 -2
  29. package/examples/jsm/exporters/PLYExporter.js +1 -1
  30. package/examples/jsm/exporters/USDZExporter.js +9 -2
  31. package/examples/jsm/geometries/DecalGeometry.js +2 -2
  32. package/examples/jsm/geometries/ParametricGeometry.js +1 -1
  33. package/examples/jsm/geometries/TeapotGeometry.js +2 -2
  34. package/examples/jsm/geometries/TextGeometry.js +3 -2
  35. package/examples/jsm/gpgpu/BitonicSort.js +715 -0
  36. package/examples/jsm/helpers/ViewHelper.js +43 -5
  37. package/examples/jsm/inspector/Inspector.js +427 -0
  38. package/examples/jsm/inspector/RendererInspector.js +415 -0
  39. package/examples/jsm/inspector/tabs/Console.js +204 -0
  40. package/examples/jsm/inspector/tabs/Parameters.js +332 -0
  41. package/examples/jsm/inspector/tabs/Performance.js +268 -0
  42. package/examples/jsm/inspector/tabs/Viewer.js +166 -0
  43. package/examples/jsm/inspector/ui/Graph.js +95 -0
  44. package/examples/jsm/inspector/ui/Item.js +170 -0
  45. package/examples/jsm/inspector/ui/List.js +75 -0
  46. package/examples/jsm/inspector/ui/Profiler.js +170 -0
  47. package/examples/jsm/inspector/ui/Style.js +654 -0
  48. package/examples/jsm/inspector/ui/Tab.js +46 -0
  49. package/examples/jsm/inspector/ui/Values.js +423 -0
  50. package/examples/jsm/inspector/ui/utils.js +56 -0
  51. package/examples/jsm/interactive/HTMLMesh.js +6 -10
  52. package/examples/jsm/interactive/InteractiveGroup.js +1 -1
  53. package/examples/jsm/interactive/SelectionBox.js +30 -0
  54. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  55. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
  56. package/examples/jsm/lines/Line2.js +3 -3
  57. package/examples/jsm/lines/LineGeometry.js +1 -1
  58. package/examples/jsm/lines/LineSegments2.js +2 -2
  59. package/examples/jsm/lines/Wireframe.js +2 -2
  60. package/examples/jsm/lines/WireframeGeometry2.js +1 -1
  61. package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
  62. package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
  63. package/examples/jsm/loaders/3MFLoader.js +1 -1
  64. package/examples/jsm/loaders/ColladaLoader.js +3 -3
  65. package/examples/jsm/loaders/DDSLoader.js +1 -1
  66. package/examples/jsm/loaders/DRACOLoader.js +73 -22
  67. package/examples/jsm/loaders/EXRLoader.js +5 -5
  68. package/examples/jsm/loaders/FBXLoader.js +2 -2
  69. package/examples/jsm/loaders/FontLoader.js +23 -5
  70. package/examples/jsm/loaders/GLTFLoader.js +14 -8
  71. package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
  72. package/examples/jsm/loaders/HDRLoader.js +486 -0
  73. package/examples/jsm/loaders/KTX2Loader.js +136 -49
  74. package/examples/jsm/loaders/KTXLoader.js +2 -2
  75. package/examples/jsm/loaders/LDrawLoader.js +1 -1
  76. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  77. package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
  78. package/examples/jsm/loaders/LWOLoader.js +2 -2
  79. package/examples/jsm/loaders/MaterialXLoader.js +22 -5
  80. package/examples/jsm/loaders/OBJLoader.js +1 -1
  81. package/examples/jsm/loaders/PDBLoader.js +1 -1
  82. package/examples/jsm/loaders/RGBELoader.js +7 -473
  83. package/examples/jsm/loaders/SVGLoader.js +2 -2
  84. package/examples/jsm/loaders/TTFLoader.js +4 -4
  85. package/examples/jsm/loaders/UltraHDRLoader.js +2 -2
  86. package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
  87. package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
  88. package/examples/jsm/math/ColorSpaces.js +19 -1
  89. package/examples/jsm/math/ConvexHull.js +3 -3
  90. package/examples/jsm/math/ImprovedNoise.js +1 -1
  91. package/examples/jsm/math/Lut.js +2 -2
  92. package/examples/jsm/math/SimplexNoise.js +1 -1
  93. package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
  94. package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
  95. package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
  96. package/examples/jsm/misc/TubePainter.js +383 -40
  97. package/examples/jsm/misc/Volume.js +1 -1
  98. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  99. package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
  100. package/examples/jsm/objects/Sky.js +1 -1
  101. package/examples/jsm/objects/SkyMesh.js +1 -1
  102. package/examples/jsm/objects/Water.js +3 -3
  103. package/examples/jsm/objects/WaterMesh.js +6 -6
  104. package/examples/jsm/postprocessing/GlitchPass.js +2 -2
  105. package/examples/jsm/postprocessing/OutlinePass.js +1 -1
  106. package/examples/jsm/postprocessing/SSRPass.js +37 -8
  107. package/examples/jsm/postprocessing/UnrealBloomPass.js +8 -6
  108. package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
  109. package/examples/jsm/renderers/CSS3DRenderer.js +7 -6
  110. package/examples/jsm/renderers/SVGRenderer.js +1 -1
  111. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
  112. package/examples/jsm/shaders/AfterimageShader.js +1 -1
  113. package/examples/jsm/shaders/BleachBypassShader.js +1 -1
  114. package/examples/jsm/shaders/BokehShader.js +1 -1
  115. package/examples/jsm/shaders/BokehShader2.js +1 -1
  116. package/examples/jsm/shaders/DotScreenShader.js +1 -1
  117. package/examples/jsm/shaders/FocusShader.js +1 -1
  118. package/examples/jsm/shaders/GTAOShader.js +2 -2
  119. package/examples/jsm/shaders/GodRaysShader.js +1 -1
  120. package/examples/jsm/shaders/KaleidoShader.js +1 -1
  121. package/examples/jsm/shaders/PoissonDenoiseShader.js +2 -2
  122. package/examples/jsm/shaders/SSRShader.js +1 -1
  123. package/examples/jsm/shaders/SepiaShader.js +1 -1
  124. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
  125. package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
  126. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +1 -1
  127. package/examples/jsm/shaders/VignetteShader.js +1 -1
  128. package/examples/jsm/transpiler/GLSLDecoder.js +22 -19
  129. package/examples/jsm/transpiler/TSLEncoder.js +9 -10
  130. package/examples/jsm/transpiler/WGSLEncoder.js +24 -0
  131. package/examples/jsm/tsl/display/AfterImageNode.js +26 -24
  132. package/examples/jsm/tsl/display/AnamorphicNode.js +28 -4
  133. package/examples/jsm/tsl/display/BloomNode.js +7 -3
  134. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +2 -1
  135. package/examples/jsm/tsl/display/DenoiseNode.js +2 -0
  136. package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
  137. package/examples/jsm/tsl/display/GTAONode.js +53 -5
  138. package/examples/jsm/tsl/display/GaussianBlurNode.js +49 -35
  139. package/examples/jsm/tsl/display/OutlineNode.js +13 -2
  140. package/examples/jsm/tsl/display/SSGINode.js +654 -0
  141. package/examples/jsm/tsl/display/SSRNode.js +182 -65
  142. package/examples/jsm/tsl/display/SSSNode.js +488 -0
  143. package/examples/jsm/tsl/display/TRAANode.js +124 -7
  144. package/examples/jsm/tsl/display/boxBlur.js +65 -0
  145. package/examples/jsm/tsl/display/hashBlur.js +16 -18
  146. package/examples/jsm/tsl/lighting/TiledLightsNode.js +21 -1
  147. package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
  148. package/examples/jsm/utils/ShadowMapViewerGPU.js +12 -5
  149. package/examples/jsm/webxr/OculusHandModel.js +1 -1
  150. package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
  151. package/examples/jsm/webxr/XRHandModelFactory.js +2 -6
  152. package/package.json +5 -10
  153. package/src/Three.Core.js +4 -2
  154. package/src/Three.TSL.js +36 -5
  155. package/src/Three.WebGPU.Nodes.js +2 -0
  156. package/src/Three.WebGPU.js +2 -0
  157. package/src/animation/AnimationClip.js +20 -4
  158. package/src/animation/AnimationMixer.js +3 -3
  159. package/src/animation/AnimationObjectGroup.js +2 -1
  160. package/src/animation/KeyframeTrack.js +7 -6
  161. package/src/animation/PropertyBinding.js +12 -11
  162. package/src/audio/Audio.js +10 -9
  163. package/src/audio/PositionalAudio.js +1 -1
  164. package/src/cameras/OrthographicCamera.js +1 -1
  165. package/src/cameras/PerspectiveCamera.js +1 -1
  166. package/src/cameras/StereoCamera.js +2 -2
  167. package/src/constants.js +11 -3
  168. package/src/core/BufferGeometry.js +10 -10
  169. package/src/core/EventDispatcher.js +1 -1
  170. package/src/core/InterleavedBuffer.js +1 -1
  171. package/src/core/InterleavedBufferAttribute.js +3 -2
  172. package/src/core/Object3D.js +3 -2
  173. package/src/core/Raycaster.js +2 -1
  174. package/src/core/RenderTarget.js +10 -1
  175. package/src/extras/Controls.js +5 -4
  176. package/src/extras/DataUtils.js +2 -1
  177. package/src/extras/Earcut.js +6 -0
  178. package/src/extras/ImageUtils.js +2 -2
  179. package/src/extras/PMREMGenerator.js +268 -55
  180. package/src/extras/TextureUtils.js +2 -1
  181. package/src/extras/core/Curve.js +2 -1
  182. package/src/extras/core/Interpolations.js +7 -1
  183. package/src/extras/core/ShapePath.js +4 -4
  184. package/src/extras/lib/earcut.js +8 -8
  185. package/src/geometries/BoxGeometry.js +1 -0
  186. package/src/geometries/CapsuleGeometry.js +1 -0
  187. package/src/geometries/CircleGeometry.js +1 -0
  188. package/src/geometries/ConeGeometry.js +1 -0
  189. package/src/geometries/CylinderGeometry.js +1 -0
  190. package/src/geometries/DodecahedronGeometry.js +1 -0
  191. package/src/geometries/ExtrudeGeometry.js +8 -6
  192. package/src/geometries/IcosahedronGeometry.js +1 -0
  193. package/src/geometries/LatheGeometry.js +1 -0
  194. package/src/geometries/OctahedronGeometry.js +1 -0
  195. package/src/geometries/PlaneGeometry.js +1 -0
  196. package/src/geometries/RingGeometry.js +1 -0
  197. package/src/geometries/ShapeGeometry.js +1 -0
  198. package/src/geometries/SphereGeometry.js +1 -0
  199. package/src/geometries/TetrahedronGeometry.js +1 -0
  200. package/src/geometries/TorusGeometry.js +1 -0
  201. package/src/geometries/TorusKnotGeometry.js +1 -0
  202. package/src/geometries/TubeGeometry.js +1 -0
  203. package/src/helpers/CameraHelper.js +1 -1
  204. package/src/lights/webgpu/ProjectorLight.js +1 -1
  205. package/src/loaders/AnimationLoader.js +2 -1
  206. package/src/loaders/AudioLoader.js +2 -1
  207. package/src/loaders/BufferGeometryLoader.js +2 -2
  208. package/src/loaders/Cache.js +2 -2
  209. package/src/loaders/DataTextureLoader.js +1 -1
  210. package/src/loaders/FileLoader.js +3 -2
  211. package/src/loaders/ImageBitmapLoader.js +5 -4
  212. package/src/loaders/ImageLoader.js +1 -1
  213. package/src/loaders/Loader.js +3 -3
  214. package/src/loaders/LoadingManager.js +25 -3
  215. package/src/loaders/MaterialLoader.js +3 -2
  216. package/src/loaders/ObjectLoader.js +13 -13
  217. package/src/loaders/TextureLoader.js +1 -1
  218. package/src/loaders/nodes/NodeLoader.js +3 -2
  219. package/src/materials/Material.js +16 -3
  220. package/src/materials/MeshBasicMaterial.js +1 -0
  221. package/src/materials/MeshDepthMaterial.js +1 -0
  222. package/src/materials/MeshDistanceMaterial.js +1 -1
  223. package/src/materials/MeshLambertMaterial.js +2 -1
  224. package/src/materials/MeshMatcapMaterial.js +22 -0
  225. package/src/materials/MeshNormalMaterial.js +1 -0
  226. package/src/materials/MeshPhongMaterial.js +2 -1
  227. package/src/materials/MeshPhysicalMaterial.js +2 -1
  228. package/src/materials/MeshStandardMaterial.js +8 -7
  229. package/src/materials/MeshToonMaterial.js +1 -0
  230. package/src/materials/PointsMaterial.js +1 -1
  231. package/src/materials/ShaderMaterial.js +2 -2
  232. package/src/materials/nodes/Line2NodeMaterial.js +2 -2
  233. package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
  234. package/src/materials/nodes/NodeMaterial.js +62 -22
  235. package/src/materials/nodes/PointsNodeMaterial.js +81 -28
  236. package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
  237. package/src/materials/nodes/manager/NodeMaterialObserver.js +3 -2
  238. package/src/math/Color.js +6 -5
  239. package/src/math/ColorManagement.js +9 -3
  240. package/src/math/Cylindrical.js +1 -1
  241. package/src/math/Euler.js +2 -1
  242. package/src/math/MathUtils.js +13 -11
  243. package/src/math/Matrix2.js +1 -1
  244. package/src/math/Matrix3.js +2 -2
  245. package/src/math/Matrix4.js +7 -7
  246. package/src/math/Plane.js +1 -1
  247. package/src/math/Quaternion.js +68 -66
  248. package/src/math/Spherical.js +1 -1
  249. package/src/nodes/Nodes.js +4 -1
  250. package/src/nodes/TSL.js +4 -1
  251. package/src/nodes/accessors/BufferNode.js +1 -1
  252. package/src/nodes/accessors/Camera.js +133 -7
  253. package/src/nodes/accessors/ClippingNode.js +6 -5
  254. package/src/nodes/accessors/CubeTextureNode.js +5 -4
  255. package/src/nodes/accessors/InstanceNode.js +25 -5
  256. package/src/nodes/accessors/Lights.js +10 -0
  257. package/src/nodes/accessors/Normal.js +5 -4
  258. package/src/nodes/accessors/Object3DNode.js +1 -1
  259. package/src/nodes/accessors/Position.js +18 -2
  260. package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
  261. package/src/nodes/accessors/ReferenceNode.js +3 -2
  262. package/src/nodes/accessors/SceneNode.js +2 -1
  263. package/src/nodes/accessors/StorageBufferNode.js +2 -1
  264. package/src/nodes/accessors/StorageTextureNode.js +22 -0
  265. package/src/nodes/accessors/Texture3DNode.js +14 -1
  266. package/src/nodes/accessors/TextureNode.js +130 -44
  267. package/src/nodes/code/FunctionCallNode.js +24 -4
  268. package/src/nodes/code/FunctionNode.js +23 -0
  269. package/src/nodes/core/ArrayNode.js +1 -0
  270. package/src/nodes/core/AssignNode.js +4 -3
  271. package/src/nodes/core/AttributeNode.js +2 -1
  272. package/src/nodes/core/ContextNode.js +29 -10
  273. package/src/nodes/core/IndexNode.js +2 -2
  274. package/src/nodes/core/InputNode.js +2 -1
  275. package/src/nodes/core/InspectorNode.js +128 -0
  276. package/src/nodes/core/{CacheNode.js → IsolateNode.js} +40 -7
  277. package/src/nodes/core/Node.js +152 -31
  278. package/src/nodes/core/NodeBuilder.js +183 -35
  279. package/src/nodes/core/NodeFrame.js +21 -21
  280. package/src/nodes/core/NodeFunction.js +2 -1
  281. package/src/nodes/core/NodeParser.js +2 -1
  282. package/src/nodes/core/NodeUniform.js +1 -1
  283. package/src/nodes/core/NodeUtils.js +17 -91
  284. package/src/nodes/core/ParameterNode.js +31 -0
  285. package/src/nodes/core/PropertyNode.js +7 -0
  286. package/src/nodes/core/StackNode.js +43 -16
  287. package/src/nodes/core/StructNode.js +5 -5
  288. package/src/nodes/core/StructTypeNode.js +1 -0
  289. package/src/nodes/core/SubBuildNode.js +2 -2
  290. package/src/nodes/core/UniformNode.js +18 -10
  291. package/src/nodes/core/VarNode.js +70 -33
  292. package/src/nodes/core/VaryingNode.js +3 -2
  293. package/src/nodes/display/BlendModes.js +5 -4
  294. package/src/nodes/display/BumpMapNode.js +1 -1
  295. package/src/nodes/display/ColorAdjustment.js +1 -1
  296. package/src/nodes/display/FrontFacingNode.js +4 -8
  297. package/src/nodes/display/NormalMapNode.js +2 -1
  298. package/src/nodes/display/PassNode.js +52 -11
  299. package/src/nodes/display/RenderOutputNode.js +28 -2
  300. package/src/nodes/display/ScreenNode.js +44 -14
  301. package/src/nodes/display/ToneMappingNode.js +31 -4
  302. package/src/nodes/display/ToonOutlinePassNode.js +8 -0
  303. package/src/nodes/display/ViewportDepthTextureNode.js +16 -4
  304. package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
  305. package/src/nodes/display/ViewportTextureNode.js +42 -12
  306. package/src/nodes/fog/Fog.js +3 -2
  307. package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
  308. package/src/nodes/functions/BSDF/DFGApprox.js +60 -19
  309. package/src/nodes/functions/BasicLightingModel.js +2 -1
  310. package/src/nodes/functions/PhysicalLightingModel.js +3 -2
  311. package/src/nodes/functions/VolumetricLightingModel.js +5 -5
  312. package/src/nodes/geometry/RangeNode.js +40 -4
  313. package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -1
  314. package/src/nodes/gpgpu/ComputeNode.js +17 -5
  315. package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
  316. package/src/nodes/gpgpu/WorkgroupInfoNode.js +2 -1
  317. package/src/nodes/lighting/EnvironmentNode.js +6 -6
  318. package/src/nodes/lighting/LightsNode.js +3 -4
  319. package/src/nodes/lighting/PointShadowNode.js +6 -0
  320. package/src/nodes/lighting/ShadowFilterNode.js +2 -0
  321. package/src/nodes/lighting/ShadowNode.js +75 -8
  322. package/src/nodes/math/BitcastNode.js +156 -0
  323. package/src/nodes/math/ConditionalNode.js +24 -7
  324. package/src/nodes/math/MathNode.js +25 -19
  325. package/src/nodes/math/OperatorNode.js +7 -5
  326. package/src/nodes/pmrem/PMREMUtils.js +117 -2
  327. package/src/nodes/shapes/Shapes.js +1 -1
  328. package/src/nodes/tsl/TSLBase.js +5 -2
  329. package/src/nodes/tsl/TSLCore.js +460 -159
  330. package/src/nodes/utils/DebugNode.js +2 -1
  331. package/src/nodes/utils/EventNode.js +36 -0
  332. package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
  333. package/src/nodes/utils/JoinNode.js +6 -3
  334. package/src/nodes/utils/LoopNode.js +20 -24
  335. package/src/nodes/utils/MemberNode.js +59 -7
  336. package/src/nodes/utils/PostProcessingUtils.js +28 -1
  337. package/src/nodes/utils/RTTNode.js +13 -3
  338. package/src/nodes/utils/ReflectorNode.js +58 -7
  339. package/src/nodes/utils/SampleNode.js +12 -2
  340. package/src/nodes/utils/SplitNode.js +11 -0
  341. package/src/nodes/utils/Timer.js +0 -47
  342. package/src/objects/BatchedMesh.js +2 -2
  343. package/src/objects/LOD.js +1 -1
  344. package/src/objects/Line.js +2 -1
  345. package/src/objects/LineSegments.js +2 -1
  346. package/src/objects/Skeleton.js +3 -2
  347. package/src/objects/SkinnedMesh.js +3 -1
  348. package/src/objects/Sprite.js +4 -3
  349. package/src/renderers/WebGLRenderer.js +48 -41
  350. package/src/renderers/common/Animation.js +13 -1
  351. package/src/renderers/common/Attributes.js +1 -1
  352. package/src/renderers/common/Backend.js +108 -27
  353. package/src/renderers/common/Background.js +2 -1
  354. package/src/renderers/common/Bindings.js +58 -2
  355. package/src/renderers/common/CanvasTarget.js +341 -0
  356. package/src/renderers/common/ChainMap.js +1 -1
  357. package/src/renderers/common/DataMap.js +1 -1
  358. package/src/renderers/common/Geometries.js +26 -0
  359. package/src/renderers/common/Info.js +4 -2
  360. package/src/renderers/common/InspectorBase.js +146 -0
  361. package/src/renderers/common/Pipelines.js +1 -1
  362. package/src/renderers/common/PostProcessing.js +6 -25
  363. package/src/renderers/common/QuadMesh.js +7 -1
  364. package/src/renderers/common/RenderContext.js +2 -2
  365. package/src/renderers/common/RenderList.js +7 -3
  366. package/src/renderers/common/RenderObject.js +16 -2
  367. package/src/renderers/common/RenderObjects.js +1 -1
  368. package/src/renderers/common/Renderer.js +473 -245
  369. package/src/renderers/common/RendererUtils.js +9 -0
  370. package/src/renderers/common/SampledTexture.js +9 -1
  371. package/src/renderers/common/Sampler.js +50 -12
  372. package/src/renderers/common/StorageTexture.js +9 -1
  373. package/src/renderers/common/Textures.js +121 -45
  374. package/src/renderers/common/TimestampQueryPool.js +65 -3
  375. package/src/renderers/common/UniformsGroup.js +2 -1
  376. package/src/renderers/common/XRManager.js +42 -22
  377. package/src/renderers/common/extras/PMREMGenerator.js +160 -65
  378. package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
  379. package/src/renderers/common/nodes/NodeLibrary.js +9 -7
  380. package/src/renderers/common/nodes/NodeSampler.js +13 -1
  381. package/src/renderers/common/nodes/Nodes.js +38 -16
  382. package/src/renderers/shaders/DFGLUTData.js +64 -0
  383. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
  384. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -1
  385. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
  386. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +52 -18
  387. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
  388. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
  389. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
  390. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
  391. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +7 -15
  392. package/src/renderers/shaders/ShaderLib/depth.glsl.js +1 -1
  393. package/src/renderers/shaders/UniformsLib.js +1 -0
  394. package/src/renderers/shaders/UniformsUtils.js +25 -4
  395. package/src/renderers/webgl/WebGLCapabilities.js +2 -1
  396. package/src/renderers/webgl/WebGLExtensions.js +2 -25
  397. package/src/renderers/webgl/WebGLInfo.js +3 -1
  398. package/src/renderers/webgl/WebGLProgram.js +15 -14
  399. package/src/renderers/webgl/WebGLPrograms.js +2 -1
  400. package/src/renderers/webgl/WebGLShadowMap.js +3 -2
  401. package/src/renderers/webgl/WebGLState.js +15 -14
  402. package/src/renderers/webgl/WebGLTextures.js +19 -14
  403. package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
  404. package/src/renderers/webgl/WebGLUtils.js +3 -2
  405. package/src/renderers/webgl-fallback/WebGLBackend.js +199 -167
  406. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +181 -25
  407. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
  408. package/src/renderers/webgl-fallback/utils/WebGLState.js +7 -6
  409. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +169 -19
  410. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +51 -22
  411. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -2
  412. package/src/renderers/webgpu/WebGPUBackend.js +153 -123
  413. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
  414. package/src/renderers/webgpu/WebGPURenderer.js +3 -2
  415. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +142 -50
  416. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +2 -1
  417. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +5 -3
  418. package/src/renderers/webgpu/utils/WebGPUConstants.js +7 -2
  419. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +53 -34
  420. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +6 -8
  421. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +260 -99
  422. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +32 -9
  423. package/src/renderers/webgpu/utils/WebGPUUtils.js +22 -2
  424. package/src/renderers/webxr/WebXRManager.js +42 -26
  425. package/src/textures/ExternalTexture.js +15 -4
  426. package/src/textures/Source.js +3 -2
  427. package/src/textures/Texture.js +3 -2
  428. package/src/textures/VideoTexture.js +2 -3
  429. package/src/utils.js +67 -3
  430. package/examples/jsm/loaders/RGBMLoader.js +0 -1148
@@ -0,0 +1,91 @@
1
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
2
+ This license is copied below, and is also available with a FAQ at:
3
+ https://openfontlicense.org
4
+
5
+
6
+ -----------------------------------------------------------
7
+ SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
8
+ -----------------------------------------------------------
9
+
10
+ PREAMBLE
11
+ The goals of the Open Font License (OFL) are to stimulate worldwide
12
+ development of collaborative font projects, to support the font creation
13
+ efforts of academic and linguistic communities, and to provide a free and
14
+ open framework in which fonts may be shared and improved in partnership
15
+ with others.
16
+
17
+ The OFL allows the licensed fonts to be used, studied, modified and
18
+ redistributed freely as long as they are not sold by themselves. The
19
+ fonts, including any derivative works, can be bundled, embedded,
20
+ redistributed and/or sold with any software provided that any reserved
21
+ names are not used by derivative works. The fonts and derivatives,
22
+ however, cannot be released under any other type of license. The
23
+ requirement for fonts to remain under this license does not apply
24
+ to any document created using the fonts or their derivatives.
25
+
26
+ DEFINITIONS
27
+ "Font Software" refers to the set of files released by the Copyright
28
+ Holder(s) under this license and clearly marked as such. This may
29
+ include source files, build scripts and documentation.
30
+
31
+ "Reserved Font Name" refers to any names specified as such after the
32
+ copyright statement(s).
33
+
34
+ "Original Version" refers to the collection of Font Software components as
35
+ distributed by the Copyright Holder(s).
36
+
37
+ "Modified Version" refers to any derivative made by adding to, deleting,
38
+ or substituting -- in part or in whole -- any of the components of the
39
+ Original Version, by changing formats or by porting the Font Software to a
40
+ new environment.
41
+
42
+ "Author" refers to any designer, engineer, programmer, technical
43
+ writer or other person who contributed to the Font Software.
44
+
45
+ PERMISSION & CONDITIONS
46
+ Permission is hereby granted, free of charge, to any person obtaining
47
+ a copy of the Font Software, to use, study, copy, merge, embed, modify,
48
+ redistribute, and sell modified and unmodified copies of the Font
49
+ Software, subject to the following conditions:
50
+
51
+ 1) Neither the Font Software nor any of its individual components,
52
+ in Original or Modified Versions, may be sold by itself.
53
+
54
+ 2) Original or Modified Versions of the Font Software may be bundled,
55
+ redistributed and/or sold with any software, provided that each copy
56
+ contains the above copyright notice and this license. These can be
57
+ included either as stand-alone text files, human-readable headers or
58
+ in the appropriate machine-readable metadata fields within text or
59
+ binary files as long as those fields can be easily viewed by the user.
60
+
61
+ 3) No Modified Version of the Font Software may use the Reserved Font
62
+ Name(s) unless explicit written permission is granted by the corresponding
63
+ Copyright Holder. This restriction only applies to the primary font name as
64
+ presented to the users.
65
+
66
+ 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
67
+ Software shall not be used to promote, endorse or advertise any
68
+ Modified Version, except to acknowledge the contribution(s) of the
69
+ Copyright Holder(s) and the Author(s) or with their explicit written
70
+ permission.
71
+
72
+ 5) The Font Software, modified or unmodified, in part or in whole,
73
+ must be distributed entirely under this license, and must not be
74
+ distributed under any other license. The requirement for fonts to
75
+ remain under this license does not apply to any document created
76
+ using the Font Software.
77
+
78
+ TERMINATION
79
+ This license becomes null and void if any of the above conditions are
80
+ not met.
81
+
82
+ DISCLAIMER
83
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
84
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
85
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
86
+ OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
87
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
88
+ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
89
+ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
90
+ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
91
+ OTHER DEALINGS IN THE FONT SOFTWARE.
@@ -89,6 +89,7 @@ export * from './loaders/FBXLoader.js';
89
89
  export * from './loaders/FontLoader.js';
90
90
  export * from './loaders/GCodeLoader.js';
91
91
  export * from './loaders/GLTFLoader.js';
92
+ export * from './loaders/HDRLoader.js';
92
93
  export * from './loaders/HDRCubeTextureLoader.js';
93
94
  export * from './loaders/IESLoader.js';
94
95
  export * from './loaders/KMZLoader.js';
@@ -110,7 +111,6 @@ export * from './loaders/PLYLoader.js';
110
111
  export * from './loaders/PVRLoader.js';
111
112
  export * from './loaders/RGBELoader.js';
112
113
  export * from './loaders/UltraHDRLoader.js';
113
- export * from './loaders/RGBMLoader.js';
114
114
  export * from './loaders/STLLoader.js';
115
115
  export * from './loaders/SVGLoader.js';
116
116
  export * from './loaders/TDSLoader.js';
@@ -26,7 +26,7 @@ const _vector = new Vector3();
26
26
  const _matrix = new Matrix4();
27
27
 
28
28
  /**
29
- * This class solves the Inverse Kinematics Problem with a [CCD Algorithm]{@link https://web.archive.org/web/20221206080850/https://sites.google.com/site/auraliusproject/ccd-algorithm}.
29
+ * This class solves the Inverse Kinematics Problem with a [CCD Algorithm](https://web.archive.org/web/20221206080850/https://sites.google.com/site/auraliusproject/ccd-algorithm).
30
30
  *
31
31
  * `CCDIKSolver` is designed to work with instances of {@link SkinnedMesh}.
32
32
  *
@@ -115,7 +115,7 @@ class ArcballControls extends Controls {
115
115
  * Constructs a new controls instance.
116
116
  *
117
117
  * @param {Camera} camera - The camera to be controlled. The camera must not be a child of another object, unless that object is the scene itself.
118
- * @param {?HTMLDOMElement} [domElement=null] - The HTML element used for event listeners.
118
+ * @param {?HTMLElement} [domElement=null] - The HTML element used for event listeners.
119
119
  * @param {?Scene} [scene=null] The scene rendered by the camera. If not given, gizmos cannot be shown.
120
120
  */
121
121
  constructor( camera, domElement = null, scene = null ) {
@@ -1315,7 +1315,7 @@ class ArcballControls extends Controls {
1315
1315
  *
1316
1316
  * @param {'PAN'|'ROTATE'|'ZOOM'|'FOV'} operation - The operation to be performed ('PAN', 'ROTATE', 'ZOOM', 'FOV').
1317
1317
  * @param {0|1|2|'WHEEL'} mouse - A mouse button (0, 1, 2) or 'WHEEL' for wheel notches.
1318
- * @param {'CTRL'|'SHIFT'|null} [key=null] - The keyboard modifier ('CTRL', 'SHIFT') or null if key is not needed.
1318
+ * @param {?('CTRL'|'SHIFT')} [key=null] - The keyboard modifier ('CTRL', 'SHIFT') or null if key is not needed.
1319
1319
  * @returns {boolean} `true` if the mouse action has been successfully added, `false` otherwise.
1320
1320
  */
1321
1321
  setMouseAction( operation, mouse, key = null ) {
@@ -1396,7 +1396,7 @@ class ArcballControls extends Controls {
1396
1396
  * Remove a mouse action by specifying its mouse/key combination.
1397
1397
  *
1398
1398
  * @param {0|1|2|'WHEEL'} mouse - A mouse button (0, 1, 2) or 'WHEEL' for wheel notches.
1399
- * @param {'CTRL'|'SHIFT'|null} key - The keyboard modifier ('CTRL', 'SHIFT') or null if key is not needed.
1399
+ * @param {?('CTRL'|'SHIFT')} key - The keyboard modifier ('CTRL', 'SHIFT') or null if key is not needed.
1400
1400
  * @returns {boolean} `true` if the operation has been successfully removed, `false` otherwise.
1401
1401
  */
1402
1402
  unsetMouseAction( mouse, key = null ) {
@@ -1421,8 +1421,8 @@ class ArcballControls extends Controls {
1421
1421
  *
1422
1422
  * @private
1423
1423
  * @param {0|1|2|'WHEEL'} mouse - Mouse button index (0, 1, 2) or 'WHEEL' for wheel notches.
1424
- * @param {'CTRL'|'SHIFT'|null} key - Keyboard modifier.
1425
- * @returns {'PAN'|'ROTATE'|'ZOOM'|'FOV'|null} The operation if it has been found, `null` otherwise.
1424
+ * @param {?('CTRL'|'SHIFT')} key - Keyboard modifier.
1425
+ * @returns {?('PAN'|'ROTATE'|'ZOOM'|'FOV')} The operation if it has been found, `null` otherwise.
1426
1426
  */
1427
1427
  getOpFromAction( mouse, key ) {
1428
1428
 
@@ -1463,7 +1463,7 @@ class ArcballControls extends Controls {
1463
1463
  *
1464
1464
  * @private
1465
1465
  * @param {0|1|2} mouse - Mouse button index (0, 1, 2)
1466
- * @param {'CTRL'|'SHIFT'|null} key - Keyboard modifier
1466
+ * @param {?('CTRL'|'SHIFT')} key - Keyboard modifier
1467
1467
  * @returns {?STATE} The FSA state obtained from the operation associated to mouse/keyboard combination.
1468
1468
  */
1469
1469
  getOpStateFromAction( mouse, key ) {
@@ -2509,8 +2509,8 @@ class ArcballControls extends Controls {
2509
2509
  * Sets values in transformation object.
2510
2510
  *
2511
2511
  * @private
2512
- * @param {Matrix4} [camera=null] - Transformation to be applied to the camera.
2513
- * @param {Matrix4} [gizmos=null] - Transformation to be applied to gizmos.
2512
+ * @param {?Matrix4} [camera=null] - Transformation to be applied to the camera.
2513
+ * @param {?Matrix4} [gizmos=null] - Transformation to be applied to gizmos.
2514
2514
  */
2515
2515
  setTransformationMatrices( camera = null, gizmos = null ) {
2516
2516
 
@@ -61,7 +61,7 @@ class DragControls extends Controls {
61
61
  *
62
62
  * @param {Array<Object3D>} objects - An array of draggable 3D objects.
63
63
  * @param {Camera} camera - The camera of the rendered scene.
64
- * @param {?HTMLDOMElement} [domElement=null] - The HTML DOM element used for event listeners.
64
+ * @param {?HTMLElement} [domElement=null] - The HTML DOM element used for event listeners.
65
65
  */
66
66
  constructor( objects, camera, domElement = null ) {
67
67
 
@@ -234,56 +234,6 @@ class DragControls extends Controls {
234
234
 
235
235
  }
236
236
 
237
- getRaycaster() {
238
-
239
- console.warn( 'THREE.DragControls: getRaycaster() has been deprecated. Use controls.raycaster instead.' ); // @deprecated r169
240
-
241
- return this.raycaster;
242
-
243
- }
244
-
245
- setObjects( objects ) {
246
-
247
- console.warn( 'THREE.DragControls: setObjects() has been deprecated. Use controls.objects instead.' ); // @deprecated r169
248
-
249
- this.objects = objects;
250
-
251
- }
252
-
253
- getObjects() {
254
-
255
- console.warn( 'THREE.DragControls: getObjects() has been deprecated. Use controls.objects instead.' ); // @deprecated r169
256
-
257
- return this.objects;
258
-
259
- }
260
-
261
- activate() {
262
-
263
- console.warn( 'THREE.DragControls: activate() has been renamed to connect().' ); // @deprecated r169
264
- this.connect();
265
-
266
- }
267
-
268
- deactivate() {
269
-
270
- console.warn( 'THREE.DragControls: deactivate() has been renamed to disconnect().' ); // @deprecated r169
271
- this.disconnect();
272
-
273
- }
274
-
275
- set mode( value ) {
276
-
277
- console.warn( 'THREE.DragControls: The .mode property has been removed. Define the type of transformation via the .mouseButtons or .touches properties.' ); // @deprecated r169
278
-
279
- }
280
-
281
- get mode() {
282
-
283
- console.warn( 'THREE.DragControls: The .mode property has been removed. Define the type of transformation via the .mouseButtons or .touches properties.' ); // @deprecated r169
284
-
285
- }
286
-
287
237
  }
288
238
 
289
239
  function onPointerMove( event ) {
@@ -305,6 +255,7 @@ function onPointerMove( event ) {
305
255
  if ( raycaster.ray.intersectPlane( _plane, _intersection ) ) {
306
256
 
307
257
  _selected.position.copy( _intersection.sub( _offset ).applyMatrix4( _inverseMatrix ) );
258
+ this.dispatchEvent( { type: 'drag', object: _selected } );
308
259
 
309
260
  }
310
261
 
@@ -313,11 +264,10 @@ function onPointerMove( event ) {
313
264
  _diff.subVectors( _pointer, _previousPointer ).multiplyScalar( this.rotateSpeed );
314
265
  _selected.rotateOnWorldAxis( _up, _diff.x );
315
266
  _selected.rotateOnWorldAxis( _right.normalize(), - _diff.y );
267
+ this.dispatchEvent( { type: 'drag', object: _selected } );
316
268
 
317
269
  }
318
270
 
319
- this.dispatchEvent( { type: 'drag', object: _selected } );
320
-
321
271
  _previousPointer.copy( _pointer );
322
272
 
323
273
  } else {
@@ -414,21 +364,21 @@ function onPointerDown( event ) {
414
364
 
415
365
  _inverseMatrix.copy( _selected.parent.matrixWorld ).invert();
416
366
  _offset.copy( _intersection ).sub( _worldPosition.setFromMatrixPosition( _selected.matrixWorld ) );
367
+ domElement.style.cursor = 'move';
368
+ this.dispatchEvent( { type: 'dragstart', object: _selected } );
417
369
 
418
370
  } else if ( this.state === STATE.ROTATE ) {
419
371
 
420
372
  // the controls only support Y+ up
421
373
  _up.set( 0, 1, 0 ).applyQuaternion( camera.quaternion ).normalize();
422
374
  _right.set( 1, 0, 0 ).applyQuaternion( camera.quaternion ).normalize();
375
+ domElement.style.cursor = 'move';
376
+ this.dispatchEvent( { type: 'dragstart', object: _selected } );
423
377
 
424
378
  }
425
379
 
426
380
  }
427
381
 
428
- domElement.style.cursor = 'move';
429
-
430
- this.dispatchEvent( { type: 'dragstart', object: _selected } );
431
-
432
382
  }
433
383
 
434
384
  _previousPointer.copy( _pointer );
@@ -22,7 +22,7 @@ class FirstPersonControls extends Controls {
22
22
  * Constructs a new controls instance.
23
23
  *
24
24
  * @param {Object3D} object - The object that is managed by the controls.
25
- * @param {?HTMLDOMElement} domElement - The HTML element used for event listeners.
25
+ * @param {?HTMLElement} domElement - The HTML element used for event listeners.
26
26
  */
27
27
  constructor( object, domElement = null ) {
28
28
 
@@ -194,8 +194,8 @@ class FirstPersonControls extends Controls {
194
194
  window.removeEventListener( 'keydown', this._onKeyDown );
195
195
  window.removeEventListener( 'keyup', this._onKeyUp );
196
196
 
197
- this.domElement.removeEventListener( 'pointerdown', this._onPointerMove );
198
- this.domElement.removeEventListener( 'pointermove', this._onPointerDown );
197
+ this.domElement.removeEventListener( 'pointermove', this._onPointerMove );
198
+ this.domElement.removeEventListener( 'pointerdown', this._onPointerDown );
199
199
  this.domElement.removeEventListener( 'pointerup', this._onPointerUp );
200
200
  this.domElement.removeEventListener( 'contextmenu', this._onContextMenu );
201
201
 
@@ -29,7 +29,7 @@ class FlyControls extends Controls {
29
29
  * Constructs a new controls instance.
30
30
  *
31
31
  * @param {Object3D} object - The object that is managed by the controls.
32
- * @param {?HTMLDOMElement} domElement - The HTML element used for event listeners.
32
+ * @param {?HTMLElement} domElement - The HTML element used for event listeners.
33
33
  */
34
34
  constructor( object, domElement = null ) {
35
35
 
@@ -91,7 +91,7 @@ class OrbitControls extends Controls {
91
91
  * Constructs a new controls instance.
92
92
  *
93
93
  * @param {Object3D} object - The object that is managed by the controls.
94
- * @param {?HTMLDOMElement} domElement - The HTML element used for event listeners.
94
+ * @param {?HTMLElement} domElement - The HTML element used for event listeners.
95
95
  */
96
96
  constructor( object, domElement = null ) {
97
97
 
@@ -541,7 +541,7 @@ class OrbitControls extends Controls {
541
541
  * Adds key event listeners to the given DOM element.
542
542
  * `window` is a recommended argument for using this method.
543
543
  *
544
- * @param {HTMLDOMElement} domElement - The DOM element
544
+ * @param {HTMLElement} domElement - The DOM element
545
545
  */
546
546
  listenToKeyEvents( domElement ) {
547
547
 
@@ -35,7 +35,7 @@ const _MOUSE_SENSITIVITY = 0.002;
35
35
  const _PI_2 = Math.PI / 2;
36
36
 
37
37
  /**
38
- * The implementation of this class is based on the [Pointer Lock API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API}.
38
+ * The implementation of this class is based on the [Pointer Lock API](https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API).
39
39
  * `PointerLockControls` is a perfect choice for first person 3D games.
40
40
  *
41
41
  * ```js
@@ -64,7 +64,7 @@ class PointerLockControls extends Controls {
64
64
  * Constructs a new controls instance.
65
65
  *
66
66
  * @param {Camera} camera - The camera that is managed by the controls.
67
- * @param {?HTMLDOMElement} domElement - The HTML element used for event listeners.
67
+ * @param {?HTMLElement} domElement - The HTML element used for event listeners.
68
68
  */
69
69
  constructor( camera, domElement = null ) {
70
70
 
@@ -141,14 +141,6 @@ class PointerLockControls extends Controls {
141
141
 
142
142
  }
143
143
 
144
- getObject() {
145
-
146
- console.warn( 'THREE.PointerLockControls: getObject() has been deprecated. Use controls.object instead.' ); // @deprecated r169
147
-
148
- return this.object;
149
-
150
- }
151
-
152
144
  /**
153
145
  * Returns the look direction of the camera.
154
146
  *
@@ -59,7 +59,7 @@ class TrackballControls extends Controls {
59
59
  * Constructs a new controls instance.
60
60
  *
61
61
  * @param {Object3D} object - The object that is managed by the controls.
62
- * @param {?HTMLDOMElement} domElement - The HTML element used for event listeners.
62
+ * @param {?HTMLElement} domElement - The HTML element used for event listeners.
63
63
  */
64
64
  constructor( object, domElement = null ) {
65
65
 
@@ -80,7 +80,7 @@ class TransformControls extends Controls {
80
80
  * Constructs a new controls instance.
81
81
  *
82
82
  * @param {Camera} camera - The camera of the rendered scene.
83
- * @param {?HTMLDOMElement} domElement - The HTML element used for event listeners.
83
+ * @param {?HTMLElement} domElement - The HTML element used for event listeners.
84
84
  */
85
85
  constructor( camera, domElement = null ) {
86
86
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * A class that creates an ASCII effect.
3
3
  *
4
- * The ASCII generation is based on [jsascii]{@link https://github.com/hassadee/jsascii/blob/master/jsascii.js}.
4
+ * The ASCII generation is based on [jsascii](https://github.com/hassadee/jsascii/blob/master/jsascii.js).
5
5
  *
6
6
  * @three_import import { AsciiEffect } from 'three/addons/effects/AsciiEffect.js';
7
7
  */
@@ -18,7 +18,7 @@ class AsciiEffect {
18
18
 
19
19
  // ' .,:;=|iI+hHOE#`$';
20
20
  // darker bolder character set from https://github.com/saw/Canvas-ASCII-Art/
21
- // ' .\'`^",:;Il!i~+_-?][}{1)(|/tfjrxnuvczXYUJCLQ0OZmwqpdbkhao*#MW&8%B@$'.split('');
21
+ // ' .\'`^",:;Il!i~+_-?][}{1)(|/tfjrxnuvczXYUJCLQ0OZmwqpdbkhao*#MW&8%B@$'
22
22
 
23
23
  // Some ASCII settings
24
24
 
@@ -218,6 +218,8 @@ class AsciiEffect {
218
218
  // Coloring loop starts now
219
219
  let strChars = '';
220
220
 
221
+ const maxIdx = aCharList.length - 1;
222
+
221
223
  // console.time('rendering');
222
224
 
223
225
  for ( let y = 0; y < iHeight; y += 2 ) {
@@ -230,13 +232,11 @@ class AsciiEffect {
230
232
  const iGreen = oImgData[ iOffset + 1 ];
231
233
  const iBlue = oImgData[ iOffset + 2 ];
232
234
  const iAlpha = oImgData[ iOffset + 3 ];
233
- let iCharIdx;
234
-
235
- let fBrightness;
236
235
 
237
- fBrightness = ( 0.3 * iRed + 0.59 * iGreen + 0.11 * iBlue ) / 255;
236
+ let fBrightness = ( 0.3 * iRed + 0.59 * iGreen + 0.11 * iBlue ) / 255;
238
237
  // fBrightness = (0.3*iRed + 0.5*iGreen + 0.3*iBlue) / 255;
239
238
 
239
+
240
240
  if ( iAlpha == 0 ) {
241
241
 
242
242
  // should calculate alpha instead, but quick hack :)
@@ -245,11 +245,11 @@ class AsciiEffect {
245
245
 
246
246
  }
247
247
 
248
- iCharIdx = Math.floor( ( 1 - fBrightness ) * ( aCharList.length - 1 ) );
248
+ let iCharIdx = Math.round( ( 1 - fBrightness ) * maxIdx );
249
249
 
250
250
  if ( bInvert ) {
251
251
 
252
- iCharIdx = aCharList.length - iCharIdx - 1;
252
+ iCharIdx = maxIdx - iCharIdx;
253
253
 
254
254
  }
255
255
 
@@ -5,7 +5,7 @@ import { Color, ColorManagement, SRGBColorSpace } from 'three';
5
5
  /**
6
6
  * An exporter to compress geometry with the Draco library.
7
7
  *
8
- * [Draco]{@link https://google.github.io/draco/} is an open source library for compressing and
8
+ * [Draco](https://google.github.io/draco/) is an open source library for compressing and
9
9
  * decompressing 3D meshes and point clouds. Compressed geometry can be significantly smaller,
10
10
  * at the cost of additional decoding time on the client device.
11
11
  *
@@ -13,7 +13,7 @@ import { Color, ColorManagement, SRGBColorSpace } from 'three';
13
13
  * normals, colors, and other attributes. Draco files *do not* contain materials,
14
14
  * textures, animation, or node hierarchies – to use these features, embed Draco geometry
15
15
  * inside of a glTF file. A normal glTF file can be converted to a Draco-compressed glTF file
16
- * using [glTF-Pipeline]{@link https://github.com/AnalyticalGraphicsInc/gltf-pipeline}.
16
+ * using [glTF-Pipeline](https://github.com/AnalyticalGraphicsInc/gltf-pipeline).
17
17
  *
18
18
  * ```js
19
19
  * const exporter = new DRACOExporter();
@@ -15,7 +15,7 @@ const ZIP_COMPRESSION = 3;
15
15
  /**
16
16
  * An exporter for EXR.
17
17
  *
18
- * EXR ( Extended Dynamic Range) is an [open format specification]{@link https://github.com/AcademySoftwareFoundation/openexr}
18
+ * EXR ( Extended Dynamic Range) is an [open format specification](https://github.com/AcademySoftwareFoundation/openexr)
19
19
  * for professional-grade image storage format of the motion picture industry. The purpose of
20
20
  * format is to accurately and efficiently represent high-dynamic-range scene-linear image data
21
21
  * and associated metadata. The library is widely used in host application software where accuracy
@@ -65,13 +65,13 @@ const KHR_mesh_quantization_ExtraAttrTypes = {
65
65
  /**
66
66
  * An exporter for `glTF` 2.0.
67
67
  *
68
- * glTF (GL Transmission Format) is an [open format specification]{@link https://github.com/KhronosGroup/glTF/tree/master/specification/2.0}
68
+ * glTF (GL Transmission Format) is an [open format specification](https://github.com/KhronosGroup/glTF/tree/master/specification/2.0)
69
69
  * for efficient delivery and loading of 3D content. Assets may be provided either in JSON (.gltf)
70
70
  * or binary (.glb) format. External files store textures (.jpg, .png) and additional binary
71
71
  * data (.bin). A glTF asset may deliver one or more scenes, including meshes, materials,
72
72
  * textures, skins, skeletons, morph targets, animations, lights, and/or cameras.
73
73
  *
74
- * GLTFExporter supports the [glTF 2.0 extensions]{@link https://github.com/KhronosGroup/glTF/tree/master/extensions/}:
74
+ * GLTFExporter supports the [glTF 2.0 extensions](https://github.com/KhronosGroup/glTF/tree/master/extensions/):
75
75
  *
76
76
  * - KHR_lights_punctual
77
77
  * - KHR_materials_clearcoat
@@ -91,7 +91,7 @@ const KHR_mesh_quantization_ExtraAttrTypes = {
91
91
  *
92
92
  * The following glTF 2.0 extension is supported by an external user plugin:
93
93
  *
94
- * - [KHR_materials_variants]{@link https://github.com/takahirox/three-gltf-extensions}
94
+ * - [KHR_materials_variants](https://github.com/takahirox/three-gltf-extensions)
95
95
  *
96
96
  * ```js
97
97
  * const exporter = new GLTFExporter();
@@ -543,32 +543,36 @@ function getCanvas() {
543
543
 
544
544
  function getToBlobPromise( canvas, mimeType ) {
545
545
 
546
- if ( canvas.toBlob !== undefined ) {
546
+ if ( typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas ) {
547
547
 
548
- return new Promise( ( resolve ) => canvas.toBlob( resolve, mimeType ) );
548
+ let quality;
549
549
 
550
- }
550
+ // Blink's implementation of convertToBlob seems to default to a quality level of 100%
551
+ // Use the Blink default quality levels of toBlob instead so that file sizes are comparable.
552
+ if ( mimeType === 'image/jpeg' ) {
551
553
 
552
- let quality;
554
+ quality = 0.92;
553
555
 
554
- // Blink's implementation of convertToBlob seems to default to a quality level of 100%
555
- // Use the Blink default quality levels of toBlob instead so that file sizes are comparable.
556
- if ( mimeType === 'image/jpeg' ) {
556
+ } else if ( mimeType === 'image/webp' ) {
557
557
 
558
- quality = 0.92;
558
+ quality = 0.8;
559
559
 
560
- } else if ( mimeType === 'image/webp' ) {
560
+ }
561
561
 
562
- quality = 0.8;
562
+ return canvas.convertToBlob( {
563
563
 
564
- }
564
+ type: mimeType,
565
+ quality: quality
565
566
 
566
- return canvas.convertToBlob( {
567
+ } );
567
568
 
568
- type: mimeType,
569
- quality: quality
569
+ } else {
570
570
 
571
- } );
571
+ // HTMLCanvasElement code path
572
+
573
+ return new Promise( ( resolve ) => canvas.toBlob( resolve, mimeType ) );
574
+
575
+ }
572
576
 
573
577
  }
574
578
 
@@ -757,7 +761,7 @@ class GLTFWriter {
757
761
  /**
758
762
  * Serializes a userData.
759
763
  *
760
- * @param {THREE.Object3D|THREE.Material} object
764
+ * @param {THREE.Object3D|THREE.Material|THREE.BufferGeometry|THREE.AnimationClip} object
761
765
  * @param {Object} objectDef
762
766
  */
763
767
  serializeUserData( object, objectDef ) {
@@ -1555,7 +1559,7 @@ class GLTFWriter {
1555
1559
  /**
1556
1560
  * Process material
1557
1561
  * @param {THREE.Material} material Material to process
1558
- * @return {Promise<number|null>} Index of the processed material in the "materials" array
1562
+ * @return {Promise<?number>} Index of the processed material in the "materials" array
1559
1563
  */
1560
1564
  async processMaterialAsync( material ) {
1561
1565
 
@@ -1731,7 +1735,7 @@ class GLTFWriter {
1731
1735
  /**
1732
1736
  * Process mesh
1733
1737
  * @param {THREE.Mesh} mesh Mesh to process
1734
- * @return {Promise<number|null>} Index of the processed mesh in the "meshes" array
1738
+ * @return {Promise<?number>} Index of the processed mesh in the "meshes" array
1735
1739
  */
1736
1740
  async processMeshAsync( mesh ) {
1737
1741
 
@@ -2185,7 +2189,7 @@ class GLTFWriter {
2185
2189
  *
2186
2190
  * @param {THREE.AnimationClip} clip
2187
2191
  * @param {THREE.Object3D} root
2188
- * @return {number|null}
2192
+ * @return {?number}
2189
2193
  */
2190
2194
  processAnimation( clip, root ) {
2191
2195
 
@@ -2279,11 +2283,15 @@ class GLTFWriter {
2279
2283
 
2280
2284
  }
2281
2285
 
2282
- json.animations.push( {
2286
+ const animationDef = {
2283
2287
  name: clip.name || 'clip_' + json.animations.length,
2284
2288
  samplers: samplers,
2285
2289
  channels: channels
2286
- } );
2290
+ };
2291
+
2292
+ this.serializeUserData( clip, animationDef );
2293
+
2294
+ json.animations.push( animationDef );
2287
2295
 
2288
2296
  return json.animations.length - 1;
2289
2297
 
@@ -2291,7 +2299,7 @@ class GLTFWriter {
2291
2299
 
2292
2300
  /**
2293
2301
  * @param {THREE.Object3D} object
2294
- * @return {number|null}
2302
+ * @return {?number}
2295
2303
  */
2296
2304
  processSkin( object ) {
2297
2305
 
@@ -17,8 +17,8 @@ import {
17
17
  } from 'three';
18
18
 
19
19
  import {
20
+ createDefaultContainer,
20
21
  write,
21
- KTX2Container,
22
22
  KHR_DF_CHANNEL_RGBSDA_ALPHA,
23
23
  KHR_DF_CHANNEL_RGBSDA_BLUE,
24
24
  KHR_DF_CHANNEL_RGBSDA_GREEN,
@@ -191,7 +191,7 @@ export class KTX2Exporter {
191
191
 
192
192
  const array = texture.image.data;
193
193
  const channelCount = getChannelCount( texture );
194
- const container = new KTX2Container();
194
+ const container = createDefaultContainer();
195
195
 
196
196
  container.vkFormat = VK_FORMAT_MAP[ texture.format ][ texture.type ][ texture.colorSpace ];
197
197
  container.typeSize = array.BYTES_PER_ELEMENT;
@@ -257,6 +257,8 @@ export class KTX2Exporter {
257
257
 
258
258
  //
259
259
 
260
+ container.levelCount = 1;
261
+
260
262
  container.levels = [ {
261
263
 
262
264
  levelData: new Uint8Array( array.buffer, array.byteOffset, array.byteLength ),
@@ -31,7 +31,7 @@ class PLYExporter {
31
31
  * @param {Object3D} object - The 3D object to export.
32
32
  * @param {PLYExporter~OnDone} onDone - A callback function that is executed when the export has finished.
33
33
  * @param {PLYExporter~Options} options - The export options.
34
- * @return {?string|ArrayBuffer} The exported PLY.
34
+ * @return {?(string|ArrayBuffer)} The exported PLY.
35
35
  */
36
36
  parse( object, onDone, options = {} ) {
37
37