super-three 0.181.0 → 0.185.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 (693) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +3 -4
  3. package/build/three.cjs +21332 -19201
  4. package/build/three.core.js +20908 -19853
  5. package/build/three.core.min.js +2 -2
  6. package/build/three.module.js +1947 -862
  7. package/build/three.module.min.js +2 -2
  8. package/build/three.tsl.js +37 -16
  9. package/build/three.tsl.min.js +2 -2
  10. package/build/three.webgpu.js +33628 -25197
  11. package/build/three.webgpu.min.js +2 -2
  12. package/build/three.webgpu.nodes.js +33394 -25000
  13. package/build/three.webgpu.nodes.min.js +2 -2
  14. package/examples/jsm/Addons.js +14 -3
  15. package/examples/jsm/animation/CCDIKSolver.js +7 -3
  16. package/examples/jsm/controls/ArcballControls.js +13 -6
  17. package/examples/jsm/controls/DragControls.js +2 -2
  18. package/examples/jsm/controls/FirstPersonControls.js +127 -86
  19. package/examples/jsm/controls/FlyControls.js +4 -0
  20. package/examples/jsm/controls/MapControls.js +55 -1
  21. package/examples/jsm/controls/OrbitControls.js +111 -8
  22. package/examples/jsm/controls/TrackballControls.js +8 -8
  23. package/examples/jsm/controls/TransformControls.js +102 -17
  24. package/examples/jsm/csm/CSM.js +2 -1
  25. package/examples/jsm/csm/CSMFrustum.js +31 -6
  26. package/examples/jsm/csm/CSMShadowNode.js +10 -3
  27. package/examples/jsm/effects/AnaglyphEffect.js +102 -7
  28. package/examples/jsm/effects/AsciiEffect.js +14 -1
  29. package/examples/jsm/environments/ColorEnvironment.js +59 -0
  30. package/examples/jsm/environments/RoomEnvironment.js +3 -0
  31. package/examples/jsm/exporters/DRACOExporter.js +27 -6
  32. package/examples/jsm/exporters/EXRExporter.js +1 -1
  33. package/examples/jsm/exporters/GLTFExporter.js +266 -21
  34. package/examples/jsm/exporters/PLYExporter.js +286 -73
  35. package/examples/jsm/exporters/USDZExporter.js +353 -99
  36. package/examples/jsm/generators/CityGenerator.js +346 -0
  37. package/examples/jsm/generators/ForestGenerator.js +347 -0
  38. package/examples/jsm/generators/TerrainGenerator.js +504 -0
  39. package/examples/jsm/generators/TreeGenerator.js +377 -0
  40. package/examples/jsm/generators/city/SidewalkGenerator.js +253 -0
  41. package/examples/jsm/generators/city/SkyscraperGenerator.js +1357 -0
  42. package/examples/jsm/geometries/DecalGeometry.js +1 -1
  43. package/examples/jsm/geometries/LoftGeometry.js +355 -0
  44. package/examples/jsm/geometries/TextGeometry.js +18 -0
  45. package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
  46. package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
  47. package/examples/jsm/helpers/LightProbeHelper.js +5 -4
  48. package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
  49. package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
  50. package/examples/jsm/helpers/ViewHelper.js +83 -14
  51. package/examples/jsm/inspector/Extension.js +13 -0
  52. package/examples/jsm/inspector/Inspector.js +244 -91
  53. package/examples/jsm/inspector/RendererInspector.js +165 -39
  54. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
  55. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
  56. package/examples/jsm/inspector/tabs/Console.js +241 -25
  57. package/examples/jsm/inspector/tabs/Memory.js +136 -0
  58. package/examples/jsm/inspector/tabs/Parameters.js +115 -7
  59. package/examples/jsm/inspector/tabs/Performance.js +24 -9
  60. package/examples/jsm/inspector/tabs/Settings.js +306 -0
  61. package/examples/jsm/inspector/tabs/Timeline.js +1696 -0
  62. package/examples/jsm/inspector/tabs/Viewer.js +723 -9
  63. package/examples/jsm/inspector/ui/Graph.js +162 -25
  64. package/examples/jsm/inspector/ui/Item.js +92 -13
  65. package/examples/jsm/inspector/ui/List.js +2 -2
  66. package/examples/jsm/inspector/ui/Profiler.js +1991 -44
  67. package/examples/jsm/inspector/ui/Style.js +1943 -543
  68. package/examples/jsm/inspector/ui/Tab.js +226 -5
  69. package/examples/jsm/inspector/ui/Values.js +126 -8
  70. package/examples/jsm/inspector/ui/utils.js +143 -10
  71. package/examples/jsm/interaction/InteractionManager.js +226 -0
  72. package/examples/jsm/libs/basis/README.md +0 -1
  73. package/examples/jsm/libs/demuxer_mp4.js +3 -3
  74. package/examples/jsm/libs/draco/README.md +0 -1
  75. package/examples/jsm/libs/meshopt_clusterizer.module.js +421 -0
  76. package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
  77. package/examples/jsm/libs/meshopt_simplifier.module.js +627 -0
  78. package/examples/jsm/libs/mikktspace.module.js +34 -9
  79. package/examples/jsm/lighting/ClusteredLighting.js +55 -0
  80. package/examples/jsm/lighting/DynamicLighting.js +82 -0
  81. package/examples/jsm/lighting/LightProbeGrid.js +681 -0
  82. package/examples/jsm/lines/LineMaterial.js +45 -16
  83. package/examples/jsm/lines/LineSegments2.js +8 -0
  84. package/examples/jsm/lines/webgpu/LineSegments2.js +8 -0
  85. package/examples/jsm/loaders/3DMLoader.js +6 -5
  86. package/examples/jsm/loaders/3MFLoader.js +2 -2
  87. package/examples/jsm/loaders/AMFLoader.js +2 -2
  88. package/examples/jsm/loaders/ColladaLoader.js +24 -4026
  89. package/examples/jsm/loaders/DRACOLoader.js +51 -18
  90. package/examples/jsm/loaders/EXRLoader.js +701 -90
  91. package/examples/jsm/loaders/FBXLoader.js +235 -37
  92. package/examples/jsm/loaders/GCodeLoader.js +34 -8
  93. package/examples/jsm/loaders/GLTFLoader.js +146 -178
  94. package/examples/jsm/loaders/HDRLoader.js +7 -30
  95. package/examples/jsm/loaders/KMZLoader.js +5 -5
  96. package/examples/jsm/loaders/KTX2Loader.js +58 -17
  97. package/examples/jsm/loaders/LDrawLoader.js +49 -58
  98. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  99. package/examples/jsm/loaders/LUTCubeLoader.js +2 -2
  100. package/examples/jsm/loaders/LWOLoader.js +11 -39
  101. package/examples/jsm/loaders/LottieLoader.js +1 -1
  102. package/examples/jsm/loaders/MaterialXLoader.js +31 -9
  103. package/examples/jsm/loaders/NRRDLoader.js +5 -5
  104. package/examples/jsm/loaders/PCDLoader.js +11 -9
  105. package/examples/jsm/loaders/PLYLoader.js +218 -55
  106. package/examples/jsm/loaders/SVGLoader.js +549 -497
  107. package/examples/jsm/loaders/TDSLoader.js +0 -2
  108. package/examples/jsm/loaders/TGALoader.js +0 -2
  109. package/examples/jsm/loaders/TTFLoader.js +1 -1
  110. package/examples/jsm/loaders/USDLoader.js +127 -43
  111. package/examples/jsm/loaders/UltraHDRLoader.js +285 -160
  112. package/examples/jsm/loaders/VOXLoader.js +660 -117
  113. package/examples/jsm/loaders/VRMLLoader.js +80 -3
  114. package/examples/jsm/loaders/VTKLoader.js +42 -25
  115. package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
  116. package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
  117. package/examples/jsm/loaders/usd/USDAParser.js +504 -344
  118. package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
  119. package/examples/jsm/loaders/usd/USDComposer.js +4627 -0
  120. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
  121. package/examples/jsm/materials/WoodNodeMaterial.js +11 -11
  122. package/examples/jsm/math/Octree.js +131 -1
  123. package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
  124. package/examples/jsm/misc/RollerCoaster.js +42 -4
  125. package/examples/jsm/misc/TileCreasedNormalsPlugin.js +270 -0
  126. package/examples/jsm/misc/Volume.js +2 -3
  127. package/examples/jsm/misc/VolumeSlice.js +0 -1
  128. package/examples/jsm/modifiers/TessellateModifier.js +1 -1
  129. package/examples/jsm/objects/GroundedSkybox.js +1 -1
  130. package/examples/jsm/objects/LensflareMesh.js +1 -1
  131. package/examples/jsm/objects/Reflector.js +72 -25
  132. package/examples/jsm/objects/Sky.js +90 -6
  133. package/examples/jsm/objects/SkyMesh.js +150 -16
  134. package/examples/jsm/objects/Water.js +4 -3
  135. package/examples/jsm/objects/Water2.js +5 -3
  136. package/examples/jsm/objects/Water2Mesh.js +1 -1
  137. package/examples/jsm/objects/WaterMesh.js +5 -7
  138. package/examples/jsm/physics/AmmoPhysics.js +27 -15
  139. package/examples/jsm/physics/JoltPhysics.js +10 -6
  140. package/examples/jsm/physics/RapierPhysics.js +36 -7
  141. package/examples/jsm/postprocessing/EffectComposer.js +7 -5
  142. package/examples/jsm/postprocessing/OutputPass.js +9 -0
  143. package/examples/jsm/postprocessing/RenderPass.js +10 -0
  144. package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
  145. package/examples/jsm/postprocessing/UnrealBloomPass.js +48 -18
  146. package/examples/jsm/renderers/CSS3DRenderer.js +1 -1
  147. package/examples/jsm/renderers/Projector.js +246 -28
  148. package/examples/jsm/renderers/SVGRenderer.js +174 -60
  149. package/examples/jsm/shaders/GTAOShader.js +19 -6
  150. package/examples/jsm/shaders/HalftoneShader.js +12 -1
  151. package/examples/jsm/shaders/PoissonDenoiseShader.js +6 -2
  152. package/examples/jsm/shaders/SAOShader.js +17 -4
  153. package/examples/jsm/shaders/SSAOShader.js +11 -1
  154. package/examples/jsm/shaders/SSRShader.js +6 -5
  155. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +2 -4
  156. package/examples/jsm/shaders/VignetteShader.js +1 -1
  157. package/examples/jsm/shaders/VolumeShader.js +31 -44
  158. package/examples/jsm/transpiler/AST.js +44 -0
  159. package/examples/jsm/transpiler/GLSLDecoder.js +65 -8
  160. package/examples/jsm/transpiler/Linker.js +1 -1
  161. package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
  162. package/examples/jsm/transpiler/TSLEncoder.js +46 -3
  163. package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
  164. package/examples/jsm/transpiler/WGSLEncoder.js +27 -0
  165. package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
  166. package/examples/jsm/tsl/display/AfterImageNode.js +11 -1
  167. package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
  168. package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
  169. package/examples/jsm/tsl/display/BloomNode.js +75 -25
  170. package/examples/jsm/tsl/display/CRT.js +150 -0
  171. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +3 -36
  172. package/examples/jsm/tsl/display/DenoiseNode.js +1 -1
  173. package/examples/jsm/tsl/display/DepthOfFieldNode.js +3 -3
  174. package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
  175. package/examples/jsm/tsl/display/FSR1Node.js +477 -0
  176. package/examples/jsm/tsl/display/FXAANode.js +13 -14
  177. package/examples/jsm/tsl/display/GTAONode.js +40 -17
  178. package/examples/jsm/tsl/display/GaussianBlurNode.js +21 -2
  179. package/examples/jsm/tsl/display/GodraysNode.js +615 -0
  180. package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +560 -0
  181. package/examples/jsm/tsl/display/LensflareNode.js +1 -1
  182. package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
  183. package/examples/jsm/tsl/display/OutlineNode.js +69 -19
  184. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
  185. package/examples/jsm/tsl/display/PixelationPassNode.js +9 -8
  186. package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
  187. package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +912 -0
  188. package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
  189. package/examples/jsm/tsl/display/SMAANode.js +2 -2
  190. package/examples/jsm/tsl/display/SSAAPassNode.js +15 -27
  191. package/examples/jsm/tsl/display/SSGINode.js +96 -62
  192. package/examples/jsm/tsl/display/SSRNode.js +831 -134
  193. package/examples/jsm/tsl/display/SSSNode.js +8 -6
  194. package/examples/jsm/tsl/display/Shape.js +29 -0
  195. package/examples/jsm/tsl/display/SharpenNode.js +283 -0
  196. package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
  197. package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
  198. package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
  199. package/examples/jsm/tsl/display/TAAUNode.js +835 -0
  200. package/examples/jsm/tsl/display/TRAANode.js +315 -126
  201. package/examples/jsm/tsl/display/TemporalReprojectNode.js +1023 -0
  202. package/examples/jsm/tsl/display/TransitionNode.js +1 -1
  203. package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
  204. package/examples/jsm/tsl/display/radialBlur.js +68 -0
  205. package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +622 -0
  206. package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
  207. package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
  208. package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
  209. package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
  210. package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
  211. package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
  212. package/examples/jsm/tsl/math/Bayer.js +53 -3
  213. package/examples/jsm/tsl/math/curlNoise.js +107 -0
  214. package/examples/jsm/tsl/shadows/TileShadowNode.js +1 -1
  215. package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +3 -3
  216. package/examples/jsm/tsl/utils/GroundedSkybox.js +62 -0
  217. package/examples/jsm/tsl/utils/RNoise.js +51 -0
  218. package/examples/jsm/tsl/utils/SpecularHelpers.js +325 -0
  219. package/examples/jsm/utils/BufferGeometryUtils.js +128 -62
  220. package/examples/jsm/utils/ColorUtils.js +76 -0
  221. package/examples/jsm/utils/GeometryCompressionUtils.js +1 -1
  222. package/examples/jsm/utils/LDrawUtils.js +1 -1
  223. package/examples/jsm/utils/SceneOptimizer.js +1 -1
  224. package/examples/jsm/utils/ShadowMapViewer.js +24 -10
  225. package/examples/jsm/utils/ShadowMapViewerGPU.js +1 -1
  226. package/examples/jsm/utils/SkeletonUtils.js +14 -8
  227. package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
  228. package/examples/jsm/webxr/ARButton.js +1 -1
  229. package/examples/jsm/webxr/WebGLXRFallback.js +89 -0
  230. package/examples/jsm/webxr/XRControllerModelFactory.js +2 -2
  231. package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
  232. package/examples/jsm/webxr/XRHandModelFactory.js +2 -1
  233. package/package.json +28 -34
  234. package/src/Three.Core.js +3 -1
  235. package/src/Three.TSL.js +35 -14
  236. package/src/Three.WebGPU.Nodes.js +5 -0
  237. package/src/Three.WebGPU.js +13 -0
  238. package/src/Three.js +1 -0
  239. package/src/animation/AnimationAction.js +18 -4
  240. package/src/animation/AnimationClip.js +0 -139
  241. package/src/animation/AnimationMixer.js +6 -0
  242. package/src/animation/AnimationUtils.js +1 -12
  243. package/src/animation/KeyframeTrack.js +47 -8
  244. package/src/animation/PropertyBinding.js +2 -2
  245. package/src/animation/PropertyMixer.js +4 -4
  246. package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
  247. package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
  248. package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
  249. package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
  250. package/src/animation/tracks/StringKeyframeTrack.js +1 -1
  251. package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
  252. package/src/audio/Audio.js +1 -1
  253. package/src/audio/AudioContext.js +2 -2
  254. package/src/audio/AudioListener.js +5 -3
  255. package/src/cameras/Camera.js +34 -4
  256. package/src/cameras/CubeCamera.js +20 -0
  257. package/src/cameras/StereoCamera.js +5 -2
  258. package/src/constants.js +90 -5
  259. package/src/core/BufferAttribute.js +13 -1
  260. package/src/core/BufferGeometry.js +43 -9
  261. package/src/core/Clock.js +7 -0
  262. package/src/core/Object3D.js +69 -11
  263. package/src/core/Raycaster.js +3 -3
  264. package/src/core/RenderTarget.js +19 -6
  265. package/src/extras/PMREMGenerator.js +13 -22
  266. package/src/extras/TextureUtils.js +6 -2
  267. package/src/extras/core/ShapePath.js +149 -160
  268. package/src/extras/curves/CatmullRomCurve3.js +3 -2
  269. package/src/geometries/ExtrudeGeometry.js +2 -2
  270. package/src/geometries/PolyhedronGeometry.js +1 -1
  271. package/src/geometries/SphereGeometry.js +8 -3
  272. package/src/geometries/TorusGeometry.js +8 -3
  273. package/src/helpers/CameraHelper.js +3 -0
  274. package/src/helpers/DirectionalLightHelper.js +6 -1
  275. package/src/helpers/HemisphereLightHelper.js +5 -0
  276. package/src/helpers/PointLightHelper.js +3 -25
  277. package/src/helpers/SpotLightHelper.js +4 -1
  278. package/src/lights/DirectionalLight.js +13 -0
  279. package/src/lights/HemisphereLight.js +10 -0
  280. package/src/lights/Light.js +1 -11
  281. package/src/lights/LightProbe.js +0 -15
  282. package/src/lights/LightShadow.js +15 -6
  283. package/src/lights/PointLight.js +15 -0
  284. package/src/lights/PointLightShadow.js +0 -86
  285. package/src/lights/SpotLight.js +22 -1
  286. package/src/lights/webgpu/IESSpotLight.js +2 -1
  287. package/src/loaders/AudioLoader.js +11 -1
  288. package/src/loaders/Cache.js +28 -0
  289. package/src/loaders/DataTextureLoader.js +75 -42
  290. package/src/loaders/FileLoader.js +2 -3
  291. package/src/loaders/ImageBitmapLoader.js +12 -9
  292. package/src/loaders/Loader.js +6 -0
  293. package/src/loaders/LoadingManager.js +5 -0
  294. package/src/loaders/MaterialLoader.js +37 -266
  295. package/src/loaders/ObjectLoader.js +48 -6
  296. package/src/loaders/nodes/NodeLoader.js +2 -2
  297. package/src/loaders/nodes/NodeObjectLoader.js +18 -0
  298. package/src/materials/LineBasicMaterial.js +4 -0
  299. package/src/materials/Material.js +198 -1
  300. package/src/materials/MeshBasicMaterial.js +24 -0
  301. package/src/materials/MeshDepthMaterial.js +10 -0
  302. package/src/materials/MeshDistanceMaterial.js +10 -0
  303. package/src/materials/MeshLambertMaterial.js +49 -1
  304. package/src/materials/MeshMatcapMaterial.js +25 -1
  305. package/src/materials/MeshNormalMaterial.js +9 -1
  306. package/src/materials/MeshPhongMaterial.js +49 -1
  307. package/src/materials/MeshPhysicalMaterial.js +38 -0
  308. package/src/materials/MeshStandardMaterial.js +42 -1
  309. package/src/materials/MeshToonMaterial.js +35 -2
  310. package/src/materials/PointsMaterial.js +7 -0
  311. package/src/materials/ShaderMaterial.js +106 -1
  312. package/src/materials/SpriteMaterial.js +7 -0
  313. package/src/materials/nodes/Line2NodeMaterial.js +380 -297
  314. package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
  315. package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
  316. package/src/materials/nodes/MeshPhongNodeMaterial.js +0 -9
  317. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +3 -30
  318. package/src/materials/nodes/MeshSSSNodeMaterial.js +0 -13
  319. package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -15
  320. package/src/materials/nodes/NodeMaterial.js +153 -89
  321. package/src/materials/nodes/SpriteNodeMaterial.js +0 -10
  322. package/src/materials/nodes/manager/NodeMaterialObserver.js +234 -100
  323. package/src/math/Box3.js +5 -0
  324. package/src/math/FrustumArray.js +103 -133
  325. package/src/math/Interpolant.js +1 -1
  326. package/src/math/Line3.js +6 -5
  327. package/src/math/MathUtils.js +12 -12
  328. package/src/math/Matrix2.js +13 -9
  329. package/src/math/Matrix3.js +24 -9
  330. package/src/math/Matrix4.js +112 -74
  331. package/src/math/Plane.js +4 -3
  332. package/src/math/Quaternion.js +3 -29
  333. package/src/math/Sphere.js +1 -1
  334. package/src/math/Triangle.js +1 -1
  335. package/src/math/Vector2.js +13 -9
  336. package/src/math/Vector3.js +17 -15
  337. package/src/math/Vector4.js +15 -11
  338. package/src/math/interpolants/BezierInterpolant.js +106 -0
  339. package/src/nodes/Nodes.js +86 -71
  340. package/src/nodes/TSL.js +15 -13
  341. package/src/nodes/accessors/Arrays.js +5 -5
  342. package/src/nodes/accessors/Batch.js +108 -0
  343. package/src/nodes/accessors/Bitangent.js +7 -7
  344. package/src/nodes/accessors/BufferAttributeNode.js +120 -17
  345. package/src/nodes/accessors/BufferNode.js +29 -2
  346. package/src/nodes/accessors/Camera.js +149 -28
  347. package/src/nodes/accessors/ClippingNode.js +5 -5
  348. package/src/nodes/accessors/CubeTextureNode.js +27 -2
  349. package/src/nodes/accessors/Instance.js +264 -0
  350. package/src/nodes/accessors/MaterialNode.js +27 -3
  351. package/src/nodes/accessors/MaterialProperties.js +6 -8
  352. package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
  353. package/src/nodes/accessors/ModelNode.js +1 -1
  354. package/src/nodes/accessors/{MorphNode.js → Morph.js} +99 -112
  355. package/src/nodes/accessors/Normal.js +24 -24
  356. package/src/nodes/accessors/Object3DNode.js +1 -1
  357. package/src/nodes/accessors/Position.js +39 -3
  358. package/src/nodes/accessors/ReferenceBaseNode.js +6 -6
  359. package/src/nodes/accessors/ReferenceNode.js +9 -8
  360. package/src/nodes/accessors/ReflectVector.js +3 -3
  361. package/src/nodes/accessors/RendererReferenceNode.js +1 -2
  362. package/src/nodes/accessors/SceneProperties.js +47 -0
  363. package/src/nodes/accessors/Skinning.js +263 -0
  364. package/src/nodes/accessors/StorageBufferNode.js +16 -27
  365. package/src/nodes/accessors/StorageTexture3DNode.js +100 -0
  366. package/src/nodes/accessors/StorageTextureNode.js +74 -11
  367. package/src/nodes/accessors/Tangent.js +8 -18
  368. package/src/nodes/accessors/Texture3DNode.js +32 -35
  369. package/src/nodes/accessors/TextureNode.js +124 -25
  370. package/src/nodes/accessors/UniformArrayNode.js +6 -4
  371. package/src/nodes/accessors/UserDataNode.js +1 -2
  372. package/src/nodes/accessors/VertexColorNode.js +1 -2
  373. package/src/nodes/code/FunctionCallNode.js +1 -1
  374. package/src/nodes/code/FunctionNode.js +4 -19
  375. package/src/nodes/core/ArrayNode.js +21 -2
  376. package/src/nodes/core/AssignNode.js +3 -3
  377. package/src/nodes/core/AttributeNode.js +3 -3
  378. package/src/nodes/core/BypassNode.js +1 -1
  379. package/src/nodes/core/ContextNode.js +104 -5
  380. package/src/nodes/core/IndexNode.js +2 -1
  381. package/src/nodes/core/InputNode.js +1 -1
  382. package/src/nodes/core/InspectorNode.js +1 -1
  383. package/src/nodes/core/IsolateNode.js +1 -1
  384. package/src/nodes/core/MRTNode.js +55 -4
  385. package/src/nodes/core/Node.js +151 -17
  386. package/src/nodes/core/NodeBuilder.js +479 -101
  387. package/src/nodes/core/NodeError.js +28 -0
  388. package/src/nodes/core/NodeFrame.js +12 -4
  389. package/src/nodes/core/NodeUtils.js +20 -18
  390. package/src/nodes/core/OutputStructNode.js +13 -11
  391. package/src/nodes/core/OverrideContextNode.js +153 -0
  392. package/src/nodes/core/ParameterNode.js +4 -4
  393. package/src/nodes/core/PropertyNode.js +66 -4
  394. package/src/nodes/core/StackNode.js +91 -20
  395. package/src/nodes/core/StackTrace.js +139 -0
  396. package/src/nodes/core/StructNode.js +20 -8
  397. package/src/nodes/core/StructTypeNode.js +17 -23
  398. package/src/nodes/core/SubBuildNode.js +2 -2
  399. package/src/nodes/core/UniformGroupNode.js +36 -6
  400. package/src/nodes/core/UniformNode.js +21 -5
  401. package/src/nodes/core/VarNode.js +56 -23
  402. package/src/nodes/core/VaryingNode.js +14 -21
  403. package/src/nodes/display/BlendModes.js +1 -105
  404. package/src/nodes/display/BumpMapNode.js +6 -1
  405. package/src/nodes/display/ColorAdjustment.js +27 -9
  406. package/src/nodes/display/ColorSpaceNode.js +3 -3
  407. package/src/nodes/display/FrontFacingNode.js +38 -9
  408. package/src/nodes/display/NormalMapNode.js +41 -6
  409. package/src/nodes/display/PassNode.js +157 -56
  410. package/src/nodes/display/PremultiplyAlphaFunctions.js +39 -0
  411. package/src/nodes/display/RenderOutputNode.js +19 -10
  412. package/src/nodes/display/ScreenNode.js +4 -2
  413. package/src/nodes/display/ToneMappingNode.js +1 -1
  414. package/src/nodes/display/ToonOutlinePassNode.js +2 -2
  415. package/src/nodes/display/ViewportDepthNode.js +52 -4
  416. package/src/nodes/display/ViewportDepthTextureNode.js +11 -15
  417. package/src/nodes/display/ViewportTextureNode.js +39 -11
  418. package/src/nodes/fog/Fog.js +18 -35
  419. package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +3 -3
  420. package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
  421. package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  422. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
  423. package/src/nodes/functions/PhysicalLightingModel.js +126 -45
  424. package/src/nodes/functions/VolumetricLightingModel.js +40 -7
  425. package/src/nodes/geometry/RangeNode.js +5 -3
  426. package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
  427. package/src/nodes/gpgpu/BarrierNode.js +9 -0
  428. package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -3
  429. package/src/nodes/gpgpu/ComputeNode.js +74 -48
  430. package/src/nodes/gpgpu/SubgroupFunctionNode.js +2 -2
  431. package/src/nodes/gpgpu/WorkgroupInfoNode.js +5 -5
  432. package/src/nodes/lighting/AnalyticLightNode.js +53 -0
  433. package/src/nodes/lighting/EnvironmentNode.js +30 -5
  434. package/src/nodes/lighting/IESSpotLightNode.js +40 -2
  435. package/src/nodes/lighting/LightingContextNode.js +10 -2
  436. package/src/nodes/lighting/LightsNode.js +97 -65
  437. package/src/nodes/lighting/PointShadowNode.js +166 -148
  438. package/src/nodes/lighting/ShadowFilterNode.js +74 -117
  439. package/src/nodes/lighting/ShadowNode.js +149 -51
  440. package/src/nodes/materialx/lib/mx_noise.js +2 -2
  441. package/src/nodes/math/BitcastNode.js +1 -1
  442. package/src/nodes/math/BitcountNode.js +433 -0
  443. package/src/nodes/math/ConditionalNode.js +6 -6
  444. package/src/nodes/math/MathNode.js +115 -52
  445. package/src/nodes/math/OperatorNode.js +24 -23
  446. package/src/nodes/math/PackFloatNode.js +98 -0
  447. package/src/nodes/math/UnpackFloatNode.js +96 -0
  448. package/src/nodes/parsers/GLSLNodeFunction.js +1 -1
  449. package/src/nodes/pmrem/PMREMNode.js +34 -3
  450. package/src/nodes/pmrem/PMREMUtils.js +9 -15
  451. package/src/nodes/tsl/TSLBase.js +1 -1
  452. package/src/nodes/tsl/TSLCore.js +99 -33
  453. package/src/nodes/utils/ArrayElementNode.js +14 -1
  454. package/src/nodes/utils/ConvertNode.js +1 -1
  455. package/src/nodes/utils/DebugNode.js +12 -12
  456. package/src/nodes/utils/EquirectUV.js +30 -5
  457. package/src/nodes/utils/EventNode.js +31 -2
  458. package/src/nodes/utils/FlipNode.js +1 -1
  459. package/src/nodes/utils/FunctionOverloadingNode.js +2 -2
  460. package/src/nodes/utils/JoinNode.js +3 -3
  461. package/src/nodes/utils/LoopNode.js +1 -1
  462. package/src/nodes/utils/MemberNode.js +2 -2
  463. package/src/nodes/utils/Packing.js +48 -5
  464. package/src/nodes/utils/PostProcessingUtils.js +33 -1
  465. package/src/nodes/utils/RTTNode.js +41 -25
  466. package/src/nodes/utils/ReflectorNode.js +4 -4
  467. package/src/nodes/utils/Remap.js +48 -0
  468. package/src/nodes/utils/RotateNode.js +1 -1
  469. package/src/nodes/utils/SampleNode.js +1 -1
  470. package/src/nodes/utils/SetNode.js +1 -1
  471. package/src/nodes/utils/SplitNode.js +1 -1
  472. package/src/nodes/utils/SpriteSheetUV.js +35 -0
  473. package/src/nodes/utils/StorageArrayElementNode.js +1 -1
  474. package/src/nodes/utils/UVUtils.js +28 -0
  475. package/src/objects/BatchedMesh.js +66 -30
  476. package/src/objects/InstancedMesh.js +19 -3
  477. package/src/objects/Line.js +1 -1
  478. package/src/objects/Mesh.js +1 -1
  479. package/src/objects/Points.js +1 -1
  480. package/src/objects/SkinnedMesh.js +26 -9
  481. package/src/renderers/WebGLRenderer.js +344 -156
  482. package/src/renderers/common/Animation.js +3 -3
  483. package/src/renderers/common/Attributes.js +15 -1
  484. package/src/renderers/common/Backend.js +78 -13
  485. package/src/renderers/common/Background.js +26 -13
  486. package/src/renderers/common/BindGroup.js +1 -16
  487. package/src/renderers/common/Binding.js +11 -0
  488. package/src/renderers/common/Bindings.js +141 -57
  489. package/src/renderers/common/BlendMode.js +143 -0
  490. package/src/renderers/common/Buffer.js +49 -0
  491. package/src/renderers/common/BundleGroup.js +1 -1
  492. package/src/renderers/common/ChainMap.js +30 -6
  493. package/src/renderers/common/ClippingContext.js +10 -2
  494. package/src/renderers/common/ComputePipeline.js +1 -1
  495. package/src/renderers/common/CubeRenderTarget.js +51 -7
  496. package/src/renderers/common/Geometries.js +29 -3
  497. package/src/renderers/common/Info.js +374 -4
  498. package/src/renderers/common/InspectorBase.js +6 -1
  499. package/src/renderers/common/Lighting.js +51 -19
  500. package/src/renderers/common/Pipelines.js +40 -7
  501. package/src/renderers/common/PostProcessing.js +8 -206
  502. package/src/renderers/common/ReadbackBuffer.js +78 -0
  503. package/src/renderers/common/RenderBundle.js +3 -1
  504. package/src/renderers/common/RenderBundles.js +7 -3
  505. package/src/renderers/common/RenderContext.js +16 -0
  506. package/src/renderers/common/RenderContexts.js +33 -49
  507. package/src/renderers/common/RenderList.js +41 -4
  508. package/src/renderers/common/RenderLists.js +2 -1
  509. package/src/renderers/common/RenderObject.js +88 -16
  510. package/src/renderers/common/RenderObjectPipeline.js +40 -0
  511. package/src/renderers/common/RenderObjects.js +21 -5
  512. package/src/renderers/common/RenderPipeline.js +232 -17
  513. package/src/renderers/common/Renderer.js +700 -163
  514. package/src/renderers/common/Sampler.js +16 -48
  515. package/src/renderers/common/StorageBuffer.js +13 -1
  516. package/src/renderers/common/Textures.js +121 -9
  517. package/src/renderers/common/TimestampQueryPool.js +6 -4
  518. package/src/renderers/common/Uniform.js +8 -0
  519. package/src/renderers/common/UniformsGroup.js +84 -1
  520. package/src/renderers/common/XRManager.js +377 -51
  521. package/src/renderers/common/extras/PMREMGenerator.js +40 -61
  522. package/src/renderers/common/nodes/NodeBuilderState.js +10 -2
  523. package/src/renderers/common/nodes/NodeLibrary.js +4 -4
  524. package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +298 -106
  525. package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
  526. package/src/renderers/common/nodes/NodeUniformBuffer.js +65 -0
  527. package/src/renderers/shaders/DFGLUTData.js +19 -34
  528. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
  529. package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
  530. package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
  531. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
  532. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
  533. package/src/renderers/shaders/ShaderChunk/common.glsl.js +13 -4
  534. package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +0 -6
  535. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
  536. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +9 -13
  537. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +2 -2
  538. package/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl.js +1 -1
  539. package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
  540. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -2
  541. package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
  542. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
  543. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +3 -1
  544. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
  545. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +112 -53
  546. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -2
  547. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
  548. package/src/renderers/shaders/ShaderChunk/normal_vertex.glsl.js +6 -0
  549. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
  550. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
  551. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +225 -186
  552. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
  553. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
  554. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +2 -2
  555. package/src/renderers/shaders/ShaderChunk.js +5 -3
  556. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
  557. package/src/renderers/shaders/ShaderLib/depth.glsl.js +3 -0
  558. package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +2 -3
  559. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
  560. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
  561. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
  562. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
  563. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
  564. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
  565. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
  566. package/src/renderers/shaders/ShaderLib.js +7 -6
  567. package/src/renderers/shaders/UniformsLib.js +7 -5
  568. package/src/renderers/shaders/UniformsUtils.js +27 -5
  569. package/src/renderers/webgl/WebGLAnimation.js +2 -1
  570. package/src/renderers/webgl/WebGLBackground.js +15 -15
  571. package/src/renderers/webgl/WebGLBindingStates.js +99 -27
  572. package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
  573. package/src/renderers/webgl/WebGLCapabilities.js +9 -4
  574. package/src/renderers/webgl/WebGLEnvironments.js +228 -0
  575. package/src/renderers/webgl/WebGLGeometries.js +10 -7
  576. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
  577. package/src/renderers/webgl/WebGLLights.js +18 -1
  578. package/src/renderers/webgl/WebGLMaterials.js +24 -13
  579. package/src/renderers/webgl/WebGLObjects.js +3 -1
  580. package/src/renderers/webgl/WebGLOutput.js +271 -0
  581. package/src/renderers/webgl/WebGLProgram.js +54 -113
  582. package/src/renderers/webgl/WebGLPrograms.js +74 -55
  583. package/src/renderers/webgl/WebGLRenderLists.js +24 -1
  584. package/src/renderers/webgl/WebGLRenderStates.js +13 -2
  585. package/src/renderers/webgl/WebGLShaderCache.js +5 -11
  586. package/src/renderers/webgl/WebGLShadowMap.js +188 -24
  587. package/src/renderers/webgl/WebGLState.js +75 -37
  588. package/src/renderers/webgl/WebGLTextures.js +230 -56
  589. package/src/renderers/webgl/WebGLUniforms.js +40 -3
  590. package/src/renderers/webgl/WebGLUniformsGroups.js +82 -35
  591. package/src/renderers/webgl/WebGLUtils.js +6 -2
  592. package/src/renderers/webgl-fallback/WebGLBackend.js +322 -92
  593. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
  594. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +295 -66
  595. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
  596. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
  597. package/src/renderers/webgl-fallback/utils/WebGLState.js +223 -6
  598. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +118 -73
  599. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +10 -10
  600. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +9 -3
  601. package/src/renderers/webgpu/WebGPUBackend.js +733 -302
  602. package/src/renderers/webgpu/WebGPURenderer.js +2 -1
  603. package/src/renderers/webgpu/descriptors/GPUBindGroupDescriptor.js +48 -0
  604. package/src/renderers/webgpu/descriptors/GPUBufferDescriptor.js +57 -0
  605. package/src/renderers/webgpu/descriptors/GPUCommandEncoderDescriptor.js +30 -0
  606. package/src/renderers/webgpu/descriptors/GPUComputePassDescriptor.js +38 -0
  607. package/src/renderers/webgpu/descriptors/GPUComputePipelineDescriptor.js +48 -0
  608. package/src/renderers/webgpu/descriptors/GPUCopyExternalImageDestInfo.js +47 -0
  609. package/src/renderers/webgpu/descriptors/GPUCopyExternalImageSourceInfo.js +50 -0
  610. package/src/renderers/webgpu/descriptors/GPUExtent3D.js +51 -0
  611. package/src/renderers/webgpu/descriptors/GPUPipelineLayoutDescriptor.js +39 -0
  612. package/src/renderers/webgpu/descriptors/GPUQuerySetDescriptor.js +47 -0
  613. package/src/renderers/webgpu/descriptors/GPURenderBundleEncoderDescriptor.js +74 -0
  614. package/src/renderers/webgpu/descriptors/GPURenderPassColorAttachment.js +72 -0
  615. package/src/renderers/webgpu/descriptors/GPURenderPassDepthStencilAttachment.js +99 -0
  616. package/src/renderers/webgpu/descriptors/GPURenderPassDescriptor.js +72 -0
  617. package/src/renderers/webgpu/descriptors/GPURenderPassTimestampWrites.js +49 -0
  618. package/src/renderers/webgpu/descriptors/GPURenderPipelineDescriptor.js +130 -0
  619. package/src/renderers/webgpu/descriptors/GPUSamplerDescriptor.js +119 -0
  620. package/src/renderers/webgpu/descriptors/GPUShaderModuleDescriptor.js +46 -0
  621. package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferInfo.js +57 -0
  622. package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferLayout.js +48 -0
  623. package/src/renderers/webgpu/descriptors/GPUTexelCopyTextureInfo.js +61 -0
  624. package/src/renderers/webgpu/descriptors/GPUTextureDescriptor.js +99 -0
  625. package/src/renderers/webgpu/descriptors/GPUTextureViewDescriptor.js +108 -0
  626. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +0 -1
  627. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +526 -93
  628. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +1 -1
  629. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +194 -61
  630. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +395 -234
  631. package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
  632. package/src/renderers/webgpu/utils/WebGPUConstants.js +10 -0
  633. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +224 -91
  634. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +228 -213
  635. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +428 -175
  636. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +40 -25
  637. package/src/renderers/webgpu/utils/WebGPUUtils.js +70 -13
  638. package/src/renderers/webxr/WebXRController.js +12 -0
  639. package/src/renderers/webxr/WebXRManager.js +4 -2
  640. package/src/textures/CubeDepthTexture.js +76 -0
  641. package/src/textures/DepthTexture.js +1 -1
  642. package/src/textures/ExternalTexture.js +0 -3
  643. package/src/textures/HTMLTexture.js +74 -0
  644. package/src/textures/Source.js +2 -2
  645. package/src/textures/Texture.js +16 -5
  646. package/src/utils.js +280 -3
  647. package/examples/fonts/LICENSE +0 -13
  648. package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  649. package/examples/fonts/MPLUSRounded1c/OFL.txt +0 -91
  650. package/examples/fonts/README.md +0 -11
  651. package/examples/fonts/droid/NOTICE +0 -190
  652. package/examples/fonts/droid/README.txt +0 -18
  653. package/examples/fonts/droid/droid_sans_bold.typeface.json +0 -1
  654. package/examples/fonts/droid/droid_sans_mono_regular.typeface.json +0 -1
  655. package/examples/fonts/droid/droid_sans_regular.typeface.json +0 -1
  656. package/examples/fonts/droid/droid_serif_bold.typeface.json +0 -1
  657. package/examples/fonts/droid/droid_serif_regular.typeface.json +0 -1
  658. package/examples/fonts/gentilis_bold.typeface.json +0 -1
  659. package/examples/fonts/gentilis_regular.typeface.json +0 -1
  660. package/examples/fonts/helvetiker_bold.typeface.json +0 -1
  661. package/examples/fonts/helvetiker_regular.typeface.json +0 -1
  662. package/examples/fonts/optimer_bold.typeface.json +0 -1
  663. package/examples/fonts/optimer_regular.typeface.json +0 -1
  664. package/examples/fonts/ttf/README.md +0 -9
  665. package/examples/fonts/ttf/kenpixel.ttf +0 -0
  666. package/examples/jsm/libs/ammo.wasm.js +0 -822
  667. package/examples/jsm/libs/ammo.wasm.wasm +0 -0
  668. package/examples/jsm/libs/draco/draco_encoder.js +0 -33
  669. package/examples/jsm/libs/draco/gltf/draco_encoder.js +0 -33
  670. package/examples/jsm/libs/lottie_canvas.module.js +0 -14849
  671. package/examples/jsm/libs/opentype.module.js +0 -14506
  672. package/examples/jsm/libs/rhino3dm/rhino3dm.js +0 -21
  673. package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +0 -16
  674. package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  675. package/examples/jsm/lighting/TiledLighting.js +0 -42
  676. package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
  677. package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
  678. package/examples/jsm/shaders/GodRaysShader.js +0 -333
  679. package/examples/jsm/tsl/display/AnamorphicNode.js +0 -282
  680. package/examples/jsm/tsl/lighting/TiledLightsNode.js +0 -442
  681. package/src/nodes/accessors/BatchNode.js +0 -163
  682. package/src/nodes/accessors/InstanceNode.js +0 -244
  683. package/src/nodes/accessors/InstancedMeshNode.js +0 -50
  684. package/src/nodes/accessors/SceneNode.js +0 -145
  685. package/src/nodes/accessors/SkinningNode.js +0 -327
  686. package/src/nodes/code/ScriptableNode.js +0 -726
  687. package/src/nodes/code/ScriptableValueNode.js +0 -253
  688. package/src/nodes/display/PosterizeNode.js +0 -65
  689. package/src/nodes/functions/BSDF/DFGApprox.js +0 -71
  690. package/src/nodes/utils/RemapNode.js +0 -125
  691. package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
  692. package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
  693. package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
