super-three 0.136.1 → 0.144.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 (842) hide show
  1. package/README.md +31 -33
  2. package/build/three.cjs +36413 -0
  3. package/build/three.js +5108 -5809
  4. package/build/three.min.js +2 -2
  5. package/build/three.module.js +7877 -8586
  6. package/examples/js/animation/CCDIKSolver.js +3 -2
  7. package/examples/js/animation/MMDAnimationHelper.js +3 -1
  8. package/examples/js/animation/MMDPhysics.js +3 -18
  9. package/examples/js/controls/ArcballControls.js +19 -4
  10. package/examples/js/controls/FirstPersonControls.js +0 -7
  11. package/examples/js/controls/FlyControls.js +0 -8
  12. package/examples/js/controls/OrbitControls.js +0 -4
  13. package/examples/js/controls/PointerLockControls.js +3 -10
  14. package/examples/js/controls/TrackballControls.js +1 -6
  15. package/examples/js/controls/TransformControls.js +25 -22
  16. package/examples/js/csm/CSMFrustum.js +1 -1
  17. package/examples/js/csm/CSMShader.js +51 -35
  18. package/examples/js/curves/CurveExtras.js +14 -18
  19. package/examples/js/effects/AnaglyphEffect.js +9 -6
  20. package/examples/js/effects/AsciiEffect.js +10 -29
  21. package/examples/js/effects/OutlineEffect.js +4 -24
  22. package/examples/js/effects/ParallaxBarrierEffect.js +2 -2
  23. package/examples/js/effects/PeppersGhostEffect.js +2 -2
  24. package/examples/js/effects/StereoEffect.js +2 -2
  25. package/examples/js/environments/RoomEnvironment.js +22 -0
  26. package/examples/js/exporters/ColladaExporter.js +33 -20
  27. package/examples/js/exporters/DRACOExporter.js +0 -12
  28. package/examples/js/exporters/EXRExporter.js +458 -0
  29. package/examples/js/exporters/GLTFExporter.js +246 -119
  30. package/examples/js/exporters/OBJExporter.js +14 -41
  31. package/examples/js/exporters/PLYExporter.js +27 -44
  32. package/examples/js/exporters/STLExporter.js +0 -7
  33. package/examples/js/exporters/USDZExporter.js +19 -0
  34. package/examples/js/geometries/ConvexGeometry.js +1 -1
  35. package/examples/js/geometries/DecalGeometry.js +0 -7
  36. package/examples/js/geometries/LightningStrike.js +2 -2
  37. package/examples/js/geometries/ParametricGeometries.js +3 -3
  38. package/examples/js/geometries/ParametricGeometry.js +1 -8
  39. package/examples/js/geometries/TextGeometry.js +12 -10
  40. package/examples/js/helpers/OctreeHelper.js +74 -0
  41. package/examples/js/helpers/VertexNormalsHelper.js +4 -23
  42. package/examples/js/helpers/VertexTangentsHelper.js +3 -13
  43. package/examples/js/helpers/ViewHelper.js +266 -0
  44. package/examples/js/interactive/HTMLMesh.js +249 -42
  45. package/examples/js/interactive/SelectionHelper.js +3 -1
  46. package/examples/js/libs/ktx-parse.umd.js +1 -0
  47. package/examples/js/libs/meshopt_decoder.js +98 -32
  48. package/examples/js/libs/opentype.min.js +1 -118
  49. package/examples/js/lines/Line2.js +1 -2
  50. package/examples/js/lines/LineGeometry.js +10 -21
  51. package/examples/js/lines/LineMaterial.js +2 -3
  52. package/examples/js/lines/LineSegments2.js +214 -140
  53. package/examples/js/lines/LineSegmentsGeometry.js +3 -14
  54. package/examples/js/lines/Wireframe.js +2 -3
  55. package/examples/js/lines/WireframeGeometry2.js +1 -2
  56. package/examples/js/loaders/3MFLoader.js +21 -17
  57. package/examples/js/loaders/AMFLoader.js +1 -1
  58. package/examples/js/loaders/ColladaLoader.js +34 -12
  59. package/examples/js/loaders/DDSLoader.js +23 -30
  60. package/examples/js/loaders/DRACOLoader.js +2 -25
  61. package/examples/js/loaders/EXRLoader.js +279 -276
  62. package/examples/js/loaders/FBXLoader.js +21 -3
  63. package/examples/js/loaders/FontLoader.js +4 -18
  64. package/examples/js/loaders/GCodeLoader.js +0 -1
  65. package/examples/js/loaders/GLTFLoader.js +300 -95
  66. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -11
  67. package/examples/js/loaders/KMZLoader.js +1 -1
  68. package/examples/js/loaders/LDrawLoader.js +653 -480
  69. package/examples/js/loaders/LUT3dlLoader.js +1 -1
  70. package/examples/js/loaders/LUTCubeLoader.js +1 -1
  71. package/examples/js/loaders/LWOLoader.js +4 -2
  72. package/examples/js/loaders/LogLuvLoader.js +1 -2
  73. package/examples/js/loaders/MD2Loader.js +5 -5
  74. package/examples/js/loaders/MMDLoader.js +18 -4
  75. package/examples/js/loaders/MTLLoader.js +10 -3
  76. package/examples/js/loaders/NRRDLoader.js +1 -1
  77. package/examples/js/loaders/OBJLoader.js +16 -18
  78. package/examples/js/loaders/PCDLoader.js +81 -27
  79. package/examples/js/loaders/PDBLoader.js +11 -11
  80. package/examples/js/loaders/PLYLoader.js +8 -4
  81. package/examples/js/loaders/RGBELoader.js +3 -11
  82. package/examples/js/loaders/RGBMLoader.js +12 -15
  83. package/examples/js/loaders/STLLoader.js +1 -1
  84. package/examples/js/loaders/SVGLoader.js +23 -14
  85. package/examples/js/loaders/TIFFLoader.js +31 -0
  86. package/examples/js/loaders/VOXLoader.js +3 -4
  87. package/examples/js/loaders/VRMLLoader.js +33 -24
  88. package/examples/js/loaders/VTKLoader.js +261 -296
  89. package/examples/js/loaders/lwo/LWO2Parser.js +12 -11
  90. package/examples/js/loaders/lwo/LWO3Parser.js +12 -11
  91. package/examples/js/materials/MeshGouraudMaterial.js +385 -0
  92. package/examples/js/math/ColorConverter.js +0 -50
  93. package/examples/js/math/ConvexHull.js +6 -15
  94. package/examples/js/math/Lut.js +27 -26
  95. package/examples/js/misc/GPUComputationRenderer.js +23 -0
  96. package/examples/js/misc/MorphAnimMesh.js +2 -2
  97. package/examples/js/misc/ProgressiveLightMap.js +1 -1
  98. package/examples/js/misc/Volume.js +233 -234
  99. package/examples/js/misc/VolumeSlice.js +108 -106
  100. package/examples/js/modifiers/EdgeSplitModifier.js +0 -13
  101. package/examples/js/modifiers/SimplifyModifier.js +2 -19
  102. package/examples/js/modifiers/TessellateModifier.js +0 -7
  103. package/examples/js/objects/GroundProjectedEnv.js +193 -0
  104. package/examples/js/objects/Lensflare.js +4 -4
  105. package/examples/js/objects/LightningStorm.js +4 -5
  106. package/examples/js/objects/MarchingCubes.js +6 -11
  107. package/examples/js/objects/Reflector.js +18 -5
  108. package/examples/js/objects/ReflectorForSSRPass.js +4 -5
  109. package/examples/js/objects/Refractor.js +19 -7
  110. package/examples/js/objects/ShadowMesh.js +6 -3
  111. package/examples/js/objects/Sky.js +1 -1
  112. package/examples/js/objects/Water.js +1 -2
  113. package/examples/js/objects/Water2.js +1 -1
  114. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +6 -10
  115. package/examples/js/postprocessing/AfterimagePass.js +2 -6
  116. package/examples/js/postprocessing/BloomPass.js +50 -19
  117. package/examples/js/postprocessing/DotScreenPass.js +1 -1
  118. package/examples/js/postprocessing/EffectComposer.js +1 -6
  119. package/examples/js/postprocessing/LUTPass.js +2 -2
  120. package/examples/js/postprocessing/OutlinePass.js +13 -20
  121. package/examples/js/postprocessing/SAOPass.js +2 -7
  122. package/examples/js/postprocessing/SSAARenderPass.js +1 -6
  123. package/examples/js/postprocessing/SSRPass.js +3 -8
  124. package/examples/js/postprocessing/TAARenderPass.js +4 -4
  125. package/examples/js/postprocessing/UnrealBloomPass.js +3 -12
  126. package/examples/js/renderers/CSS2DRenderer.js +22 -21
  127. package/examples/js/renderers/CSS3DRenderer.js +42 -38
  128. package/examples/js/renderers/Projector.js +99 -147
  129. package/examples/js/renderers/SVGRenderer.js +3 -4
  130. package/examples/js/shaders/BlendShader.js +2 -1
  131. package/examples/js/shaders/CopyShader.js +4 -3
  132. package/examples/js/shaders/FXAAShader.js +239 -1069
  133. package/examples/js/shaders/FreiChenShader.js +1 -1
  134. package/examples/js/shaders/HorizontalBlurShader.js +1 -1
  135. package/examples/js/shaders/HorizontalTiltShiftShader.js +1 -1
  136. package/examples/js/shaders/LuminosityShader.js +1 -1
  137. package/examples/js/shaders/MMDToonShader.js +6 -2
  138. package/examples/js/shaders/SSRShader.js +3 -3
  139. package/examples/js/shaders/ToneMapShader.js +2 -2
  140. package/examples/js/utils/BufferGeometryUtils.js +282 -22
  141. package/examples/js/utils/GPUStatsPanel.js +1 -1
  142. package/examples/js/utils/GeometryUtils.js +2 -18
  143. package/examples/js/utils/LDrawUtils.js +182 -0
  144. package/examples/js/utils/PackedPhongMaterial.js +1 -1
  145. package/examples/js/utils/SceneUtils.js +57 -14
  146. package/examples/js/utils/SkeletonUtils.js +1 -1
  147. package/examples/js/utils/UVsDebug.js +23 -33
  148. package/examples/jsm/animation/CCDIKSolver.js +3 -9
  149. package/examples/jsm/animation/MMDPhysics.js +4 -23
  150. package/examples/jsm/capabilities/WebGPU.js +6 -0
  151. package/examples/jsm/controls/ArcballControls.js +19 -2
  152. package/examples/jsm/controls/FirstPersonControls.js +0 -7
  153. package/examples/jsm/controls/FlyControls.js +0 -7
  154. package/examples/jsm/controls/OrbitControls.js +0 -5
  155. package/examples/jsm/controls/PointerLockControls.js +4 -9
  156. package/examples/jsm/controls/TrackballControls.js +1 -7
  157. package/examples/jsm/controls/TransformControls.js +24 -22
  158. package/examples/jsm/csm/CSMFrustum.js +1 -1
  159. package/examples/jsm/csm/CSMShader.js +51 -35
  160. package/examples/jsm/curves/CurveExtras.js +15 -17
  161. package/examples/jsm/effects/AnaglyphEffect.js +6 -6
  162. package/examples/jsm/effects/AsciiEffect.js +9 -22
  163. package/examples/jsm/effects/OutlineEffect.js +4 -25
  164. package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -2
  165. package/examples/jsm/effects/PeppersGhostEffect.js +2 -2
  166. package/examples/jsm/effects/StereoEffect.js +2 -2
  167. package/examples/jsm/environments/RoomEnvironment.js +23 -0
  168. package/examples/jsm/exporters/ColladaExporter.js +35 -19
  169. package/examples/jsm/exporters/DRACOExporter.js +0 -13
  170. package/examples/jsm/exporters/EXRExporter.js +507 -0
  171. package/examples/jsm/exporters/GLTFExporter.js +276 -104
  172. package/examples/jsm/exporters/KTX2Exporter.js +281 -0
  173. package/examples/jsm/exporters/OBJExporter.js +11 -36
  174. package/examples/jsm/exporters/PLYExporter.js +37 -43
  175. package/examples/jsm/exporters/STLExporter.js +1 -9
  176. package/examples/jsm/exporters/USDZExporter.js +26 -3
  177. package/examples/jsm/geometries/ConvexGeometry.js +1 -1
  178. package/examples/jsm/geometries/DecalGeometry.js +0 -7
  179. package/examples/jsm/geometries/LightningStrike.js +2 -2
  180. package/examples/jsm/geometries/ParametricGeometries.js +3 -3
  181. package/examples/jsm/geometries/ParametricGeometry.js +0 -6
  182. package/examples/jsm/geometries/TextGeometry.js +13 -13
  183. package/examples/jsm/helpers/OctreeHelper.js +58 -0
  184. package/examples/jsm/helpers/VertexNormalsHelper.js +4 -25
  185. package/examples/jsm/helpers/VertexTangentsHelper.js +3 -15
  186. package/examples/jsm/helpers/ViewHelper.js +295 -0
  187. package/examples/jsm/interactive/HTMLMesh.js +268 -36
  188. package/examples/jsm/interactive/SelectionHelper.js +6 -4
  189. package/examples/jsm/libs/flow.module.js +947 -183
  190. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  191. package/examples/jsm/libs/meshopt_decoder.module.js +97 -32
  192. package/examples/jsm/libs/mikktspace.module.js +128 -0
  193. package/examples/jsm/libs/opentype.module.js +14568 -0
  194. package/examples/jsm/libs/utif.module.js +1579 -0
  195. package/examples/jsm/libs/zstddec.module.js +1 -0
  196. package/examples/jsm/lines/Line2.js +2 -2
  197. package/examples/jsm/lines/LineGeometry.js +11 -19
  198. package/examples/jsm/lines/LineMaterial.js +3 -3
  199. package/examples/jsm/lines/LineSegments2.js +210 -145
  200. package/examples/jsm/lines/LineSegmentsGeometry.js +3 -12
  201. package/examples/jsm/lines/Wireframe.js +3 -3
  202. package/examples/jsm/lines/WireframeGeometry2.js +2 -2
  203. package/examples/jsm/loaders/3DMLoader.js +3 -2
  204. package/examples/jsm/loaders/3MFLoader.js +21 -17
  205. package/examples/jsm/loaders/AMFLoader.js +1 -1
  206. package/examples/jsm/loaders/ColladaLoader.js +41 -12
  207. package/examples/jsm/loaders/DDSLoader.js +21 -28
  208. package/examples/jsm/loaders/DRACOLoader.js +2 -28
  209. package/examples/jsm/loaders/EXRLoader.js +278 -275
  210. package/examples/jsm/loaders/FBXLoader.js +21 -3
  211. package/examples/jsm/loaders/FontLoader.js +5 -18
  212. package/examples/jsm/loaders/GCodeLoader.js +0 -1
  213. package/examples/jsm/loaders/GLTFLoader.js +314 -101
  214. package/examples/jsm/loaders/HDRCubeTextureLoader.js +0 -13
  215. package/examples/jsm/loaders/KMZLoader.js +1 -1
  216. package/examples/jsm/loaders/KTX2Loader.js +193 -40
  217. package/examples/jsm/loaders/LDrawLoader.js +641 -495
  218. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  219. package/examples/jsm/loaders/LUTCubeLoader.js +2 -2
  220. package/examples/jsm/loaders/LWOLoader.js +5 -3
  221. package/examples/jsm/loaders/LogLuvLoader.js +2 -2
  222. package/examples/jsm/loaders/MD2Loader.js +5 -5
  223. package/examples/jsm/loaders/MMDLoader.js +21 -3
  224. package/examples/jsm/loaders/MTLLoader.js +11 -4
  225. package/examples/jsm/loaders/NRRDLoader.js +1 -2
  226. package/examples/jsm/loaders/OBJLoader.js +17 -21
  227. package/examples/jsm/loaders/PCDLoader.js +82 -28
  228. package/examples/jsm/loaders/PDBLoader.js +11 -11
  229. package/examples/jsm/loaders/PLYLoader.js +13 -5
  230. package/examples/jsm/loaders/RGBELoader.js +4 -12
  231. package/examples/jsm/loaders/RGBMLoader.js +14 -11
  232. package/examples/jsm/loaders/STLLoader.js +1 -1
  233. package/examples/jsm/loaders/SVGLoader.js +24 -13
  234. package/examples/jsm/loaders/TIFFLoader.js +36 -0
  235. package/examples/jsm/loaders/TTFLoader.js +1 -1
  236. package/examples/jsm/loaders/USDZLoader.js +393 -0
  237. package/examples/jsm/loaders/VOXLoader.js +5 -5
  238. package/examples/jsm/loaders/VRMLLoader.js +23 -26
  239. package/examples/jsm/loaders/VTKLoader.js +257 -285
  240. package/examples/jsm/loaders/ifc/web-ifc-api.js +9 -8
  241. package/examples/jsm/loaders/lwo/LWO2Parser.js +10 -12
  242. package/examples/jsm/loaders/lwo/LWO3Parser.js +10 -12
  243. package/examples/jsm/materials/MeshGouraudMaterial.js +423 -0
  244. package/examples/jsm/math/ColorConverter.js +1 -49
  245. package/examples/jsm/math/ConvexHull.js +6 -15
  246. package/examples/jsm/math/Lut.js +35 -25
  247. package/examples/jsm/misc/GPUComputationRenderer.js +43 -0
  248. package/examples/jsm/misc/MorphAnimMesh.js +2 -2
  249. package/examples/jsm/misc/ProgressiveLightMap.js +1 -1
  250. package/examples/jsm/misc/Volume.js +204 -213
  251. package/examples/jsm/misc/VolumeSlice.js +96 -98
  252. package/examples/jsm/modifiers/EdgeSplitModifier.js +0 -13
  253. package/examples/jsm/modifiers/SimplifyModifier.js +2 -19
  254. package/examples/jsm/modifiers/TessellateModifier.js +0 -7
  255. package/examples/jsm/node-editor/NodeEditor.js +505 -182
  256. package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +14 -0
  257. package/examples/jsm/node-editor/accessors/NormalEditor.js +9 -9
  258. package/examples/jsm/node-editor/accessors/PositionEditor.js +9 -9
  259. package/examples/jsm/node-editor/accessors/UVEditor.js +7 -8
  260. package/examples/jsm/node-editor/core/BaseNode.js +89 -0
  261. package/examples/jsm/node-editor/core/DataFile.js +59 -0
  262. package/examples/jsm/node-editor/core/FileEditor.js +20 -0
  263. package/examples/jsm/node-editor/core/FileURLEditor.js +29 -0
  264. package/examples/jsm/node-editor/display/BlendEditor.js +10 -9
  265. package/examples/jsm/node-editor/display/NormalMapEditor.js +49 -0
  266. package/examples/jsm/node-editor/examples/animate-uv.json +1 -1
  267. package/examples/jsm/node-editor/examples/fake-top-light.json +1 -1
  268. package/examples/jsm/node-editor/examples/matcap.json +1 -0
  269. package/examples/jsm/node-editor/examples/oscillator-color.json +1 -1
  270. package/examples/jsm/node-editor/examples/rim.json +1 -1
  271. package/examples/jsm/node-editor/inputs/ColorEditor.js +18 -13
  272. package/examples/jsm/node-editor/inputs/FloatEditor.js +8 -9
  273. package/examples/jsm/node-editor/inputs/SliderEditor.js +6 -7
  274. package/examples/jsm/node-editor/inputs/TextureEditor.js +155 -0
  275. package/examples/jsm/node-editor/inputs/Vector2Editor.js +9 -9
  276. package/examples/jsm/node-editor/inputs/Vector3Editor.js +11 -11
  277. package/examples/jsm/node-editor/inputs/Vector4Editor.js +12 -12
  278. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +87 -0
  279. package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +102 -0
  280. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +31 -18
  281. package/examples/jsm/node-editor/math/AngleEditor.js +40 -0
  282. package/examples/jsm/node-editor/math/DotEditor.js +8 -9
  283. package/examples/jsm/node-editor/math/InvertEditor.js +8 -7
  284. package/examples/jsm/node-editor/math/LimiterEditor.js +28 -14
  285. package/examples/jsm/node-editor/math/NormalizeEditor.js +9 -7
  286. package/examples/jsm/node-editor/math/OperatorEditor.js +29 -16
  287. package/examples/jsm/node-editor/math/PowerEditor.js +20 -10
  288. package/examples/jsm/node-editor/math/TrigonometryEditor.js +15 -9
  289. package/examples/jsm/node-editor/procedural/CheckerEditor.js +7 -6
  290. package/examples/jsm/node-editor/scene/MeshEditor.js +99 -0
  291. package/examples/jsm/node-editor/scene/Object3DEditor.js +160 -0
  292. package/examples/jsm/node-editor/scene/PointsEditor.js +99 -0
  293. package/examples/jsm/node-editor/utils/JoinEditor.js +58 -0
  294. package/examples/jsm/node-editor/utils/OscillatorEditor.js +9 -8
  295. package/examples/jsm/node-editor/utils/PreviewEditor.js +166 -0
  296. package/examples/jsm/node-editor/utils/SplitEditor.js +39 -0
  297. package/examples/jsm/node-editor/utils/TimerEditor.js +7 -6
  298. package/examples/jsm/nodes/Nodes.js +313 -94
  299. package/examples/jsm/nodes/accessors/BufferNode.js +24 -0
  300. package/examples/jsm/nodes/accessors/CameraNode.js +27 -196
  301. package/examples/jsm/nodes/accessors/CubeTextureNode.js +107 -0
  302. package/examples/jsm/nodes/accessors/InstanceNode.js +58 -0
  303. package/examples/jsm/{renderers/nodes → nodes}/accessors/MaterialNode.js +49 -11
  304. package/examples/jsm/{renderers/nodes → nodes}/accessors/MaterialReferenceNode.js +0 -0
  305. package/examples/jsm/{renderers/nodes → nodes}/accessors/ModelNode.js +8 -0
  306. package/examples/jsm/{renderers/nodes → nodes}/accessors/ModelViewProjectionNode.js +0 -0
  307. package/examples/jsm/nodes/accessors/NormalNode.js +39 -99
  308. package/examples/jsm/{renderers/nodes → nodes}/accessors/Object3DNode.js +34 -17
  309. package/examples/jsm/{renderers/nodes → nodes}/accessors/PointUVNode.js +2 -2
  310. package/examples/jsm/nodes/accessors/PositionNode.js +41 -110
  311. package/examples/jsm/nodes/accessors/ReferenceNode.js +65 -0
  312. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +31 -0
  313. package/examples/jsm/nodes/accessors/SkinningNode.js +102 -0
  314. package/examples/jsm/nodes/accessors/StorageBufferNode.js +21 -0
  315. package/examples/jsm/nodes/accessors/TextureNode.js +100 -0
  316. package/examples/jsm/nodes/accessors/UVNode.js +17 -43
  317. package/examples/jsm/nodes/accessors/UserDataNode.js +23 -0
  318. package/examples/jsm/nodes/core/ArrayUniformNode.js +23 -0
  319. package/examples/jsm/nodes/core/AttributeNode.js +33 -30
  320. package/examples/jsm/{renderers/nodes → nodes}/core/BypassNode.js +2 -2
  321. package/examples/jsm/nodes/core/CodeNode.js +50 -0
  322. package/examples/jsm/nodes/core/ConstNode.js +10 -106
  323. package/examples/jsm/{renderers/nodes → nodes}/core/ContextNode.js +17 -3
  324. package/examples/jsm/nodes/core/ExpressionNode.js +24 -7
  325. package/examples/jsm/nodes/core/FunctionCallNode.js +33 -59
  326. package/examples/jsm/nodes/core/FunctionNode.js +43 -216
  327. package/examples/jsm/nodes/core/InputNode.js +28 -60
  328. package/examples/jsm/nodes/core/InstanceIndexNode.js +21 -0
  329. package/examples/jsm/nodes/core/Node.js +230 -94
  330. package/examples/jsm/{renderers/nodes → nodes}/core/NodeAttribute.js +2 -2
  331. package/examples/jsm/nodes/core/NodeBuilder.js +388 -560
  332. package/examples/jsm/{renderers/nodes → nodes}/core/NodeCode.js +0 -0
  333. package/examples/jsm/nodes/core/NodeFrame.js +30 -23
  334. package/examples/jsm/{renderers/nodes → nodes}/core/NodeFunction.js +0 -0
  335. package/examples/jsm/{renderers/nodes → nodes}/core/NodeFunctionInput.js +0 -0
  336. package/examples/jsm/{renderers/nodes → nodes}/core/NodeKeywords.js +0 -0
  337. package/examples/jsm/{renderers/nodes → nodes}/core/NodeParser.js +0 -0
  338. package/examples/jsm/nodes/core/NodeUniform.js +8 -6
  339. package/examples/jsm/nodes/core/NodeUtils.js +90 -36
  340. package/examples/jsm/{renderers/nodes → nodes}/core/NodeVar.js +2 -2
  341. package/examples/jsm/{renderers/nodes/core/NodeVary.js → nodes/core/NodeVarying.js} +4 -4
  342. package/examples/jsm/{renderers/nodes → nodes}/core/PropertyNode.js +0 -0
  343. package/examples/jsm/nodes/core/TempNode.js +20 -112
  344. package/examples/jsm/nodes/core/UniformNode.js +46 -0
  345. package/examples/jsm/nodes/core/VarNode.js +58 -27
  346. package/examples/jsm/{renderers/nodes/core/VaryNode.js → nodes/core/VaryingNode.js} +7 -7
  347. package/examples/jsm/{renderers/nodes → nodes}/core/constants.js +0 -0
  348. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +94 -0
  349. package/examples/jsm/{renderers/nodes → nodes}/display/ColorSpaceNode.js +10 -11
  350. package/examples/jsm/nodes/display/FrontFacingNode.js +21 -0
  351. package/examples/jsm/nodes/display/NormalMapNode.js +86 -0
  352. package/examples/jsm/nodes/display/ToneMappingNode.js +51 -0
  353. package/examples/jsm/nodes/fog/FogNode.js +31 -0
  354. package/examples/jsm/nodes/fog/FogRangeNode.js +27 -0
  355. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +33 -0
  356. package/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +9 -0
  357. package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +27 -0
  358. package/examples/jsm/nodes/functions/BSDF/D_GGX.js +18 -0
  359. package/examples/jsm/nodes/functions/BSDF/F_Schlick.js +18 -0
  360. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +18 -0
  361. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +94 -0
  362. package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +22 -0
  363. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +12 -0
  364. package/examples/jsm/nodes/functions/material/getRoughness.js +18 -0
  365. package/examples/jsm/nodes/geometry/RangeNode.js +109 -0
  366. package/examples/jsm/nodes/gpgpu/ComputeNode.js +65 -0
  367. package/examples/jsm/nodes/lighting/AONode.js +25 -0
  368. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +37 -0
  369. package/examples/jsm/nodes/lighting/EnvironmentNode.js +66 -0
  370. package/examples/jsm/nodes/lighting/HemisphereLightNode.js +50 -0
  371. package/examples/jsm/nodes/lighting/LightingContextNode.js +75 -0
  372. package/examples/jsm/nodes/lighting/LightingNode.js +19 -0
  373. package/examples/jsm/nodes/lighting/LightsNode.js +120 -0
  374. package/examples/jsm/nodes/lighting/PunctualLightNode.js +68 -0
  375. package/examples/jsm/nodes/loaders/NodeLoader.js +107 -0
  376. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +73 -0
  377. package/examples/jsm/nodes/loaders/NodeObjectLoader.js +70 -0
  378. package/examples/jsm/{renderers/nodes → nodes}/materials/LineBasicNodeMaterial.js +11 -4
  379. package/examples/jsm/nodes/materials/Materials.js +53 -0
  380. package/examples/jsm/{renderers/nodes → nodes}/materials/MeshBasicNodeMaterial.js +13 -4
  381. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +70 -0
  382. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +159 -22
  383. package/examples/jsm/nodes/materials/NodeMaterial.js +128 -113
  384. package/examples/jsm/{renderers/nodes → nodes}/materials/PointsNodeMaterial.js +13 -4
  385. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +95 -16
  386. package/examples/jsm/nodes/materialx/Disclaimer.md +199 -0
  387. package/examples/jsm/nodes/materialx/functions/lib/mx_hsv.js +56 -0
  388. package/examples/jsm/nodes/materialx/functions/lib/mx_noise.js +607 -0
  389. package/examples/jsm/nodes/math/CondNode.js +26 -95
  390. package/examples/jsm/nodes/math/MathNode.js +156 -189
  391. package/examples/jsm/nodes/math/OperatorNode.js +161 -41
  392. package/examples/jsm/{renderers/nodes → nodes}/parsers/GLSLNodeFunction.js +23 -8
  393. package/examples/jsm/{renderers/nodes → nodes}/parsers/GLSLNodeParser.js +0 -0
  394. package/examples/jsm/{renderers/nodes → nodes}/parsers/WGSLNodeFunction.js +20 -5
  395. package/examples/jsm/{renderers/nodes → nodes}/parsers/WGSLNodeParser.js +0 -0
  396. package/examples/jsm/nodes/procedural/CheckerNode.js +16 -57
  397. package/examples/jsm/nodes/shadernode/ShaderNode.js +262 -0
  398. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +277 -0
  399. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +120 -0
  400. package/examples/jsm/{renderers/nodes → nodes}/utils/ArrayElementNode.js +3 -3
  401. package/examples/jsm/nodes/utils/ConvertNode.js +46 -0
  402. package/examples/jsm/nodes/utils/JoinNode.js +15 -87
  403. package/examples/jsm/nodes/utils/MatcapUVNode.js +25 -0
  404. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +33 -0
  405. package/examples/jsm/{renderers/nodes → nodes}/utils/OscNode.js +18 -2
  406. package/examples/jsm/nodes/utils/RotateUVNode.js +32 -0
  407. package/examples/jsm/nodes/utils/SplitNode.js +102 -0
  408. package/examples/jsm/{renderers/nodes → nodes}/utils/SpriteSheetUVNode.js +3 -3
  409. package/examples/jsm/nodes/utils/TimerNode.js +30 -65
  410. package/examples/jsm/objects/GroundProjectedEnv.js +186 -0
  411. package/examples/jsm/objects/Lensflare.js +2 -2
  412. package/examples/jsm/objects/LightningStorm.js +4 -4
  413. package/examples/jsm/objects/MarchingCubes.js +5 -9
  414. package/examples/jsm/objects/Reflector.js +19 -8
  415. package/examples/jsm/objects/ReflectorForSSRPass.js +5 -7
  416. package/examples/jsm/objects/Refractor.js +19 -9
  417. package/examples/jsm/objects/ShadowMesh.js +10 -4
  418. package/examples/jsm/objects/Sky.js +2 -2
  419. package/examples/jsm/objects/Water.js +2 -2
  420. package/examples/jsm/objects/Water2.js +2 -2
  421. package/examples/jsm/offscreen/jank.js +5 -5
  422. package/examples/jsm/offscreen/offscreen.js +1 -1
  423. package/examples/jsm/offscreen/scene.js +11 -11
  424. package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +5 -7
  425. package/examples/jsm/postprocessing/AfterimagePass.js +0 -10
  426. package/examples/jsm/postprocessing/BloomPass.js +48 -20
  427. package/examples/jsm/postprocessing/DotScreenPass.js +1 -1
  428. package/examples/jsm/postprocessing/EffectComposer.js +1 -9
  429. package/examples/jsm/postprocessing/LUTPass.js +2 -2
  430. package/examples/jsm/postprocessing/OutlinePass.js +13 -18
  431. package/examples/jsm/postprocessing/SAOPass.js +2 -9
  432. package/examples/jsm/postprocessing/SSAARenderPass.js +1 -4
  433. package/examples/jsm/postprocessing/SSRPass.js +3 -9
  434. package/examples/jsm/postprocessing/TAARenderPass.js +4 -4
  435. package/examples/jsm/postprocessing/UnrealBloomPass.js +3 -8
  436. package/examples/jsm/renderers/CSS2DRenderer.js +23 -21
  437. package/examples/jsm/renderers/CSS3DRenderer.js +41 -36
  438. package/examples/jsm/renderers/Projector.js +103 -152
  439. package/examples/jsm/renderers/SVGRenderer.js +4 -4
  440. package/examples/jsm/renderers/webgl/nodes/SlotNode.js +9 -5
  441. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +398 -183
  442. package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +19 -4
  443. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +4 -4
  444. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +55 -13
  445. package/examples/jsm/renderers/webgpu/WebGPUBindings.js +8 -7
  446. package/examples/jsm/renderers/webgpu/WebGPUBuffer.js +43 -0
  447. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +20 -7
  448. package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +6 -0
  449. package/examples/jsm/renderers/webgpu/WebGPUInfo.js +1 -1
  450. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -7
  451. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +37 -39
  452. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +18 -15
  453. package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +66 -0
  454. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +103 -95
  455. package/examples/jsm/renderers/webgpu/WebGPUSampledTexture.js +14 -14
  456. package/examples/jsm/renderers/webgpu/WebGPUSampler.js +2 -2
  457. package/examples/jsm/renderers/webgpu/WebGPUStorageBuffer.js +5 -8
  458. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +25 -20
  459. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +37 -18
  460. package/examples/jsm/renderers/webgpu/WebGPUUniform.js +14 -14
  461. package/examples/jsm/renderers/webgpu/WebGPUUniformBuffer.js +5 -32
  462. package/examples/jsm/renderers/webgpu/WebGPUUniformsGroup.js +2 -2
  463. package/examples/jsm/renderers/webgpu/WebGPUUtils.js +81 -0
  464. package/examples/jsm/renderers/webgpu/constants.js +3 -2
  465. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +287 -300
  466. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeSampledTexture.js +20 -2
  467. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +24 -14
  468. package/examples/jsm/shaders/BlendShader.js +2 -1
  469. package/examples/jsm/shaders/CopyShader.js +4 -3
  470. package/examples/jsm/shaders/FXAAShader.js +219 -1051
  471. package/examples/jsm/shaders/FreiChenShader.js +1 -1
  472. package/examples/jsm/shaders/HorizontalBlurShader.js +1 -1
  473. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +1 -1
  474. package/examples/jsm/shaders/LuminosityShader.js +1 -1
  475. package/examples/jsm/shaders/MMDToonShader.js +2 -2
  476. package/examples/jsm/shaders/SSRShader.js +3 -3
  477. package/examples/jsm/shaders/ToneMapShader.js +2 -2
  478. package/examples/jsm/utils/BufferGeometryUtils.js +293 -22
  479. package/examples/jsm/utils/GPUStatsPanel.js +1 -1
  480. package/examples/jsm/utils/GeometryUtils.js +17 -25
  481. package/examples/jsm/utils/LDrawUtils.js +24 -17
  482. package/examples/jsm/utils/PackedPhongMaterial.js +0 -1
  483. package/examples/jsm/utils/SceneUtils.js +73 -19
  484. package/examples/jsm/utils/SkeletonUtils.js +1 -1
  485. package/examples/jsm/utils/UVsDebug.js +23 -32
  486. package/examples/jsm/webxr/ARButton.js +14 -4
  487. package/examples/jsm/webxr/OculusHandPointerModel.js +9 -4
  488. package/examples/jsm/webxr/Text2D.js +1 -1
  489. package/examples/jsm/webxr/VRButton.js +16 -8
  490. package/examples/jsm/webxr/XRHandMeshModel.js +3 -7
  491. package/examples/jsm/webxr/XRHandModelFactory.js +3 -0
  492. package/package.json +57 -28
  493. package/src/Three.Legacy.js +164 -1809
  494. package/src/Three.js +9 -5
  495. package/src/animation/AnimationAction.js +6 -5
  496. package/src/animation/AnimationClip.js +2 -2
  497. package/src/animation/AnimationMixer.js +5 -3
  498. package/src/animation/AnimationObjectGroup.js +2 -2
  499. package/src/animation/AnimationUtils.js +204 -199
  500. package/src/animation/KeyframeTrack.js +1 -1
  501. package/src/animation/PropertyBinding.js +32 -23
  502. package/src/audio/PositionalAudio.js +8 -0
  503. package/src/cameras/ArrayCamera.js +2 -3
  504. package/src/cameras/Camera.js +2 -2
  505. package/src/cameras/CubeCamera.js +6 -8
  506. package/src/cameras/OrthographicCamera.js +2 -2
  507. package/src/cameras/PerspectiveCamera.js +2 -2
  508. package/src/constants.js +7 -6
  509. package/src/core/BufferAttribute.js +88 -123
  510. package/src/core/BufferGeometry.js +9 -47
  511. package/src/core/GLBufferAttribute.js +2 -2
  512. package/src/core/InstancedBufferAttribute.js +2 -12
  513. package/src/core/InstancedBufferGeometry.js +2 -2
  514. package/src/core/InstancedInterleavedBuffer.js +2 -2
  515. package/src/core/InterleavedBuffer.js +3 -3
  516. package/src/core/InterleavedBufferAttribute.js +61 -18
  517. package/src/core/Object3D.js +28 -8
  518. package/src/core/Raycaster.js +2 -2
  519. package/src/core/Uniform.js +0 -7
  520. package/src/core/UniformsGroup.js +92 -0
  521. package/src/extras/DataUtils.js +144 -41
  522. package/src/extras/Earcut.js +2 -2
  523. package/src/extras/PMREMGenerator.js +132 -104
  524. package/src/extras/core/CurvePath.js +3 -3
  525. package/src/extras/core/Path.js +1 -0
  526. package/src/extras/core/ShapePath.js +6 -10
  527. package/src/extras/curves/ArcCurve.js +2 -2
  528. package/src/extras/curves/CatmullRomCurve3.js +6 -4
  529. package/src/extras/curves/CubicBezierCurve.js +2 -2
  530. package/src/extras/curves/CubicBezierCurve3.js +2 -2
  531. package/src/extras/curves/EllipseCurve.js +2 -2
  532. package/src/extras/curves/LineCurve.js +2 -2
  533. package/src/extras/curves/LineCurve3.js +2 -1
  534. package/src/extras/curves/QuadraticBezierCurve.js +2 -2
  535. package/src/extras/curves/QuadraticBezierCurve3.js +2 -2
  536. package/src/extras/curves/SplineCurve.js +2 -2
  537. package/src/geometries/BoxGeometry.js +1 -1
  538. package/src/geometries/CapsuleGeometry.js +33 -0
  539. package/src/geometries/CircleGeometry.js +1 -1
  540. package/src/geometries/ConeGeometry.js +1 -1
  541. package/src/geometries/CylinderGeometry.js +2 -1
  542. package/src/geometries/DodecahedronGeometry.js +1 -1
  543. package/src/geometries/EdgesGeometry.js +5 -4
  544. package/src/geometries/ExtrudeGeometry.js +4 -11
  545. package/src/geometries/Geometries.js +1 -0
  546. package/src/geometries/IcosahedronGeometry.js +1 -1
  547. package/src/geometries/LatheGeometry.js +3 -3
  548. package/src/geometries/OctahedronGeometry.js +1 -1
  549. package/src/geometries/PlaneGeometry.js +2 -1
  550. package/src/geometries/PolyhedronGeometry.js +1 -1
  551. package/src/geometries/RingGeometry.js +1 -1
  552. package/src/geometries/ShapeGeometry.js +2 -1
  553. package/src/geometries/SphereGeometry.js +2 -1
  554. package/src/geometries/TetrahedronGeometry.js +1 -1
  555. package/src/geometries/TorusGeometry.js +2 -1
  556. package/src/geometries/TorusKnotGeometry.js +4 -3
  557. package/src/geometries/TubeGeometry.js +2 -1
  558. package/src/geometries/WireframeGeometry.js +4 -2
  559. package/src/helpers/BoxHelper.js +2 -2
  560. package/src/helpers/CameraHelper.js +97 -38
  561. package/src/helpers/DirectionalLightHelper.js +1 -0
  562. package/src/helpers/HemisphereLightHelper.js +1 -0
  563. package/src/helpers/PlaneHelper.js +6 -9
  564. package/src/helpers/PointLightHelper.js +1 -1
  565. package/src/helpers/PolarGridHelper.js +18 -14
  566. package/src/helpers/SkeletonHelper.js +3 -2
  567. package/src/helpers/SpotLightHelper.js +1 -0
  568. package/src/lights/AmbientLight.js +2 -2
  569. package/src/lights/AmbientLightProbe.js +2 -2
  570. package/src/lights/DirectionalLight.js +2 -2
  571. package/src/lights/DirectionalLightShadow.js +2 -2
  572. package/src/lights/HemisphereLight.js +4 -4
  573. package/src/lights/HemisphereLightProbe.js +2 -2
  574. package/src/lights/Light.js +4 -4
  575. package/src/lights/LightProbe.js +2 -2
  576. package/src/lights/PointLight.js +4 -4
  577. package/src/lights/PointLightShadow.js +2 -2
  578. package/src/lights/RectAreaLight.js +2 -2
  579. package/src/lights/SpotLight.js +6 -4
  580. package/src/lights/SpotLightShadow.js +2 -2
  581. package/src/loaders/FileLoader.js +35 -5
  582. package/src/loaders/ImageBitmapLoader.js +2 -2
  583. package/src/loaders/ImageLoader.js +1 -1
  584. package/src/loaders/LoaderUtils.js +1 -1
  585. package/src/loaders/LoadingManager.js +1 -1
  586. package/src/loaders/MaterialLoader.js +55 -8
  587. package/src/loaders/ObjectLoader.js +27 -66
  588. package/src/materials/LineBasicMaterial.js +6 -13
  589. package/src/materials/LineDashedMaterial.js +2 -15
  590. package/src/materials/Material.js +26 -24
  591. package/src/materials/Materials.js +39 -18
  592. package/src/materials/MeshBasicMaterial.js +6 -31
  593. package/src/materials/MeshDepthMaterial.js +2 -22
  594. package/src/materials/MeshDistanceMaterial.js +2 -22
  595. package/src/materials/MeshLambertMaterial.js +34 -35
  596. package/src/materials/MeshMatcapMaterial.js +6 -28
  597. package/src/materials/MeshNormalMaterial.js +2 -26
  598. package/src/materials/MeshPhongMaterial.js +6 -48
  599. package/src/materials/MeshPhysicalMaterial.js +32 -35
  600. package/src/materials/MeshStandardMaterial.js +6 -54
  601. package/src/materials/MeshToonMaterial.js +6 -38
  602. package/src/materials/PointsMaterial.js +6 -15
  603. package/src/materials/RawShaderMaterial.js +2 -2
  604. package/src/materials/ShaderMaterial.js +6 -24
  605. package/src/materials/ShadowMaterial.js +6 -8
  606. package/src/materials/SpriteMaterial.js +6 -12
  607. package/src/math/Box2.js +2 -2
  608. package/src/math/Box3.js +29 -15
  609. package/src/math/Color.js +87 -48
  610. package/src/math/ColorManagement.js +74 -0
  611. package/src/math/Euler.js +16 -14
  612. package/src/math/Interpolant.js +4 -9
  613. package/src/math/MathUtils.js +77 -14
  614. package/src/math/Matrix3.js +2 -8
  615. package/src/math/Matrix4.js +3 -28
  616. package/src/math/Plane.js +2 -2
  617. package/src/math/Quaternion.js +12 -23
  618. package/src/math/Spherical.js +1 -1
  619. package/src/math/SphericalHarmonics3.js +2 -2
  620. package/src/math/Vector2.js +5 -25
  621. package/src/math/Vector3.js +17 -47
  622. package/src/math/Vector4.js +5 -25
  623. package/src/math/interpolants/DiscreteInterpolant.js +1 -1
  624. package/src/objects/Bone.js +2 -2
  625. package/src/objects/Group.js +2 -2
  626. package/src/objects/InstancedMesh.js +4 -4
  627. package/src/objects/Line.js +76 -107
  628. package/src/objects/LineLoop.js +2 -2
  629. package/src/objects/LineSegments.js +15 -23
  630. package/src/objects/Mesh.js +82 -104
  631. package/src/objects/Points.js +32 -54
  632. package/src/objects/SkinnedMesh.js +5 -8
  633. package/src/objects/Sprite.js +4 -4
  634. package/src/renderers/WebGL3DRenderTarget.js +22 -0
  635. package/src/renderers/WebGLArrayRenderTarget.js +22 -0
  636. package/src/renderers/WebGLCubeRenderTarget.js +7 -14
  637. package/src/renderers/WebGLMultipleRenderTargets.js +8 -5
  638. package/src/renderers/WebGLRenderTarget.js +19 -18
  639. package/src/renderers/WebGLRenderer.js +195 -74
  640. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +46 -0
  641. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +3 -5
  642. package/src/renderers/shaders/ShaderChunk/common.glsl.js +7 -5
  643. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +35 -36
  644. package/src/renderers/shaders/ShaderChunk/dithering_pars_fragment.glsl.js +1 -1
  645. package/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +1 -1
  646. package/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +1 -1
  647. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +3 -19
  648. package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +2 -1
  649. package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +121 -0
  650. package/src/renderers/shaders/ShaderChunk/iridescence_pars_fragment.glsl.js +14 -0
  651. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +0 -6
  652. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +48 -1
  653. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +0 -6
  654. package/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -0
  655. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +30 -0
  656. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +26 -1
  657. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +56 -6
  658. package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +24 -0
  659. package/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +1 -1
  660. package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +7 -7
  661. package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +1 -9
  662. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -4
  663. package/src/renderers/shaders/ShaderChunk/output_fragment.glsl.js +1 -1
  664. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +18 -7
  665. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +8 -3
  666. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +9 -6
  667. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
  668. package/src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl.js +16 -31
  669. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +14 -10
  670. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +1 -1
  671. package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +1 -1
  672. package/src/renderers/shaders/ShaderChunk.js +10 -2
  673. package/src/renderers/shaders/ShaderLib/background.glsl.js +8 -0
  674. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +1 -0
  675. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +3 -3
  676. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +23 -50
  677. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -0
  678. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +6 -0
  679. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +1 -1
  680. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +10 -0
  681. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +1 -0
  682. package/src/renderers/shaders/ShaderLib/points.glsl.js +1 -0
  683. package/src/renderers/shaders/ShaderLib.js +37 -31
  684. package/src/renderers/shaders/UniformsLib.js +14 -13
  685. package/src/renderers/shaders/UniformsUtils.js +14 -0
  686. package/src/renderers/webgl/WebGLAttributes.js +6 -6
  687. package/src/renderers/webgl/WebGLBackground.js +7 -4
  688. package/src/renderers/webgl/WebGLBindingStates.js +57 -29
  689. package/src/renderers/webgl/WebGLGeometries.js +2 -2
  690. package/src/renderers/webgl/WebGLLights.js +37 -14
  691. package/src/renderers/webgl/WebGLMaterials.js +72 -187
  692. package/src/renderers/webgl/WebGLMorphtargets.js +43 -39
  693. package/src/renderers/webgl/WebGLProgram.js +63 -30
  694. package/src/renderers/webgl/WebGLPrograms.js +97 -104
  695. package/src/renderers/webgl/WebGLRenderLists.js +5 -4
  696. package/src/renderers/webgl/WebGLRenderStates.js +5 -4
  697. package/src/renderers/webgl/WebGLShaderCache.js +12 -8
  698. package/src/renderers/webgl/WebGLShadowMap.js +13 -20
  699. package/src/renderers/webgl/WebGLState.js +49 -2
  700. package/src/renderers/webgl/WebGLTextures.js +576 -386
  701. package/src/renderers/webgl/WebGLUniforms.js +81 -82
  702. package/src/renderers/webgl/WebGLUniformsGroups.js +372 -0
  703. package/src/renderers/webgl/WebGLUtils.js +14 -3
  704. package/src/renderers/webvr/WebVRManager.js +42 -9
  705. package/src/renderers/webvr/WebVRUtils.js +1 -1
  706. package/src/renderers/webxr/WebXRController.js +45 -37
  707. package/src/renderers/webxr/WebXRManager.js +110 -68
  708. package/src/scenes/Fog.js +2 -2
  709. package/src/scenes/FogExp2.js +2 -2
  710. package/src/scenes/Scene.js +18 -5
  711. package/src/textures/CanvasTexture.js +2 -2
  712. package/src/textures/CompressedTexture.js +2 -2
  713. package/src/textures/CubeTexture.js +2 -2
  714. package/src/textures/{DataTexture3D.js → Data3DTexture.js} +4 -4
  715. package/src/textures/{DataTexture2DArray.js → DataArrayTexture.js} +4 -4
  716. package/src/textures/DataTexture.js +2 -5
  717. package/src/textures/DepthTexture.js +5 -5
  718. package/src/textures/FramebufferTexture.js +2 -2
  719. package/src/textures/Source.js +123 -0
  720. package/src/textures/Texture.js +27 -97
  721. package/src/textures/VideoTexture.js +2 -2
  722. package/src/utils.js +15 -1
  723. package/examples/js/controls/experimental/CameraControls.js +0 -1044
  724. package/examples/js/csm/Frustum.js +0 -133
  725. package/examples/js/deprecated/Geometry.js +0 -1656
  726. package/examples/js/loaders/KTX2Loader.js +0 -566
  727. package/examples/js/loaders/VRMLoader.js +0 -72
  728. package/examples/js/objects/ReflectorRTT.js +0 -16
  729. package/examples/js/postprocessing/SSRrPass.js +0 -494
  730. package/examples/js/shaders/SSRrShader.js +0 -336
  731. package/examples/jsm/controls/experimental/CameraControls.js +0 -1248
  732. package/examples/jsm/deprecated/Geometry.js +0 -1869
  733. package/examples/jsm/libs/opentype.module.min.js +0 -119
  734. package/examples/jsm/loaders/NodeMaterialLoader.js +0 -263
  735. package/examples/jsm/loaders/VRMLoader.js +0 -78
  736. package/examples/jsm/nodes/accessors/ColorsNode.js +0 -56
  737. package/examples/jsm/nodes/accessors/LightNode.js +0 -60
  738. package/examples/jsm/nodes/accessors/ReflectNode.js +0 -157
  739. package/examples/jsm/nodes/accessors/ResolutionNode.js +0 -64
  740. package/examples/jsm/nodes/accessors/ScreenUVNode.js +0 -64
  741. package/examples/jsm/nodes/core/NodeLib.js +0 -64
  742. package/examples/jsm/nodes/core/StructNode.js +0 -106
  743. package/examples/jsm/nodes/effects/BlurNode.js +0 -171
  744. package/examples/jsm/nodes/effects/ColorAdjustmentNode.js +0 -140
  745. package/examples/jsm/nodes/effects/LuminanceNode.js +0 -75
  746. package/examples/jsm/nodes/inputs/BoolNode.js +0 -51
  747. package/examples/jsm/nodes/inputs/ColorNode.js +0 -58
  748. package/examples/jsm/nodes/inputs/CubeTextureNode.js +0 -108
  749. package/examples/jsm/nodes/inputs/FloatNode.js +0 -51
  750. package/examples/jsm/nodes/inputs/IntNode.js +0 -51
  751. package/examples/jsm/nodes/inputs/Matrix3Node.js +0 -63
  752. package/examples/jsm/nodes/inputs/Matrix4Node.js +0 -63
  753. package/examples/jsm/nodes/inputs/PropertyNode.js +0 -47
  754. package/examples/jsm/nodes/inputs/RTTNode.js +0 -157
  755. package/examples/jsm/nodes/inputs/ReflectorNode.js +0 -90
  756. package/examples/jsm/nodes/inputs/ScreenNode.js +0 -28
  757. package/examples/jsm/nodes/inputs/TextureNode.js +0 -116
  758. package/examples/jsm/nodes/inputs/Vector2Node.js +0 -57
  759. package/examples/jsm/nodes/inputs/Vector3Node.js +0 -58
  760. package/examples/jsm/nodes/inputs/Vector4Node.js +0 -59
  761. package/examples/jsm/nodes/materials/BasicNodeMaterial.js +0 -26
  762. package/examples/jsm/nodes/materials/PhongNodeMaterial.js +0 -36
  763. package/examples/jsm/nodes/materials/StandardNodeMaterial.js +0 -40
  764. package/examples/jsm/nodes/materials/nodes/BasicNode.js +0 -154
  765. package/examples/jsm/nodes/materials/nodes/MeshStandardNode.js +0 -116
  766. package/examples/jsm/nodes/materials/nodes/PhongNode.js +0 -409
  767. package/examples/jsm/nodes/materials/nodes/RawNode.js +0 -62
  768. package/examples/jsm/nodes/materials/nodes/SpriteNode.js +0 -236
  769. package/examples/jsm/nodes/materials/nodes/StandardNode.js +0 -609
  770. package/examples/jsm/nodes/misc/BumpMapNode.js +0 -163
  771. package/examples/jsm/nodes/misc/NormalMapNode.js +0 -138
  772. package/examples/jsm/nodes/misc/TextureCubeNode.js +0 -86
  773. package/examples/jsm/nodes/misc/TextureCubeUVNode.js +0 -280
  774. package/examples/jsm/nodes/postprocessing/NodePass.js +0 -93
  775. package/examples/jsm/nodes/postprocessing/NodePostProcessing.js +0 -148
  776. package/examples/jsm/nodes/procedural/Fractal3DNode.js +0 -104
  777. package/examples/jsm/nodes/procedural/Noise2DNode.js +0 -149
  778. package/examples/jsm/nodes/procedural/Noise3DNode.js +0 -141
  779. package/examples/jsm/nodes/utils/BypassNode.js +0 -85
  780. package/examples/jsm/nodes/utils/ColorSpaceNode.js +0 -145
  781. package/examples/jsm/nodes/utils/MaxMIPLevelNode.js +0 -56
  782. package/examples/jsm/nodes/utils/RemapNode.js +0 -155
  783. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -101
  784. package/examples/jsm/nodes/utils/SubSlotNode.js +0 -77
  785. package/examples/jsm/nodes/utils/SwitchNode.js +0 -103
  786. package/examples/jsm/nodes/utils/UVTransformNode.js +0 -66
  787. package/examples/jsm/nodes/utils/VelocityNode.js +0 -170
  788. package/examples/jsm/objects/ReflectorRTT.js +0 -15
  789. package/examples/jsm/package.json +0 -3
  790. package/examples/jsm/postprocessing/SSRrPass.js +0 -579
  791. package/examples/jsm/renderers/nodes/Nodes.js +0 -166
  792. package/examples/jsm/renderers/nodes/ShaderNode.js +0 -373
  793. package/examples/jsm/renderers/nodes/accessors/CameraNode.js +0 -68
  794. package/examples/jsm/renderers/nodes/accessors/NormalNode.js +0 -63
  795. package/examples/jsm/renderers/nodes/accessors/PositionNode.js +0 -67
  796. package/examples/jsm/renderers/nodes/accessors/ReferenceNode.js +0 -91
  797. package/examples/jsm/renderers/nodes/accessors/SkinningNode.js +0 -107
  798. package/examples/jsm/renderers/nodes/accessors/UVNode.js +0 -25
  799. package/examples/jsm/renderers/nodes/core/ArrayInputNode.js +0 -23
  800. package/examples/jsm/renderers/nodes/core/AttributeNode.js +0 -54
  801. package/examples/jsm/renderers/nodes/core/CodeNode.js +0 -78
  802. package/examples/jsm/renderers/nodes/core/ExpressionNode.js +0 -32
  803. package/examples/jsm/renderers/nodes/core/FunctionCallNode.js +0 -67
  804. package/examples/jsm/renderers/nodes/core/FunctionNode.js +0 -87
  805. package/examples/jsm/renderers/nodes/core/InputNode.js +0 -66
  806. package/examples/jsm/renderers/nodes/core/Node.js +0 -104
  807. package/examples/jsm/renderers/nodes/core/NodeBuilder.js +0 -633
  808. package/examples/jsm/renderers/nodes/core/NodeFrame.js +0 -59
  809. package/examples/jsm/renderers/nodes/core/NodeUniform.js +0 -28
  810. package/examples/jsm/renderers/nodes/core/TempNode.js +0 -43
  811. package/examples/jsm/renderers/nodes/core/VarNode.js +0 -51
  812. package/examples/jsm/renderers/nodes/display/NormalMapNode.js +0 -87
  813. package/examples/jsm/renderers/nodes/functions/BSDFs.js +0 -122
  814. package/examples/jsm/renderers/nodes/functions/PhysicalMaterialFunctions.js +0 -27
  815. package/examples/jsm/renderers/nodes/inputs/BufferNode.js +0 -25
  816. package/examples/jsm/renderers/nodes/inputs/ColorNode.js +0 -18
  817. package/examples/jsm/renderers/nodes/inputs/FloatNode.js +0 -17
  818. package/examples/jsm/renderers/nodes/inputs/IntNode.js +0 -17
  819. package/examples/jsm/renderers/nodes/inputs/Matrix3Node.js +0 -18
  820. package/examples/jsm/renderers/nodes/inputs/Matrix4Node.js +0 -18
  821. package/examples/jsm/renderers/nodes/inputs/TextureNode.js +0 -74
  822. package/examples/jsm/renderers/nodes/inputs/Vector2Node.js +0 -18
  823. package/examples/jsm/renderers/nodes/inputs/Vector3Node.js +0 -18
  824. package/examples/jsm/renderers/nodes/inputs/Vector4Node.js +0 -18
  825. package/examples/jsm/renderers/nodes/lights/LightContextNode.js +0 -59
  826. package/examples/jsm/renderers/nodes/lights/LightNode.js +0 -79
  827. package/examples/jsm/renderers/nodes/lights/LightsNode.js +0 -44
  828. package/examples/jsm/renderers/nodes/materials/Materials.js +0 -11
  829. package/examples/jsm/renderers/nodes/materials/MeshStandardNodeMaterial.js +0 -63
  830. package/examples/jsm/renderers/nodes/math/CondNode.js +0 -60
  831. package/examples/jsm/renderers/nodes/math/MathNode.js +0 -242
  832. package/examples/jsm/renderers/nodes/math/OperatorNode.js +0 -174
  833. package/examples/jsm/renderers/nodes/procedural/CheckerNode.js +0 -36
  834. package/examples/jsm/renderers/nodes/utils/ConvertNode.js +0 -33
  835. package/examples/jsm/renderers/nodes/utils/JoinNode.js +0 -42
  836. package/examples/jsm/renderers/nodes/utils/SplitNode.js +0 -55
  837. package/examples/jsm/renderers/nodes/utils/TimerNode.js +0 -47
  838. package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +0 -45
  839. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.js +0 -20
  840. package/examples/jsm/shaders/SSRrShader.js +0 -307
  841. package/src/renderers/WebGLMultisampleRenderTarget.js +0 -33
  842. package/src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl.js +0 -122
