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
@@ -1,1067 +0,0 @@
1
- ( function () {
2
-
3
- /**
4
- * === IFFParser ===
5
- * - Parses data from the IFF buffer.
6
- * - LWO3 files are in IFF format and can contain the following data types, referred to by shorthand codes
7
- *
8
- * ATOMIC DATA TYPES
9
- * ID Tag - 4x 7 bit uppercase ASCII chars: ID4
10
- * signed integer, 1, 2, or 4 byte length: I1, I2, I4
11
- * unsigned integer, 1, 2, or 4 byte length: U1, U2, U4
12
- * float, 4 byte length: F4
13
- * string, series of ASCII chars followed by null byte (If the length of the string including the null terminating byte is odd, an extra null is added so that the data that follows will begin on an even byte boundary): S0
14
- *
15
- * COMPOUND DATA TYPES
16
- * Variable-length Index (index into an array or collection): U2 or U4 : VX
17
- * Color (RGB): F4 + F4 + F4: COL12
18
- * Coordinate (x, y, z): F4 + F4 + F4: VEC12
19
- * Percentage F4 data type from 0->1 with 1 = 100%: FP4
20
- * Angle in radian F4: ANG4
21
- * Filename (string) S0: FNAM0
22
- * XValue F4 + index (VX) + optional envelope( ENVL ): XVAL
23
- * XValue vector VEC12 + index (VX) + optional envelope( ENVL ): XVAL3
24
- *
25
- * The IFF file is arranged in chunks:
26
- * CHUNK = ID4 + length (U4) + length X bytes of data + optional 0 pad byte
27
- * optional 0 pad byte is there to ensure chunk ends on even boundary, not counted in size
28
- *
29
- * COMPOUND DATA TYPES
30
- * - Chunks are combined in Forms (collections of chunks)
31
- * - FORM = string 'FORM' (ID4) + length (U4) + type (ID4) + optional ( CHUNK | FORM )
32
- * - CHUNKS and FORMS are collectively referred to as blocks
33
- * - The entire file is contained in one top level FORM
34
- *
35
- **/
36
- function IFFParser() {
37
-
38
- this.debugger = new Debugger();
39
- // this.debugger.enable(); // un-comment to log IFF hierarchy.
40
-
41
- }
42
-
43
- IFFParser.prototype = {
44
- constructor: IFFParser,
45
- parse: function ( buffer ) {
46
-
47
- this.reader = new DataViewReader( buffer );
48
- this.tree = {
49
- materials: {},
50
- layers: [],
51
- tags: [],
52
- textures: []
53
- };
54
-
55
- // start out at the top level to add any data before first layer is encountered
56
- this.currentLayer = this.tree;
57
- this.currentForm = this.tree;
58
- this.parseTopForm();
59
- if ( this.tree.format === undefined ) return;
60
- if ( this.tree.format === 'LWO2' ) {
61
-
62
- this.parser = new THREE.LWO2Parser( this );
63
- while ( ! this.reader.endOfFile() ) this.parser.parseBlock();
64
-
65
- } else if ( this.tree.format === 'LWO3' ) {
66
-
67
- this.parser = new THREE.LWO3Parser( this );
68
- while ( ! this.reader.endOfFile() ) this.parser.parseBlock();
69
-
70
- }
71
-
72
- this.debugger.offset = this.reader.offset;
73
- this.debugger.closeForms();
74
- return this.tree;
75
-
76
- },
77
- parseTopForm() {
78
-
79
- this.debugger.offset = this.reader.offset;
80
- var topForm = this.reader.getIDTag();
81
- if ( topForm !== 'FORM' ) {
82
-
83
- console.warn( 'LWOLoader: Top-level FORM missing.' );
84
- return;
85
-
86
- }
87
-
88
- var length = this.reader.getUint32();
89
- this.debugger.dataOffset = this.reader.offset;
90
- this.debugger.length = length;
91
- var type = this.reader.getIDTag();
92
- if ( type === 'LWO2' ) {
93
-
94
- this.tree.format = type;
95
-
96
- } else if ( type === 'LWO3' ) {
97
-
98
- this.tree.format = type;
99
-
100
- }
101
-
102
- this.debugger.node = 0;
103
- this.debugger.nodeID = type;
104
- this.debugger.log();
105
- return;
106
-
107
- },
108
- ///
109
- // FORM PARSING METHODS
110
- ///
111
-
112
- // Forms are organisational and can contain any number of sub chunks and sub forms
113
- // FORM ::= 'FORM'[ID4], length[U4], type[ID4], ( chunk[CHUNK] | form[FORM] ) * }
114
- parseForm( length ) {
115
-
116
- var type = this.reader.getIDTag();
117
- switch ( type ) {
118
-
119
- // SKIPPED FORMS
120
- // if skipForm( length ) is called, the entire form and any sub forms and chunks are skipped
121
-
122
- case 'ISEQ': // Image sequence
123
- case 'ANIM': // plug in animation
124
- case 'STCC': // Color-cycling Still
125
- case 'VPVL':
126
- case 'VPRM':
127
- case 'NROT':
128
- case 'WRPW': // image wrap w ( for cylindrical and spherical projections)
129
- case 'WRPH': // image wrap h
130
- case 'FUNC':
131
- case 'FALL':
132
- case 'OPAC':
133
- case 'GRAD': // gradient texture
134
- case 'ENVS':
135
- case 'VMOP':
136
- case 'VMBG':
137
-
138
- // Car Material FORMS
139
- case 'OMAX':
140
- case 'STEX':
141
- case 'CKBG':
142
- case 'CKEY':
143
- case 'VMLA':
144
- case 'VMLB':
145
- this.debugger.skipped = true;
146
- this.skipForm( length ); // not currently supported
147
- break;
148
-
149
- // if break; is called directly, the position in the lwoTree is not created
150
- // any sub chunks and forms are added to the parent form instead
151
- case 'META':
152
- case 'NNDS':
153
- case 'NODS':
154
- case 'NDTA':
155
- case 'ADAT':
156
- case 'AOVS':
157
- case 'BLOK':
158
-
159
- // used by texture nodes
160
- case 'IBGC': // imageBackgroundColor
161
- case 'IOPC': // imageOpacity
162
- case 'IIMG': // hold reference to image path
163
- case 'TXTR':
164
- // this.setupForm( type, length );
165
- this.debugger.length = 4;
166
- this.debugger.skipped = true;
167
- break;
168
- case 'IFAL': // imageFallof
169
- case 'ISCL': // imageScale
170
- case 'IPOS': // imagePosition
171
- case 'IROT': // imageRotation
172
- case 'IBMP':
173
- case 'IUTD':
174
- case 'IVTD':
175
- this.parseTextureNodeAttribute( type );
176
- break;
177
- case 'ENVL':
178
- this.parseEnvelope( length );
179
- break;
180
-
181
- // CLIP FORM AND SUB FORMS
182
-
183
- case 'CLIP':
184
- if ( this.tree.format === 'LWO2' ) {
185
-
186
- this.parseForm( length );
187
-
188
- } else {
189
-
190
- this.parseClip( length );
191
-
192
- }
193
-
194
- break;
195
- case 'STIL':
196
- this.parseImage();
197
- break;
198
- case 'XREF':
199
- // clone of another STIL
200
- this.reader.skip( 8 ); // unknown
201
- this.currentForm.referenceTexture = {
202
- index: this.reader.getUint32(),
203
- refName: this.reader.getString() // internal unique ref
204
- };
205
-
206
- break;
207
-
208
- // Not in spec, used by texture nodes
209
-
210
- case 'IMST':
211
- this.parseImageStateForm( length );
212
- break;
213
-
214
- // SURF FORM AND SUB FORMS
215
-
216
- case 'SURF':
217
- this.parseSurfaceForm( length );
218
- break;
219
- case 'VALU':
220
- // Not in spec
221
- this.parseValueForm( length );
222
- break;
223
- case 'NTAG':
224
- this.parseSubNode( length );
225
- break;
226
- case 'ATTR': // BSDF Node Attributes
227
- case 'SATR':
228
- // Standard Node Attributes
229
- this.setupForm( 'attributes', length );
230
- break;
231
- case 'NCON':
232
- this.parseConnections( length );
233
- break;
234
- case 'SSHA':
235
- this.parentForm = this.currentForm;
236
- this.currentForm = this.currentSurface;
237
- this.setupForm( 'surfaceShader', length );
238
- break;
239
- case 'SSHD':
240
- this.setupForm( 'surfaceShaderData', length );
241
- break;
242
- case 'ENTR':
243
- // Not in spec
244
- this.parseEntryForm( length );
245
- break;
246
-
247
- // Image Map Layer
248
-
249
- case 'IMAP':
250
- this.parseImageMap( length );
251
- break;
252
- case 'TAMP':
253
- this.parseXVAL( 'amplitude', length );
254
- break;
255
-
256
- //Texture Mapping Form
257
-
258
- case 'TMAP':
259
- this.setupForm( 'textureMap', length );
260
- break;
261
- case 'CNTR':
262
- this.parseXVAL3( 'center', length );
263
- break;
264
- case 'SIZE':
265
- this.parseXVAL3( 'scale', length );
266
- break;
267
- case 'ROTA':
268
- this.parseXVAL3( 'rotation', length );
269
- break;
270
- default:
271
- this.parseUnknownForm( type, length );
272
-
273
- }
274
-
275
- this.debugger.node = 0;
276
- this.debugger.nodeID = type;
277
- this.debugger.log();
278
-
279
- },
280
- setupForm( type, length ) {
281
-
282
- if ( ! this.currentForm ) this.currentForm = this.currentNode;
283
- this.currentFormEnd = this.reader.offset + length;
284
- this.parentForm = this.currentForm;
285
- if ( ! this.currentForm[ type ] ) {
286
-
287
- this.currentForm[ type ] = {};
288
- this.currentForm = this.currentForm[ type ];
289
-
290
- } else {
291
-
292
- // should never see this unless there's a bug in the reader
293
- console.warn( 'LWOLoader: form already exists on parent: ', type, this.currentForm );
294
- this.currentForm = this.currentForm[ type ];
295
-
296
- }
297
-
298
- },
299
- skipForm( length ) {
300
-
301
- this.reader.skip( length - 4 );
302
-
303
- },
304
- parseUnknownForm( type, length ) {
305
-
306
- console.warn( 'LWOLoader: unknown FORM encountered: ' + type, length );
307
- printBuffer( this.reader.dv.buffer, this.reader.offset, length - 4 );
308
- this.reader.skip( length - 4 );
309
-
310
- },
311
- parseSurfaceForm( length ) {
312
-
313
- this.reader.skip( 8 ); // unknown Uint32 x2
314
-
315
- var name = this.reader.getString();
316
- var surface = {
317
- attributes: {},
318
- // LWO2 style non-node attributes will go here
319
- connections: {},
320
- name: name,
321
- inputName: name,
322
- nodes: {},
323
- source: this.reader.getString()
324
- };
325
- this.tree.materials[ name ] = surface;
326
- this.currentSurface = surface;
327
- this.parentForm = this.tree.materials;
328
- this.currentForm = surface;
329
- this.currentFormEnd = this.reader.offset + length;
330
-
331
- },
332
- parseSurfaceLwo2( length ) {
333
-
334
- var name = this.reader.getString();
335
- var surface = {
336
- attributes: {},
337
- // LWO2 style non-node attributes will go here
338
- connections: {},
339
- name: name,
340
- nodes: {},
341
- source: this.reader.getString()
342
- };
343
- this.tree.materials[ name ] = surface;
344
- this.currentSurface = surface;
345
- this.parentForm = this.tree.materials;
346
- this.currentForm = surface;
347
- this.currentFormEnd = this.reader.offset + length;
348
-
349
- },
350
- parseSubNode( length ) {
351
-
352
- // parse the NRNM CHUNK of the subnode FORM to get
353
- // a meaningful name for the subNode
354
- // some subnodes can be renamed, but Input and Surface cannot
355
-
356
- this.reader.skip( 8 ); // NRNM + length
357
- var name = this.reader.getString();
358
- var node = {
359
- name: name
360
- };
361
- this.currentForm = node;
362
- this.currentNode = node;
363
- this.currentFormEnd = this.reader.offset + length;
364
-
365
- },
366
- // collect attributes from all nodes at the top level of a surface
367
- parseConnections( length ) {
368
-
369
- this.currentFormEnd = this.reader.offset + length;
370
- this.parentForm = this.currentForm;
371
- this.currentForm = this.currentSurface.connections;
372
-
373
- },
374
- // surface node attribute data, e.g. specular, roughness etc
375
- parseEntryForm( length ) {
376
-
377
- this.reader.skip( 8 ); // NAME + length
378
- var name = this.reader.getString();
379
- this.currentForm = this.currentNode.attributes;
380
- this.setupForm( name, length );
381
-
382
- },
383
- // parse values from material - doesn't match up to other LWO3 data types
384
- // sub form of entry form
385
- parseValueForm() {
386
-
387
- this.reader.skip( 8 ); // unknown + length
388
-
389
- var valueType = this.reader.getString();
390
- if ( valueType === 'double' ) {
391
-
392
- this.currentForm.value = this.reader.getUint64();
393
-
394
- } else if ( valueType === 'int' ) {
395
-
396
- this.currentForm.value = this.reader.getUint32();
397
-
398
- } else if ( valueType === 'vparam' ) {
399
-
400
- this.reader.skip( 24 );
401
- this.currentForm.value = this.reader.getFloat64();
402
-
403
- } else if ( valueType === 'vparam3' ) {
404
-
405
- this.reader.skip( 24 );
406
- this.currentForm.value = this.reader.getFloat64Array( 3 );
407
-
408
- }
409
-
410
- },
411
- // holds various data about texture node image state
412
- // Data other thanmipMapLevel unknown
413
- parseImageStateForm() {
414
-
415
- this.reader.skip( 8 ); // unknown
416
-
417
- this.currentForm.mipMapLevel = this.reader.getFloat32();
418
-
419
- },
420
- // LWO2 style image data node OR LWO3 textures defined at top level in editor (not as SURF node)
421
- parseImageMap( length ) {
422
-
423
- this.currentFormEnd = this.reader.offset + length;
424
- this.parentForm = this.currentForm;
425
- if ( ! this.currentForm.maps ) this.currentForm.maps = [];
426
- var map = {};
427
- this.currentForm.maps.push( map );
428
- this.currentForm = map;
429
- this.reader.skip( 10 ); // unknown, could be an issue if it contains a VX
430
-
431
- },
432
-
433
- parseTextureNodeAttribute( type ) {
434
-
435
- this.reader.skip( 28 ); // FORM + length + VPRM + unknown + Uint32 x2 + float32
436
-
437
- this.reader.skip( 20 ); // FORM + length + VPVL + float32 + Uint32
438
-
439
- switch ( type ) {
440
-
441
- case 'ISCL':
442
- this.currentNode.scale = this.reader.getFloat32Array( 3 );
443
- break;
444
- case 'IPOS':
445
- this.currentNode.position = this.reader.getFloat32Array( 3 );
446
- break;
447
- case 'IROT':
448
- this.currentNode.rotation = this.reader.getFloat32Array( 3 );
449
- break;
450
- case 'IFAL':
451
- this.currentNode.falloff = this.reader.getFloat32Array( 3 );
452
- break;
453
- case 'IBMP':
454
- this.currentNode.amplitude = this.reader.getFloat32();
455
- break;
456
- case 'IUTD':
457
- this.currentNode.uTiles = this.reader.getFloat32();
458
- break;
459
- case 'IVTD':
460
- this.currentNode.vTiles = this.reader.getFloat32();
461
- break;
462
-
463
- }
464
-
465
- this.reader.skip( 2 ); // unknown
466
-
467
- },
468
-
469
- // ENVL forms are currently ignored
470
- parseEnvelope( length ) {
471
-
472
- this.reader.skip( length - 4 ); // skipping entirely for now
473
-
474
- },
475
-
476
- ///
477
- // CHUNK PARSING METHODS
478
- ///
479
-
480
- // clips can either be defined inside a surface node, or at the top
481
- // level and they have a different format in each case
482
- parseClip( length ) {
483
-
484
- var tag = this.reader.getIDTag();
485
-
486
- // inside surface node
487
- if ( tag === 'FORM' ) {
488
-
489
- this.reader.skip( 16 );
490
- this.currentNode.fileName = this.reader.getString();
491
- return;
492
-
493
- }
494
-
495
- // otherwise top level
496
- this.reader.setOffset( this.reader.offset - 4 );
497
- this.currentFormEnd = this.reader.offset + length;
498
- this.parentForm = this.currentForm;
499
- this.reader.skip( 8 ); // unknown
500
-
501
- var texture = {
502
- index: this.reader.getUint32()
503
- };
504
- this.tree.textures.push( texture );
505
- this.currentForm = texture;
506
-
507
- },
508
- parseClipLwo2( length ) {
509
-
510
- var texture = {
511
- index: this.reader.getUint32(),
512
- fileName: ''
513
- };
514
-
515
- // seach STIL block
516
- while ( true ) {
517
-
518
- var tag = this.reader.getIDTag();
519
- var n_length = this.reader.getUint16();
520
- if ( tag === 'STIL' ) {
521
-
522
- texture.fileName = this.reader.getString();
523
- break;
524
-
525
- }
526
-
527
- if ( n_length >= length ) {
528
-
529
- break;
530
-
531
- }
532
-
533
- }
534
-
535
- this.tree.textures.push( texture );
536
- this.currentForm = texture;
537
-
538
- },
539
- parseImage() {
540
-
541
- this.reader.skip( 8 ); // unknown
542
- this.currentForm.fileName = this.reader.getString();
543
-
544
- },
545
- parseXVAL( type, length ) {
546
-
547
- var endOffset = this.reader.offset + length - 4;
548
- this.reader.skip( 8 );
549
- this.currentForm[ type ] = this.reader.getFloat32();
550
- this.reader.setOffset( endOffset ); // set end offset directly to skip optional envelope
551
-
552
- },
553
-
554
- parseXVAL3( type, length ) {
555
-
556
- var endOffset = this.reader.offset + length - 4;
557
- this.reader.skip( 8 );
558
- this.currentForm[ type ] = {
559
- x: this.reader.getFloat32(),
560
- y: this.reader.getFloat32(),
561
- z: this.reader.getFloat32()
562
- };
563
- this.reader.setOffset( endOffset );
564
-
565
- },
566
- // Tags associated with an object
567
- // OTAG { type[ID4], tag-string[S0] }
568
- parseObjectTag() {
569
-
570
- if ( ! this.tree.objectTags ) this.tree.objectTags = {};
571
- this.tree.objectTags[ this.reader.getIDTag() ] = {
572
- tagString: this.reader.getString()
573
- };
574
-
575
- },
576
- // Signals the start of a new layer. All the data chunks which follow will be included in this layer until another layer chunk is encountered.
577
- // LAYR: number[U2], flags[U2], pivot[VEC12], name[S0], parent[U2]
578
- parseLayer( length ) {
579
-
580
- var layer = {
581
- number: this.reader.getUint16(),
582
- flags: this.reader.getUint16(),
583
- // If the least significant bit of flags is set, the layer is hidden.
584
- pivot: this.reader.getFloat32Array( 3 ),
585
- // Note: this seems to be superflous, as the geometry is translated when pivot is present
586
- name: this.reader.getString()
587
- };
588
- this.tree.layers.push( layer );
589
- this.currentLayer = layer;
590
- var parsedLength = 16 + stringOffset( this.currentLayer.name ); // index ( 2 ) + flags( 2 ) + pivot( 12 ) + stringlength
591
-
592
- // if we have not reached then end of the layer block, there must be a parent defined
593
- this.currentLayer.parent = parsedLength < length ? this.reader.getUint16() : - 1; // omitted or -1 for no parent
594
-
595
- },
596
-
597
- // VEC12 * ( F4 + F4 + F4 ) array of x,y,z vectors
598
- // Converting from left to right handed coordinate system:
599
- // x -> -x and switch material FrontSide -> BackSide
600
- parsePoints( length ) {
601
-
602
- this.currentPoints = [];
603
- for ( var i = 0; i < length / 4; i += 3 ) {
604
-
605
- // z -> -z to match three.js right handed coords
606
- this.currentPoints.push( this.reader.getFloat32(), this.reader.getFloat32(), - this.reader.getFloat32() );
607
-
608
- }
609
-
610
- },
611
- // parse VMAP or VMAD
612
- // Associates a set of floating-point vectors with a set of points.
613
- // VMAP: { type[ID4], dimension[U2], name[S0], ( vert[VX], value[F4] # dimension ) * }
614
-
615
- // VMAD Associates a set of floating-point vectors with the vertices of specific polygons.
616
- // Similar to VMAP UVs, but associates with polygon vertices rather than points
617
- // to solve to problem of UV seams: VMAD chunks are paired with VMAPs of the same name,
618
- // if they exist. The vector values in the VMAD will then replace those in the
619
- // corresponding VMAP, but only for calculations involving the specified polygons.
620
- // VMAD { type[ID4], dimension[U2], name[S0], ( vert[VX], poly[VX], value[F4] # dimension ) * }
621
- parseVertexMapping( length, discontinuous ) {
622
-
623
- var finalOffset = this.reader.offset + length;
624
- var channelName = this.reader.getString();
625
- if ( this.reader.offset === finalOffset ) {
626
-
627
- // then we are in a texture node and the VMAP chunk is just a reference to a UV channel name
628
- this.currentForm.UVChannel = channelName;
629
- return;
630
-
631
- }
632
-
633
- // otherwise reset to initial length and parse normal VMAP CHUNK
634
- this.reader.setOffset( this.reader.offset - stringOffset( channelName ) );
635
- var type = this.reader.getIDTag();
636
- this.reader.getUint16(); // dimension
637
- var name = this.reader.getString();
638
- var remainingLength = length - 6 - stringOffset( name );
639
- switch ( type ) {
640
-
641
- case 'TXUV':
642
- this.parseUVMapping( name, finalOffset, discontinuous );
643
- break;
644
- case 'MORF':
645
- case 'SPOT':
646
- this.parseMorphTargets( name, finalOffset, type ); // can't be discontinuous
647
- break;
648
- // unsupported VMAPs
649
- case 'APSL':
650
- case 'NORM':
651
- case 'WGHT':
652
- case 'MNVW':
653
- case 'PICK':
654
- case 'RGB ':
655
- case 'RGBA':
656
- this.reader.skip( remainingLength );
657
- break;
658
- default:
659
- console.warn( 'LWOLoader: unknown vertex map type: ' + type );
660
- this.reader.skip( remainingLength );
661
-
662
- }
663
-
664
- },
665
- parseUVMapping( name, finalOffset, discontinuous ) {
666
-
667
- var uvIndices = [];
668
- var polyIndices = [];
669
- var uvs = [];
670
- while ( this.reader.offset < finalOffset ) {
671
-
672
- uvIndices.push( this.reader.getVariableLengthIndex() );
673
- if ( discontinuous ) polyIndices.push( this.reader.getVariableLengthIndex() );
674
- uvs.push( this.reader.getFloat32(), this.reader.getFloat32() );
675
-
676
- }
677
-
678
- if ( discontinuous ) {
679
-
680
- if ( ! this.currentLayer.discontinuousUVs ) this.currentLayer.discontinuousUVs = {};
681
- this.currentLayer.discontinuousUVs[ name ] = {
682
- uvIndices: uvIndices,
683
- polyIndices: polyIndices,
684
- uvs: uvs
685
- };
686
-
687
- } else {
688
-
689
- if ( ! this.currentLayer.uvs ) this.currentLayer.uvs = {};
690
- this.currentLayer.uvs[ name ] = {
691
- uvIndices: uvIndices,
692
- uvs: uvs
693
- };
694
-
695
- }
696
-
697
- },
698
- parseMorphTargets( name, finalOffset, type ) {
699
-
700
- var indices = [];
701
- var points = [];
702
- type = type === 'MORF' ? 'relative' : 'absolute';
703
- while ( this.reader.offset < finalOffset ) {
704
-
705
- indices.push( this.reader.getVariableLengthIndex() );
706
- // z -> -z to match three.js right handed coords
707
- points.push( this.reader.getFloat32(), this.reader.getFloat32(), - this.reader.getFloat32() );
708
-
709
- }
710
-
711
- if ( ! this.currentLayer.morphTargets ) this.currentLayer.morphTargets = {};
712
- this.currentLayer.morphTargets[ name ] = {
713
- indices: indices,
714
- points: points,
715
- type: type
716
- };
717
-
718
- },
719
- // A list of polygons for the current layer.
720
- // POLS { type[ID4], ( numvert+flags[U2], vert[VX] # numvert ) * }
721
- parsePolygonList( length ) {
722
-
723
- var finalOffset = this.reader.offset + length;
724
- var type = this.reader.getIDTag();
725
- var indices = [];
726
-
727
- // hold a list of polygon sizes, to be split up later
728
- var polygonDimensions = [];
729
- while ( this.reader.offset < finalOffset ) {
730
-
731
- var numverts = this.reader.getUint16();
732
-
733
- //var flags = numverts & 64512; // 6 high order bits are flags - ignoring for now
734
- numverts = numverts & 1023; // remaining ten low order bits are vertex num
735
- polygonDimensions.push( numverts );
736
- for ( var j = 0; j < numverts; j ++ ) indices.push( this.reader.getVariableLengthIndex() );
737
-
738
- }
739
-
740
- var geometryData = {
741
- type: type,
742
- vertexIndices: indices,
743
- polygonDimensions: polygonDimensions,
744
- points: this.currentPoints
745
- };
746
-
747
- // Note: assuming that all polys will be lines or points if the first is
748
- if ( polygonDimensions[ 0 ] === 1 ) geometryData.type = 'points'; else if ( polygonDimensions[ 0 ] === 2 ) geometryData.type = 'lines';
749
- this.currentLayer.geometry = geometryData;
750
-
751
- },
752
- // Lists the tag strings that can be associated with polygons by the PTAG chunk.
753
- // TAGS { tag-string[S0] * }
754
- parseTagStrings( length ) {
755
-
756
- this.tree.tags = this.reader.getStringArray( length );
757
-
758
- },
759
- // Associates tags of a given type with polygons in the most recent POLS chunk.
760
- // PTAG { type[ID4], ( poly[VX], tag[U2] ) * }
761
- parsePolygonTagMapping( length ) {
762
-
763
- var finalOffset = this.reader.offset + length;
764
- var type = this.reader.getIDTag();
765
- if ( type === 'SURF' ) this.parseMaterialIndices( finalOffset ); else {
766
-
767
- //PART, SMGP, COLR not supported
768
-
769
- this.reader.skip( length - 4 );
770
-
771
- }
772
-
773
- },
774
- parseMaterialIndices( finalOffset ) {
775
-
776
- // array holds polygon index followed by material index
777
- this.currentLayer.geometry.materialIndices = [];
778
- while ( this.reader.offset < finalOffset ) {
779
-
780
- var polygonIndex = this.reader.getVariableLengthIndex();
781
- var materialIndex = this.reader.getUint16();
782
- this.currentLayer.geometry.materialIndices.push( polygonIndex, materialIndex );
783
-
784
- }
785
-
786
- },
787
- parseUnknownCHUNK( blockID, length ) {
788
-
789
- console.warn( 'LWOLoader: unknown chunk type: ' + blockID + ' length: ' + length );
790
-
791
- // print the chunk plus some bytes padding either side
792
- // printBuffer( this.reader.dv.buffer, this.reader.offset - 20, length + 40 );
793
-
794
- var data = this.reader.getString( length );
795
- this.currentForm[ blockID ] = data;
796
-
797
- }
798
- };
799
- function DataViewReader( buffer ) {
800
-
801
- this.dv = new DataView( buffer );
802
- this.offset = 0;
803
-
804
- }
805
-
806
- DataViewReader.prototype = {
807
- constructor: DataViewReader,
808
- size: function () {
809
-
810
- return this.dv.buffer.byteLength;
811
-
812
- },
813
- setOffset( offset ) {
814
-
815
- if ( offset > 0 && offset < this.dv.buffer.byteLength ) {
816
-
817
- this.offset = offset;
818
-
819
- } else {
820
-
821
- console.error( 'LWOLoader: invalid buffer offset' );
822
-
823
- }
824
-
825
- },
826
- endOfFile: function () {
827
-
828
- if ( this.offset >= this.size() ) return true;
829
- return false;
830
-
831
- },
832
- skip: function ( length ) {
833
-
834
- this.offset += length;
835
-
836
- },
837
- getUint8: function () {
838
-
839
- var value = this.dv.getUint8( this.offset );
840
- this.offset += 1;
841
- return value;
842
-
843
- },
844
- getUint16: function () {
845
-
846
- var value = this.dv.getUint16( this.offset );
847
- this.offset += 2;
848
- return value;
849
-
850
- },
851
- getInt32: function () {
852
-
853
- var value = this.dv.getInt32( this.offset, false );
854
- this.offset += 4;
855
- return value;
856
-
857
- },
858
- getUint32: function () {
859
-
860
- var value = this.dv.getUint32( this.offset, false );
861
- this.offset += 4;
862
- return value;
863
-
864
- },
865
- getUint64: function () {
866
-
867
- var low, high;
868
- high = this.getUint32();
869
- low = this.getUint32();
870
- return high * 0x100000000 + low;
871
-
872
- },
873
- getFloat32: function () {
874
-
875
- var value = this.dv.getFloat32( this.offset, false );
876
- this.offset += 4;
877
- return value;
878
-
879
- },
880
- getFloat32Array: function ( size ) {
881
-
882
- var a = [];
883
- for ( var i = 0; i < size; i ++ ) {
884
-
885
- a.push( this.getFloat32() );
886
-
887
- }
888
-
889
- return a;
890
-
891
- },
892
- getFloat64: function () {
893
-
894
- var value = this.dv.getFloat64( this.offset, this.littleEndian );
895
- this.offset += 8;
896
- return value;
897
-
898
- },
899
- getFloat64Array: function ( size ) {
900
-
901
- var a = [];
902
- for ( var i = 0; i < size; i ++ ) {
903
-
904
- a.push( this.getFloat64() );
905
-
906
- }
907
-
908
- return a;
909
-
910
- },
911
- // get variable-length index data type
912
- // VX ::= index[U2] | (index + 0xFF000000)[U4]
913
- // If the index value is less than 65,280 (0xFF00),then VX === U2
914
- // otherwise VX === U4 with bits 24-31 set
915
- // When reading an index, if the first byte encountered is 255 (0xFF), then
916
- // the four-byte form is being used and the first byte should be discarded or masked out.
917
- getVariableLengthIndex() {
918
-
919
- var firstByte = this.getUint8();
920
- if ( firstByte === 255 ) {
921
-
922
- return this.getUint8() * 65536 + this.getUint8() * 256 + this.getUint8();
923
-
924
- }
925
-
926
- return firstByte * 256 + this.getUint8();
927
-
928
- },
929
- // An ID tag is a sequence of 4 bytes containing 7-bit ASCII values
930
- getIDTag() {
931
-
932
- return this.getString( 4 );
933
-
934
- },
935
- getString: function ( size ) {
936
-
937
- if ( size === 0 ) return;
938
-
939
- // note: safari 9 doesn't support Uint8Array.indexOf; create intermediate array instead
940
- var a = [];
941
- if ( size ) {
942
-
943
- for ( var i = 0; i < size; i ++ ) {
944
-
945
- a[ i ] = this.getUint8();
946
-
947
- }
948
-
949
- } else {
950
-
951
- var currentChar;
952
- var len = 0;
953
- while ( currentChar !== 0 ) {
954
-
955
- currentChar = this.getUint8();
956
- if ( currentChar !== 0 ) a.push( currentChar );
957
- len ++;
958
-
959
- }
960
-
961
- if ( ! isEven( len + 1 ) ) this.getUint8(); // if string with terminating nullbyte is uneven, extra nullbyte is added
962
-
963
- }
964
-
965
- return THREE.LoaderUtils.decodeText( new Uint8Array( a ) );
966
-
967
- },
968
- getStringArray: function ( size ) {
969
-
970
- var a = this.getString( size );
971
- a = a.split( '\0' );
972
- return a.filter( Boolean ); // return array with any empty strings removed
973
-
974
- }
975
- };
976
-
977
- // ************** DEBUGGER **************
978
-
979
- function Debugger() {
980
-
981
- this.active = false;
982
- this.depth = 0;
983
- this.formList = [];
984
-
985
- }
986
-
987
- Debugger.prototype = {
988
- constructor: Debugger,
989
- enable: function () {
990
-
991
- this.active = true;
992
-
993
- },
994
- log: function () {
995
-
996
- if ( ! this.active ) return;
997
- var nodeType;
998
- switch ( this.node ) {
999
-
1000
- case 0:
1001
- nodeType = 'FORM';
1002
- break;
1003
- case 1:
1004
- nodeType = 'CHK';
1005
- break;
1006
- case 2:
1007
- nodeType = 'S-CHK';
1008
- break;
1009
-
1010
- }
1011
-
1012
- console.log( '| '.repeat( this.depth ) + nodeType, this.nodeID, `( ${this.offset} ) -> ( ${this.dataOffset + this.length} )`, this.node == 0 ? ' {' : '', this.skipped ? 'SKIPPED' : '', this.node == 0 && this.skipped ? '}' : '' );
1013
- if ( this.node == 0 && ! this.skipped ) {
1014
-
1015
- this.depth += 1;
1016
- this.formList.push( this.dataOffset + this.length );
1017
-
1018
- }
1019
-
1020
- this.skipped = false;
1021
-
1022
- },
1023
- closeForms: function () {
1024
-
1025
- if ( ! this.active ) return;
1026
- for ( var i = this.formList.length - 1; i >= 0; i -- ) {
1027
-
1028
- if ( this.offset >= this.formList[ i ] ) {
1029
-
1030
- this.depth -= 1;
1031
- console.log( '| '.repeat( this.depth ) + '}' );
1032
- this.formList.splice( - 1, 1 );
1033
-
1034
- }
1035
-
1036
- }
1037
-
1038
- }
1039
- };
1040
-
1041
- // ************** UTILITY FUNCTIONS **************
1042
-
1043
- function isEven( num ) {
1044
-
1045
- return num % 2;
1046
-
1047
- }
1048
-
1049
- // calculate the length of the string in the buffer
1050
- // this will be string.length + nullbyte + optional padbyte to make the length even
1051
- function stringOffset( string ) {
1052
-
1053
- return string.length + 1 + ( isEven( string.length + 1 ) ? 1 : 0 );
1054
-
1055
- }
1056
-
1057
- // for testing purposes, dump buffer to console
1058
- // printBuffer( this.reader.dv.buffer, this.reader.offset, length );
1059
- function printBuffer( buffer, from, to ) {
1060
-
1061
- console.log( THREE.LoaderUtils.decodeText( new Uint8Array( buffer, from, to ) ) );
1062
-
1063
- }
1064
-
1065
- THREE.IFFParser = IFFParser;
1066
-
1067
- } )();