@@ -100,7 +100,7 @@ class HDRLoader extends DataTextureLoader {
100
100
 
101
101
  s += chunk; len += chunk.length;
102
102
  p += chunkSize;
103
- chunk += String.fromCharCode.apply( null, new Uint16Array( buffer.subarray( p, p + chunkSize ) ) );
103
+ chunk = String.fromCharCode.apply( null, new Uint16Array( buffer.subarray( p, p + chunkSize ) ) );
104
104
 
105
105
  }
106
106
 
@@ -424,7 +424,6 @@ class HDRLoader extends DataTextureLoader {
424
424
  default:
425
425
 
426
426
  throw new Error( 'THREE.HDRLoader: Unsupported type: ' + this.type );
427
- break;
428
427
 
429
428
  }
430
429
 
@@ -434,7 +433,12 @@ class HDRLoader extends DataTextureLoader {
434
433
  header: rgbe_header_info.string,
435
434
  gamma: rgbe_header_info.gamma,
436
435
  exposure: rgbe_header_info.exposure,
437
- type: type
436
+ type: type,
437
+ colorSpace: LinearSRGBColorSpace,
438
+ minFilter: LinearFilter,
439
+ magFilter: LinearFilter,
440
+ generateMipmaps: false,
441
+ flipY: true
438
442
  };