@@ -43,11 +43,21 @@
43
43
 
44
44
  return new GLTFMaterialsIorExtension( parser );
45
45
 
46
+ } );
47
+ this.register( function ( parser ) {
48
+
49
+ return new GLTFMaterialsEmissiveStrengthExtension( parser );
50
+
46
51
  } );
47
52
  this.register( function ( parser ) {
48
53
 
49
54
  return new GLTFMaterialsSpecularExtension( parser );
50
55
 
56
+ } );
57
+ this.register( function ( parser ) {
58
+
59
+ return new GLTFMaterialsIridescenceExtension( parser );
60
+
51
61
  } );
52
62
  this.register( function ( parser ) {
53
63
 
@@ -355,11 +365,13 @@
355
365
  KHR_MATERIALS_SHEEN: 'KHR_materials_sheen',
356
366
  KHR_MATERIALS_SPECULAR: 'KHR_materials_specular',
357
367
  KHR_MATERIALS_TRANSMISSION: 'KHR_materials_transmission',
368
+ KHR_MATERIALS_IRIDESCENCE: 'KHR_materials_iridescence',
358
369
  KHR_MATERIALS_UNLIT: 'KHR_materials_unlit',
359
370
  KHR_MATERIALS_VOLUME: 'KHR_materials_volume',
360
371
  KHR_TEXTURE_BASISU: 'KHR_texture_basisu',
361
372
  KHR_TEXTURE_TRANSFORM: 'KHR_texture_transform',
362
373
  KHR_MESH_QUANTIZATION: 'KHR_mesh_quantization',
374
+ KHR_MATERIALS_EMISSIVE_STRENGTH: 'KHR_materials_emissive_strength',
363
375
  EXT_TEXTURE_WEBP: 'EXT_texture_webp',
364
376
  EXT_MESHOPT_COMPRESSION: 'EXT_meshopt_compression'
365
377
  };
@@ -518,7 +530,7 @@
518
530
 
519
531
  if ( metallicRoughness.baseColorTexture !== undefined ) {
520
532
 
521
- pending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) );
533
+ pending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture, THREE.sRGBEncoding ) );
522
534
 
