super-three 0.147.0 → 0.152.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 (757) hide show
  1. package/LICENSE +1 -1
  2. package/build/three.cjs +36408 -21117
  3. package/build/three.js +37007 -21715
  4. package/build/three.min.js +3 -2
  5. package/build/three.module.js +6387 -5510
  6. package/build/three.module.min.js +6 -0
  7. package/examples/jsm/animation/AnimationClipCreator.js +5 -3
  8. package/examples/jsm/capabilities/WebGPU.js +2 -4
  9. package/examples/jsm/controls/ArcballControls.js +1828 -1821
  10. package/examples/jsm/controls/MapControls.js +28 -0
  11. package/examples/jsm/controls/OrbitControls.js +20 -45
  12. package/examples/jsm/controls/PointerLockControls.js +70 -65
  13. package/examples/jsm/controls/TrackballControls.js +18 -4
  14. package/examples/jsm/controls/TransformControls.js +0 -1
  15. package/examples/jsm/csm/CSM.js +11 -3
  16. package/examples/jsm/csm/CSMShader.js +7 -6
  17. package/examples/jsm/effects/AsciiEffect.js +3 -6
  18. package/examples/jsm/effects/OutlineEffect.js +1 -15
  19. package/examples/jsm/exporters/ColladaExporter.js +26 -14
  20. package/examples/jsm/exporters/DRACOExporter.js +53 -11
  21. package/examples/jsm/exporters/EXRExporter.js +3 -9
  22. package/examples/jsm/exporters/GLTFExporter.js +524 -111
  23. package/examples/jsm/exporters/KTX2Exporter.js +34 -23
  24. package/examples/jsm/exporters/MMDExporter.js +1 -1
  25. package/examples/jsm/exporters/PLYExporter.js +8 -1
  26. package/examples/jsm/exporters/STLExporter.js +8 -4
  27. package/examples/jsm/exporters/USDZExporter.js +22 -3
  28. package/examples/jsm/geometries/ConvexGeometry.js +0 -6
  29. package/examples/jsm/geometries/ParametricGeometry.js +10 -0
  30. package/examples/jsm/helpers/OctreeHelper.js +1 -0
  31. package/examples/jsm/helpers/ViewHelper.js +70 -56
  32. package/examples/jsm/interactive/HTMLMesh.js +16 -3
  33. package/examples/jsm/interactive/InteractiveGroup.js +1 -1
  34. package/examples/{js → jsm}/libs/basis/README.md +4 -4
  35. package/examples/jsm/libs/draco/draco_decoder.js +34 -0
  36. package/examples/jsm/libs/draco/draco_decoder.wasm +0 -0
  37. package/examples/jsm/libs/draco/draco_wasm_wrapper.js +117 -0
  38. package/examples/jsm/libs/draco/gltf/draco_decoder.js +33 -0
  39. package/examples/jsm/libs/draco/gltf/draco_decoder.wasm +0 -0
  40. package/examples/jsm/libs/draco/gltf/draco_wasm_wrapper.js +116 -0
  41. package/examples/jsm/libs/lil-gui.module.min.js +2 -2
  42. package/examples/jsm/libs/tween.module.js +803 -0
  43. package/examples/jsm/lights/IESSpotLight.js +25 -0
  44. package/examples/jsm/lights/LightProbeGenerator.js +11 -9
  45. package/examples/jsm/lines/LineSegments2.js +12 -10
  46. package/examples/jsm/loaders/3DMLoader.js +8 -5
  47. package/examples/jsm/loaders/3MFLoader.js +12 -11
  48. package/examples/jsm/loaders/AMFLoader.js +2 -3
  49. package/examples/jsm/loaders/BVHLoader.js +2 -2
  50. package/examples/jsm/loaders/ColladaLoader.js +15 -16
  51. package/examples/jsm/loaders/DRACOLoader.js +67 -18
  52. package/examples/jsm/loaders/EXRLoader.js +23 -24
  53. package/examples/jsm/loaders/FBXLoader.js +32 -50
  54. package/examples/jsm/loaders/GCodeLoader.js +1 -2
  55. package/examples/jsm/loaders/GLTFLoader.js +249 -215
  56. package/examples/jsm/loaders/HDRCubeTextureLoader.js +4 -4
  57. package/examples/jsm/loaders/IESLoader.js +337 -0
  58. package/examples/jsm/loaders/KMZLoader.js +4 -4
  59. package/examples/jsm/loaders/KTX2Loader.js +41 -24
  60. package/examples/jsm/loaders/LDrawLoader.js +20 -18
  61. package/examples/jsm/loaders/LWOLoader.js +12 -29
  62. package/examples/jsm/loaders/LottieLoader.js +3 -1
  63. package/examples/jsm/loaders/MMDLoader.js +17 -13
  64. package/examples/jsm/loaders/MTLLoader.js +2 -2
  65. package/examples/jsm/loaders/MaterialXLoader.js +9 -3
  66. package/examples/jsm/loaders/NRRDLoader.js +33 -5
  67. package/examples/jsm/loaders/OBJLoader.js +1 -1
  68. package/examples/jsm/loaders/PCDLoader.js +1 -2
  69. package/examples/jsm/loaders/PLYLoader.js +238 -105
  70. package/examples/jsm/loaders/RGBELoader.js +3 -3
  71. package/examples/jsm/loaders/STLLoader.js +1 -2
  72. package/examples/jsm/loaders/SVGLoader.js +36 -27
  73. package/examples/jsm/loaders/TTFLoader.js +1 -8
  74. package/examples/jsm/loaders/TiltLoader.js +13 -7
  75. package/examples/jsm/loaders/USDZLoader.js +5 -5
  76. package/examples/jsm/loaders/VOXLoader.js +8 -2
  77. package/examples/jsm/loaders/VRMLLoader.js +5 -13
  78. package/examples/jsm/loaders/VTKLoader.js +7 -6
  79. package/examples/jsm/loaders/lwo/IFFParser.js +19 -19
  80. package/examples/jsm/materials/MeshGouraudMaterial.js +0 -3
  81. package/examples/jsm/math/MeshSurfaceSampler.js +0 -6
  82. package/examples/jsm/misc/ConvexObjectBreaker.js +2 -8
  83. package/examples/jsm/misc/GPUComputationRenderer.js +5 -5
  84. package/examples/jsm/misc/MD2Character.js +2 -2
  85. package/examples/jsm/misc/MD2CharacterComplex.js +2 -2
  86. package/examples/jsm/misc/ProgressiveLightMap.js +12 -10
  87. package/examples/jsm/misc/RollerCoaster.js +7 -1
  88. package/examples/jsm/misc/Volume.js +20 -5
  89. package/examples/jsm/modifiers/CurveModifier.js +1 -0
  90. package/examples/jsm/modifiers/TessellateModifier.js +19 -19
  91. package/examples/jsm/nodes/Nodes.js +143 -335
  92. package/examples/jsm/nodes/accessors/BitangentNode.js +43 -16
  93. package/examples/jsm/nodes/accessors/BufferNode.js +6 -0
  94. package/examples/jsm/nodes/accessors/CameraNode.js +12 -2
  95. package/examples/jsm/nodes/accessors/CubeTextureNode.js +27 -33
  96. package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +58 -0
  97. package/examples/jsm/nodes/accessors/InstanceNode.js +17 -21
  98. package/examples/jsm/nodes/accessors/MaterialNode.js +155 -38
  99. package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +16 -0
  100. package/examples/jsm/nodes/accessors/ModelNode.js +11 -0
  101. package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +12 -8
  102. package/examples/jsm/nodes/accessors/NormalNode.js +35 -19
  103. package/examples/jsm/nodes/accessors/Object3DNode.js +32 -12
  104. package/examples/jsm/nodes/accessors/PointUVNode.js +6 -1
  105. package/examples/jsm/nodes/accessors/PositionNode.js +38 -23
  106. package/examples/jsm/nodes/accessors/ReferenceNode.js +21 -14
  107. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +11 -7
  108. package/examples/jsm/nodes/accessors/SkinningNode.js +43 -40
  109. package/examples/jsm/nodes/accessors/StorageBufferNode.js +6 -0
  110. package/examples/jsm/nodes/accessors/TangentNode.js +28 -20
  111. package/examples/jsm/nodes/accessors/TextureNode.js +80 -12
  112. package/examples/jsm/nodes/accessors/UVNode.js +6 -0
  113. package/examples/jsm/nodes/accessors/UserDataNode.js +6 -0
  114. package/examples/jsm/nodes/{core → code}/CodeNode.js +27 -2
  115. package/examples/jsm/nodes/code/ExpressionNode.js +37 -0
  116. package/examples/jsm/nodes/{core → code}/FunctionCallNode.js +15 -1
  117. package/examples/jsm/nodes/{core → code}/FunctionNode.js +8 -7
  118. package/examples/jsm/nodes/code/ScriptableNode.js +488 -0
  119. package/examples/jsm/nodes/code/ScriptableValueNode.js +167 -0
  120. package/examples/jsm/nodes/core/ArrayUniformNode.js +3 -0
  121. package/examples/jsm/nodes/core/AttributeNode.js +16 -8
  122. package/examples/jsm/nodes/core/BypassNode.js +9 -2
  123. package/examples/jsm/nodes/core/CacheNode.js +46 -0
  124. package/examples/jsm/nodes/core/ConstNode.js +3 -0
  125. package/examples/jsm/nodes/core/ContextNode.js +8 -1
  126. package/examples/jsm/nodes/core/InputNode.js +26 -5
  127. package/examples/jsm/nodes/core/InstanceIndexNode.js +6 -1
  128. package/examples/jsm/nodes/core/LightingModel.js +16 -0
  129. package/examples/jsm/nodes/core/Node.js +128 -34
  130. package/examples/jsm/nodes/core/NodeBuilder.js +209 -118
  131. package/examples/jsm/nodes/core/NodeCache.js +26 -0
  132. package/examples/jsm/nodes/core/NodeFrame.js +56 -5
  133. package/examples/jsm/nodes/core/NodeUtils.js +105 -28
  134. package/examples/jsm/nodes/core/PropertyNode.js +19 -2
  135. package/examples/jsm/nodes/core/StackNode.js +92 -0
  136. package/examples/jsm/nodes/core/TempNode.js +11 -3
  137. package/examples/jsm/nodes/core/UniformNode.js +15 -0
  138. package/examples/jsm/nodes/core/VarNode.js +21 -29
  139. package/examples/jsm/nodes/core/VaryingNode.js +15 -2
  140. package/examples/jsm/nodes/core/constants.js +6 -0
  141. package/examples/jsm/nodes/display/BlendModeNode.js +25 -11
  142. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +30 -14
  143. package/examples/jsm/nodes/display/ColorSpaceNode.js +39 -27
  144. package/examples/jsm/nodes/display/FrontFacingNode.js +7 -1
  145. package/examples/jsm/nodes/display/NormalMapNode.js +31 -18
  146. package/examples/jsm/nodes/display/PosterizeNode.js +10 -3
  147. package/examples/jsm/nodes/display/ToneMappingNode.js +92 -11
  148. package/examples/jsm/nodes/display/ViewportNode.js +27 -18
  149. package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +30 -0
  150. package/examples/jsm/nodes/display/ViewportTextureNode.js +61 -0
  151. package/examples/jsm/nodes/fog/FogExp2Node.js +35 -0
  152. package/examples/jsm/nodes/fog/FogNode.js +12 -6
  153. package/examples/jsm/nodes/fog/FogRangeNode.js +12 -5
  154. package/examples/jsm/nodes/functions/BSDF/BRDF_BlinnPhong.js +30 -0
  155. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +10 -13
  156. package/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
  157. package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +8 -6
  158. package/examples/jsm/nodes/functions/BSDF/D_GGX.js +4 -4
  159. package/examples/jsm/nodes/functions/BSDF/F_Schlick.js +3 -3
  160. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +7 -5
  161. package/examples/jsm/nodes/functions/PhongLightingModel.js +28 -0
  162. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +33 -36
  163. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +4 -3
  164. package/examples/jsm/nodes/functions/material/getRoughness.js +4 -4
  165. package/examples/jsm/nodes/geometry/RangeNode.js +32 -19
  166. package/examples/jsm/nodes/gpgpu/ComputeNode.js +9 -2
  167. package/examples/jsm/nodes/lighting/AONode.js +5 -3
  168. package/examples/jsm/nodes/lighting/AmbientLightNode.js +27 -0
  169. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +112 -6
  170. package/examples/jsm/nodes/lighting/DirectionalLightNode.js +43 -0
  171. package/examples/jsm/nodes/lighting/EnvironmentNode.js +104 -34
  172. package/examples/jsm/nodes/lighting/HemisphereLightNode.js +15 -10
  173. package/examples/jsm/nodes/lighting/IESSpotLightNode.js +39 -0
  174. package/examples/jsm/nodes/lighting/LightNode.js +57 -0
  175. package/examples/jsm/nodes/lighting/LightUtils.js +17 -0
  176. package/examples/jsm/nodes/lighting/LightingContextNode.js +30 -8
  177. package/examples/jsm/nodes/lighting/LightingNode.js +3 -1
  178. package/examples/jsm/nodes/lighting/LightsNode.js +18 -10
  179. package/examples/jsm/nodes/lighting/PointLightNode.js +71 -0
  180. package/examples/jsm/nodes/lighting/SpotLightNode.js +92 -0
  181. package/examples/jsm/nodes/loaders/NodeLoader.js +5 -4
  182. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +4 -20
  183. package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +6 -9
  184. package/examples/jsm/nodes/materials/Materials.js +11 -55
  185. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +5 -11
  186. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +48 -0
  187. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +74 -0
  188. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +6 -6
  189. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +21 -96
  190. package/examples/jsm/nodes/materials/NodeMaterial.js +244 -61
  191. package/examples/jsm/nodes/materials/PointsNodeMaterial.js +7 -1
  192. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +29 -25
  193. package/examples/jsm/nodes/materialx/MaterialXNodes.js +31 -22
  194. package/examples/jsm/nodes/materialx/lib/mx_hsv.js +1 -1
  195. package/examples/jsm/nodes/materialx/lib/mx_noise.js +2 -1
  196. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +2 -1
  197. package/examples/jsm/nodes/math/CondNode.js +43 -17
  198. package/examples/jsm/nodes/math/MathNode.js +178 -73
  199. package/examples/jsm/nodes/math/OperatorNode.js +52 -2
  200. package/examples/jsm/nodes/procedural/CheckerNode.js +14 -6
  201. package/examples/jsm/nodes/shadernode/ShaderNode.js +158 -42
  202. package/examples/jsm/nodes/utils/ArrayElementNode.js +4 -2
  203. package/examples/jsm/nodes/utils/ConvertNode.js +19 -1
  204. package/examples/jsm/nodes/utils/DiscardNode.js +26 -0
  205. package/examples/jsm/nodes/utils/EquirectUVNode.js +11 -4
  206. package/examples/jsm/nodes/utils/JoinNode.js +4 -1
  207. package/examples/jsm/nodes/utils/MatcapUVNode.js +11 -4
  208. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +18 -5
  209. package/examples/jsm/nodes/utils/OscNode.js +21 -14
  210. package/examples/jsm/nodes/utils/PackingNode.js +55 -0
  211. package/examples/jsm/nodes/utils/RemapNode.js +13 -5
  212. package/examples/jsm/nodes/utils/RotateUVNode.js +18 -7
  213. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +37 -0
  214. package/examples/jsm/nodes/utils/SplitNode.js +7 -5
  215. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +15 -30
  216. package/examples/jsm/nodes/utils/TimerNode.js +16 -6
  217. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +21 -10
  218. package/examples/jsm/objects/GroundProjectedSkybox.js +172 -0
  219. package/examples/jsm/objects/Reflector.js +4 -4
  220. package/examples/jsm/objects/Refractor.js +4 -4
  221. package/examples/jsm/objects/ShadowMesh.js +3 -3
  222. package/examples/jsm/physics/AmmoPhysics.js +27 -28
  223. package/examples/jsm/physics/{OimoPhysics.js → RapierPhysics.js} +59 -51
  224. package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +0 -8
  225. package/examples/jsm/postprocessing/AfterimagePass.js +0 -2
  226. package/examples/jsm/postprocessing/BloomPass.js +0 -2
  227. package/examples/jsm/postprocessing/BokehPass.js +0 -6
  228. package/examples/jsm/postprocessing/DotScreenPass.js +0 -2
  229. package/examples/jsm/postprocessing/EffectComposer.js +3 -94
  230. package/examples/jsm/postprocessing/FilmPass.js +0 -2
  231. package/examples/jsm/postprocessing/GlitchPass.js +0 -2
  232. package/examples/jsm/postprocessing/HalftonePass.js +0 -6
  233. package/examples/jsm/postprocessing/OutlinePass.js +0 -1
  234. package/examples/jsm/postprocessing/Pass.js +2 -0
  235. package/examples/jsm/postprocessing/SAOPass.js +0 -24
  236. package/examples/jsm/postprocessing/SMAAPass.js +0 -6
  237. package/examples/jsm/postprocessing/SSAARenderPass.js +13 -5
  238. package/examples/jsm/postprocessing/SSAOPass.js +0 -12
  239. package/examples/jsm/postprocessing/SSRPass.js +0 -6
  240. package/examples/jsm/postprocessing/SavePass.js +0 -2
  241. package/examples/jsm/postprocessing/TexturePass.js +0 -2
  242. package/examples/jsm/postprocessing/UnrealBloomPass.js +0 -8
  243. package/examples/jsm/renderers/CSS2DRenderer.js +6 -1
  244. package/examples/jsm/renderers/CSS3DRenderer.js +27 -5
  245. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +35 -31
  246. package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +2 -2
  247. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +14 -4
  248. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +72 -55
  249. package/examples/jsm/renderers/webgpu/WebGPUBindings.js +34 -19
  250. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +1 -1
  251. package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +158 -26
  252. package/examples/jsm/renderers/webgpu/WebGPUProgrammableStage.js +1 -1
  253. package/examples/jsm/renderers/webgpu/WebGPUProperties.js +6 -0
  254. package/examples/jsm/renderers/webgpu/WebGPURenderLists.js +30 -14
  255. package/examples/jsm/renderers/webgpu/WebGPURenderObject.js +40 -0
  256. package/examples/jsm/renderers/webgpu/WebGPURenderObjects.js +50 -0
  257. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +49 -111
  258. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +40 -62
  259. package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +14 -26
  260. package/examples/jsm/renderers/webgpu/WebGPURenderTarget.js +15 -0
  261. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +244 -100
  262. package/examples/jsm/renderers/webgpu/WebGPUSampledTexture.js +3 -1
  263. package/examples/jsm/renderers/webgpu/WebGPUTextureRenderer.js +2 -4
  264. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +2 -0
  265. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +366 -110
  266. package/examples/jsm/renderers/webgpu/WebGPUUniformsGroup.js +1 -1
  267. package/examples/jsm/renderers/webgpu/WebGPUUtils.js +13 -6
  268. package/examples/jsm/renderers/webgpu/WebGPUWeakMap.js +83 -0
  269. package/examples/jsm/renderers/webgpu/constants.js +68 -6
  270. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +74 -57
  271. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +241 -22
  272. package/examples/jsm/shaders/MMDToonShader.js +15 -4
  273. package/examples/jsm/shaders/RGBShiftShader.js +2 -2
  274. package/examples/jsm/shaders/VelocityShader.js +1 -1
  275. package/examples/jsm/utils/BufferGeometryUtils.js +37 -35
  276. package/examples/jsm/utils/LDrawUtils.js +4 -4
  277. package/examples/jsm/utils/PackedPhongMaterial.js +5 -78
  278. package/examples/jsm/utils/SceneUtils.js +8 -4
  279. package/examples/jsm/utils/SkeletonUtils.js +27 -210
  280. package/examples/jsm/webxr/VRButton.js +1 -2
  281. package/examples/jsm/webxr/XRButton.js +198 -0
  282. package/package.json +33 -87
  283. package/src/Three.Legacy.js +19 -110
  284. package/src/Three.js +4 -3
  285. package/src/animation/AnimationUtils.js +13 -1
  286. package/src/animation/PropertyBinding.js +2 -2
  287. package/src/audio/Audio.js +7 -2
  288. package/src/constants.js +10 -2
  289. package/src/core/BufferAttribute.js +147 -8
  290. package/src/core/BufferGeometry.js +3 -9
  291. package/src/core/GLBufferAttribute.js +2 -0
  292. package/src/core/InterleavedBufferAttribute.js +1 -1
  293. package/src/core/Object3D.js +36 -7
  294. package/src/extras/DataUtils.js +7 -1
  295. package/src/extras/ImageUtils.js +2 -2
  296. package/src/extras/PMREMGenerator.js +5 -5
  297. package/src/extras/curves/LineCurve.js +6 -4
  298. package/src/extras/curves/LineCurve3.js +13 -0
  299. package/src/geometries/BoxGeometry.js +10 -0
  300. package/src/geometries/CircleGeometry.js +11 -1
  301. package/src/geometries/ConeGeometry.js +1 -1
  302. package/src/geometries/CylinderGeometry.js +11 -1
  303. package/src/geometries/EdgesGeometry.js +10 -0
  304. package/src/geometries/ExtrudeGeometry.js +11 -1
  305. package/src/geometries/LatheGeometry.js +10 -0
  306. package/src/geometries/PlaneGeometry.js +10 -0
  307. package/src/geometries/PolyhedronGeometry.js +10 -0
  308. package/src/geometries/RingGeometry.js +11 -1
  309. package/src/geometries/ShapeGeometry.js +10 -0
  310. package/src/geometries/SphereGeometry.js +12 -2
  311. package/src/geometries/TorusGeometry.js +11 -1
  312. package/src/geometries/TorusKnotGeometry.js +10 -0
  313. package/src/geometries/TubeGeometry.js +10 -0
  314. package/src/geometries/WireframeGeometry.js +10 -0
  315. package/src/helpers/Box3Helper.js +1 -2
  316. package/src/lights/DirectionalLight.js +1 -1
  317. package/src/lights/HemisphereLight.js +1 -1
  318. package/src/lights/SpotLight.js +1 -1
  319. package/src/loaders/AudioLoader.js +14 -8
  320. package/src/loaders/DataTextureLoader.js +5 -1
  321. package/src/loaders/MaterialLoader.js +4 -0
  322. package/src/loaders/ObjectLoader.js +9 -2
  323. package/src/materials/LineBasicMaterial.js +4 -0
  324. package/src/materials/Material.js +6 -3
  325. package/src/materials/MeshDistanceMaterial.js +0 -9
  326. package/src/materials/ShaderMaterial.js +6 -1
  327. package/src/math/Box2.js +3 -2
  328. package/src/math/Box3.js +49 -64
  329. package/src/math/Color.js +72 -55
  330. package/src/math/ColorManagement.js +75 -16
  331. package/src/math/Euler.js +2 -11
  332. package/src/math/Frustum.js +13 -3
  333. package/src/math/MathUtils.js +27 -1
  334. package/src/math/Plane.js +2 -2
  335. package/src/math/Quaternion.js +6 -0
  336. package/src/math/Ray.js +7 -7
  337. package/src/math/Triangle.js +37 -7
  338. package/src/math/Vector2.js +16 -0
  339. package/src/math/Vector3.js +10 -0
  340. package/src/math/interpolants/CubicInterpolant.js +1 -2
  341. package/src/objects/InstancedMesh.js +79 -1
  342. package/src/objects/Mesh.js +101 -73
  343. package/src/objects/SkinnedMesh.js +95 -8
  344. package/src/objects/Sprite.js +1 -1
  345. package/src/renderers/WebGLCubeRenderTarget.js +12 -3
  346. package/src/renderers/WebGLMultipleRenderTargets.js +4 -2
  347. package/src/renderers/WebGLRenderTarget.js +14 -2
  348. package/src/renderers/WebGLRenderer.js +1340 -1258
  349. package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +1 -1
  350. package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +1 -1
  351. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +0 -271
  352. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +5 -5
  353. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +2 -10
  354. package/src/renderers/shaders/ShaderChunk/clearcoat_pars_fragment.glsl.js +5 -5
  355. package/src/renderers/shaders/ShaderChunk/common.glsl.js +32 -0
  356. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +1 -1
  357. package/src/renderers/shaders/ShaderChunk/displacementmap_vertex.glsl.js +1 -1
  358. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +1 -1
  359. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +1 -1
  360. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +3 -3
  361. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +1 -1
  362. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +11 -11
  363. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +13 -13
  364. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +256 -10
  365. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +1 -11
  366. package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +9 -1
  367. package/src/renderers/shaders/ShaderChunk/map_particle_pars_fragment.glsl.js +10 -2
  368. package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +1 -1
  369. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +32 -10
  370. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +5 -13
  371. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +7 -7
  372. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +11 -5
  373. package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +1 -1
  374. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +4 -11
  375. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +2 -2
  376. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +39 -34
  377. package/src/renderers/shaders/ShaderChunk/specularmap_fragment.glsl.js +1 -1
  378. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +2 -2
  379. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +91 -11
  380. package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +108 -1
  381. package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +128 -6
  382. package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +111 -1
  383. package/src/renderers/shaders/ShaderChunk.js +0 -6
  384. package/src/renderers/shaders/ShaderLib/background.glsl.js +0 -8
  385. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +5 -0
  386. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -4
  387. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +0 -3
  388. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +3 -3
  389. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -3
  390. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +8 -12
  391. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -3
  392. package/src/renderers/shaders/ShaderLib/points.glsl.js +13 -0
  393. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +5 -0
  394. package/src/renderers/shaders/ShaderLib.js +15 -4
  395. package/src/renderers/shaders/UniformsLib.js +25 -15
  396. package/src/renderers/shaders/UniformsUtils.js +12 -3
  397. package/src/renderers/webgl/WebGLBackground.js +23 -12
  398. package/src/renderers/webgl/WebGLCapabilities.js +1 -2
  399. package/src/renderers/webgl/WebGLClipping.js +7 -3
  400. package/src/renderers/webgl/WebGLLights.js +2 -2
  401. package/src/renderers/webgl/WebGLMaterials.js +105 -234
  402. package/src/renderers/webgl/WebGLMorphtargets.js +1 -1
  403. package/src/renderers/webgl/WebGLProgram.js +111 -48
  404. package/src/renderers/webgl/WebGLPrograms.js +200 -129
  405. package/src/renderers/webgl/WebGLRenderStates.js +2 -2
  406. package/src/renderers/webgl/WebGLShadowMap.js +40 -27
  407. package/src/renderers/webgl/WebGLState.js +23 -9
  408. package/src/renderers/webgl/WebGLTextures.js +21 -19
  409. package/src/renderers/webgl/WebGLUniformsGroups.js +74 -33
  410. package/src/renderers/webgl/WebGLUtils.js +41 -29
  411. package/src/renderers/webxr/WebXRController.js +3 -0
  412. package/src/renderers/webxr/WebXRManager.js +70 -48
  413. package/src/scenes/Scene.js +4 -6
  414. package/src/textures/CompressedTexture.js +2 -2
  415. package/src/textures/CubeTexture.js +2 -2
  416. package/src/textures/DataTexture.js +2 -2
  417. package/src/textures/Texture.js +41 -12
  418. package/src/utils.js +13 -1
  419. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff +0 -0
  420. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff2 +0 -0
  421. package/examples/fonts/open-sans/open-sans.css +0 -9
  422. package/examples/fonts/tabler-icons/fonts/tabler-icons.eot +0 -0
  423. package/examples/fonts/tabler-icons/fonts/tabler-icons.svg +0 -3966
  424. package/examples/fonts/tabler-icons/fonts/tabler-icons.ttf +0 -0
  425. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff +0 -0
  426. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff2 +0 -0
  427. package/examples/fonts/tabler-icons/tabler-icons.min.css +0 -4
  428. package/examples/js/animation/AnimationClipCreator.js +0 -89
  429. package/examples/js/animation/CCDIKSolver.js +0 -416
  430. package/examples/js/animation/MMDAnimationHelper.js +0 -1046
  431. package/examples/js/animation/MMDPhysics.js +0 -1174
  432. package/examples/js/cameras/CinematicCamera.js +0 -168
  433. package/examples/js/controls/ArcballControls.js +0 -2770
  434. package/examples/js/controls/DragControls.js +0 -205
  435. package/examples/js/controls/FirstPersonControls.js +0 -312
  436. package/examples/js/controls/FlyControls.js +0 -321
  437. package/examples/js/controls/OrbitControls.js +0 -1101
  438. package/examples/js/controls/PointerLockControls.js +0 -144
  439. package/examples/js/controls/TrackballControls.js +0 -729
  440. package/examples/js/controls/TransformControls.js +0 -1301
  441. package/examples/js/csm/CSM.js +0 -347
  442. package/examples/js/csm/CSMFrustum.js +0 -127
  443. package/examples/js/csm/CSMHelper.js +0 -165
  444. package/examples/js/csm/CSMShader.js +0 -253
  445. package/examples/js/curves/CurveExtras.js +0 -348
  446. package/examples/js/curves/NURBSCurve.js +0 -63
  447. package/examples/js/curves/NURBSSurface.js +0 -48
  448. package/examples/js/curves/NURBSUtils.js +0 -439
  449. package/examples/js/effects/AnaglyphEffect.js +0 -86
  450. package/examples/js/effects/AsciiEffect.js +0 -260
  451. package/examples/js/effects/OutlineEffect.js +0 -450
  452. package/examples/js/effects/ParallaxBarrierEffect.js +0 -62
  453. package/examples/js/effects/PeppersGhostEffect.js +0 -139
  454. package/examples/js/effects/StereoEffect.js +0 -46
  455. package/examples/js/environments/DebugEnvironment.js +0 -53
  456. package/examples/js/environments/RoomEnvironment.js +0 -124
  457. package/examples/js/exporters/ColladaExporter.js +0 -487
  458. package/examples/js/exporters/DRACOExporter.js +0 -212
  459. package/examples/js/exporters/EXRExporter.js +0 -455
  460. package/examples/js/exporters/GLTFExporter.js +0 -2367
  461. package/examples/js/exporters/MMDExporter.js +0 -187
  462. package/examples/js/exporters/OBJExporter.js +0 -260
  463. package/examples/js/exporters/PLYExporter.js +0 -427
  464. package/examples/js/exporters/STLExporter.js +0 -188
  465. package/examples/js/exporters/USDZExporter.js +0 -608
  466. package/examples/js/geometries/BoxLineGeometry.js +0 -59
  467. package/examples/js/geometries/ConvexGeometry.js +0 -53
  468. package/examples/js/geometries/DecalGeometry.js +0 -324
  469. package/examples/js/geometries/LightningStrike.js +0 -861
  470. package/examples/js/geometries/ParametricGeometries.js +0 -216
  471. package/examples/js/geometries/ParametricGeometry.js +0 -121
  472. package/examples/js/geometries/RoundedBoxGeometry.js +0 -142
  473. package/examples/js/geometries/TeapotGeometry.js +0 -335
  474. package/examples/js/geometries/TextGeometry.js +0 -53
  475. package/examples/js/helpers/LightProbeHelper.js +0 -48
  476. package/examples/js/helpers/OctreeHelper.js +0 -76
  477. package/examples/js/helpers/PositionalAudioHelper.js +0 -91
  478. package/examples/js/helpers/RectAreaLightHelper.js +0 -73
  479. package/examples/js/helpers/VertexNormalsHelper.js +0 -74
  480. package/examples/js/helpers/VertexTangentsHelper.js +0 -68
  481. package/examples/js/helpers/ViewHelper.js +0 -281
  482. package/examples/js/interactive/HTMLMesh.js +0 -497
  483. package/examples/js/interactive/InteractiveGroup.js +0 -95
  484. package/examples/js/interactive/SelectionBox.js +0 -195
  485. package/examples/js/interactive/SelectionHelper.js +0 -83
  486. package/examples/js/libs/chevrotain.min.js +0 -3
  487. package/examples/js/libs/draco/draco_decoder.js +0 -52
  488. package/examples/js/libs/draco/draco_decoder.wasm +0 -0
  489. package/examples/js/libs/draco/draco_wasm_wrapper.js +0 -104
  490. package/examples/js/libs/draco/gltf/draco_decoder.js +0 -48
  491. package/examples/js/libs/draco/gltf/draco_decoder.wasm +0 -0
  492. package/examples/js/libs/draco/gltf/draco_wasm_wrapper.js +0 -104
  493. package/examples/js/libs/fflate.min.js +0 -7
  494. package/examples/js/libs/ktx-parse.umd.js +0 -1
  495. package/examples/js/libs/meshopt_decoder.js +0 -188
  496. package/examples/js/libs/opentype.min.js +0 -1
  497. package/examples/js/libs/stats.min.js +0 -5
  498. package/examples/js/lights/LightProbeGenerator.js +0 -221
  499. package/examples/js/lights/RectAreaLightUniformsLib.js +0 -60
  500. package/examples/js/lines/Line2.js +0 -19
  501. package/examples/js/lines/LineGeometry.js +0 -69
  502. package/examples/js/lines/LineMaterial.js +0 -635
  503. package/examples/js/lines/LineSegments2.js +0 -313
  504. package/examples/js/lines/LineSegmentsGeometry.js +0 -198
  505. package/examples/js/lines/Wireframe.js +0 -47
  506. package/examples/js/lines/WireframeGeometry2.js +0 -20
  507. package/examples/js/loaders/3DMLoader.js +0 -1273
  508. package/examples/js/loaders/3MFLoader.js +0 -1306
  509. package/examples/js/loaders/AMFLoader.js +0 -504
  510. package/examples/js/loaders/BVHLoader.js +0 -395
  511. package/examples/js/loaders/BasisTextureLoader.js +0 -706
  512. package/examples/js/loaders/ColladaLoader.js +0 -3690
  513. package/examples/js/loaders/DDSLoader.js +0 -244
  514. package/examples/js/loaders/DRACOLoader.js +0 -511
  515. package/examples/js/loaders/EXRLoader.js +0 -2039
  516. package/examples/js/loaders/FBXLoader.js +0 -3681
  517. package/examples/js/loaders/FontLoader.js +0 -160
  518. package/examples/js/loaders/GCodeLoader.js +0 -255
  519. package/examples/js/loaders/GLTFLoader.js +0 -3862
  520. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -87
  521. package/examples/js/loaders/KMZLoader.js +0 -121
  522. package/examples/js/loaders/KTXLoader.js +0 -159
  523. package/examples/js/loaders/LDrawLoader.js +0 -2263
  524. package/examples/js/loaders/LUT3dlLoader.js +0 -135
  525. package/examples/js/loaders/LUTCubeLoader.js +0 -132
  526. package/examples/js/loaders/LWOLoader.js +0 -901
  527. package/examples/js/loaders/LogLuvLoader.js +0 -715
  528. package/examples/js/loaders/LottieLoader.js +0 -62
  529. package/examples/js/loaders/MD2Loader.js +0 -248
  530. package/examples/js/loaders/MDDLoader.js +0 -91
  531. package/examples/js/loaders/MMDLoader.js +0 -1915
  532. package/examples/js/loaders/MTLLoader.js +0 -472
  533. package/examples/js/loaders/NRRDLoader.js +0 -609
  534. package/examples/js/loaders/OBJLoader.js +0 -789
  535. package/examples/js/loaders/PCDLoader.js +0 -413
  536. package/examples/js/loaders/PDBLoader.js +0 -317
  537. package/examples/js/loaders/PLYLoader.js +0 -576
  538. package/examples/js/loaders/PRWMLoader.js +0 -249
  539. package/examples/js/loaders/PVRLoader.js +0 -218
  540. package/examples/js/loaders/RGBELoader.js +0 -442
  541. package/examples/js/loaders/RGBMLoader.js +0 -1354
  542. package/examples/js/loaders/STLLoader.js +0 -364
  543. package/examples/js/loaders/SVGLoader.js +0 -2783
  544. package/examples/js/loaders/TDSLoader.js +0 -992
  545. package/examples/js/loaders/TGALoader.js +0 -484
  546. package/examples/js/loaders/TIFFLoader.js +0 -30
  547. package/examples/js/loaders/TTFLoader.js +0 -203
  548. package/examples/js/loaders/TiltLoader.js +0 -459
  549. package/examples/js/loaders/VOXLoader.js +0 -240
  550. package/examples/js/loaders/VRMLLoader.js +0 -3140
  551. package/examples/js/loaders/VTKLoader.js +0 -1078
  552. package/examples/js/loaders/XYZLoader.js +0 -89
  553. package/examples/js/loaders/lwo/IFFParser.js +0 -1067
  554. package/examples/js/loaders/lwo/LWO2Parser.js +0 -397
  555. package/examples/js/loaders/lwo/LWO3Parser.js +0 -360
  556. package/examples/js/materials/MeshGouraudMaterial.js +0 -387
  557. package/examples/js/math/Capsule.js +0 -103
  558. package/examples/js/math/ColorConverter.js +0 -33
  559. package/examples/js/math/ConvexHull.js +0 -1154
  560. package/examples/js/math/ImprovedNoise.js +0 -66
  561. package/examples/js/math/Lut.js +0 -164
  562. package/examples/js/math/MeshSurfaceSampler.js +0 -171
  563. package/examples/js/math/OBB.js +0 -382
  564. package/examples/js/math/Octree.js +0 -410
  565. package/examples/js/math/SimplexNoise.js +0 -445
  566. package/examples/js/misc/ConvexObjectBreaker.js +0 -474
  567. package/examples/js/misc/GPUComputationRenderer.js +0 -393
  568. package/examples/js/misc/Gyroscope.js +0 -56
  569. package/examples/js/misc/MD2Character.js +0 -235
  570. package/examples/js/misc/MD2CharacterComplex.js +0 -513
  571. package/examples/js/misc/MorphAnimMesh.js +0 -63
  572. package/examples/js/misc/MorphBlendMesh.js +0 -265
  573. package/examples/js/misc/ProgressiveLightMap.js +0 -335
  574. package/examples/js/misc/RollerCoaster.js +0 -430
  575. package/examples/js/misc/TubePainter.js +0 -167
  576. package/examples/js/misc/Volume.js +0 -437
  577. package/examples/js/misc/VolumeSlice.js +0 -214
  578. package/examples/js/modifiers/CurveModifier.js +0 -309
  579. package/examples/js/modifiers/EdgeSplitModifier.js +0 -228
  580. package/examples/js/modifiers/SimplifyModifier.js +0 -465
  581. package/examples/js/modifiers/TessellateModifier.js +0 -276
  582. package/examples/js/objects/GroundProjectedEnv.js +0 -181
  583. package/examples/js/objects/Lensflare.js +0 -356
  584. package/examples/js/objects/LightningStorm.js +0 -206
  585. package/examples/js/objects/MarchingCubes.js +0 -759
  586. package/examples/js/objects/Reflector.js +0 -216
  587. package/examples/js/objects/ReflectorForSSRPass.js +0 -315
  588. package/examples/js/objects/Refractor.js +0 -283
  589. package/examples/js/objects/ShadowMesh.js +0 -59
  590. package/examples/js/objects/Sky.js +0 -218
  591. package/examples/js/objects/Water.js +0 -292
  592. package/examples/js/objects/Water2.js +0 -307
  593. package/examples/js/physics/AmmoPhysics.js +0 -259
  594. package/examples/js/physics/OimoPhysics.js +0 -217
  595. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +0 -335
  596. package/examples/js/postprocessing/AfterimagePass.js +0 -77
  597. package/examples/js/postprocessing/BloomPass.js +0 -135
  598. package/examples/js/postprocessing/BokehPass.js +0 -120
  599. package/examples/js/postprocessing/ClearPass.js +0 -39
  600. package/examples/js/postprocessing/CubeTexturePass.js +0 -60
  601. package/examples/js/postprocessing/DotScreenPass.js +0 -51
  602. package/examples/js/postprocessing/EffectComposer.js +0 -272
  603. package/examples/js/postprocessing/FilmPass.js +0 -52
  604. package/examples/js/postprocessing/GlitchPass.js +0 -104
  605. package/examples/js/postprocessing/HalftonePass.js +0 -75
  606. package/examples/js/postprocessing/LUTPass.js +0 -171
  607. package/examples/js/postprocessing/MaskPass.js +0 -95
  608. package/examples/js/postprocessing/OutlinePass.js +0 -598
  609. package/examples/js/postprocessing/Pass.js +0 -72
  610. package/examples/js/postprocessing/RenderPass.js +0 -70
  611. package/examples/js/postprocessing/RenderPixelatedPass.js +0 -215
  612. package/examples/js/postprocessing/SAOPass.js +0 -374
  613. package/examples/js/postprocessing/SMAAPass.js +0 -170
  614. package/examples/js/postprocessing/SSAARenderPass.js +0 -156
  615. package/examples/js/postprocessing/SSAOPass.js +0 -365
  616. package/examples/js/postprocessing/SSRPass.js +0 -567
  617. package/examples/js/postprocessing/SavePass.js +0 -59
  618. package/examples/js/postprocessing/ShaderPass.js +0 -64
  619. package/examples/js/postprocessing/TAARenderPass.js +0 -130
  620. package/examples/js/postprocessing/TexturePass.js +0 -49
  621. package/examples/js/postprocessing/UnrealBloomPass.js +0 -375
  622. package/examples/js/renderers/CSS2DRenderer.js +0 -178
  623. package/examples/js/renderers/CSS3DRenderer.js +0 -237
  624. package/examples/js/renderers/Projector.js +0 -818
  625. package/examples/js/renderers/SVGRenderer.js +0 -491
  626. package/examples/js/shaders/ACESFilmicToneMappingShader.js +0 -89
  627. package/examples/js/shaders/AfterimageShader.js +0 -60
  628. package/examples/js/shaders/BasicShader.js +0 -27
  629. package/examples/js/shaders/BleachBypassShader.js +0 -62
  630. package/examples/js/shaders/BlendShader.js +0 -54
  631. package/examples/js/shaders/BokehShader.js +0 -156
  632. package/examples/js/shaders/BokehShader2.js +0 -419
  633. package/examples/js/shaders/BrightnessContrastShader.js +0 -58
  634. package/examples/js/shaders/ColorCorrectionShader.js +0 -52
  635. package/examples/js/shaders/ColorifyShader.js +0 -47
  636. package/examples/js/shaders/ConvolutionShader.js +0 -92
  637. package/examples/js/shaders/CopyShader.js +0 -45
  638. package/examples/js/shaders/DOFMipMapShader.js +0 -60
  639. package/examples/js/shaders/DepthLimitedBlurShader.js +0 -173
  640. package/examples/js/shaders/DigitalGlitch.js +0 -127
  641. package/examples/js/shaders/DotScreenShader.js +0 -72
  642. package/examples/js/shaders/FXAAShader.js +0 -284
  643. package/examples/js/shaders/FilmShader.js +0 -110
  644. package/examples/js/shaders/FocusShader.js +0 -95
  645. package/examples/js/shaders/FreiChenShader.js +0 -93
  646. package/examples/js/shaders/GammaCorrectionShader.js +0 -41
  647. package/examples/js/shaders/GodRaysShader.js +0 -284
  648. package/examples/js/shaders/HalftoneShader.js +0 -336
  649. package/examples/js/shaders/HorizontalBlurShader.js +0 -59
  650. package/examples/js/shaders/HorizontalTiltShiftShader.js +0 -65
  651. package/examples/js/shaders/HueSaturationShader.js +0 -69
  652. package/examples/js/shaders/KaleidoShader.js +0 -60
  653. package/examples/js/shaders/LuminosityHighPassShader.js +0 -67
  654. package/examples/js/shaders/LuminosityShader.js +0 -46
  655. package/examples/js/shaders/MMDToonShader.js +0 -94
  656. package/examples/js/shaders/MirrorShader.js +0 -56
  657. package/examples/js/shaders/NormalMapShader.js +0 -55
  658. package/examples/js/shaders/RGBShiftShader.js +0 -56
  659. package/examples/js/shaders/SAOShader.js +0 -209
  660. package/examples/js/shaders/SMAAShader.js +0 -454
  661. package/examples/js/shaders/SSAOShader.js +0 -295
  662. package/examples/js/shaders/SSRShader.js +0 -381
  663. package/examples/js/shaders/SepiaShader.js +0 -52
  664. package/examples/js/shaders/SobelOperatorShader.js +0 -88
  665. package/examples/js/shaders/SubsurfaceScatteringShader.js +0 -49
  666. package/examples/js/shaders/TechnicolorShader.js +0 -43
  667. package/examples/js/shaders/ToneMapShader.js +0 -84
  668. package/examples/js/shaders/ToonShader.js +0 -335
  669. package/examples/js/shaders/TriangleBlurShader.js +0 -70
  670. package/examples/js/shaders/UnpackDepthRGBAShader.js +0 -47
  671. package/examples/js/shaders/VelocityShader.js +0 -126
  672. package/examples/js/shaders/VerticalBlurShader.js +0 -59
  673. package/examples/js/shaders/VerticalTiltShiftShader.js +0 -65
  674. package/examples/js/shaders/VignetteShader.js +0 -53
  675. package/examples/js/shaders/VolumeShader.js +0 -296
  676. package/examples/js/shaders/WaterRefractionShader.js +0 -84
  677. package/examples/js/textures/FlakesTexture.js +0 -40
  678. package/examples/js/utils/BufferGeometryUtils.js +0 -1160
  679. package/examples/js/utils/CameraUtils.js +0 -71
  680. package/examples/js/utils/GPUStatsPanel.js +0 -125
  681. package/examples/js/utils/GeometryCompressionUtils.js +0 -549
  682. package/examples/js/utils/GeometryUtils.js +0 -168
  683. package/examples/js/utils/LDrawUtils.js +0 -179
  684. package/examples/js/utils/PackedPhongMaterial.js +0 -109
  685. package/examples/js/utils/SceneUtils.js +0 -214
  686. package/examples/js/utils/ShadowMapViewer.js +0 -183
  687. package/examples/js/utils/SkeletonUtils.js +0 -493
  688. package/examples/js/utils/UVsDebug.js +0 -143
  689. package/examples/js/utils/WorkerPool.js +0 -105
  690. package/examples/jsm/libs/OimoPhysics/OimoPhysics.js +0 -37071
  691. package/examples/jsm/libs/OimoPhysics/index.js +0 -43
  692. package/examples/jsm/libs/flow.module.js +0 -4552
  693. package/examples/jsm/libs/tween.module.min.js +0 -3
  694. package/examples/jsm/loaders/BasisTextureLoader.js +0 -790
  695. package/examples/jsm/loaders/IFCLoader.js +0 -2431
  696. package/examples/jsm/loaders/ifc/web-ifc-api.js +0 -47504
  697. package/examples/jsm/loaders/ifc/web-ifc.wasm +0 -0
  698. package/examples/jsm/node-editor/NodeEditor.js +0 -857
  699. package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +0 -14
  700. package/examples/jsm/node-editor/accessors/NormalEditor.js +0 -30
  701. package/examples/jsm/node-editor/accessors/PositionEditor.js +0 -30
  702. package/examples/jsm/node-editor/accessors/UVEditor.js +0 -25
  703. package/examples/jsm/node-editor/core/BaseNode.js +0 -96
  704. package/examples/jsm/node-editor/core/DataFile.js +0 -59
  705. package/examples/jsm/node-editor/core/FileEditor.js +0 -20
  706. package/examples/jsm/node-editor/core/FileURLEditor.js +0 -29
  707. package/examples/jsm/node-editor/display/BlendEditor.js +0 -44
  708. package/examples/jsm/node-editor/display/NormalMapEditor.js +0 -49
  709. package/examples/jsm/node-editor/examples/animate-uv.json +0 -1
  710. package/examples/jsm/node-editor/examples/fake-top-light.json +0 -1
  711. package/examples/jsm/node-editor/examples/matcap.json +0 -1
  712. package/examples/jsm/node-editor/examples/oscillator-color.json +0 -1
  713. package/examples/jsm/node-editor/examples/rim.json +0 -1
  714. package/examples/jsm/node-editor/inputs/ColorEditor.js +0 -96
  715. package/examples/jsm/node-editor/inputs/FloatEditor.js +0 -23
  716. package/examples/jsm/node-editor/inputs/SliderEditor.js +0 -67
  717. package/examples/jsm/node-editor/inputs/TextureEditor.js +0 -155
  718. package/examples/jsm/node-editor/inputs/Vector2Editor.js +0 -28
  719. package/examples/jsm/node-editor/inputs/Vector3Editor.js +0 -30
  720. package/examples/jsm/node-editor/inputs/Vector4Editor.js +0 -37
  721. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +0 -84
  722. package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +0 -102
  723. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +0 -118
  724. package/examples/jsm/node-editor/math/AngleEditor.js +0 -40
  725. package/examples/jsm/node-editor/math/DotEditor.js +0 -35
  726. package/examples/jsm/node-editor/math/InvertEditor.js +0 -39
  727. package/examples/jsm/node-editor/math/LimiterEditor.js +0 -62
  728. package/examples/jsm/node-editor/math/NormalizeEditor.js +0 -28
  729. package/examples/jsm/node-editor/math/OperatorEditor.js +0 -63
  730. package/examples/jsm/node-editor/math/PowerEditor.js +0 -44
  731. package/examples/jsm/node-editor/math/TrigonometryEditor.js +0 -45
  732. package/examples/jsm/node-editor/procedural/CheckerEditor.js +0 -27
  733. package/examples/jsm/node-editor/scene/MeshEditor.js +0 -102
  734. package/examples/jsm/node-editor/scene/Object3DEditor.js +0 -160
  735. package/examples/jsm/node-editor/scene/PointsEditor.js +0 -99
  736. package/examples/jsm/node-editor/utils/JoinEditor.js +0 -58
  737. package/examples/jsm/node-editor/utils/OscillatorEditor.js +0 -43
  738. package/examples/jsm/node-editor/utils/PreviewEditor.js +0 -170
  739. package/examples/jsm/node-editor/utils/SplitEditor.js +0 -39
  740. package/examples/jsm/node-editor/utils/TimerEditor.js +0 -58
  741. package/examples/jsm/nodes/core/ExpressionNode.js +0 -32
  742. package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +0 -22
  743. package/examples/jsm/nodes/lighting/PunctualLightNode.js +0 -68
  744. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +0 -301
  745. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +0 -149
  746. package/examples/jsm/objects/GroundProjectedEnv.js +0 -186
  747. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +0 -36
  748. package/src/renderers/shaders/ShaderChunk/uv2_pars_fragment.glsl.js +0 -7
  749. package/src/renderers/shaders/ShaderChunk/uv2_pars_vertex.glsl.js +0 -10
  750. package/src/renderers/shaders/ShaderChunk/uv2_vertex.glsl.js +0 -7
  751. /package/examples/{js → jsm}/libs/ammo.wasm.js +0 -0
  752. /package/examples/{js → jsm}/libs/ammo.wasm.wasm +0 -0
  753. /package/examples/{js → jsm}/libs/basis/basis_transcoder.js +0 -0
  754. /package/examples/{js → jsm}/libs/basis/basis_transcoder.wasm +0 -0
  755. /package/examples/{js → jsm}/libs/draco/README.md +0 -0
  756. /package/examples/{js → jsm}/libs/draco/draco_encoder.js +0 -0
  757. /package/examples/{js → jsm}/libs/draco/gltf/draco_encoder.js +0 -0