439
443
 
440
444
  }
@@ -452,33 +456,6 @@ class HDRLoader extends DataTextureLoader {
452
456
 
453
457
  }
454
458
 
455
- load( url, onLoad, onProgress, onError ) {
456
-
457
- function onLoadCallback( texture, texData ) {
458
-
459
- switch ( texture.type ) {
460
-
461
- case FloatType:
462
- case HalfFloatType:
463
-
464
- texture.colorSpace = LinearSRGBColorSpace;
465
- texture.minFilter = LinearFilter;
466
- texture.magFilter = LinearFilter;
467
- texture.generateMipmaps = false;
468
- texture.flipY = true;
469
-
470
- break;
471
-
472
- }
473
-
474
- if ( onLoad ) onLoad( texture, texData );
475
-
476
- }
477
-
478
- return super.load( url, onLoadCallback, onProgress, onError );
479
-
480
- }
481
-
482
459
  }
483
460
 
484
461
  export { HDRLoader };
@@ -5,7 +5,7 @@ import {
5
5
  LoadingManager
6
6
  } from 'three';
7
7
  import { ColladaLoader } from '../loaders/ColladaLoader.js';
8
- import * as fflate from '../libs/fflate.module.js';
8
+ import { unzipSync } from '../libs/fflate.module.js';
9
9
 