523
535
  }
524
536
 
@@ -528,6 +540,46 @@
528
540
 
529
541
  }
530
542
 
543
+ }
544
+ /**
545
+ * Materials Emissive Strength Extension
546
+ *
547
+ * Specification: https://github.com/KhronosGroup/glTF/blob/5768b3ce0ef32bc39cdf1bef10b948586635ead3/extensions/2.0/Khronos/KHR_materials_emissive_strength/README.md
548
+ */
549
+
550
+
551
+ class GLTFMaterialsEmissiveStrengthExtension {
552
+
553
+ constructor( parser ) {
554
+
555
+ this.parser = parser;
556
+ this.name = EXTENSIONS.KHR_MATERIALS_EMISSIVE_STRENGTH;
557
+
558
+ }
559
+
560
+ extendMaterialParams( materialIndex, materialParams ) {
561
+
562
+ const parser = this.parser;
563
+ const materialDef = parser.json.materials[ materialIndex ];
564
+
565
+ if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {
566
+
567
+ return Promise.resolve();
568
+
569
+ }
570
+
571
+ const emissiveStrength = materialDef.extensions[ this.name ].emissiveStrength;
572
+
573
+ if ( emissiveStrength !== undefined ) {
574
+
575
+ materialParams.emissiveIntensity = emissiveStrength;
576
+
577
+ }
578
+
579
+ return Promise.resolve();
580
+
581
+ }
582
+
531
583
  }