@@ -60,8 +60,9 @@ import {
60
60
  Vector2,
61
61
  Vector3,
62
62
  VectorKeyframeTrack,
63
- sRGBEncoding
63
+ SRGBColorSpace
64
64
  } from 'three';
65
+ import { toTrianglesDrawMode } from '../utils/BufferGeometryUtils.js';
65
66
 
66
67
  class GLTFLoader extends Loader {
67
68
 
@@ -93,6 +94,12 @@ class GLTFLoader extends Loader {
93
94
 
94
95
  } );
95
96
 
97
+ this.register( function ( parser ) {
98
+
99
+ return new GLTFTextureAVIFExtension( parser );
100
+
101
+ } );
102
+
96
103
  this.register( function ( parser ) {
97
104
 
98
105
  return new GLTFMaterialsSheenExtension( parser );
@@ -286,6 +293,7 @@ class GLTFLoader extends Loader {
286
293
  let json;
287
294
  const extensions = {};
288
295
  const plugins = {};
296
+ const textDecoder = new TextDecoder();
289
297
 
290
298
  if ( typeof data === 'string' ) {
291
299
 
@@ -293,7 +301,7 @@ class GLTFLoader extends Loader {
293
301
 
294
302
  } else if ( data instanceof ArrayBuffer ) {
295
303
 
296
- const magic = LoaderUtils.decodeText( new Uint8Array( data, 0, 4 ) );
304
+ const magic = textDecoder.decode( new Uint8Array( data, 0, 4 ) );
297
305
 
298
306
  if ( magic === BINARY_EXTENSION_HEADER_MAGIC ) {
299
307
 
@@ -312,7 +320,7 @@ class GLTFLoader extends Loader {
312
320
 
313
321
  } else {
314
322
 
315
- json = JSON.parse( LoaderUtils.decodeText( new Uint8Array( data ) ) );
323
+ json = JSON.parse( textDecoder.decode( data ) );
316
324
 
317
325
  }
318
326
 
@@ -471,6 +479,7 @@ const EXTENSIONS = {
471
479
  KHR_MESH_QUANTIZATION: 'KHR_mesh_quantization',
472
480
  KHR_MATERIALS_EMISSIVE_STRENGTH: 'KHR_materials_emissive_strength',
473
481
  EXT_TEXTURE_WEBP: 'EXT_texture_webp',
482
+ EXT_TEXTURE_AVIF: 'EXT_texture_avif',
474
483
  EXT_MESHOPT_COMPRESSION: 'EXT_meshopt_compression',
475
484
  EXT_MESH_GPU_INSTANCING: 'EXT_mesh_gpu_instancing'
476
485
  };
@@ -584,7 +593,7 @@ class GLTFLightsExtension {
584
593
 
585
594
  }
586
595
 
587
- getDependency( type, index ) {
596
+ getDependency( type, index ) {
588
597
 
589
598
  if ( type !== 'light' ) return;
590
599
 
@@ -654,7 +663,7 @@ class GLTFMaterialsUnlitExtension {
654
663
 
655
664
  if ( metallicRoughness.baseColorTexture !== undefined ) {
656
665
 
657
- pending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture, sRGBEncoding ) );
666
+ pending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture, SRGBColorSpace ) );
658
667
 
659
668
  }
660
669
 
@@ -935,7 +944,7 @@ class GLTFMaterialsSheenExtension {
935
944
 
936
945
  if ( extension.sheenColorTexture !== undefined ) {
937
946
 
938
- pending.push( parser.assignTexture( materialParams, 'sheenColorMap', extension.sheenColorTexture, sRGBEncoding ) );
947
+ pending.push( parser.assignTexture( materialParams, 'sheenColorMap', extension.sheenColorTexture, SRGBColorSpace ) );
939
948
 
940
949
  }
941
950
 
@@ -1168,7 +1177,7 @@ class GLTFMaterialsSpecularExtension {
1168
1177
 
1169
1178
  if ( extension.specularColorTexture !== undefined ) {
1170
1179
 
1171
- pending.push( parser.assignTexture( materialParams, 'specularColorMap', extension.specularColorTexture, sRGBEncoding ) );
1180
+ pending.push( parser.assignTexture( materialParams, 'specularColorMap', extension.specularColorTexture, SRGBColorSpace ) );
1172
1181
 
1173
1182
  }
1174
1183
 
@@ -1314,6 +1323,89 @@ class GLTFTextureWebPExtension {
1314
1323
 
1315
1324
  }
1316
1325
 
1326
+ /**
1327
+ * AVIF Texture Extension
1328
+ *
1329
+ * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_avif
1330
+ */
1331
+ class GLTFTextureAVIFExtension {
1332
+
1333
+ constructor( parser ) {
1334
+
1335
+ this.parser = parser;
1336
+ this.name = EXTENSIONS.EXT_TEXTURE_AVIF;
1337
+ this.isSupported = null;
1338
+
1339
+ }
1340
+
1341
+ loadTexture( textureIndex ) {
1342
+
1343
+ const name = this.name;
1344
+ const parser = this.parser;
1345
+ const json = parser.json;
1346
+
1347
+ const textureDef = json.textures[ textureIndex ];
1348
+
1349
+ if ( ! textureDef.extensions || ! textureDef.extensions[ name ] ) {
1350
+
1351
+ return null;
1352
+
1353
+ }
1354
+
1355
+ const extension = textureDef.extensions[ name ];
1356
+ const source = json.images[ extension.source ];
1357
+
1358
+ let loader = parser.textureLoader;
1359
+ if ( source.uri ) {
1360
+
1361
+ const handler = parser.options.manager.getHandler( source.uri );
1362
+ if ( handler !== null ) loader = handler;
1363
+
1364
+ }
1365
+
1366
+ return this.detectSupport().then( function ( isSupported ) {
1367
+
1368
+ if ( isSupported ) return parser.loadTextureImage( textureIndex, extension.source, loader );
1369
+
1370
+ if ( json.extensionsRequired && json.extensionsRequired.indexOf( name ) >= 0 ) {
1371
+
1372
+ throw new Error( 'THREE.GLTFLoader: AVIF required by asset but unsupported.' );
1373
+
1374
+ }
1375
+
1376
+ // Fall back to PNG or JPEG.
1377
+ return parser.loadTexture( textureIndex );
1378
+
1379
+ } );
1380
+
1381
+ }
1382
+
1383
+ detectSupport() {
1384
+
1385
+ if ( ! this.isSupported ) {
1386
+
1387
+ this.isSupported = new Promise( function ( resolve ) {
1388
+
1389
+ const image = new Image();
1390
+
1391
+ // Lossy test image.
1392
+ image.src = 'data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=';
1393
+ image.onload = image.onerror = function () {
1394
+
1395
+ resolve( image.height === 1 );
1396
+
1397
+ };
1398
+
1399
+ } );
1400
+
1401
+ }
1402
+
1403
+ return this.isSupported;
1404
+
1405
+ }
1406
+
1407
+ }
1408
+
1317
1409
  /**
1318
1410
  * meshopt BufferView Compression Extension
1319
1411
  *
@@ -1526,8 +1618,6 @@ class GLTFMeshGpuInstancing {
1526
1618
  // Just in case
1527
1619
  Object3D.prototype.copy.call( instancedMesh, mesh );
1528
1620
 
1529
- // https://github.com/mrdoob/three.js/issues/18334
1530
- instancedMesh.frustumCulled = false;
1531
1621
  this.parser.assignFinalMaterial( instancedMesh );
1532
1622
 
1533
1623
  instancedMeshes.push( instancedMesh );
@@ -1566,9 +1656,10 @@ class GLTFBinaryExtension {
1566
1656
  this.body = null;
1567
1657
 
1568
1658
  const headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH );
1659
+ const textDecoder = new TextDecoder();
1569
1660
 
1570
1661
  this.header = {
1571
- magic: LoaderUtils.decodeText( new Uint8Array( data.slice( 0, 4 ) ) ),
1662
+ magic: textDecoder.decode( new Uint8Array( data.slice( 0, 4 ) ) ),
1572
1663
  version: headerView.getUint32( 4, true ),
1573
1664
  length: headerView.getUint32( 8, true )
1574
1665
  };
@@ -1598,7 +1689,7 @@ class GLTFBinaryExtension {
1598
1689
  if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON ) {
1599
1690
 
1600
1691
  const contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength );
1601
- this.content = LoaderUtils.decodeText( contentArray );
1692
+ this.content = textDecoder.decode( contentArray );
1602
1693
 
1603
1694
  } else if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN ) {
1604
1695
 
@@ -1721,13 +1812,10 @@ class GLTFTextureTransformExtension {
1721
1812
 
1722
1813
  extendTexture( texture, transform ) {
1723
1814
 
1724
- if ( transform.texCoord !== undefined ) {
1725
-
1726
- console.warn( 'THREE.GLTFLoader: Custom UV sets in "' + this.name + '" extension not yet supported.' );
1727
-
1728
- }
1729
-
1730
- if ( transform.offset === undefined && transform.rotation === undefined && transform.scale === undefined ) {
1815
+ if ( ( transform.texCoord === undefined || transform.texCoord === texture.channel )
1816
+ && transform.offset === undefined
1817
+ && transform.rotation === undefined
1818
+ && transform.scale === undefined ) {
1731
1819
 
1732
1820
  // See https://github.com/mrdoob/three.js/issues/21819.
1733
1821
  return texture;
@@ -1736,6 +1824,12 @@ class GLTFTextureTransformExtension {
1736
1824
 
1737
1825
  texture = texture.clone();
1738
1826
 
1827
+ if ( transform.texCoord !== undefined ) {
1828
+
1829
+ texture.channel = transform.texCoord;
1830
+
1831
+ }
1832
+
1739
1833
  if ( transform.offset !== undefined ) {
1740
1834
 
1741
1835
  texture.offset.fromArray( transform.offset );
@@ -1937,7 +2031,9 @@ const ATTRIBUTES = {
1937
2031
  NORMAL: 'normal',
1938
2032
  TANGENT: 'tangent',
1939
2033
  TEXCOORD_0: 'uv',
1940
- TEXCOORD_1: 'uv2',
2034
+ TEXCOORD_1: 'uv1',
2035
+ TEXCOORD_2: 'uv2',
2036
+ TEXCOORD_3: 'uv3',
1941
2037
  COLOR_0: 'color',
1942
2038
  WEIGHTS_0: 'skinWeight',
1943
2039
  JOINTS_0: 'skinIndex',
@@ -2229,6 +2325,8 @@ function getImageURIMimeType( uri ) {
2229
2325
 
2230
2326
  }
2231
2327
 
2328
+ const _identityMatrix = new Matrix4();
2329
+
2232
2330
  /* GLTF PARSER */
2233
2331
 
2234
2332
  class GLTFParser {
@@ -2249,6 +2347,9 @@ class GLTFParser {
2249
2347
  // BufferGeometry caching
2250
2348
  this.primitiveCache = {};
2251
2349
 
2350
+ // Node cache
2351
+ this.nodeCache = {};
2352
+
2252
2353
  // Object3D instance caches
2253
2354
  this.meshCache = { refs: {}, uses: {} };
2254
2355
  this.cameraCache = { refs: {}, uses: {} };
@@ -2262,7 +2363,7 @@ class GLTFParser {
2262
2363
 
2263
2364
  // Use an ImageBitmapLoader if imageBitmaps are supported. Moves much of the
2264
2365
  // expensive work of uploading a texture to the GPU off the main thread.
2265
-
2366
+
2266
2367
  let isSafari = false;
2267
2368
  let isFirefox = false;
2268
2369
  let firefoxVersion = - 1;
@@ -2319,6 +2420,7 @@ class GLTFParser {
2319
2420
 
2320
2421
  // Clear the loader cache
2321
2422
  this.cache.removeAll();
2423
+ this.nodeCache = {};
2322
2424
 
2323
2425
  // Mark the special nodes/meshes in json for efficient parse
2324
2426
  this._invokeAll( function ( ext ) {
@@ -2538,7 +2640,11 @@ class GLTFParser {
2538
2640
  break;
2539
2641
 
2540
2642
  case 'node':
2541
- dependency = this.loadNode( index );
2643
+ dependency = this._invokeOne( function ( ext ) {
2644
+
2645
+ return ext.loadNode && ext.loadNode( index );
2646
+
2647
+ } );
2542
2648
  break;
2543
2649
 
2544
2650
  case 'mesh':
@@ -2889,6 +2995,12 @@ class GLTFParser {
2889
2995
 
2890
2996
  texture.name = textureDef.name || sourceDef.name || '';
2891
2997
 
2998
+ if ( texture.name === '' && typeof sourceDef.uri === 'string' && sourceDef.uri.startsWith( 'data:image/' ) === false ) {
2999
+
3000
+ texture.name = sourceDef.uri;
3001
+
3002
+ }
3003
+
2892
3004
  const samplers = json.samplers || {};
2893
3005
  const sampler = samplers[ textureDef.sampler ] || {};
2894
3006
 
@@ -3007,7 +3119,7 @@ class GLTFParser {
3007
3119
  * @param {Object} mapDef
3008
3120
  * @return {Promise<Texture>}
3009
3121
  */
3010
- assignTexture( materialParams, mapName, mapDef, encoding ) {
3122
+ assignTexture( materialParams, mapName, mapDef, colorSpace ) {
3011
3123
 
3012
3124
  const parser = this;
3013
3125
 
@@ -3015,11 +3127,10 @@ class GLTFParser {
3015
3127
 
3016
3128
  if ( ! texture ) return null;
3017
3129
 
3018
- // Materials sample aoMap from UV set 1 and other maps from UV set 0 - this can't be configured
3019
- // However, we will copy UV set 0 to UV set 1 on demand for aoMap
3020
- if ( mapDef.texCoord !== undefined && mapDef.texCoord != 0 && ! ( mapName === 'aoMap' && mapDef.texCoord == 1 ) ) {
3130
+ if ( mapDef.texCoord !== undefined && mapDef.texCoord > 0 ) {
3021
3131
 
3022
- console.warn( 'THREE.GLTFLoader: Custom UV set ' + mapDef.texCoord + ' for texture ' + mapName + ' not yet supported.' );
3132
+ texture = texture.clone();
3133
+ texture.channel = mapDef.texCoord;
3023
3134
 
3024
3135
  }
3025
3136
 
@@ -3037,9 +3148,9 @@ class GLTFParser {
3037
3148
 
3038
3149
  }
3039
3150
 
3040
- if ( encoding !== undefined ) {
3151
+ if ( colorSpace !== undefined ) {
3041
3152
 
3042
- texture.encoding = encoding;
3153
+ texture.colorSpace = colorSpace;
3043
3154
 
3044
3155
  }
3045
3156
 
@@ -3099,6 +3210,7 @@ class GLTFParser {
3099
3210
  lineMaterial = new LineBasicMaterial();
3100
3211
  Material.prototype.copy.call( lineMaterial, material );
3101
3212
  lineMaterial.color.copy( material.color );
3213
+ lineMaterial.map = material.map;
3102
3214
 
3103
3215
  this.cache.add( cacheKey, lineMaterial );
3104
3216
 
@@ -3144,14 +3256,6 @@ class GLTFParser {
3144
3256
 
3145
3257
  }
3146
3258
 
3147
- // workarounds for mesh and geometry
3148
-
3149
- if ( material.aoMap && geometry.attributes.uv2 === undefined && geometry.attributes.uv !== undefined ) {
3150
-
3151
- geometry.setAttribute( 'uv2', geometry.attributes.uv );
3152
-
3153
- }
3154
-
3155
3259
  mesh.material = material;
3156
3260
 
3157
3261
  }
@@ -3207,7 +3311,7 @@ class GLTFParser {
3207
3311
 
3208
3312
  if ( metallicRoughness.baseColorTexture !== undefined ) {
3209
3313
 
3210
- pending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture, sRGBEncoding ) );
3314
+ pending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture, SRGBColorSpace ) );
3211
3315
 
3212
3316
  }
3213
3317
 
@@ -3298,7 +3402,7 @@ class GLTFParser {
3298
3402
 
3299
3403
  if ( materialDef.emissiveTexture !== undefined && materialType !== MeshBasicMaterial ) {
3300
3404
 
3301
- pending.push( parser.assignTexture( materialParams, 'emissiveMap', materialDef.emissiveTexture, sRGBEncoding ) );
3405
+ pending.push( parser.assignTexture( materialParams, 'emissiveMap', materialDef.emissiveTexture, SRGBColorSpace ) );
3302
3406
 
3303
3407
  }
3304
3408
 
@@ -3465,10 +3569,9 @@ class GLTFParser {
3465
3569
  ? new SkinnedMesh( geometry, material )
3466
3570
  : new Mesh( geometry, material );
3467
3571
 
3468
- if ( mesh.isSkinnedMesh === true && ! mesh.geometry.attributes.skinWeight.normalized ) {
3572
+ if ( mesh.isSkinnedMesh === true ) {
3469
3573
 
3470
- // we normalize floating point skin weight array to fix malformed assets (see #15319)
3471
- // it's important to skip this for non-float32 data since normalizeSkinWeights assumes non-normalized inputs
3574
+ // normalize skin weights to fix malformed assets (see #15319)
3472
3575
  mesh.normalizeSkinWeights();
3473
3576
 
3474
3577
  }
@@ -3603,7 +3706,7 @@ class GLTFParser {
3603
3706
 
3604
3707
  for ( let i = 0, il = skinDef.joints.length; i < il; i ++ ) {
3605
3708
 
3606
- pending.push( this.getDependency( 'node', skinDef.joints[ i ] ) );
3709
+ pending.push( this._loadNodeShallow( skinDef.joints[ i ] ) );
3607
3710
 
3608
3711
  }
3609
3712
 
@@ -3622,6 +3725,9 @@ class GLTFParser {
3622
3725
  const inverseBindMatrices = results.pop();
3623
3726
  const jointNodes = results;
3624
3727
 
3728
+ // Note that bones (joint nodes) may or may not be in the
3729
+ // scene graph at this time.
3730
+
3625
3731
  const bones = [];
3626
3732
  const boneInverses = [];
3627
3733
 
@@ -3667,6 +3773,7 @@ class GLTFParser {
3667
3773
  const json = this.json;
3668
3774
 
3669
3775
  const animationDef = json.animations[ animationIndex ];
3776
+ const animationName = animationDef.name ? animationDef.name : 'animation_' + animationIndex;
3670
3777
 
3671
3778
  const pendingNodes = [];
3672
3779
  const pendingInputAccessors = [];
@@ -3683,6 +3790,8 @@ class GLTFParser {
3683
3790
  const input = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.input ] : sampler.input;
3684
3791
  const output = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.output ] : sampler.output;
3685
3792
 
3793
+ if ( target.node === undefined ) continue;
3794
+
3686
3795
  pendingNodes.push( this.getDependency( 'node', name ) );
3687
3796
  pendingInputAccessors.push( this.getDependency( 'accessor', input ) );
3688
3797
  pendingOutputAccessors.push( this.getDependency( 'accessor', output ) );
@@ -3820,9 +3929,7 @@ class GLTFParser {
3820
3929
 
3821
3930
  }
3822
3931
 
3823
- const name = animationDef.name ? animationDef.name : 'animation_' + animationIndex;
3824
-
3825
- return new AnimationClip( name, undefined, tracks );
3932
+ return new AnimationClip( animationName, undefined, tracks );
3826
3933
 
3827
3934
  } );
3828
3935
 
@@ -3871,53 +3978,118 @@ class GLTFParser {
3871
3978
  loadNode( nodeIndex ) {
3872
3979
 
3873
3980
  const json = this.json;
3874
- const extensions = this.extensions;
3875
3981
  const parser = this;
3876
3982
 
3877
3983
  const nodeDef = json.nodes[ nodeIndex ];
3878
3984
 
3879
- // reserve node's name before its dependencies, so the root has the intended name.
3880
- const nodeName = nodeDef.name ? parser.createUniqueName( nodeDef.name ) : '';
3985
+ const nodePending = parser._loadNodeShallow( nodeIndex );
3986
+
3987
+ const childPending = [];
3988
+ const childrenDef = nodeDef.children || [];
3881
3989
 
3882
- return ( function () {
3990
+ for ( let i = 0, il = childrenDef.length; i < il; i ++ ) {
3883
3991
 
3884
- const pending = [];
3992
+ childPending.push( parser.getDependency( 'node', childrenDef[ i ] ) );
3885
3993
 
3886
- const meshPromise = parser._invokeOne( function ( ext ) {
3994
+ }
3887
3995
 
3888
- return ext.createNodeMesh && ext.createNodeMesh( nodeIndex );
3996
+ const skeletonPending = nodeDef.skin === undefined
3997
+ ? Promise.resolve( null )
3998
+ : parser.getDependency( 'skin', nodeDef.skin );
3889
3999
 
3890
- } );
4000
+ return Promise.all( [
4001
+ nodePending,
4002
+ Promise.all( childPending ),
4003
+ skeletonPending
4004
+ ] ).then( function ( results ) {
3891
4005
 
3892
- if ( meshPromise ) {
4006
+ const node = results[ 0 ];
4007
+ const children = results[ 1 ];
4008
+ const skeleton = results[ 2 ];
3893
4009
 
3894
- pending.push( meshPromise );
4010
+ if ( skeleton !== null ) {
3895
4011
 
3896
- }
4012
+ // This full traverse should be fine because
4013
+ // child glTF nodes have not been added to this node yet.
4014
+ node.traverse( function ( mesh ) {
3897
4015
 
3898
- if ( nodeDef.camera !== undefined ) {
4016
+ if ( ! mesh.isSkinnedMesh ) return;
4017
+
4018
+ mesh.bind( skeleton, _identityMatrix );
4019
+
4020
+ } );
3899
4021
 
3900
- pending.push( parser.getDependency( 'camera', nodeDef.camera ).then( function ( camera ) {
4022
+ }
3901
4023
 
3902
- return parser._getNodeRef( parser.cameraCache, nodeDef.camera, camera );
4024
+ for ( let i = 0, il = children.length; i < il; i ++ ) {
3903
4025
 
3904
- } ) );
4026
+ node.add( children[ i ] );
3905
4027
 
3906
4028
  }
3907
4029
 
3908
- parser._invokeAll( function ( ext ) {
4030
+ return node;
3909
4031
 
3910
- return ext.createNodeAttachment && ext.createNodeAttachment( nodeIndex );
4032
+ } );
3911
4033
 
3912
- } ).forEach( function ( promise ) {
4034
+ }
3913
4035
 
3914
- pending.push( promise );
4036
+ // ._loadNodeShallow() parses a single node.
4037
+ // skin and child nodes are created and added in .loadNode() (no '_' prefix).
4038
+ _loadNodeShallow( nodeIndex ) {
3915
4039
 
3916
- } );
4040
+ const json = this.json;
4041
+ const extensions = this.extensions;
4042
+ const parser = this;
4043
+
4044
+ // This method is called from .loadNode() and .loadSkin().
4045
+ // Cache a node to avoid duplication.
4046
+
4047
+ if ( this.nodeCache[ nodeIndex ] !== undefined ) {
4048
+
4049
+ return this.nodeCache[ nodeIndex ];
4050
+
4051
+ }
4052
+
4053
+ const nodeDef = json.nodes[ nodeIndex ];
4054
+
4055
+ // reserve node's name before its dependencies, so the root has the intended name.
4056
+ const nodeName = nodeDef.name ? parser.createUniqueName( nodeDef.name ) : '';
4057
+
4058
+ const pending = [];
4059
+
4060
+ const meshPromise = parser._invokeOne( function ( ext ) {
4061
+
4062
+ return ext.createNodeMesh && ext.createNodeMesh( nodeIndex );
4063
+
4064
+ } );
3917
4065
 
3918
- return Promise.all( pending );
4066
+ if ( meshPromise ) {
4067
+
4068
+ pending.push( meshPromise );
4069
+
4070
+ }
4071
+
4072
+ if ( nodeDef.camera !== undefined ) {
4073
+
4074
+ pending.push( parser.getDependency( 'camera', nodeDef.camera ).then( function ( camera ) {
4075
+
4076
+ return parser._getNodeRef( parser.cameraCache, nodeDef.camera, camera );
4077
+
4078
+ } ) );
4079
+
4080
+ }
4081
+
4082
+ parser._invokeAll( function ( ext ) {
4083
+
4084
+ return ext.createNodeAttachment && ext.createNodeAttachment( nodeIndex );
4085
+
4086
+ } ).forEach( function ( promise ) {
4087
+
4088
+ pending.push( promise );
4089
+
4090
+ } );
3919
4091
 
3920
- }() ).then( function ( objects ) {
4092
+ this.nodeCache[ nodeIndex ] = Promise.all( pending ).then( function ( objects ) {
3921
4093
 
3922
4094
  let node;
3923
4095
 
@@ -4001,6 +4173,8 @@ class GLTFParser {
4001
4173
 
4002
4174
  } );
4003
4175
 
4176
+ return this.nodeCache[ nodeIndex ];
4177
+
4004
4178
  }
4005
4179
 
4006
4180
  /**
@@ -4010,7 +4184,6 @@ class GLTFParser {
4010
4184
  */
4011
4185
  loadScene( sceneIndex ) {
4012
4186
 
4013
- const json = this.json;
4014
4187
  const extensions = this.extensions;
4015
4188
  const sceneDef = this.json.scenes[ sceneIndex ];
4016
4189
  const parser = this;
@@ -4030,11 +4203,17 @@ class GLTFParser {
4030
4203
 
4031
4204
  for ( let i = 0, il = nodeIds.length; i < il; i ++ ) {
4032
4205
 
4033
- pending.push( buildNodeHierarchy( nodeIds[ i ], scene, json, parser ) );
4206
+ pending.push( parser.getDependency( 'node', nodeIds[ i ] ) );
4034
4207
 
4035
4208
  }
4036
4209
 
4037
- return Promise.all( pending ).then( function () {
4210
+ return Promise.all( pending ).then( function ( nodes ) {
4211
+
4212
+ for ( let i = 0, il = nodes.length; i < il; i ++ ) {
4213
+
4214
+ scene.add( nodes[ i ] );
4215
+
4216
+ }
4038
4217
 
4039
4218
  // Removes dangling associations, associations that reference a node that
4040
4219
  // didn't make it into the scene.
@@ -4078,57 +4257,6 @@ class GLTFParser {
4078
4257
 
4079
4258
  }
4080
4259
 
4081
- function buildNodeHierarchy( nodeId, parentObject, json, parser ) {
4082
-
4083
- const nodeDef = json.nodes[ nodeId ];
4084
-
4085
- return parser.getDependency( 'node', nodeId ).then( function ( node ) {
4086
-
4087
- if ( nodeDef.skin === undefined ) return node;
4088
-
4089
- // build skeleton here as well
4090
-
4091
- return parser.getDependency( 'skin', nodeDef.skin ).then( function ( skeleton ) {
4092
-
4093
- node.traverse( function ( mesh ) {
4094
-
4095
- if ( ! mesh.isSkinnedMesh ) return;
4096
-
4097
- mesh.bind( skeleton, mesh.matrixWorld );
4098
-
4099
- } );
4100
-
4101
- return node;
4102
-
4103
- } );
4104
-
4105
- } ).then( function ( node ) {
4106
-
4107
- // build node hierachy
4108
-
4109
- parentObject.add( node );
4110
-
4111
- const pending = [];
4112
-
4113
- if ( nodeDef.children ) {
4114
-
4115
- const children = nodeDef.children;
4116
-
4117
- for ( let i = 0, il = children.length; i < il; i ++ ) {
4118
-
4119
- const child = children[ i ];
4120
- pending.push( buildNodeHierarchy( child, node, json, parser ) );
4121
-
4122
- }
4123
-
4124
- }
4125
-
4126
- return Promise.all( pending );
4127
-
4128
- } );
4129
-
4130
- }
4131
-
4132
4260
  /**
4133
4261
  * @param {BufferGeometry} geometry
4134
4262
  * @param {GLTF.Primitive} primitiveDef
@@ -4304,98 +4432,4 @@ function addPrimitiveAttributes( geometry, primitiveDef, parser ) {
4304
4432
 
4305
4433
  }
4306
4434
 
4307
- /**
4308
- * @param {BufferGeometry} geometry
4309
- * @param {Number} drawMode
4310
- * @return {BufferGeometry}
4311
- */
4312
- function toTrianglesDrawMode( geometry, drawMode ) {
4313
-
4314
- let index = geometry.getIndex();
4315
-
4316
- // generate index if not present
4317
-
4318
- if ( index === null ) {
4319
-
4320
- const indices = [];
4321
-
4322
- const position = geometry.getAttribute( 'position' );
4323
-
4324
- if ( position !== undefined ) {
4325
-
4326
- for ( let i = 0; i < position.count; i ++ ) {
4327
-
4328
- indices.push( i );
4329
-
4330
- }
4331
-
4332
- geometry.setIndex( indices );
4333
- index = geometry.getIndex();
4334
-
4335
- } else {
4336
-
4337
- console.error( 'THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.' );
4338
- return geometry;
4339
-
4340
- }
4341
-
4342
- }
4343
-
4344
- //
4345
-
4346
- const numberOfTriangles = index.count - 2;
4347
- const newIndices = [];
4348
-
4349
- if ( drawMode === TriangleFanDrawMode ) {
4350
-
4351
- // gl.TRIANGLE_FAN
4352
-
4353
- for ( let i = 1; i <= numberOfTriangles; i ++ ) {
4354
-
4355
- newIndices.push( index.getX( 0 ) );
4356
- newIndices.push( index.getX( i ) );
4357
- newIndices.push( index.getX( i + 1 ) );
4358
-
4359
- }
4360
-
4361
- } else {
4362
-
4363
- // gl.TRIANGLE_STRIP
4364
-
4365
- for ( let i = 0; i < numberOfTriangles; i ++ ) {
4366
-
4367
- if ( i % 2 === 0 ) {
4368
-
4369
- newIndices.push( index.getX( i ) );
4370
- newIndices.push( index.getX( i + 1 ) );
4371
- newIndices.push( index.getX( i + 2 ) );
4372
-
4373
-
4374
- } else {
4375
-
4376
- newIndices.push( index.getX( i + 2 ) );
4377
- newIndices.push( index.getX( i + 1 ) );
4378
- newIndices.push( index.getX( i ) );
4379
-
4380
- }
4381
-
4382
- }
4383
-
4384
- }
4385
-
4386
- if ( ( newIndices.length / 3 ) !== numberOfTriangles ) {
4387
-
4388
- console.error( 'THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.' );
4389
-
4390
- }
4391
-
4392
- // build final geometry
4393
-
4394
- const newGeometry = geometry.clone();
4395
- newGeometry.setIndex( newIndices );
4396
-
4397
- return newGeometry;
4398
-
4399
- }
4400
-
4401
4435
  export { GLTFLoader };