10
10
  /**
11
11
  * A loader for the KMZ format.
@@ -119,18 +119,18 @@ class KMZLoader extends Loader {
119
119
 
120
120
  //
121
121
 
122
- const zip = fflate.unzipSync( new Uint8Array( data ) );
122
+ const zip = unzipSync( new Uint8Array( data ) );
123
123
 
124
124
  if ( zip[ 'doc.kml' ] ) {
125
125
 
126
- const xml = new DOMParser().parseFromString( fflate.strFromU8( zip[ 'doc.kml' ] ), 'application/xml' );
126
+ const xml = new DOMParser().parseFromString( new TextDecoder().decode( zip[ 'doc.kml' ] ), 'application/xml' );
127
127
 
128
128
  const model = xml.querySelector( 'Placemark Model Link href' );
129
129
 
130
130
  if ( model ) {
131
131
 
132
132
  const loader = new ColladaLoader( manager );
133
- return loader.parse( fflate.strFromU8( zip[ model.textContent ] ) );
133
+ return loader.parse( new TextDecoder().decode( zip[ model.textContent ] ) );
134
134
 
135
135
  }
136
136
 
@@ -145,7 +145,7 @@ class KMZLoader extends Loader {
145
145
  if ( extension === 'dae' ) {
146
146
 
147
147
  const loader = new ColladaLoader( manager );
148
- return loader.parse( fflate.strFromU8( zip[ path ] ) );
148
+ return loader.parse( new TextDecoder().decode( zip[ path ] ) );
149
149
 
150
150
  }
151
151
 
@@ -18,8 +18,11 @@ import {
18
18
  RGBA_ASTC_4x4_Format,
19
19
  RGBA_ASTC_6x6_Format,
20
20
  RGBA_BPTC_Format,
21
- RGBA_S3TC_DXT3_Format,
22
21
  RGBA_ETC2_EAC_Format,
22
+ R11_EAC_Format,
23
+ SIGNED_R11_EAC_Format,
24
+ RG11_EAC_Format,
25
+ SIGNED_RG11_EAC_Format,
23
26
  RGBA_PVRTC_4BPPV1_Format,
24
27
  RGBA_PVRTC_2BPPV1_Format,
25
28
  RGBA_S3TC_DXT1_Format,
@@ -39,7 +42,8 @@ import {
39
42
  SRGBColorSpace,
40
43
  UnsignedByteType,
41
44
  UnsignedInt5999Type,
42
- UnsignedInt101111Type
45
+ UnsignedInt101111Type,
46
+ UnsignedShortType
43
47
  } from 'three';
44
48
  import { WorkerPool } from '../utils/WorkerPool.js';
45
49
  import {
@@ -71,11 +75,16 @@ import {
71
75
  VK_FORMAT_BC7_UNORM_BLOCK,
72
76
  VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
73
77
  VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,
78
+ VK_FORMAT_EAC_R11_UNORM_BLOCK,
79
+ VK_FORMAT_EAC_R11_SNORM_BLOCK,
80
+ VK_FORMAT_EAC_R11G11_UNORM_BLOCK,
81
+ VK_FORMAT_EAC_R11G11_SNORM_BLOCK,
74
82
  VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG,
75
83
  VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG,
76
84
  VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG,
77
85
  VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG,
78
86
  VK_FORMAT_R16G16B16A16_SFLOAT,
87
+ VK_FORMAT_R16G16B16A16_UNORM,
79
88
  VK_FORMAT_R16G16_SFLOAT,
80
89
  VK_FORMAT_R16_SFLOAT,
81
90
  VK_FORMAT_R32G32B32A32_SFLOAT,
@@ -94,6 +103,9 @@ import {
94
103
  import { ZSTDDecoder } from '../libs/zstddec.module.js';
95
104
  import { DisplayP3ColorSpace, LinearDisplayP3ColorSpace } from '../math/ColorSpaces.js';
96
105
 
106
+ const WASM_BIN_URL = new URL( '../libs/basis/basis_transcoder.wasm', import.meta.url ).toString();
107
+ const WASM_JS_URL = new URL( '../libs/basis/basis_transcoder.js', import.meta.url ).toString();
108
+
97
109
  const _taskCache = new WeakMap();
98
110
 
99
111
  let _activeLoaders = 0;
@@ -160,9 +172,9 @@ class KTX2Loader extends Loader {
160
172
  }
161
173
 
162
174
  /**
163
- * Sets the transcoder path.
175
+ * Sets the transcoder path to optionally set the decoder load path from a CDN.
164
176
  *
165
- * The WASM transcoder and JS wrapper are available from the `examples/jsm/libs/basis` directory.
177
+ * By default The WASM transcoder and JS wrapper are loaded from the `examples/jsm/libs/basis` directory.
166
178
  *
167
179
  * @param {string} path - The transcoder path to set.
168
180
  * @return {KTX2Loader} A reference to this loader.
@@ -244,16 +256,18 @@ class KTX2Loader extends Loader {
244
256
  };
245
257
 
246
258
  if ( typeof navigator !== 'undefined' &&
247
- navigator.platform.indexOf( 'Linux' ) >= 0 && navigator.userAgent.indexOf( 'Firefox' ) >= 0 &&
259
+ typeof navigator.platform !== 'undefined' && typeof navigator.userAgent !== 'undefined' &&
260
+ navigator.platform.indexOf( 'Linux' ) >= 0 && navigator.userAgent.indexOf( 'Android' ) < 0 &&
248
261
  this.workerConfig.astcSupported && this.workerConfig.etc2Supported &&
249
262
  this.workerConfig.bptcSupported && this.workerConfig.dxtSupported ) {
250
263
 
251
- // On Linux, Mesa drivers for AMD and Intel GPUs expose ETC2 and ASTC even though the hardware doesn't support these.
264
+ // On Linux, Mesa drivers for AMD and Intel GPUs expose ETC1,ETC2 and ASTC even though the hardware doesn't support these.
252
265
  // Using these extensions will result in expensive software decompression on the main thread inside the driver, causing performance issues.
253
- // When using ANGLE (e.g. via Chrome), these extensions are not exposed except for some specific Intel GPU models - however, Firefox doesn't perform this filtering.
266
+ // In general, browsers should not expose extensions for emulated formats, but Chrome and Firefox currently do so on Linux.
254
267
  // Since a granular filter is a little too fragile and we can transcode into other GPU formats, disable formats that are likely to be emulated.
255
268
 
256
269
  this.workerConfig.astcSupported = false;
270
+ this.workerConfig.etc1Supported = false;
257
271
  this.workerConfig.etc2Supported = false;
258
272
 
259
273
  }
@@ -270,18 +284,30 @@ class KTX2Loader extends Loader {
270
284
 
271
285
  if ( ! this.transcoderPending ) {
272
286
 
273
- // Load transcoder wrapper.
274
287
  const jsLoader = new FileLoader( this.manager );
275
- jsLoader.setPath( this.transcoderPath );
276
288
  jsLoader.setWithCredentials( this.withCredentials );
277
- const jsContent = jsLoader.loadAsync( 'basis_transcoder.js' );
278
289
 
279
- // Load transcoder WASM binary.
280
290
  const binaryLoader = new FileLoader( this.manager );
281
- binaryLoader.setPath( this.transcoderPath );
282
- binaryLoader.setResponseType( 'arraybuffer' );
283
291
  binaryLoader.setWithCredentials( this.withCredentials );
284
- const binaryContent = binaryLoader.loadAsync( 'basis_transcoder.wasm' );
292
+ binaryLoader.setResponseType( 'arraybuffer' );
293
+
294
+ let jsContent, binaryContent;
295
+ if ( this.transcoderPath === '' ) {
296
+
297
+ jsContent = jsLoader.loadAsync( WASM_JS_URL );
298
+ binaryContent = binaryLoader.loadAsync( WASM_BIN_URL );
299
+
300
+ } else {
301
+
302
+ // Load transcoder wrapper.
303
+ jsLoader.setPath( this.transcoderPath );
304
+ jsContent = jsLoader.loadAsync( 'basis_transcoder.js' );
305
+
306
+ // Load transcoder WASM binary.
307
+ binaryLoader.setPath( this.transcoderPath );
308
+ binaryContent = binaryLoader.loadAsync( 'basis_transcoder.wasm' );
309
+
310
+ }
285
311
 
286
312
  this.transcoderPending = Promise.all( [ jsContent, binaryContent ] )
287
313
  .then( ( [ jsContent, binaryContent ] ) => {
@@ -946,6 +972,8 @@ KTX2Loader.BasisWorker = function () {
946
972
 
947
973
  const UNCOMPRESSED_FORMATS = new Set( [ RGBAFormat, RGBFormat, RGFormat, RedFormat ] );
948
974
 
975
+ const NORMALIZED_VK_FORMATS = new Set( [ VK_FORMAT_R16G16B16A16_UNORM ] );
976
+
949
977
  const FORMAT_MAP = {
950
978
 
951
979
  [ VK_FORMAT_R32G32B32A32_SFLOAT ]: RGBAFormat,
@@ -956,6 +984,8 @@ const FORMAT_MAP = {
956
984
  [ VK_FORMAT_R16G16_SFLOAT ]: RGFormat,
957
985
  [ VK_FORMAT_R16_SFLOAT ]: RedFormat,
958
986
 
987
+ [ VK_FORMAT_R16G16B16A16_UNORM ]: RGBAFormat,
988
+
959
989
  [ VK_FORMAT_R8G8B8A8_SRGB ]: RGBAFormat,
960
990
  [ VK_FORMAT_R8G8B8A8_UNORM ]: RGBAFormat,
961
991
  [ VK_FORMAT_R8G8_SRGB ]: RGFormat,
@@ -968,6 +998,10 @@ const FORMAT_MAP = {
968
998
 
969
999
  [ VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK ]: RGBA_ETC2_EAC_Format,
970
1000
  [ VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK ]: RGB_ETC2_Format,
1001
+ [ VK_FORMAT_EAC_R11_UNORM_BLOCK ]: R11_EAC_Format,
1002
+ [ VK_FORMAT_EAC_R11_SNORM_BLOCK ]: SIGNED_R11_EAC_Format,
1003
+ [ VK_FORMAT_EAC_R11G11_UNORM_BLOCK ]: RG11_EAC_Format,
1004
+ [ VK_FORMAT_EAC_R11G11_SNORM_BLOCK ]: SIGNED_RG11_EAC_Format,
971
1005
 
972
1006
  [ VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT ]: RGBA_ASTC_4x4_Format,
973
1007
  [ VK_FORMAT_ASTC_4x4_SRGB_BLOCK ]: RGBA_ASTC_4x4_Format,
@@ -981,8 +1015,8 @@ const FORMAT_MAP = {
981
1015
  [ VK_FORMAT_BC1_RGB_SRGB_BLOCK ]: RGB_S3TC_DXT1_Format,
982
1016
  [ VK_FORMAT_BC1_RGB_UNORM_BLOCK ]: RGB_S3TC_DXT1_Format,
983
1017
 
984
- [ VK_FORMAT_BC3_SRGB_BLOCK ]: RGBA_S3TC_DXT3_Format,
985
- [ VK_FORMAT_BC3_UNORM_BLOCK ]: RGBA_S3TC_DXT3_Format,
1018
+ [ VK_FORMAT_BC3_SRGB_BLOCK ]: RGBA_S3TC_DXT5_Format,
1019
+ [ VK_FORMAT_BC3_UNORM_BLOCK ]: RGBA_S3TC_DXT5_Format,
986
1020
 
987
1021
  [ VK_FORMAT_BC4_SNORM_BLOCK ]: SIGNED_RED_RGTC1_Format,
988
1022
  [ VK_FORMAT_BC4_UNORM_BLOCK ]: RED_RGTC1_Format,
@@ -1010,6 +1044,8 @@ const TYPE_MAP = {
1010
1044
  [ VK_FORMAT_R16G16_SFLOAT ]: HalfFloatType,
1011
1045
  [ VK_FORMAT_R16_SFLOAT ]: HalfFloatType,
1012
1046
 
1047
+ [ VK_FORMAT_R16G16B16A16_UNORM ]: UnsignedShortType,
1048
+
1013
1049
  [ VK_FORMAT_R8G8B8A8_SRGB ]: UnsignedByteType,
1014
1050
  [ VK_FORMAT_R8G8B8A8_UNORM ]: UnsignedByteType,
1015
1051
  [ VK_FORMAT_R8G8_SRGB ]: UnsignedByteType,
@@ -1022,6 +1058,10 @@ const TYPE_MAP = {
1022
1058
 
1023
1059
  [ VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK ]: UnsignedByteType,
1024
1060
  [ VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK ]: UnsignedByteType,
1061
+ [ VK_FORMAT_EAC_R11_UNORM_BLOCK ]: UnsignedByteType,
1062
+ [ VK_FORMAT_EAC_R11_SNORM_BLOCK ]: UnsignedByteType,
1063
+ [ VK_FORMAT_EAC_R11G11_UNORM_BLOCK ]: UnsignedByteType,
1064
+ [ VK_FORMAT_EAC_R11G11_SNORM_BLOCK ]: UnsignedByteType,
1025
1065
 
1026
1066
  [ VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT ]: HalfFloatType,
1027
1067
  [ VK_FORMAT_ASTC_4x4_SRGB_BLOCK ]: UnsignedByteType,
@@ -1133,7 +1173,7 @@ async function createRawTexture( container ) {
1133
1173
 
1134
1174
  );
1135
1175
 
1136
- } else if ( TYPE_MAP[ vkFormat ] === HalfFloatType ) {
1176
+ } else if ( TYPE_MAP[ vkFormat ] === HalfFloatType || TYPE_MAP[ vkFormat ] === UnsignedShortType ) {
1137
1177
 
1138
1178
  data = new Uint16Array(
1139
1179
 
@@ -1183,6 +1223,7 @@ async function createRawTexture( container ) {
1183
1223
  texture.minFilter = useMipmaps ? NearestMipmapNearestFilter : NearestFilter;
1184
1224
  texture.magFilter = NearestFilter;
1185
1225
  texture.generateMipmaps = container.levelCount === 0;
1226
+ texture.normalized = NORMALIZED_VK_FORMATS.has( vkFormat );
1186
1227
 
1187
1228
  } else {
1188
1229
 
@@ -644,7 +644,7 @@ class LDrawParsedCache {
644
644
 
645
645
  }
646
646
 
647
- throw new Error( 'LDrawLoader: Subobject "' + fileName + '" could not be loaded.' );
647
+ throw new Error( 'THREE.LDrawLoader: Subobject "' + fileName + '" could not be loaded.' );
648
648
 
649
649
  }
650
650
 
@@ -1015,21 +1015,9 @@ class LDrawParsedCache {
1015
1015
  faceNormal: null,
1016
1016
  vertices: [ v0, v1, v2 ],
1017
1017
  normals: [ null, null, null ],
1018
+ doubleSided: doubleSided,
1018
1019
  } );
1019
- totalFaces ++;
1020
-
1021
- if ( doubleSided === true ) {
1022
-
1023
- faces.push( {
1024
- material: material,
1025
- colorCode: colorCode,
1026
- faceNormal: null,
1027
- vertices: [ v2, v1, v0 ],
1028
- normals: [ null, null, null ],
1029
- } );
1030
- totalFaces ++;
1031
-
1032
- }
1020
+ totalFaces += doubleSided ? 2 : 1;
1033
1021
 
1034
1022
  break;
1035
1023
 
@@ -1065,26 +1053,14 @@ class LDrawParsedCache {
1065
1053
  faceNormal: null,
1066
1054
  vertices: [ v0, v1, v2, v3 ],
1067
1055
  normals: [ null, null, null, null ],
1056
+ doubleSided: doubleSided,
1068
1057
  } );
1069
- totalFaces += 2;
1070
-
1071
- if ( doubleSided === true ) {
1072
-
1073
- faces.push( {
1074
- material: material,
1075
- colorCode: colorCode,
1076
- faceNormal: null,
1077
- vertices: [ v3, v2, v1, v0 ],
1078
- normals: [ null, null, null, null ],
1079
- } );
1080
- totalFaces += 2;
1081
-
1082
- }
1058
+ totalFaces += doubleSided ? 4 : 2;
1083
1059
 
1084
1060
  break;
1085
1061
 
1086
1062
  default:
1087
- throw new Error( 'LDrawLoader: Unknown line type "' + lineType + '"' + lp.getLineNumberString() + '.' );
1063
+ throw new Error( 'THREE.LDrawLoader: Unknown line type "' + lineType + '"' + lp.getLineNumberString() + '.' );
1088
1064
 
1089
1065
  }
1090
1066
 
@@ -1550,13 +1526,22 @@ function createObject( loader, elements, elementSize, isConditionalSegments = fa
1550
1526
 
1551
1527
  }
1552
1528
 
1553
- for ( let j = 0, l = vertices.length; j < l; j ++ ) {
1529
+ const sideCount = elementSize === 3 && elem.doubleSided ? 2 : 1;
1530
+ const sideVertCount = vertices.length;
1531
+ const totalVertCount = sideVertCount * sideCount;
1554
1532
 
1555
- const v = vertices[ j ];
1556
- const index = offset + j * 3;
1557
- positions[ index + 0 ] = v.x;
1558
- positions[ index + 1 ] = v.y;
1559
- positions[ index + 2 ] = v.z;
1533
+ for ( let s = 0; s < sideCount; s ++ ) {
1534
+
1535
+ for ( let j = 0; j < sideVertCount; j ++ ) {
1536
+
1537
+ // front side: original order; back side: reversed winding
1538
+ const v = vertices[ s === 0 ? j : sideVertCount - 1 - j ];
1539
+ const index = offset + ( s * sideVertCount + j ) * 3;
1540
+ positions[ index + 0 ] = v.x;
1541
+ positions[ index + 1 ] = v.y;
1542
+ positions[ index + 2 ] = v.z;
1543
+
1544
+ }
1560
1545
 
1561
1546
  }
1562
1547
 
@@ -1589,20 +1574,27 @@ function createObject( loader, elements, elementSize, isConditionalSegments = fa
1589
1574
 
1590
1575
  }
1591
1576
 
1592
- for ( let j = 0, l = elemNormals.length; j < l; j ++ ) {
1577
+ const normalCount = elemNormals.length;
1578
+ for ( let s = 0; s < sideCount; s ++ ) {
1593
1579
 
1594
- // use face normal if a vertex normal is not provided
1595
- let n = elem.faceNormal;
1596
- if ( elemNormals[ j ] ) {
1580
+ const sign = s === 0 ? 1 : - 1;
1581
+ for ( let j = 0; j < normalCount; j ++ ) {
1597
1582
 
1598
- n = elemNormals[ j ].norm;
1583
+ // back side reuses the front normals in reversed order, with negated direction
1584
+ const idx = s === 0 ? j : normalCount - 1 - j;
1585
+ let n = elem.faceNormal;
1586
+ if ( elemNormals[ idx ] ) {
1599
1587
 
1600
- }
1588
+ n = elemNormals[ idx ].norm;
1601
1589
 
1602
- const index = offset + j * 3;
1603
- normals[ index + 0 ] = n.x;
1604
- normals[ index + 1 ] = n.y;
1605
- normals[ index + 2 ] = n.z;
1590
+ }
1591
+
1592
+ const index = offset + ( s * normalCount + j ) * 3;
1593
+ normals[ index + 0 ] = sign * n.x;
1594
+ normals[ index + 1 ] = sign * n.y;
1595
+ normals[ index + 2 ] = sign * n.z;
1596
+
1597
+ }
1606
1598
 
1607
1599
  }
1608
1600
 
@@ -1650,21 +1642,21 @@ function createObject( loader, elements, elementSize, isConditionalSegments = fa
1650
1642
 
1651
1643
  prevMaterial = elem.colorCode;
1652
1644
  index0 = offset / 3;
1653
- numGroupVerts = vertices.length;
1645
+ numGroupVerts = totalVertCount;
1654
1646
 
1655
1647
  } else {
1656
1648
 
1657
- numGroupVerts += vertices.length;
1649
+ numGroupVerts += totalVertCount;
1658
1650
 
1659
1651
  }
1660
1652
 
1661
- offset += 3 * vertices.length;
1653
+ offset += 3 * totalVertCount;
1662
1654
 
1663
1655
  }
1664
1656
 
1665
1657
  if ( numGroupVerts > 0 ) {
1666
1658
 
1667
- bufferGeometry.addGroup( index0, Infinity, materials.length - 1 );
1659
+ bufferGeometry.addGroup( index0, numGroupVerts, materials.length - 1 );
1668
1660
 
1669
1661
  }
1670
1662
 
@@ -1749,7 +1741,7 @@ function createObject( loader, elements, elementSize, isConditionalSegments = fa
1749
1741
  /**
1750
1742
  * A loader for the LDraw format.
1751
1743
  *
1752
- * [LDraw](https://ldraw.org/} (LEGO Draw) is an [open format specification]{@link https://ldraw.org/article/218.html)
1744
+ * [LDraw](https://ldraw.org/} (LEGO Draw) is an [open format specification](https://ldraw.org/article/218.html)
1753
1745
  * for describing LEGO and other construction set 3D models.
1754
1746
  *
1755
1747
  * An LDraw asset (a text file usually with extension .ldr, .dat or .txt) can describe just a single construction
@@ -2225,7 +2217,7 @@ class LDrawLoader extends Loader {
2225
2217
  const name = lineParser.getToken();
2226
2218
  if ( ! name ) {
2227
2219
 
2228
- throw new Error( 'LDrawLoader: Material name was expected after "!COLOUR tag' + lineParser.getLineNumberString() + '.' );
2220
+ throw new Error( 'THREE.LDrawLoader: Material name was expected after "!COLOUR tag' + lineParser.getLineNumberString() + '.' );
2229
2221
 
2230
2222
  }
2231
2223
 
@@ -2259,7 +2251,7 @@ class LDrawLoader extends Loader {
2259
2251
 
2260
2252
  } else if ( ! fillColor.startsWith( '#' ) ) {
2261
2253
 
2262
- throw new Error( 'LDrawLoader: Invalid color while parsing material' + lineParser.getLineNumberString() + '.' );
2254
+ throw new Error( 'THREE.LDrawLoader: Invalid color while parsing material' + lineParser.getLineNumberString() + '.' );
2263
2255
 
2264
2256
  }
2265
2257
 
@@ -2278,7 +2270,7 @@ class LDrawLoader extends Loader {
2278
2270
  edgeMaterial = this.getMaterial( edgeColor );
2279
2271
  if ( ! edgeMaterial ) {
2280
2272
 
2281
- throw new Error( 'LDrawLoader: Invalid edge color while parsing material' + lineParser.getLineNumberString() + '.' );
2273
+ throw new Error( 'THREE.LDrawLoader: Invalid edge color while parsing material' + lineParser.getLineNumberString() + '.' );
2282
2274
 
2283
2275
  }
2284
2276
 
@@ -2295,7 +2287,7 @@ class LDrawLoader extends Loader {
2295
2287
 
2296
2288
  if ( isNaN( alpha ) ) {
2297
2289
 
2298
- throw new Error( 'LDrawLoader: Invalid alpha value in material definition' + lineParser.getLineNumberString() + '.' );
2290
+ throw new Error( 'THREE.LDrawLoader: Invalid alpha value in material definition' + lineParser.getLineNumberString() + '.' );
2299
2291
 
2300
2292
  }
2301
2293
 
@@ -2313,7 +2305,7 @@ class LDrawLoader extends Loader {
2313
2305
 
2314
2306
  if ( ! parseLuminance( lineParser.getToken() ) ) {
2315
2307
 
2316
- throw new Error( 'LDrawLoader: Invalid luminance value in material definition' + lineParser.getLineNumberString() + '.' );
2308
+ throw new Error( 'THREE.LDrawLoader: Invalid luminance value in material definition' + lineParser.getLineNumberString() + '.' );
2317
2309
 
2318
2310
  }
2319
2311
 
@@ -2345,7 +2337,7 @@ class LDrawLoader extends Loader {
2345
2337
  break;
2346
2338
 
2347
2339
  default:
2348
- throw new Error( 'LDrawLoader: Unknown token "' + token + '" while parsing material' + lineParser.getLineNumberString() + '.' );
2340
+ throw new Error( 'THREE.LDrawLoader: Unknown token "' + token + '" while parsing material' + lineParser.getLineNumberString() + '.' );
2349
2341
 
2350
2342
  }
2351
2343
 
@@ -2400,7 +2392,6 @@ class LDrawLoader extends Loader {
2400
2392
 
2401
2393
  material.color.setStyle( fillColor, COLOR_SPACE_LDRAW );
2402
2394
  material.transparent = isTransparent;
2403
- material.premultipliedAlpha = true;
2404
2395
  material.opacity = alpha;
2405
2396
  material.depthWrite = ! isTransparent;
2406
2397
 
@@ -114,7 +114,7 @@ export class LUT3dlLoader extends Loader {
114
114
 
115
115
  if ( result === null ) {
116
116
 
117
- throw new Error( 'LUT3dlLoader: Missing grid information' );
117
+ throw new Error( 'THREE.LUT3dlLoader: Missing grid information' );
118
118
 
119
119
  }
120
120
 
@@ -127,7 +127,7 @@ export class LUT3dlLoader extends Loader {
127
127
 
128
128
  if ( gridStep !== ( gridLines[ i ] - gridLines[ i - 1 ] ) ) {
129
129
 
130
- throw new Error( 'LUT3dlLoader: Inconsistent grid size' );
130
+ throw new Error( 'THREE.LUT3dlLoader: Inconsistent grid size' );
131
131
 
132
132
  }
133
133
 
@@ -118,7 +118,7 @@ export class LUTCubeLoader extends Loader {
118
118
 
119
119
  if ( result === null ) {
120
120
 
121
- throw new Error( 'LUTCubeLoader: Missing LUT_3D_SIZE information' );
121
+ throw new Error( 'THREE.LUTCubeLoader: Missing LUT_3D_SIZE information' );
122
122
 
123
123
  }
124
124
 
@@ -147,7 +147,7 @@ export class LUTCubeLoader extends Loader {
147
147
 
148
148
  if ( domainMin.x > domainMax.x || domainMin.y > domainMax.y || domainMin.z > domainMax.z ) {
149
149
 
150
- throw new Error( 'LUTCubeLoader: Invalid input domain' );
150
+ throw new Error( 'THREE.LUTCubeLoader: Invalid input domain' );
151
151
 
152
152
  }
153
153
 
@@ -23,7 +23,8 @@ import {
23
23
  RepeatWrapping,
24
24
  SRGBColorSpace,
25
25
  TextureLoader,
26
- Vector2
26
+ Vector2,
27
+ Vector3
27
28
  } from 'three';
28
29
 
29
30
  import { IFFParser } from './lwo/IFFParser.js';
@@ -49,6 +50,7 @@ let _lwoTree;
49
50
  *
50
51
  * @augments Loader
51
52
  * @three_import import { LWOLoader } from 'three/addons/loaders/LWOLoader.js';
53
+ * @deprecated since r185.
52
54
  */