532
584
  /**
533
585
  * Clearcoat Materials Extension
@@ -609,6 +661,92 @@
609
661
 
610
662
  }
611
663
 
664
+ }
665
+ /**
666
+ * Iridescence Materials Extension
667
+ *
668
+ * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_iridescence
669
+ */
670
+
671
+
672
+ class GLTFMaterialsIridescenceExtension {
673
+
674
+ constructor( parser ) {
675
+
676
+ this.parser = parser;
677
+ this.name = EXTENSIONS.KHR_MATERIALS_IRIDESCENCE;
678
+
679
+ }
680
+
681
+ getMaterialType( materialIndex ) {
682
+
683
+ const parser = this.parser;
684
+ const materialDef = parser.json.materials[ materialIndex ];
685
+ if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;
686
+ return THREE.MeshPhysicalMaterial;
687
+
688
+ }
689
+
690
+ extendMaterialParams( materialIndex, materialParams ) {
691
+
692
+ const parser = this.parser;
693
+ const materialDef = parser.json.materials[ materialIndex ];
694
+
695
+ if ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {
696
+
697
+ return Promise.resolve();
698
+
699
+ }
700
+
701
+ const pending = [];
702
+ const extension = materialDef.extensions[ this.name ];
703
+
704
+ if ( extension.iridescenceFactor !== undefined ) {
705
+
706
+ materialParams.iridescence = extension.iridescenceFactor;
707
+
708
+ }
709
+
710
+ if ( extension.iridescenceTexture !== undefined ) {
711
+
712
+ pending.push( parser.assignTexture( materialParams, 'iridescenceMap', extension.iridescenceTexture ) );
713
+
714
+ }
715
+
716
+ if ( extension.iridescenceIor !== undefined ) {
717
+
718
+ materialParams.iridescenceIOR = extension.iridescenceIor;
719
+
720
+ }
721
+
722
+ if ( materialParams.iridescenceThicknessRange === undefined ) {
723
+
724
+ materialParams.iridescenceThicknessRange = [ 100, 400 ];
725
+
726
+ }
727
+
728
+ if ( extension.iridescenceThicknessMinimum !== undefined ) {
729
+
730
+ materialParams.iridescenceThicknessRange[ 0 ] = extension.iridescenceThicknessMinimum;
731
+
732
+ }
733
+
734
+ if ( extension.iridescenceThicknessMaximum !== undefined ) {
735
+
736
+ materialParams.iridescenceThicknessRange[ 1 ] = extension.iridescenceThicknessMaximum;
737
+
738
+ }
739
+
740
+ if ( extension.iridescenceThicknessTexture !== undefined ) {
741
+
742
+ pending.push( parser.assignTexture( materialParams, 'iridescenceThicknessMap', extension.iridescenceThicknessTexture ) );
743
+
744
+ }
745
+
746
+ return Promise.all( pending );
747
+
748
+ }
749
+
612
750
  }
613
751
  /**
614
752
  * Sheen Materials Extension
@@ -666,7 +804,7 @@
666
804
 
667
805
  if ( extension.sheenColorTexture !== undefined ) {
668
806
 
669
- pending.push( parser.assignTexture( materialParams, 'sheenColorMap', extension.sheenColorTexture ) );
807
+ pending.push( parser.assignTexture( materialParams, 'sheenColorMap', extension.sheenColorTexture, THREE.sRGBEncoding ) );
670
808
 
671
809
  }
672
810
 
@@ -886,11 +1024,7 @@
886
1024
 
887
1025
  if ( extension.specularColorTexture !== undefined ) {
888
1026
 
889
- pending.push( parser.assignTexture( materialParams, 'specularColorMap', extension.specularColorTexture ).then( function ( texture ) {
890
-
891
- texture.encoding = THREE.sRGBEncoding;
892
-
893
- } ) );
1027
+ pending.push( parser.assignTexture( materialParams, 'specularColorMap', extension.specularColorTexture, THREE.sRGBEncoding ) );
894
1028
 
895
1029
  }
896
1030
 
@@ -928,7 +1062,6 @@
928
1062
  }
929
1063
 
930
1064
  const extension = textureDef.extensions[ this.name ];
931
- const source = json.images[ extension.source ];
932
1065
  const loader = parser.options.ktx2Loader;
933
1066
 
934
1067
  if ( ! loader ) {
@@ -946,7 +1079,7 @@
946
1079
 
947
1080
  }
948
1081
 
949
- return parser.loadTextureImage( textureIndex, source, loader );
1082
+ return parser.loadTextureImage( textureIndex, extension.source, loader );
950
1083
 
951
1084
  }
952
1085
 
@@ -994,7 +1127,7 @@
994
1127
 
995
1128
  return this.detectSupport().then( function ( isSupported ) {
996
1129
 
997
- if ( isSupported ) return parser.loadTextureImage( textureIndex, source, loader );
1130
+ if ( isSupported ) return parser.loadTextureImage( textureIndex, extension.source, loader );
998
1131
 
999
1132
  if ( json.extensionsRequired && json.extensionsRequired.indexOf( name ) >= 0 ) {
1000
1133
 
@@ -1077,16 +1210,34 @@
1077
1210
 
1078
1211
  }
1079
1212
 
1080
- return Promise.all( [ buffer, decoder.ready ] ).then( function ( res ) {
1213
+ return buffer.then( function ( res ) {
1081
1214
 
1082
1215
  const byteOffset = extensionDef.byteOffset || 0;
1083
1216
  const byteLength = extensionDef.byteLength || 0;
1084
1217
  const count = extensionDef.count;
1085
1218
  const stride = extensionDef.byteStride;
1086
- const result = new ArrayBuffer( count * stride );
1087
- const source = new Uint8Array( res[ 0 ], byteOffset, byteLength );
1088
- decoder.decodeGltfBuffer( new Uint8Array( result ), count, stride, source, extensionDef.mode, extensionDef.filter );
1089
- return result;
1219
+ const source = new Uint8Array( res, byteOffset, byteLength );
1220
+
1221
+ if ( decoder.decodeGltfBufferAsync ) {
1222
+
1223
+ return decoder.decodeGltfBufferAsync( count, stride, source, extensionDef.mode, extensionDef.filter ).then( function ( res ) {
1224
+
1225
+ return res.buffer;
1226
+
1227
+ } );
1228
+
1229
+ } else {
1230
+
1231
+ // Support for MeshoptDecoder 0.18 or earlier, without decodeGltfBufferAsync
1232
+ return decoder.ready.then( function () {
1233
+
1234
+ const result = new ArrayBuffer( count * stride );
1235
+ decoder.decodeGltfBuffer( new Uint8Array( result ), count, stride, source, extensionDef.mode, extensionDef.filter );
1236
+ return result;
1237
+
1238
+ } );
1239
+
1240
+ }
1090
1241
 
1091
1242
  } );
1092
1243
 
@@ -1219,7 +1370,7 @@
1219
1370
 
1220
1371
  const accessorDef = json.accessors[ primitive.attributes[ attributeName ] ];
1221
1372
  const componentType = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];
1222
- attributeTypeMap[ threeAttributeName ] = componentType;
1373
+ attributeTypeMap[ threeAttributeName ] = componentType.name;
1223
1374
  attributeNormalizedMap[ threeAttributeName ] = accessorDef.normalized === true;
1224
1375
 
1225
1376
  }
@@ -1462,7 +1613,7 @@
1462
1613
  constructor() {
1463
1614
 
1464
1615
  this.name = EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS;
1465
- this.specularGlossinessParams = [ 'color', 'map', 'lightMap', 'lightMapIntensity', 'aoMap', 'aoMapIntensity', 'emissive', 'emissiveIntensity', 'emissiveMap', 'bumpMap', 'bumpScale', 'normalMap', 'normalMapType', 'displacementMap', 'displacementScale', 'displacementBias', 'specularMap', 'specular', 'glossinessMap', 'glossiness', 'alphaMap', 'envMap', 'envMapIntensity', 'refractionRatio' ];
1616
+ this.specularGlossinessParams = [ 'color', 'map', 'lightMap', 'lightMapIntensity', 'aoMap', 'aoMapIntensity', 'emissive', 'emissiveIntensity', 'emissiveMap', 'bumpMap', 'bumpScale', 'normalMap', 'normalMapType', 'displacementMap', 'displacementScale', 'displacementBias', 'specularMap', 'specular', 'glossinessMap', 'glossiness', 'alphaMap', 'envMap', 'envMapIntensity' ];
1466
1617
 
1467
1618
  }
1468
1619
 
@@ -1489,7 +1640,7 @@
1489
1640
 
1490
1641
  if ( pbrSpecularGlossiness.diffuseTexture !== undefined ) {
1491
1642
 
1492
- pending.push( parser.assignTexture( materialParams, 'map', pbrSpecularGlossiness.diffuseTexture ) );
1643
+ pending.push( parser.assignTexture( materialParams, 'map', pbrSpecularGlossiness.diffuseTexture, THREE.sRGBEncoding ) );
1493
1644
 
1494
1645
  }
1495
1646
 
@@ -1507,7 +1658,7 @@
1507
1658
 
1508
1659
  const specGlossMapDef = pbrSpecularGlossiness.specularGlossinessTexture;
1509
1660
  pending.push( parser.assignTexture( materialParams, 'glossinessMap', specGlossMapDef ) );
1510
- pending.push( parser.assignTexture( materialParams, 'specularMap', specGlossMapDef ) );
1661
+ pending.push( parser.assignTexture( materialParams, 'specularMap', specGlossMapDef, THREE.sRGBEncoding ) );
1511
1662
 
1512
1663
  }
1513
1664
 
@@ -1526,7 +1677,7 @@
1526
1677
  material.aoMap = materialParams.aoMap === undefined ? null : materialParams.aoMap;
1527
1678
  material.aoMapIntensity = 1.0;
1528
1679
  material.emissive = materialParams.emissive;
1529
- material.emissiveIntensity = 1.0;
1680
+ material.emissiveIntensity = materialParams.emissiveIntensity === undefined ? 1.0 : materialParams.emissiveIntensity;
1530
1681
  material.emissiveMap = materialParams.emissiveMap === undefined ? null : materialParams.emissiveMap;
1531
1682
  material.bumpMap = materialParams.bumpMap === undefined ? null : materialParams.bumpMap;
1532
1683
  material.bumpScale = 1;
@@ -1543,7 +1694,6 @@
1543
1694
  material.alphaMap = null;
1544
1695
  material.envMap = materialParams.envMap === undefined ? null : materialParams.envMap;
1545
1696
  material.envMapIntensity = 1.0;
1546
- material.refractionRatio = 0.98;
1547
1697
  return material;
1548
1698
 
1549
1699
  }
@@ -1601,47 +1751,44 @@
1601
1751
 
1602
1752
  }
1603
1753
 
1604
- }
1754
+ interpolate_( i1, t0, t, t1 ) {
1605
1755
 
1606
- GLTFCubicSplineInterpolant.prototype.beforeStart_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;
1607
- GLTFCubicSplineInterpolant.prototype.afterEnd_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;
1756
+ const result = this.resultBuffer;
1757
+ const values = this.sampleValues;
1758
+ const stride = this.valueSize;
1759
+ const stride2 = stride * 2;
1760
+ const stride3 = stride * 3;
1761
+ const td = t1 - t0;
1762
+ const p = ( t - t0 ) / td;
1763
+ const pp = p * p;
1764
+ const ppp = pp * p;
1765
+ const offset1 = i1 * stride3;
1766
+ const offset0 = offset1 - stride3;
1767
+ const s2 = - 2 * ppp + 3 * pp;
1768
+ const s3 = ppp - pp;
1769
+ const s0 = 1 - s2;
1770
+ const s1 = s3 - pp + p; // Layout of keyframe output values for CUBICSPLINE animations:
1771
+ // [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ]
1608
1772
 
1609
- GLTFCubicSplineInterpolant.prototype.interpolate_ = function ( i1, t0, t, t1 ) {
1773
+ for ( let i = 0; i !== stride; i ++ ) {
1610
1774
 
1611
- const result = this.resultBuffer;
1612
- const values = this.sampleValues;
1613
- const stride = this.valueSize;
1614
- const stride2 = stride * 2;
1615
- const stride3 = stride * 3;
1616
- const td = t1 - t0;
1617
- const p = ( t - t0 ) / td;
1618
- const pp = p * p;
1619
- const ppp = pp * p;
1620
- const offset1 = i1 * stride3;
1621
- const offset0 = offset1 - stride3;
1622
- const s2 = - 2 * ppp + 3 * pp;
1623
- const s3 = ppp - pp;
1624
- const s0 = 1 - s2;
1625
- const s1 = s3 - pp + p; // Layout of keyframe output values for CUBICSPLINE animations:
1626
- // [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ]
1775
+ const p0 = values[ offset0 + i + stride ]; // splineVertex_k
1627
1776
 
1628
- for ( let i = 0; i !== stride; i ++ ) {
1777
+ const m0 = values[ offset0 + i + stride2 ] * td; // outTangent_k * (t_k+1 - t_k)
1629
1778
 
1630
- const p0 = values[ offset0 + i + stride ]; // splineVertex_k
1779
+ const p1 = values[ offset1 + i + stride ]; // splineVertex_k+1
1631
1780
 
1632
- const m0 = values[ offset0 + i + stride2 ] * td; // outTangent_k * (t_k+1 - t_k)
1781
+ const m1 = values[ offset1 + i ] * td; // inTangent_k+1 * (t_k+1 - t_k)
1633
1782
 
1634
- const p1 = values[ offset1 + i + stride ]; // splineVertex_k+1
1783
+ result[ i ] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;
1635
1784
 
1636
- const m1 = values[ offset1 + i ] * td; // inTangent_k+1 * (t_k+1 - t_k)
1785
+ }
1637
1786
 
1638
- result[ i ] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;
1787
+ return result;
1639
1788
 
1640
1789
  }
1641
1790
 
1642
- return result;
1643
-
1644
- };
1791
+ }
1645
1792
 
1646
1793
  const _q = new THREE.Quaternion();
1647
1794
 
@@ -1822,19 +1969,22 @@
1822
1969
 
1823
1970
  let hasMorphPosition = false;
1824
1971
  let hasMorphNormal = false;
1972
+ let hasMorphColor = false;
1825
1973
 
1826
1974
  for ( let i = 0, il = targets.length; i < il; i ++ ) {
1827
1975
 
1828
1976
  const target = targets[ i ];
1829
1977
  if ( target.POSITION !== undefined ) hasMorphPosition = true;
1830
1978
  if ( target.NORMAL !== undefined ) hasMorphNormal = true;
1831
- if ( hasMorphPosition && hasMorphNormal ) break;
1979
+ if ( target.COLOR_0 !== undefined ) hasMorphColor = true;
1980
+ if ( hasMorphPosition && hasMorphNormal && hasMorphColor ) break;
1832
1981
 
1833
1982
  }
1834
1983
 
1835
- if ( ! hasMorphPosition && ! hasMorphNormal ) return Promise.resolve( geometry );
1984
+ if ( ! hasMorphPosition && ! hasMorphNormal && ! hasMorphColor ) return Promise.resolve( geometry );
1836
1985
  const pendingPositionAccessors = [];
1837
1986
  const pendingNormalAccessors = [];
1987
+ const pendingColorAccessors = [];
1838
1988
 
1839
1989
  for ( let i = 0, il = targets.length; i < il; i ++ ) {
1840
1990
 
@@ -1854,14 +2004,23 @@
1854
2004
 
1855
2005
  }
1856
2006
 
2007
+ if ( hasMorphColor ) {
2008
+
2009
+ const pendingAccessor = target.COLOR_0 !== undefined ? parser.getDependency( 'accessor', target.COLOR_0 ) : geometry.attributes.color;
2010
+ pendingColorAccessors.push( pendingAccessor );
2011
+
2012
+ }
2013
+
1857
2014
  }
1858
2015
 
1859
- return Promise.all( [ Promise.all( pendingPositionAccessors ), Promise.all( pendingNormalAccessors ) ] ).then( function ( accessors ) {
2016
+ return Promise.all( [ Promise.all( pendingPositionAccessors ), Promise.all( pendingNormalAccessors ), Promise.all( pendingColorAccessors ) ] ).then( function ( accessors ) {
1860
2017
 
1861
2018
  const morphPositions = accessors[ 0 ];
1862
2019
  const morphNormals = accessors[ 1 ];
2020
+ const morphColors = accessors[ 2 ];
1863
2021
  if ( hasMorphPosition ) geometry.morphAttributes.position = morphPositions;
1864
2022
  if ( hasMorphNormal ) geometry.morphAttributes.normal = morphNormals;
2023
+ if ( hasMorphColor ) geometry.morphAttributes.color = morphColors;
1865
2024
  geometry.morphTargetsRelative = true;
1866
2025
  return geometry;
1867
2026
 
@@ -1970,6 +2129,14 @@
1970
2129
 
1971
2130
  }
1972
2131
 
2132
+ }
2133
+
2134
+ function getImageURIMimeType( uri ) {
2135
+
2136
+ if ( uri.search( /\.jpe?g($|\?)/i ) > 0 || uri.search( /^data\:image\/jpeg/ ) === 0 ) return 'image/jpeg';
2137
+ if ( uri.search( /\.webp($|\?)/i ) > 0 || uri.search( /^data\:image\/webp/ ) === 0 ) return 'image/webp';
2138
+ return 'image/png';
2139
+
1973
2140
  }
1974
2141
  /* GLTF PARSER */