53
55
  class LWOLoader extends Loader {
54
56
 
@@ -56,11 +58,14 @@ class LWOLoader extends Loader {
56
58
  * Constructs a new LWO loader.
57
59
  *
58
60
  * @param {LoadingManager} [manager] - The loading manager.
61
+ * @deprecated since r185.
59
62
  */
60
63
  constructor( manager ) {
61
64
 
62
65
  super( manager );
63
66
 
67
+ console.warn( 'THREE.LWOLoader: The loader has been deprecated and will be removed with r195. Export your LWO files to glTF before using them on the web.' ); // @deprecated, r185
68
+
64
69
  }
65
70
 
66
71
  /**
@@ -185,8 +190,6 @@ class LWOTreeParser {
185
190
 
186
191
  } );
187
192
 
188
- this.applyPivots( finalMeshes );
189
-
190
193
  return finalMeshes;
191
194
 
192
195
  }
@@ -204,38 +207,14 @@ class LWOTreeParser {
204
207
  if ( layer.name ) mesh.name = layer.name;
205
208
  else mesh.name = this.defaultLayerName + '_layer_' + layer.number;
206
209
 
207
- mesh.userData.pivot = layer.pivot;
208
-
209
- return mesh;
210
-
211
- }
212
-
213
- // TODO: may need to be reversed in z to convert LWO to three.js coordinates
214
- applyPivots( meshes ) {
215
-
216
- meshes.forEach( function ( mesh ) {
217
-
218
- mesh.traverse( function ( child ) {
219
-
220
- const pivot = child.userData.pivot;
221
-
222
- child.position.x += pivot[ 0 ];
223
- child.position.y += pivot[ 1 ];
224
- child.position.z += pivot[ 2 ];
210
+ const pivot = layer.pivot;
211
+ if ( pivot[ 0 ] !== 0 || pivot[ 1 ] !== 0 || pivot[ 2 ] !== 0 ) {
225
212
 
226
- if ( child.parent ) {
213
+ mesh.pivot = new Vector3( pivot[ 0 ], pivot[ 1 ], pivot[ 2 ] );
227
214
 
228
- const parentPivot = child.parent.userData.pivot;
229
-
230
- child.position.x -= parentPivot[ 0 ];
231
- child.position.y -= parentPivot[ 1 ];
232
- child.position.z -= parentPivot[ 2 ];
233
-
234
- }
235
-
236
- } );
215
+ }
237
216
 
238
- } );
217
+ return mesh;
239
218
 
240
219
  }
241
220
 
@@ -813,13 +792,6 @@ class GeometryParser {
813
792
  this.parseUVs( geometry, layer );
814
793
  this.parseMorphTargets( geometry, layer );
815
794
 
816
- // TODO: z may need to be reversed to account for coordinate system change
817
- geometry.translate( - layer.pivot[ 0 ], - layer.pivot[ 1 ], - layer.pivot[ 2 ] );
818
-
819
- // let userData = geometry.userData;
820
- // geometry = geometry.toNonIndexed()
821
- // geometry.userData = userData;
822
-
823
795
  return geometry;
824
796
 
825
797
  }
@@ -6,7 +6,7 @@ import {
6
6
  SRGBColorSpace
7
7
  } from 'three';
8
8
 
9
- import lottie from '../libs/lottie_canvas.module.js';
9
+ import lottie from 'https://cdn.jsdelivr.net/npm/lottie-web@5.13.0/+esm';
10
10
 
11
11
  /**
12
12
  * A loader for the Lottie texture animation format.