1975
2142
 
@@ -2001,18 +2168,23 @@
2001
2168
  refs: {},
2002
2169
  uses: {}
2003
2170
  };
2171
+ this.sourceCache = {};
2004
2172
  this.textureCache = {}; // Track node names, to ensure no duplicates
2005
2173
 
2006
2174
  this.nodeNamesUsed = {}; // Use an THREE.ImageBitmapLoader if imageBitmaps are supported. Moves much of the
2007
2175
  // expensive work of uploading a texture to the GPU off the main thread.
2008
2176
 
2009
- if ( typeof createImageBitmap !== 'undefined' && /Firefox|Safari/.test( navigator.userAgent ) === false ) {
2177
+ const isSafari = /^((?!chrome|android).)*safari/i.test( navigator.userAgent ) === true;
2178
+ const isFirefox = navigator.userAgent.indexOf( 'Firefox' ) > - 1;
2179
+ const firefoxVersion = isFirefox ? navigator.userAgent.match( /Firefox\/([0-9]+)\./ )[ 1 ] : - 1;
2010
2180
 
2011
- this.textureLoader = new THREE.ImageBitmapLoader( this.options.manager );
2181
+ if ( typeof createImageBitmap === 'undefined' || isSafari || isFirefox && firefoxVersion < 98 ) {
2182
+
2183
+ this.textureLoader = new THREE.TextureLoader( this.options.manager );
2012
2184
 
2013
2185
  } else {
2014
2186
 
2015
- this.textureLoader = new THREE.TextureLoader( this.options.manager );
2187
+ this.textureLoader = new THREE.ImageBitmapLoader( this.options.manager );
2016
2188
 
2017
2189
  }
2018
2190
 
@@ -2302,7 +2474,11 @@
2302
2474
  break;
2303
2475
 
2304
2476
  case 'animation':
2305
- dependency = this.loadAnimation( index );
2477
+ dependency = this._invokeOne( function ( ext ) {
2478
+
2479
+ return ext.loadAnimation && ext.loadAnimation( index );
2480
+
2481
+ } );
2306
2482
  break;
2307
2483
 
2308
2484
  case 'camera':
@@ -2540,27 +2716,28 @@
2540
2716
  const json = this.json;
2541
2717
  const options = this.options;
2542
2718
  const textureDef = json.textures[ textureIndex ];
2543
- const source = json.images[ textureDef.source ];
2719
+ const sourceIndex = textureDef.source;
2720
+ const sourceDef = json.images[ sourceIndex ];
2544
2721
  let loader = this.textureLoader;
2545
2722
 
2546
- if ( source.uri ) {
2723
+ if ( sourceDef.uri ) {
2547
2724
 
2548
- const handler = options.manager.getHandler( source.uri );
2725
+ const handler = options.manager.getHandler( sourceDef.uri );
2549
2726
  if ( handler !== null ) loader = handler;
2550
2727
 
2551
2728
  }
2552
2729
 
2553
- return this.loadTextureImage( textureIndex, source, loader );
2730
+ return this.loadTextureImage( textureIndex, sourceIndex, loader );
2554
2731
 
2555
2732
  }
2556
2733
 
2557
- loadTextureImage( textureIndex, source, loader ) {
2734
+ loadTextureImage( textureIndex, sourceIndex, loader ) {
2558
2735
 
2559
2736
  const parser = this;
2560
2737
  const json = this.json;
2561
- const options = this.options;
2562
2738
  const textureDef = json.textures[ textureIndex ];
2563
- const cacheKey = ( source.uri || source.bufferView ) + ':' + textureDef.sampler;
2739
+ const sourceDef = json.images[ sourceIndex ];
2740
+ const cacheKey = ( sourceDef.uri || sourceDef.bufferView ) + ':' + textureDef.sampler;
2564
2741
 
2565
2742
  if ( this.textureCache[ cacheKey ] ) {
2566
2743
 
@@ -2569,27 +2746,65 @@
2569
2746
 
2570
2747
  }
2571
2748
 
2749
+ const promise = this.loadImageSource( sourceIndex, loader ).then( function ( texture ) {
2750
+
2751
+ texture.flipY = false;
2752
+ if ( textureDef.name ) texture.name = textureDef.name;
2753
+ const samplers = json.samplers || {};
2754
+ const sampler = samplers[ textureDef.sampler ] || {};
2755
+ texture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || THREE.LinearFilter;
2756
+ texture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || THREE.LinearMipmapLinearFilter;
2757
+ texture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || THREE.RepeatWrapping;
2758
+ texture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || THREE.RepeatWrapping;
2759
+ parser.associations.set( texture, {
2760
+ textures: textureIndex
2761
+ } );
2762
+ return texture;
2763
+
2764
+ } ).catch( function () {
2765
+
2766
+ return null;
2767
+
2768
+ } );
2769
+ this.textureCache[ cacheKey ] = promise;
2770
+ return promise;
2771
+
2772
+ }
2773
+
2774
+ loadImageSource( sourceIndex, loader ) {
2775
+
2776
+ const parser = this;
2777
+ const json = this.json;
2778
+ const options = this.options;
2779
+
2780
+ if ( this.sourceCache[ sourceIndex ] !== undefined ) {
2781
+
2782
+ return this.sourceCache[ sourceIndex ].then( texture => texture.clone() );
2783
+
2784
+ }
2785
+
2786
+ const sourceDef = json.images[ sourceIndex ];
2572
2787
  const URL = self.URL || self.webkitURL;
2573
- let sourceURI = source.uri || '';
2788
+ let sourceURI = sourceDef.uri || '';
2574
2789
  let isObjectURL = false;
2575
2790
 
2576
- if ( source.bufferView !== undefined ) {
2791
+ if ( sourceDef.bufferView !== undefined ) {
2577
2792
 
2578
2793
  // Load binary image data from bufferView, if provided.
2579
- sourceURI = parser.getDependency( 'bufferView', source.bufferView ).then( function ( bufferView ) {
2794
+ sourceURI = parser.getDependency( 'bufferView', sourceDef.bufferView ).then( function ( bufferView ) {
2580
2795
 
2581
2796
  isObjectURL = true;
2582
2797
  const blob = new Blob( [ bufferView ], {
2583
- type: source.mimeType
2798
+ type: sourceDef.mimeType
2584
2799
  } );
2585
2800
  sourceURI = URL.createObjectURL( blob );
2586
2801
  return sourceURI;
2587
2802
 
2588
2803
  } );
2589
2804
 
2590
- } else if ( source.uri === undefined ) {
2805
+ } else if ( sourceDef.uri === undefined ) {
2591
2806
 
2592
- throw new Error( 'THREE.GLTFLoader: Image ' + textureIndex + ' is missing URI and bufferView' );
2807
+ throw new Error( 'THREE.GLTFLoader: Image ' + sourceIndex + ' is missing URI and bufferView' );
2593
2808
 
2594
2809
  }
2595
2810
 
@@ -2624,26 +2839,16 @@
2624
2839
 
2625
2840
  }
2626
2841
 
2627
- texture.flipY = false;
2628
- if ( textureDef.name ) texture.name = textureDef.name;
2629
- const samplers = json.samplers || {};
2630
- const sampler = samplers[ textureDef.sampler ] || {};
2631
- texture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || THREE.LinearFilter;
2632
- texture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || THREE.LinearMipmapLinearFilter;
2633
- texture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || THREE.RepeatWrapping;
2634
- texture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || THREE.RepeatWrapping;
2635
- parser.associations.set( texture, {
2636
- textures: textureIndex
2637
- } );
2842
+ texture.userData.mimeType = sourceDef.mimeType || getImageURIMimeType( sourceDef.uri );
2638
2843
  return texture;
2639
2844
 
2640
- } ).catch( function () {
2845
+ } ).catch( function ( error ) {
2641
2846
 
2642
2847
  console.error( 'THREE.GLTFLoader: Couldn\'t load texture', sourceURI );
2643
- return null;
2848
+ throw error;
2644
2849
 
2645
2850
  } );
2646
- this.textureCache[ cacheKey ] = promise;
2851
+ this.sourceCache[ sourceIndex ] = promise;
2647
2852
  return promise;
2648
2853
 
2649
2854
  }
@@ -2656,7 +2861,7 @@
2656
2861
  */
2657
2862
 
2658
2863
 
2659
- assignTexture( materialParams, mapName, mapDef ) {
2864
+ assignTexture( materialParams, mapName, mapDef, encoding ) {
2660
2865
 
2661
2866
  const parser = this;
2662
2867
  return this.getDependency( 'texture', mapDef.index ).then( function ( texture ) {
@@ -2683,6 +2888,12 @@
2683
2888
 
2684
2889
  }
2685
2890
 
2891
+ if ( encoding !== undefined ) {
2892
+
2893
+ texture.encoding = encoding;
2894
+
2895
+ }
2896
+
2686
2897
  materialParams[ mapName ] = texture;
2687
2898
  return texture;
2688
2899
 
@@ -2841,7 +3052,7 @@
2841
3052
 
2842
3053
  if ( metallicRoughness.baseColorTexture !== undefined ) {
2843
3054
 
2844
- pending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) );
3055
+ pending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture, THREE.sRGBEncoding ) );
2845
3056
 
2846
3057
  }
2847
3058
 
@@ -2885,7 +3096,6 @@
2885
3096
  } else {
2886
3097
 
2887
3098
  materialParams.transparent = false;
2888
- materialParams.alphaWrite = false;
2889
3099
 
2890
3100
  if ( alphaMode === ALPHA_MODES.MASK ) {
2891
3101
 
@@ -2929,7 +3139,7 @@
2929
3139
 
2930
3140
  if ( materialDef.emissiveTexture !== undefined && materialType !== THREE.MeshBasicMaterial ) {
2931
3141
 
2932
- pending.push( parser.assignTexture( materialParams, 'emissiveMap', materialDef.emissiveTexture ) );
3142
+ pending.push( parser.assignTexture( materialParams, 'emissiveMap', materialDef.emissiveTexture, THREE.sRGBEncoding ) );
2933
3143
 
2934
3144
  }
2935
3145
 
@@ -2947,10 +3157,7 @@
2947
3157
 
2948
3158
  }
2949
3159
 
2950
- if ( materialDef.name ) material.name = materialDef.name; // baseColorTexture, emissiveTexture, and specularGlossinessTexture use sRGB encoding.
2951
-
2952
- if ( material.map ) material.map.encoding = THREE.sRGBEncoding;
2953
- if ( material.emissiveMap ) material.emissiveMap.encoding = THREE.sRGBEncoding;
3160
+ if ( materialDef.name ) material.name = materialDef.name;
2954
3161
  assignExtrasToUserData( material, materialDef );
2955
3162
  parser.associations.set( material, {
2956
3163
  materials: materialIndex
@@ -3262,8 +3469,7 @@
3262
3469
  const channel = animationDef.channels[ i ];
3263
3470
  const sampler = animationDef.samplers[ channel.sampler ];
3264
3471
  const target = channel.target;
3265
- const name = target.node !== undefined ? target.node : target.id; // NOTE: target.id is deprecated.
3266
-
3472
+ const name = target.node;
3267
3473
  const input = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.input ] : sampler.input;
3268
3474
  const output = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.output ] : sampler.output;
3269
3475
  pendingNodes.push( this.getDependency( 'node', name ) );
@@ -3292,7 +3498,6 @@
3292
3498
  const target = targets[ i ];
3293
3499
  if ( node === undefined ) continue;
3294
3500
  node.updateMatrix();
3295
- node.matrixAutoUpdate = true;
3296
3501
  let TypedKeyframeTrack;
3297
3502
 
3298
3503
  switch ( PATH_PROPERTIES[ target.path ] ) {