@needle-tools/three 0.146.10 → 0.153.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 (865) hide show
  1. package/LICENSE +1 -1
  2. package/build/three.cjs +39486 -20286
  3. package/build/three.js +39471 -20270
  4. package/build/three.min.js +3 -2
  5. package/build/three.module.js +6717 -5427
  6. package/build/three.module.min.js +6 -0
  7. package/examples/jsm/animation/AnimationClipCreator.js +5 -3
  8. package/examples/jsm/cameras/CinematicCamera.js +1 -2
  9. package/examples/jsm/capabilities/WebGPU.js +17 -5
  10. package/examples/jsm/controls/ArcballControls.js +1828 -1821
  11. package/examples/jsm/controls/MapControls.js +28 -0
  12. package/examples/jsm/controls/OrbitControls.js +26 -53
  13. package/examples/jsm/controls/PointerLockControls.js +70 -65
  14. package/examples/jsm/controls/TrackballControls.js +18 -4
  15. package/examples/jsm/controls/TransformControls.js +0 -1
  16. package/examples/jsm/csm/CSM.js +11 -5
  17. package/examples/jsm/csm/CSMShader.js +7 -6
  18. package/examples/jsm/effects/AnaglyphEffect.js +6 -20
  19. package/examples/jsm/effects/AsciiEffect.js +3 -6
  20. package/examples/jsm/effects/OutlineEffect.js +1 -15
  21. package/examples/jsm/effects/ParallaxBarrierEffect.js +3 -0
  22. package/examples/jsm/exporters/DRACOExporter.js +53 -11
  23. package/examples/jsm/exporters/EXRExporter.js +3 -9
  24. package/examples/jsm/exporters/GLTFExporter.js +561 -154
  25. package/examples/jsm/exporters/KTX2Exporter.js +34 -23
  26. package/examples/jsm/exporters/MMDExporter.js +1 -1
  27. package/examples/jsm/exporters/PLYExporter.js +8 -1
  28. package/examples/jsm/exporters/STLExporter.js +8 -4
  29. package/examples/jsm/exporters/USDZExporter.js +305 -792
  30. package/examples/jsm/geometries/ConvexGeometry.js +0 -6
  31. package/examples/jsm/geometries/ParametricGeometry.js +10 -0
  32. package/examples/jsm/helpers/OctreeHelper.js +1 -0
  33. package/examples/jsm/helpers/ViewHelper.js +71 -57
  34. package/examples/jsm/interactive/HTMLMesh.js +16 -3
  35. package/examples/jsm/interactive/InteractiveGroup.js +1 -1
  36. package/examples/{js → jsm}/libs/basis/README.md +4 -4
  37. package/examples/jsm/libs/draco/draco_decoder.js +34 -0
  38. package/examples/jsm/libs/draco/draco_decoder.wasm +0 -0
  39. package/examples/jsm/libs/draco/draco_wasm_wrapper.js +117 -0
  40. package/examples/jsm/libs/draco/gltf/draco_decoder.js +33 -0
  41. package/examples/jsm/libs/draco/gltf/draco_decoder.wasm +0 -0
  42. package/examples/jsm/libs/draco/gltf/draco_wasm_wrapper.js +116 -0
  43. package/examples/jsm/libs/lil-gui.module.min.js +2 -2
  44. package/examples/jsm/libs/tween.module.js +803 -0
  45. package/examples/jsm/lights/IESSpotLight.js +25 -0
  46. package/examples/jsm/lights/LightProbeGenerator.js +11 -9
  47. package/examples/jsm/lines/LineSegments2.js +16 -10
  48. package/examples/jsm/loaders/3DMLoader.js +8 -5
  49. package/examples/jsm/loaders/3MFLoader.js +12 -11
  50. package/examples/jsm/loaders/AMFLoader.js +2 -3
  51. package/examples/jsm/loaders/BVHLoader.js +2 -2
  52. package/examples/jsm/loaders/ColladaLoader.js +15 -16
  53. package/examples/jsm/loaders/DRACOLoader.js +69 -18
  54. package/examples/jsm/loaders/EXRLoader.js +23 -24
  55. package/examples/jsm/loaders/FBXLoader.js +34 -50
  56. package/examples/jsm/loaders/GCodeLoader.js +1 -2
  57. package/examples/jsm/loaders/GLTFLoader.js +417 -895
  58. package/examples/jsm/loaders/GLTFLoaderAnimationPointer.js +684 -0
  59. package/examples/jsm/loaders/HDRCubeTextureLoader.js +4 -4
  60. package/examples/jsm/loaders/IESLoader.js +337 -0
  61. package/examples/jsm/loaders/KMZLoader.js +4 -4
  62. package/examples/jsm/loaders/KTX2Loader.js +145 -69
  63. package/examples/jsm/loaders/LDrawLoader.js +20 -18
  64. package/examples/jsm/loaders/LWOLoader.js +12 -29
  65. package/examples/jsm/loaders/LottieLoader.js +3 -1
  66. package/examples/jsm/loaders/MMDLoader.js +49 -18
  67. package/examples/jsm/loaders/MTLLoader.js +2 -2
  68. package/examples/jsm/loaders/MaterialXLoader.js +9 -3
  69. package/examples/jsm/loaders/NRRDLoader.js +33 -5
  70. package/examples/jsm/loaders/OBJLoader.js +1 -1
  71. package/examples/jsm/loaders/PCDLoader.js +26 -12
  72. package/examples/jsm/loaders/PDBLoader.js +7 -2
  73. package/examples/jsm/loaders/PLYLoader.js +254 -109
  74. package/examples/jsm/loaders/RGBELoader.js +3 -3
  75. package/examples/jsm/loaders/STLLoader.js +9 -5
  76. package/examples/jsm/loaders/SVGLoader.js +36 -27
  77. package/examples/jsm/loaders/TTFLoader.js +1 -8
  78. package/examples/jsm/loaders/TiltLoader.js +13 -7
  79. package/examples/jsm/loaders/USDZLoader.js +6 -6
  80. package/examples/jsm/loaders/VOXLoader.js +8 -2
  81. package/examples/jsm/loaders/VRMLLoader.js +44 -16
  82. package/examples/jsm/loaders/VTKLoader.js +19 -10
  83. package/examples/jsm/loaders/XYZLoader.js +9 -3
  84. package/examples/jsm/loaders/lwo/IFFParser.js +19 -19
  85. package/examples/jsm/materials/MeshGouraudMaterial.js +0 -3
  86. package/examples/jsm/math/ConvexHull.js +3 -3
  87. package/examples/jsm/math/Lut.js +5 -4
  88. package/examples/jsm/math/MeshSurfaceSampler.js +7 -9
  89. package/examples/jsm/math/Octree.js +1 -1
  90. package/examples/jsm/misc/ConvexObjectBreaker.js +2 -8
  91. package/examples/jsm/misc/GPUComputationRenderer.js +6 -5
  92. package/examples/jsm/misc/MD2Character.js +2 -2
  93. package/examples/jsm/misc/MD2CharacterComplex.js +2 -2
  94. package/examples/jsm/misc/ProgressiveLightMap.js +12 -10
  95. package/examples/jsm/misc/RollerCoaster.js +7 -1
  96. package/examples/jsm/misc/Volume.js +20 -5
  97. package/examples/jsm/misc/VolumeSlice.js +3 -1
  98. package/examples/jsm/modifiers/CurveModifier.js +1 -0
  99. package/examples/jsm/modifiers/TessellateModifier.js +19 -19
  100. package/examples/jsm/nodes/Nodes.js +144 -335
  101. package/examples/jsm/nodes/accessors/BitangentNode.js +43 -16
  102. package/examples/jsm/nodes/accessors/BufferAttributeNode.js +86 -0
  103. package/examples/jsm/nodes/accessors/BufferNode.js +6 -0
  104. package/examples/jsm/nodes/accessors/CameraNode.js +12 -2
  105. package/examples/jsm/nodes/accessors/CubeTextureNode.js +27 -33
  106. package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +58 -0
  107. package/examples/jsm/nodes/accessors/InstanceNode.js +41 -26
  108. package/examples/jsm/nodes/accessors/MaterialNode.js +155 -38
  109. package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +16 -0
  110. package/examples/jsm/nodes/accessors/ModelNode.js +11 -0
  111. package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +13 -14
  112. package/examples/jsm/nodes/accessors/NormalNode.js +35 -19
  113. package/examples/jsm/nodes/accessors/Object3DNode.js +32 -12
  114. package/examples/jsm/nodes/accessors/PointUVNode.js +6 -1
  115. package/examples/jsm/nodes/accessors/PositionNode.js +38 -23
  116. package/examples/jsm/nodes/accessors/ReferenceNode.js +21 -14
  117. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +11 -7
  118. package/examples/jsm/nodes/accessors/SkinningNode.js +43 -40
  119. package/examples/jsm/nodes/accessors/StorageBufferNode.js +6 -0
  120. package/examples/jsm/nodes/accessors/TangentNode.js +28 -20
  121. package/examples/jsm/nodes/accessors/TextureNode.js +80 -12
  122. package/examples/jsm/nodes/accessors/UVNode.js +6 -0
  123. package/examples/jsm/nodes/accessors/UserDataNode.js +6 -0
  124. package/examples/jsm/nodes/code/CodeNode.js +75 -0
  125. package/examples/jsm/nodes/code/ExpressionNode.js +37 -0
  126. package/examples/jsm/nodes/{core → code}/FunctionCallNode.js +15 -1
  127. package/examples/jsm/nodes/{core → code}/FunctionNode.js +8 -7
  128. package/examples/jsm/nodes/code/ScriptableNode.js +488 -0
  129. package/examples/jsm/nodes/code/ScriptableValueNode.js +167 -0
  130. package/examples/jsm/nodes/core/ArrayUniformNode.js +3 -0
  131. package/examples/jsm/nodes/core/AttributeNode.js +17 -9
  132. package/examples/jsm/nodes/core/BypassNode.js +9 -2
  133. package/examples/jsm/nodes/core/CacheNode.js +46 -0
  134. package/examples/jsm/nodes/core/ConstNode.js +3 -0
  135. package/examples/jsm/nodes/core/ContextNode.js +8 -1
  136. package/examples/jsm/nodes/core/InputNode.js +26 -5
  137. package/examples/jsm/nodes/core/InstanceIndexNode.js +26 -2
  138. package/examples/jsm/nodes/core/LightingModel.js +16 -0
  139. package/examples/jsm/nodes/core/Node.js +129 -35
  140. package/examples/jsm/nodes/core/NodeAttribute.js +2 -1
  141. package/examples/jsm/nodes/core/NodeBuilder.js +271 -121
  142. package/examples/jsm/nodes/core/NodeCache.js +26 -0
  143. package/examples/jsm/nodes/core/NodeFrame.js +56 -5
  144. package/examples/jsm/nodes/core/NodeUtils.js +115 -28
  145. package/examples/jsm/nodes/core/PropertyNode.js +19 -2
  146. package/examples/jsm/nodes/core/StackNode.js +99 -0
  147. package/examples/jsm/nodes/core/TempNode.js +11 -3
  148. package/examples/jsm/nodes/core/UniformNode.js +16 -1
  149. package/examples/jsm/nodes/core/VarNode.js +21 -29
  150. package/examples/jsm/nodes/core/VaryingNode.js +15 -2
  151. package/examples/jsm/nodes/core/constants.js +6 -0
  152. package/examples/jsm/nodes/display/BlendModeNode.js +25 -11
  153. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +30 -14
  154. package/examples/jsm/nodes/display/ColorSpaceNode.js +39 -27
  155. package/examples/jsm/nodes/display/FrontFacingNode.js +7 -1
  156. package/examples/jsm/nodes/display/NormalMapNode.js +31 -18
  157. package/examples/jsm/nodes/display/PosterizeNode.js +10 -3
  158. package/examples/jsm/nodes/display/ToneMappingNode.js +101 -11
  159. package/examples/jsm/nodes/display/ViewportNode.js +27 -18
  160. package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +30 -0
  161. package/examples/jsm/nodes/display/ViewportTextureNode.js +67 -0
  162. package/examples/jsm/nodes/fog/FogExp2Node.js +35 -0
  163. package/examples/jsm/nodes/fog/FogNode.js +12 -6
  164. package/examples/jsm/nodes/fog/FogRangeNode.js +12 -5
  165. package/examples/jsm/nodes/functions/BSDF/BRDF_BlinnPhong.js +30 -0
  166. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +10 -13
  167. package/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
  168. package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +8 -6
  169. package/examples/jsm/nodes/functions/BSDF/D_GGX.js +4 -4
  170. package/examples/jsm/nodes/functions/BSDF/F_Schlick.js +3 -3
  171. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +7 -5
  172. package/examples/jsm/nodes/functions/PhongLightingModel.js +28 -0
  173. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +35 -36
  174. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +4 -3
  175. package/examples/jsm/nodes/functions/material/getRoughness.js +4 -4
  176. package/examples/jsm/nodes/geometry/RangeNode.js +50 -55
  177. package/examples/jsm/nodes/gpgpu/ComputeNode.js +9 -2
  178. package/examples/jsm/nodes/lighting/AONode.js +5 -3
  179. package/examples/jsm/nodes/lighting/AmbientLightNode.js +27 -0
  180. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +114 -5
  181. package/examples/jsm/nodes/lighting/DirectionalLightNode.js +43 -0
  182. package/examples/jsm/nodes/lighting/EnvironmentNode.js +121 -35
  183. package/examples/jsm/nodes/lighting/HemisphereLightNode.js +15 -10
  184. package/examples/jsm/nodes/lighting/IESSpotLightNode.js +39 -0
  185. package/examples/jsm/nodes/lighting/LightNode.js +57 -0
  186. package/examples/jsm/nodes/lighting/LightUtils.js +17 -0
  187. package/examples/jsm/nodes/lighting/LightingContextNode.js +30 -8
  188. package/examples/jsm/nodes/lighting/LightingNode.js +3 -1
  189. package/examples/jsm/nodes/lighting/LightsNode.js +18 -10
  190. package/examples/jsm/nodes/lighting/PointLightNode.js +71 -0
  191. package/examples/jsm/nodes/lighting/SpotLightNode.js +92 -0
  192. package/examples/jsm/nodes/loaders/NodeLoader.js +5 -4
  193. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +4 -20
  194. package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +6 -9
  195. package/examples/jsm/nodes/materials/Materials.js +11 -55
  196. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +5 -11
  197. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +48 -0
  198. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +74 -0
  199. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +6 -6
  200. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +21 -96
  201. package/examples/jsm/nodes/materials/NodeMaterial.js +284 -62
  202. package/examples/jsm/nodes/materials/PointsNodeMaterial.js +7 -1
  203. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +29 -25
  204. package/examples/jsm/nodes/materialx/MaterialXNodes.js +31 -22
  205. package/examples/jsm/nodes/materialx/lib/mx_hsv.js +1 -1
  206. package/examples/jsm/nodes/materialx/lib/mx_noise.js +2 -1
  207. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +2 -1
  208. package/examples/jsm/nodes/math/CondNode.js +43 -17
  209. package/examples/jsm/nodes/math/MathNode.js +178 -73
  210. package/examples/jsm/nodes/math/OperatorNode.js +52 -2
  211. package/examples/jsm/nodes/procedural/CheckerNode.js +14 -6
  212. package/examples/jsm/nodes/shadernode/ShaderNode.js +186 -63
  213. package/examples/jsm/nodes/utils/ArrayElementNode.js +4 -2
  214. package/examples/jsm/nodes/utils/ConvertNode.js +19 -1
  215. package/examples/jsm/nodes/utils/DiscardNode.js +26 -0
  216. package/examples/jsm/nodes/utils/EquirectUVNode.js +10 -4
  217. package/examples/jsm/nodes/utils/JoinNode.js +4 -1
  218. package/examples/jsm/nodes/utils/LoopNode.js +186 -0
  219. package/examples/jsm/nodes/utils/MatcapUVNode.js +11 -4
  220. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +18 -5
  221. package/examples/jsm/nodes/utils/OscNode.js +21 -14
  222. package/examples/jsm/nodes/utils/PackingNode.js +55 -0
  223. package/examples/jsm/nodes/utils/RemapNode.js +13 -5
  224. package/examples/jsm/nodes/utils/RotateUVNode.js +18 -7
  225. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +37 -0
  226. package/examples/jsm/nodes/utils/SplitNode.js +7 -5
  227. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +15 -30
  228. package/examples/jsm/nodes/utils/TimerNode.js +16 -6
  229. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +21 -10
  230. package/examples/jsm/objects/GroundProjectedSkybox.js +172 -0
  231. package/examples/jsm/objects/Lensflare.js +3 -4
  232. package/examples/jsm/objects/MarchingCubes.js +5 -1
  233. package/examples/jsm/objects/Reflector.js +7 -4
  234. package/examples/jsm/objects/Refractor.js +4 -4
  235. package/examples/jsm/objects/ShadowMesh.js +3 -3
  236. package/examples/jsm/objects/Water.js +2 -1
  237. package/examples/jsm/physics/AmmoPhysics.js +27 -28
  238. package/examples/jsm/physics/RapierPhysics.js +199 -0
  239. package/examples/jsm/postprocessing/AfterimagePass.js +3 -2
  240. package/examples/jsm/postprocessing/BloomPass.js +7 -4
  241. package/examples/jsm/postprocessing/BokehPass.js +3 -8
  242. package/examples/jsm/postprocessing/DotScreenPass.js +1 -2
  243. package/examples/jsm/postprocessing/EffectComposer.js +5 -95
  244. package/examples/jsm/postprocessing/FilmPass.js +1 -2
  245. package/examples/jsm/postprocessing/GlitchPass.js +0 -2
  246. package/examples/jsm/postprocessing/HalftonePass.js +0 -6
  247. package/examples/jsm/postprocessing/OutlinePass.js +7 -7
  248. package/examples/jsm/postprocessing/OutputPass.js +72 -0
  249. package/examples/jsm/postprocessing/Pass.js +2 -0
  250. package/examples/jsm/postprocessing/RenderPixelatedPass.js +4 -3
  251. package/examples/jsm/postprocessing/SAOPass.js +4 -26
  252. package/examples/jsm/postprocessing/SMAAPass.js +5 -8
  253. package/examples/jsm/postprocessing/SSAARenderPass.js +15 -6
  254. package/examples/jsm/postprocessing/SSAOPass.js +4 -14
  255. package/examples/jsm/postprocessing/SSRPass.js +3 -7
  256. package/examples/jsm/postprocessing/SavePass.js +2 -3
  257. package/examples/jsm/postprocessing/ShaderPass.js +1 -0
  258. package/examples/jsm/postprocessing/TAARenderPass.js +3 -2
  259. package/examples/jsm/postprocessing/TexturePass.js +0 -2
  260. package/examples/jsm/postprocessing/UnrealBloomPass.js +4 -11
  261. package/examples/jsm/renderers/CSS2DRenderer.js +6 -1
  262. package/examples/jsm/renderers/CSS3DRenderer.js +27 -5
  263. package/examples/jsm/renderers/{webgpu/WebGPUAnimation.js → common/Animation.js} +4 -4
  264. package/examples/jsm/renderers/common/Attributes.js +75 -0
  265. package/examples/jsm/renderers/common/Backend.js +160 -0
  266. package/examples/jsm/renderers/common/Background.js +133 -0
  267. package/examples/jsm/renderers/common/Binding.js +11 -0
  268. package/examples/jsm/renderers/common/Bindings.js +169 -0
  269. package/examples/jsm/renderers/common/Buffer.js +38 -0
  270. package/examples/jsm/renderers/{webgpu/WebGPUBufferUtils.js → common/BufferUtils.js} +2 -2
  271. package/examples/jsm/renderers/common/ChainMap.js +89 -0
  272. package/examples/jsm/renderers/common/ComputePipeline.js +17 -0
  273. package/examples/jsm/renderers/common/Constants.js +14 -0
  274. package/examples/jsm/renderers/common/CubeRenderTarget.js +65 -0
  275. package/examples/jsm/renderers/common/DataMap.js +54 -0
  276. package/examples/jsm/renderers/common/Geometries.js +215 -0
  277. package/examples/jsm/renderers/{webgpu/WebGPUInfo.js → common/Info.js} +2 -3
  278. package/examples/jsm/renderers/common/Pipeline.js +13 -0
  279. package/examples/jsm/renderers/common/Pipelines.js +309 -0
  280. package/examples/jsm/renderers/common/ProgrammableStage.js +18 -0
  281. package/examples/jsm/renderers/common/RenderContext.js +37 -0
  282. package/examples/jsm/renderers/common/RenderContexts.js +38 -0
  283. package/examples/jsm/renderers/{webgpu/WebGPURenderLists.js → common/RenderList.js} +26 -47
  284. package/examples/jsm/renderers/common/RenderLists.js +38 -0
  285. package/examples/jsm/renderers/common/RenderObject.js +95 -0
  286. package/examples/jsm/renderers/common/RenderObjects.js +92 -0
  287. package/examples/jsm/renderers/common/RenderPipeline.js +16 -0
  288. package/examples/jsm/renderers/common/RenderTarget.js +15 -0
  289. package/examples/jsm/renderers/common/Renderer.js +822 -0
  290. package/examples/jsm/renderers/common/SampledTexture.js +80 -0
  291. package/examples/jsm/renderers/common/Sampler.js +18 -0
  292. package/examples/jsm/renderers/common/StorageBuffer.js +17 -0
  293. package/examples/jsm/renderers/common/Textures.js +206 -0
  294. package/examples/jsm/renderers/{webgpu/WebGPUUniform.js → common/Uniform.js} +13 -9
  295. package/examples/jsm/renderers/common/UniformBuffer.js +15 -0
  296. package/examples/jsm/renderers/{webgpu/WebGPUUniformsGroup.js → common/UniformsGroup.js} +13 -13
  297. package/examples/jsm/renderers/common/nodes/NodeRender.js +302 -0
  298. package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodeSampledTexture.js → common/nodes/NodeSampledTexture.js} +4 -4
  299. package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodeSampler.js → common/nodes/NodeSampler.js} +3 -3
  300. package/examples/jsm/renderers/{webgpu/nodes/WebGPUNodeUniform.js → common/nodes/NodeUniform.js} +1 -1
  301. package/examples/jsm/renderers/common/nodes/Nodes.js +319 -0
  302. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +35 -31
  303. package/examples/jsm/renderers/webgpu/WebGPUBackend.js +765 -0
  304. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +15 -987
  305. package/examples/jsm/renderers/webgpu/nodes/{WebGPUNodeBuilder.js → WGSLNodeBuilder.js} +117 -90
  306. package/examples/jsm/{nodes/parsers → renderers/webgpu/nodes}/WGSLNodeFunction.js +2 -2
  307. package/examples/jsm/{nodes/parsers → renderers/webgpu/nodes}/WGSLNodeParser.js +1 -1
  308. package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +251 -0
  309. package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +145 -0
  310. package/examples/jsm/renderers/webgpu/{constants.js → utils/WebGPUConstants.js} +73 -12
  311. package/examples/jsm/renderers/webgpu/{WebGPURenderPipeline.js → utils/WebGPUPipelineUtils.js} +135 -285
  312. package/examples/jsm/renderers/webgpu/{WebGPUTextureUtils.js → utils/WebGPUTextureMipmapUtils.js} +5 -25
  313. package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +855 -0
  314. package/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +88 -0
  315. package/examples/jsm/shaders/BleachBypassShader.js +2 -0
  316. package/examples/jsm/shaders/BokehShader2.js +3 -0
  317. package/examples/jsm/shaders/ColorifyShader.js +2 -0
  318. package/examples/jsm/shaders/ConvolutionShader.js +2 -0
  319. package/examples/jsm/shaders/CopyShader.js +2 -0
  320. package/examples/jsm/shaders/DotScreenShader.js +2 -0
  321. package/examples/jsm/shaders/ExposureShader.js +44 -0
  322. package/examples/jsm/shaders/FilmShader.js +2 -0
  323. package/examples/jsm/shaders/GammaCorrectionShader.js +2 -0
  324. package/examples/jsm/shaders/HorizontalBlurShader.js +2 -0
  325. package/examples/jsm/shaders/MMDToonShader.js +15 -4
  326. package/examples/jsm/shaders/OutputShader.js +61 -0
  327. package/examples/jsm/shaders/RGBShiftShader.js +4 -2
  328. package/examples/jsm/shaders/SepiaShader.js +2 -0
  329. package/examples/jsm/shaders/ToonShader.js +13 -5
  330. package/examples/jsm/shaders/VelocityShader.js +1 -1
  331. package/examples/jsm/shaders/VerticalBlurShader.js +2 -0
  332. package/examples/jsm/shaders/VignetteShader.js +2 -0
  333. package/examples/jsm/shaders/WaterRefractionShader.js +5 -2
  334. package/examples/jsm/utils/BufferGeometryUtils.js +54 -36
  335. package/examples/jsm/utils/LDrawUtils.js +4 -4
  336. package/examples/jsm/utils/PackedPhongMaterial.js +5 -78
  337. package/examples/jsm/utils/SceneUtils.js +8 -4
  338. package/examples/jsm/utils/SkeletonUtils.js +27 -210
  339. package/examples/jsm/utils/TextureUtils.js +41 -40
  340. package/examples/jsm/webxr/VRButton.js +1 -2
  341. package/examples/jsm/webxr/XRButton.js +198 -0
  342. package/examples/jsm/webxr/XRHandPrimitiveModel.js +1 -0
  343. package/examples/jsm/webxr/XRPlanes.js +100 -0
  344. package/package.json +34 -87
  345. package/src/Three.Legacy.js +19 -110
  346. package/src/Three.js +4 -3
  347. package/src/animation/AnimationUtils.js +13 -1
  348. package/src/audio/Audio.js +7 -2
  349. package/src/audio/PositionalAudio.js +8 -0
  350. package/src/cameras/Camera.js +5 -0
  351. package/src/cameras/CubeCamera.js +76 -13
  352. package/src/cameras/OrthographicCamera.js +1 -1
  353. package/src/cameras/PerspectiveCamera.js +1 -1
  354. package/src/constants.js +22 -2
  355. package/src/core/BufferAttribute.js +150 -9
  356. package/src/core/BufferGeometry.js +4 -10
  357. package/src/core/GLBufferAttribute.js +2 -0
  358. package/src/core/InterleavedBufferAttribute.js +5 -5
  359. package/src/core/Object3D.js +37 -8
  360. package/src/extras/DataUtils.js +7 -1
  361. package/src/extras/ImageUtils.js +2 -2
  362. package/src/extras/PMREMGenerator.js +5 -5
  363. package/src/extras/core/Curve.js +1 -1
  364. package/src/extras/curves/LineCurve.js +6 -4
  365. package/src/extras/curves/LineCurve3.js +13 -0
  366. package/src/geometries/BoxGeometry.js +10 -0
  367. package/src/geometries/CircleGeometry.js +11 -1
  368. package/src/geometries/ConeGeometry.js +1 -1
  369. package/src/geometries/CylinderGeometry.js +11 -1
  370. package/src/geometries/EdgesGeometry.js +10 -0
  371. package/src/geometries/ExtrudeGeometry.js +11 -1
  372. package/src/geometries/LatheGeometry.js +10 -0
  373. package/src/geometries/PlaneGeometry.js +10 -0
  374. package/src/geometries/PolyhedronGeometry.js +11 -1
  375. package/src/geometries/RingGeometry.js +11 -1
  376. package/src/geometries/ShapeGeometry.js +11 -1
  377. package/src/geometries/SphereGeometry.js +12 -2
  378. package/src/geometries/TorusGeometry.js +11 -1
  379. package/src/geometries/TorusKnotGeometry.js +10 -0
  380. package/src/geometries/TubeGeometry.js +10 -0
  381. package/src/geometries/WireframeGeometry.js +10 -0
  382. package/src/helpers/Box3Helper.js +1 -2
  383. package/src/lights/DirectionalLight.js +1 -1
  384. package/src/lights/HemisphereLight.js +1 -1
  385. package/src/lights/SpotLight.js +1 -1
  386. package/src/loaders/AudioLoader.js +14 -8
  387. package/src/loaders/CubeTextureLoader.js +2 -0
  388. package/src/loaders/DataTextureLoader.js +5 -1
  389. package/src/loaders/MaterialLoader.js +8 -0
  390. package/src/loaders/ObjectLoader.js +10 -2
  391. package/src/materials/LineBasicMaterial.js +4 -0
  392. package/src/materials/Material.js +16 -4
  393. package/src/materials/MeshDistanceMaterial.js +0 -9
  394. package/src/materials/MeshPhysicalMaterial.js +32 -6
  395. package/src/materials/ShaderMaterial.js +6 -1
  396. package/src/math/Box2.js +3 -2
  397. package/src/math/Box3.js +49 -64
  398. package/src/math/Color.js +88 -66
  399. package/src/math/ColorManagement.js +75 -16
  400. package/src/math/Euler.js +2 -11
  401. package/src/math/Frustum.js +29 -5
  402. package/src/math/MathUtils.js +43 -1
  403. package/src/math/Matrix3.js +26 -6
  404. package/src/math/Matrix4.js +74 -19
  405. package/src/math/Plane.js +2 -2
  406. package/src/math/Quaternion.js +6 -0
  407. package/src/math/Ray.js +7 -7
  408. package/src/math/Triangle.js +37 -7
  409. package/src/math/Vector2.js +16 -0
  410. package/src/math/Vector3.js +10 -0
  411. package/src/math/interpolants/CubicInterpolant.js +1 -2
  412. package/src/objects/InstancedMesh.js +82 -1
  413. package/src/objects/Mesh.js +108 -76
  414. package/src/objects/Skeleton.js +1 -1
  415. package/src/objects/SkinnedMesh.js +123 -8
  416. package/src/objects/Sprite.js +1 -1
  417. package/src/renderers/WebGLCubeRenderTarget.js +12 -3
  418. package/src/renderers/WebGLMultipleRenderTargets.js +4 -2
  419. package/src/renderers/WebGLRenderTarget.js +14 -2
  420. package/src/renderers/WebGLRenderer.js +1433 -1236
  421. package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +1 -1
  422. package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +1 -1
  423. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +0 -271
  424. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +5 -5
  425. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +2 -10
  426. package/src/renderers/shaders/ShaderChunk/clearcoat_pars_fragment.glsl.js +5 -5
  427. package/src/renderers/shaders/ShaderChunk/common.glsl.js +32 -0
  428. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +1 -1
  429. package/src/renderers/shaders/ShaderChunk/displacementmap_vertex.glsl.js +1 -1
  430. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +1 -1
  431. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +26 -3
  432. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +1 -1
  433. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +3 -3
  434. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +10 -2
  435. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +11 -11
  436. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +39 -13
  437. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +306 -10
  438. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -10
  439. package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +9 -1
  440. package/src/renderers/shaders/ShaderChunk/map_particle_pars_fragment.glsl.js +10 -2
  441. package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +1 -1
  442. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +32 -10
  443. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +5 -13
  444. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +7 -7
  445. package/src/renderers/shaders/ShaderChunk/output_fragment.glsl.js +1 -2
  446. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +11 -5
  447. package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +1 -1
  448. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +4 -11
  449. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +2 -2
  450. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +39 -34
  451. package/src/renderers/shaders/ShaderChunk/specularmap_fragment.glsl.js +1 -1
  452. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +1 -1
  453. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +5 -5
  454. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +101 -16
  455. package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +113 -1
  456. package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +134 -6
  457. package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +116 -1
  458. package/src/renderers/shaders/ShaderChunk.js +0 -6
  459. package/src/renderers/shaders/ShaderLib/background.glsl.js +0 -8
  460. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +5 -0
  461. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -4
  462. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +0 -3
  463. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +3 -3
  464. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -3
  465. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +16 -12
  466. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -3
  467. package/src/renderers/shaders/ShaderLib/points.glsl.js +13 -0
  468. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +5 -0
  469. package/src/renderers/shaders/ShaderLib.js +18 -4
  470. package/src/renderers/shaders/UniformsLib.js +27 -15
  471. package/src/renderers/shaders/UniformsUtils.js +12 -3
  472. package/src/renderers/webgl/WebGLBackground.js +23 -12
  473. package/src/renderers/webgl/WebGLBindingStates.js +13 -5
  474. package/src/renderers/webgl/WebGLCapabilities.js +1 -2
  475. package/src/renderers/webgl/WebGLClipping.js +7 -3
  476. package/src/renderers/webgl/WebGLGeometries.js +12 -0
  477. package/src/renderers/webgl/WebGLInfo.js +0 -1
  478. package/src/renderers/webgl/WebGLLights.js +2 -2
  479. package/src/renderers/webgl/WebGLMaterials.js +123 -234
  480. package/src/renderers/webgl/WebGLMorphtargets.js +1 -1
  481. package/src/renderers/webgl/WebGLProgram.js +130 -48
  482. package/src/renderers/webgl/WebGLPrograms.js +210 -130
  483. package/src/renderers/webgl/WebGLRenderStates.js +2 -2
  484. package/src/renderers/webgl/WebGLShadowMap.js +40 -27
  485. package/src/renderers/webgl/WebGLState.js +23 -9
  486. package/src/renderers/webgl/WebGLTextures.js +39 -19
  487. package/src/renderers/webgl/WebGLUniformsGroups.js +74 -33
  488. package/src/renderers/webgl/WebGLUtils.js +41 -29
  489. package/src/renderers/webxr/WebXRController.js +3 -0
  490. package/src/renderers/webxr/WebXRManager.js +85 -141
  491. package/src/scenes/Scene.js +4 -6
  492. package/src/textures/CompressedTexture.js +2 -2
  493. package/src/textures/CubeTexture.js +2 -2
  494. package/src/textures/DataTexture.js +2 -2
  495. package/src/textures/DepthTexture.js +22 -0
  496. package/src/textures/FramebufferTexture.js +1 -3
  497. package/src/textures/Source.js +4 -0
  498. package/src/textures/Texture.js +43 -13
  499. package/src/utils.js +13 -1
  500. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff +0 -0
  501. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff2 +0 -0
  502. package/examples/fonts/open-sans/open-sans.css +0 -9
  503. package/examples/fonts/tabler-icons/fonts/tabler-icons.eot +0 -0
  504. package/examples/fonts/tabler-icons/fonts/tabler-icons.svg +0 -3966
  505. package/examples/fonts/tabler-icons/fonts/tabler-icons.ttf +0 -0
  506. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff +0 -0
  507. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff2 +0 -0
  508. package/examples/fonts/tabler-icons/tabler-icons.min.css +0 -4
  509. package/examples/js/animation/AnimationClipCreator.js +0 -89
  510. package/examples/js/animation/CCDIKSolver.js +0 -416
  511. package/examples/js/animation/MMDAnimationHelper.js +0 -1046
  512. package/examples/js/animation/MMDPhysics.js +0 -1174
  513. package/examples/js/cameras/CinematicCamera.js +0 -168
  514. package/examples/js/controls/ArcballControls.js +0 -2770
  515. package/examples/js/controls/DragControls.js +0 -205
  516. package/examples/js/controls/FirstPersonControls.js +0 -312
  517. package/examples/js/controls/FlyControls.js +0 -321
  518. package/examples/js/controls/OrbitControls.js +0 -1065
  519. package/examples/js/controls/PointerLockControls.js +0 -144
  520. package/examples/js/controls/TrackballControls.js +0 -729
  521. package/examples/js/controls/TransformControls.js +0 -1301
  522. package/examples/js/csm/CSM.js +0 -347
  523. package/examples/js/csm/CSMFrustum.js +0 -127
  524. package/examples/js/csm/CSMHelper.js +0 -165
  525. package/examples/js/csm/CSMShader.js +0 -253
  526. package/examples/js/curves/CurveExtras.js +0 -348
  527. package/examples/js/curves/NURBSCurve.js +0 -63
  528. package/examples/js/curves/NURBSSurface.js +0 -48
  529. package/examples/js/curves/NURBSUtils.js +0 -439
  530. package/examples/js/effects/AnaglyphEffect.js +0 -86
  531. package/examples/js/effects/AsciiEffect.js +0 -260
  532. package/examples/js/effects/OutlineEffect.js +0 -450
  533. package/examples/js/effects/ParallaxBarrierEffect.js +0 -62
  534. package/examples/js/effects/PeppersGhostEffect.js +0 -139
  535. package/examples/js/effects/StereoEffect.js +0 -46
  536. package/examples/js/environments/DebugEnvironment.js +0 -53
  537. package/examples/js/environments/RoomEnvironment.js +0 -124
  538. package/examples/js/exporters/ColladaExporter.js +0 -487
  539. package/examples/js/exporters/DRACOExporter.js +0 -212
  540. package/examples/js/exporters/EXRExporter.js +0 -455
  541. package/examples/js/exporters/GLTFExporter.js +0 -2425
  542. package/examples/js/exporters/MMDExporter.js +0 -187
  543. package/examples/js/exporters/OBJExporter.js +0 -260
  544. package/examples/js/exporters/PLYExporter.js +0 -427
  545. package/examples/js/exporters/STLExporter.js +0 -188
  546. package/examples/js/exporters/USDZExporter.js +0 -608
  547. package/examples/js/geometries/BoxLineGeometry.js +0 -59
  548. package/examples/js/geometries/ConvexGeometry.js +0 -53
  549. package/examples/js/geometries/DecalGeometry.js +0 -324
  550. package/examples/js/geometries/LightningStrike.js +0 -861
  551. package/examples/js/geometries/ParametricGeometries.js +0 -216
  552. package/examples/js/geometries/ParametricGeometry.js +0 -121
  553. package/examples/js/geometries/RoundedBoxGeometry.js +0 -142
  554. package/examples/js/geometries/TeapotGeometry.js +0 -335
  555. package/examples/js/geometries/TextGeometry.js +0 -53
  556. package/examples/js/helpers/LightProbeHelper.js +0 -48
  557. package/examples/js/helpers/OctreeHelper.js +0 -76
  558. package/examples/js/helpers/PositionalAudioHelper.js +0 -91
  559. package/examples/js/helpers/RectAreaLightHelper.js +0 -73
  560. package/examples/js/helpers/VertexNormalsHelper.js +0 -74
  561. package/examples/js/helpers/VertexTangentsHelper.js +0 -68
  562. package/examples/js/helpers/ViewHelper.js +0 -281
  563. package/examples/js/interactive/HTMLMesh.js +0 -497
  564. package/examples/js/interactive/InteractiveGroup.js +0 -95
  565. package/examples/js/interactive/SelectionBox.js +0 -195
  566. package/examples/js/interactive/SelectionHelper.js +0 -83
  567. package/examples/js/libs/chevrotain.min.js +0 -3
  568. package/examples/js/libs/draco/draco_decoder.js +0 -52
  569. package/examples/js/libs/draco/draco_decoder.wasm +0 -0
  570. package/examples/js/libs/draco/draco_wasm_wrapper.js +0 -104
  571. package/examples/js/libs/draco/gltf/draco_decoder.js +0 -48
  572. package/examples/js/libs/draco/gltf/draco_decoder.wasm +0 -0
  573. package/examples/js/libs/draco/gltf/draco_wasm_wrapper.js +0 -104
  574. package/examples/js/libs/fflate.min.js +0 -7
  575. package/examples/js/libs/ktx-parse.umd.js +0 -1
  576. package/examples/js/libs/meshopt_decoder.js +0 -188
  577. package/examples/js/libs/opentype.min.js +0 -1
  578. package/examples/js/libs/stats.min.js +0 -5
  579. package/examples/js/lights/LightProbeGenerator.js +0 -221
  580. package/examples/js/lights/RectAreaLightUniformsLib.js +0 -60
  581. package/examples/js/lines/Line2.js +0 -19
  582. package/examples/js/lines/LineGeometry.js +0 -69
  583. package/examples/js/lines/LineMaterial.js +0 -635
  584. package/examples/js/lines/LineSegments2.js +0 -311
  585. package/examples/js/lines/LineSegmentsGeometry.js +0 -198
  586. package/examples/js/lines/Wireframe.js +0 -47
  587. package/examples/js/lines/WireframeGeometry2.js +0 -20
  588. package/examples/js/loaders/3DMLoader.js +0 -1273
  589. package/examples/js/loaders/3MFLoader.js +0 -1306
  590. package/examples/js/loaders/AMFLoader.js +0 -504
  591. package/examples/js/loaders/BVHLoader.js +0 -395
  592. package/examples/js/loaders/BasisTextureLoader.js +0 -706
  593. package/examples/js/loaders/ColladaLoader.js +0 -3663
  594. package/examples/js/loaders/DDSLoader.js +0 -244
  595. package/examples/js/loaders/DRACOLoader.js +0 -511
  596. package/examples/js/loaders/EXRLoader.js +0 -2039
  597. package/examples/js/loaders/FBXLoader.js +0 -3680
  598. package/examples/js/loaders/FontLoader.js +0 -160
  599. package/examples/js/loaders/GCodeLoader.js +0 -255
  600. package/examples/js/loaders/GLTFLoader.js +0 -4108
  601. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -87
  602. package/examples/js/loaders/KMZLoader.js +0 -121
  603. package/examples/js/loaders/KTXLoader.js +0 -159
  604. package/examples/js/loaders/LDrawLoader.js +0 -2263
  605. package/examples/js/loaders/LUT3dlLoader.js +0 -135
  606. package/examples/js/loaders/LUTCubeLoader.js +0 -132
  607. package/examples/js/loaders/LWOLoader.js +0 -901
  608. package/examples/js/loaders/LogLuvLoader.js +0 -715
  609. package/examples/js/loaders/LottieLoader.js +0 -62
  610. package/examples/js/loaders/MD2Loader.js +0 -248
  611. package/examples/js/loaders/MDDLoader.js +0 -91
  612. package/examples/js/loaders/MMDLoader.js +0 -1915
  613. package/examples/js/loaders/MTLLoader.js +0 -472
  614. package/examples/js/loaders/MaterialXLoader.js +0 -392
  615. package/examples/js/loaders/NRRDLoader.js +0 -609
  616. package/examples/js/loaders/OBJLoader.js +0 -789
  617. package/examples/js/loaders/PCDLoader.js +0 -413
  618. package/examples/js/loaders/PDBLoader.js +0 -317
  619. package/examples/js/loaders/PLYLoader.js +0 -532
  620. package/examples/js/loaders/PRWMLoader.js +0 -249
  621. package/examples/js/loaders/PVRLoader.js +0 -218
  622. package/examples/js/loaders/RGBELoader.js +0 -442
  623. package/examples/js/loaders/RGBMLoader.js +0 -1354
  624. package/examples/js/loaders/STLLoader.js +0 -364
  625. package/examples/js/loaders/SVGLoader.js +0 -2783
  626. package/examples/js/loaders/TDSLoader.js +0 -992
  627. package/examples/js/loaders/TGALoader.js +0 -484
  628. package/examples/js/loaders/TIFFLoader.js +0 -30
  629. package/examples/js/loaders/TTFLoader.js +0 -203
  630. package/examples/js/loaders/TiltLoader.js +0 -459
  631. package/examples/js/loaders/VOXLoader.js +0 -240
  632. package/examples/js/loaders/VRMLLoader.js +0 -3140
  633. package/examples/js/loaders/VTKLoader.js +0 -1078
  634. package/examples/js/loaders/XYZLoader.js +0 -89
  635. package/examples/js/loaders/lwo/IFFParser.js +0 -1067
  636. package/examples/js/loaders/lwo/LWO2Parser.js +0 -397
  637. package/examples/js/loaders/lwo/LWO3Parser.js +0 -360
  638. package/examples/js/materials/MeshGouraudMaterial.js +0 -387
  639. package/examples/js/math/Capsule.js +0 -103
  640. package/examples/js/math/ColorConverter.js +0 -33
  641. package/examples/js/math/ConvexHull.js +0 -1154
  642. package/examples/js/math/ImprovedNoise.js +0 -66
  643. package/examples/js/math/Lut.js +0 -164
  644. package/examples/js/math/MeshSurfaceSampler.js +0 -171
  645. package/examples/js/math/OBB.js +0 -382
  646. package/examples/js/math/Octree.js +0 -410
  647. package/examples/js/math/SimplexNoise.js +0 -445
  648. package/examples/js/misc/ConvexObjectBreaker.js +0 -474
  649. package/examples/js/misc/GPUComputationRenderer.js +0 -393
  650. package/examples/js/misc/Gyroscope.js +0 -56
  651. package/examples/js/misc/MD2Character.js +0 -235
  652. package/examples/js/misc/MD2CharacterComplex.js +0 -513
  653. package/examples/js/misc/MorphAnimMesh.js +0 -63
  654. package/examples/js/misc/MorphBlendMesh.js +0 -265
  655. package/examples/js/misc/ProgressiveLightMap.js +0 -335
  656. package/examples/js/misc/RollerCoaster.js +0 -430
  657. package/examples/js/misc/TubePainter.js +0 -167
  658. package/examples/js/misc/Volume.js +0 -437
  659. package/examples/js/misc/VolumeSlice.js +0 -214
  660. package/examples/js/modifiers/CurveModifier.js +0 -309
  661. package/examples/js/modifiers/EdgeSplitModifier.js +0 -228
  662. package/examples/js/modifiers/SimplifyModifier.js +0 -465
  663. package/examples/js/modifiers/TessellateModifier.js +0 -276
  664. package/examples/js/objects/GroundProjectedEnv.js +0 -181
  665. package/examples/js/objects/Lensflare.js +0 -356
  666. package/examples/js/objects/LightningStorm.js +0 -206
  667. package/examples/js/objects/MarchingCubes.js +0 -759
  668. package/examples/js/objects/Reflector.js +0 -216
  669. package/examples/js/objects/ReflectorForSSRPass.js +0 -315
  670. package/examples/js/objects/Refractor.js +0 -283
  671. package/examples/js/objects/ShadowMesh.js +0 -59
  672. package/examples/js/objects/Sky.js +0 -218
  673. package/examples/js/objects/Water.js +0 -292
  674. package/examples/js/objects/Water2.js +0 -307
  675. package/examples/js/physics/AmmoPhysics.js +0 -259
  676. package/examples/js/physics/OimoPhysics.js +0 -217
  677. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +0 -335
  678. package/examples/js/postprocessing/AfterimagePass.js +0 -77
  679. package/examples/js/postprocessing/BloomPass.js +0 -135
  680. package/examples/js/postprocessing/BokehPass.js +0 -120
  681. package/examples/js/postprocessing/ClearPass.js +0 -39
  682. package/examples/js/postprocessing/CubeTexturePass.js +0 -60
  683. package/examples/js/postprocessing/DotScreenPass.js +0 -51
  684. package/examples/js/postprocessing/EffectComposer.js +0 -272
  685. package/examples/js/postprocessing/FilmPass.js +0 -52
  686. package/examples/js/postprocessing/GlitchPass.js +0 -104
  687. package/examples/js/postprocessing/HalftonePass.js +0 -75
  688. package/examples/js/postprocessing/LUTPass.js +0 -171
  689. package/examples/js/postprocessing/MaskPass.js +0 -95
  690. package/examples/js/postprocessing/OutlinePass.js +0 -598
  691. package/examples/js/postprocessing/Pass.js +0 -72
  692. package/examples/js/postprocessing/RenderPass.js +0 -70
  693. package/examples/js/postprocessing/SAOPass.js +0 -374
  694. package/examples/js/postprocessing/SMAAPass.js +0 -170
  695. package/examples/js/postprocessing/SSAARenderPass.js +0 -156
  696. package/examples/js/postprocessing/SSAOPass.js +0 -365
  697. package/examples/js/postprocessing/SSRPass.js +0 -567
  698. package/examples/js/postprocessing/SavePass.js +0 -59
  699. package/examples/js/postprocessing/ShaderPass.js +0 -64
  700. package/examples/js/postprocessing/TAARenderPass.js +0 -130
  701. package/examples/js/postprocessing/TexturePass.js +0 -49
  702. package/examples/js/postprocessing/UnrealBloomPass.js +0 -375
  703. package/examples/js/renderers/CSS2DRenderer.js +0 -178
  704. package/examples/js/renderers/CSS3DRenderer.js +0 -237
  705. package/examples/js/renderers/Projector.js +0 -818
  706. package/examples/js/renderers/SVGRenderer.js +0 -491
  707. package/examples/js/shaders/ACESFilmicToneMappingShader.js +0 -89
  708. package/examples/js/shaders/AfterimageShader.js +0 -60
  709. package/examples/js/shaders/BasicShader.js +0 -27
  710. package/examples/js/shaders/BleachBypassShader.js +0 -62
  711. package/examples/js/shaders/BlendShader.js +0 -54
  712. package/examples/js/shaders/BokehShader.js +0 -156
  713. package/examples/js/shaders/BokehShader2.js +0 -419
  714. package/examples/js/shaders/BrightnessContrastShader.js +0 -58
  715. package/examples/js/shaders/ColorCorrectionShader.js +0 -52
  716. package/examples/js/shaders/ColorifyShader.js +0 -47
  717. package/examples/js/shaders/ConvolutionShader.js +0 -92
  718. package/examples/js/shaders/CopyShader.js +0 -45
  719. package/examples/js/shaders/DOFMipMapShader.js +0 -60
  720. package/examples/js/shaders/DepthLimitedBlurShader.js +0 -173
  721. package/examples/js/shaders/DigitalGlitch.js +0 -127
  722. package/examples/js/shaders/DotScreenShader.js +0 -72
  723. package/examples/js/shaders/FXAAShader.js +0 -284
  724. package/examples/js/shaders/FilmShader.js +0 -110
  725. package/examples/js/shaders/FocusShader.js +0 -95
  726. package/examples/js/shaders/FreiChenShader.js +0 -93
  727. package/examples/js/shaders/GammaCorrectionShader.js +0 -41
  728. package/examples/js/shaders/GodRaysShader.js +0 -284
  729. package/examples/js/shaders/HalftoneShader.js +0 -336
  730. package/examples/js/shaders/HorizontalBlurShader.js +0 -59
  731. package/examples/js/shaders/HorizontalTiltShiftShader.js +0 -65
  732. package/examples/js/shaders/HueSaturationShader.js +0 -69
  733. package/examples/js/shaders/KaleidoShader.js +0 -60
  734. package/examples/js/shaders/LuminosityHighPassShader.js +0 -67
  735. package/examples/js/shaders/LuminosityShader.js +0 -46
  736. package/examples/js/shaders/MMDToonShader.js +0 -96
  737. package/examples/js/shaders/MirrorShader.js +0 -56
  738. package/examples/js/shaders/NormalMapShader.js +0 -55
  739. package/examples/js/shaders/RGBShiftShader.js +0 -56
  740. package/examples/js/shaders/SAOShader.js +0 -209
  741. package/examples/js/shaders/SMAAShader.js +0 -454
  742. package/examples/js/shaders/SSAOShader.js +0 -295
  743. package/examples/js/shaders/SSRShader.js +0 -381
  744. package/examples/js/shaders/SepiaShader.js +0 -52
  745. package/examples/js/shaders/SobelOperatorShader.js +0 -88
  746. package/examples/js/shaders/SubsurfaceScatteringShader.js +0 -49
  747. package/examples/js/shaders/TechnicolorShader.js +0 -43
  748. package/examples/js/shaders/ToneMapShader.js +0 -84
  749. package/examples/js/shaders/ToonShader.js +0 -335
  750. package/examples/js/shaders/TriangleBlurShader.js +0 -70
  751. package/examples/js/shaders/UnpackDepthRGBAShader.js +0 -47
  752. package/examples/js/shaders/VelocityShader.js +0 -126
  753. package/examples/js/shaders/VerticalBlurShader.js +0 -59
  754. package/examples/js/shaders/VerticalTiltShiftShader.js +0 -65
  755. package/examples/js/shaders/VignetteShader.js +0 -53
  756. package/examples/js/shaders/VolumeShader.js +0 -296
  757. package/examples/js/shaders/WaterRefractionShader.js +0 -84
  758. package/examples/js/textures/FlakesTexture.js +0 -40
  759. package/examples/js/utils/BufferGeometryUtils.js +0 -1160
  760. package/examples/js/utils/CameraUtils.js +0 -71
  761. package/examples/js/utils/GPUStatsPanel.js +0 -125
  762. package/examples/js/utils/GeometryCompressionUtils.js +0 -549
  763. package/examples/js/utils/GeometryUtils.js +0 -168
  764. package/examples/js/utils/LDrawUtils.js +0 -179
  765. package/examples/js/utils/PackedPhongMaterial.js +0 -109
  766. package/examples/js/utils/SceneUtils.js +0 -214
  767. package/examples/js/utils/ShadowMapViewer.js +0 -183
  768. package/examples/js/utils/SkeletonUtils.js +0 -493
  769. package/examples/js/utils/UVsDebug.js +0 -143
  770. package/examples/js/utils/WorkerPool.js +0 -105
  771. package/examples/jsm/exporters/ColladaExporter.js +0 -713
  772. package/examples/jsm/geometries/LightningStrike.js +0 -1017
  773. package/examples/jsm/libs/OimoPhysics/OimoPhysics.js +0 -37071
  774. package/examples/jsm/libs/OimoPhysics/index.js +0 -43
  775. package/examples/jsm/libs/flow.module.js +0 -4552
  776. package/examples/jsm/libs/tween.module.min.js +0 -3
  777. package/examples/jsm/loaders/BasisTextureLoader.js +0 -790
  778. package/examples/jsm/loaders/IFCLoader.js +0 -2431
  779. package/examples/jsm/loaders/PRWMLoader.js +0 -299
  780. package/examples/jsm/loaders/ifc/web-ifc-api.js +0 -47504
  781. package/examples/jsm/loaders/ifc/web-ifc.wasm +0 -0
  782. package/examples/jsm/node-editor/NodeEditor.js +0 -857
  783. package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +0 -14
  784. package/examples/jsm/node-editor/accessors/NormalEditor.js +0 -30
  785. package/examples/jsm/node-editor/accessors/PositionEditor.js +0 -30
  786. package/examples/jsm/node-editor/accessors/UVEditor.js +0 -25
  787. package/examples/jsm/node-editor/core/BaseNode.js +0 -96
  788. package/examples/jsm/node-editor/core/DataFile.js +0 -59
  789. package/examples/jsm/node-editor/core/FileEditor.js +0 -20
  790. package/examples/jsm/node-editor/core/FileURLEditor.js +0 -29
  791. package/examples/jsm/node-editor/display/BlendEditor.js +0 -44
  792. package/examples/jsm/node-editor/display/NormalMapEditor.js +0 -49
  793. package/examples/jsm/node-editor/examples/animate-uv.json +0 -1
  794. package/examples/jsm/node-editor/examples/fake-top-light.json +0 -1
  795. package/examples/jsm/node-editor/examples/matcap.json +0 -1
  796. package/examples/jsm/node-editor/examples/oscillator-color.json +0 -1
  797. package/examples/jsm/node-editor/examples/rim.json +0 -1
  798. package/examples/jsm/node-editor/inputs/ColorEditor.js +0 -96
  799. package/examples/jsm/node-editor/inputs/FloatEditor.js +0 -23
  800. package/examples/jsm/node-editor/inputs/SliderEditor.js +0 -67
  801. package/examples/jsm/node-editor/inputs/TextureEditor.js +0 -155
  802. package/examples/jsm/node-editor/inputs/Vector2Editor.js +0 -28
  803. package/examples/jsm/node-editor/inputs/Vector3Editor.js +0 -30
  804. package/examples/jsm/node-editor/inputs/Vector4Editor.js +0 -37
  805. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +0 -84
  806. package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +0 -102
  807. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +0 -118
  808. package/examples/jsm/node-editor/math/AngleEditor.js +0 -40
  809. package/examples/jsm/node-editor/math/DotEditor.js +0 -35
  810. package/examples/jsm/node-editor/math/InvertEditor.js +0 -39
  811. package/examples/jsm/node-editor/math/LimiterEditor.js +0 -62
  812. package/examples/jsm/node-editor/math/NormalizeEditor.js +0 -28
  813. package/examples/jsm/node-editor/math/OperatorEditor.js +0 -63
  814. package/examples/jsm/node-editor/math/PowerEditor.js +0 -44
  815. package/examples/jsm/node-editor/math/TrigonometryEditor.js +0 -45
  816. package/examples/jsm/node-editor/procedural/CheckerEditor.js +0 -27
  817. package/examples/jsm/node-editor/scene/MeshEditor.js +0 -102
  818. package/examples/jsm/node-editor/scene/Object3DEditor.js +0 -160
  819. package/examples/jsm/node-editor/scene/PointsEditor.js +0 -99
  820. package/examples/jsm/node-editor/utils/JoinEditor.js +0 -58
  821. package/examples/jsm/node-editor/utils/OscillatorEditor.js +0 -43
  822. package/examples/jsm/node-editor/utils/PreviewEditor.js +0 -170
  823. package/examples/jsm/node-editor/utils/SplitEditor.js +0 -39
  824. package/examples/jsm/node-editor/utils/TimerEditor.js +0 -58
  825. package/examples/jsm/nodes/core/CodeNode.js +0 -50
  826. package/examples/jsm/nodes/core/ExpressionNode.js +0 -32
  827. package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +0 -22
  828. package/examples/jsm/nodes/lighting/PunctualLightNode.js +0 -68
  829. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +0 -301
  830. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +0 -149
  831. package/examples/jsm/objects/GroundProjectedEnv.js +0 -186
  832. package/examples/jsm/objects/LightningStorm.js +0 -245
  833. package/examples/jsm/physics/OimoPhysics.js +0 -231
  834. package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +0 -369
  835. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +0 -187
  836. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +0 -173
  837. package/examples/jsm/renderers/webgpu/WebGPUBinding.js +0 -22
  838. package/examples/jsm/renderers/webgpu/WebGPUBindings.js +0 -255
  839. package/examples/jsm/renderers/webgpu/WebGPUBuffer.js +0 -43
  840. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +0 -78
  841. package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +0 -82
  842. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +0 -36
  843. package/examples/jsm/renderers/webgpu/WebGPUProgrammableStage.js +0 -22
  844. package/examples/jsm/renderers/webgpu/WebGPUProperties.js +0 -38
  845. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +0 -296
  846. package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +0 -66
  847. package/examples/jsm/renderers/webgpu/WebGPUSampledTexture.js +0 -73
  848. package/examples/jsm/renderers/webgpu/WebGPUSampler.js +0 -29
  849. package/examples/jsm/renderers/webgpu/WebGPUStorageBuffer.js +0 -20
  850. package/examples/jsm/renderers/webgpu/WebGPUTextureRenderer.js +0 -40
  851. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +0 -794
  852. package/examples/jsm/renderers/webgpu/WebGPUUniformBuffer.js +0 -18
  853. package/examples/jsm/renderers/webgpu/WebGPUUtils.js +0 -81
  854. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +0 -83
  855. package/examples/jsm/shaders/ToneMapShader.js +0 -73
  856. package/src/renderers/shaders/ShaderChunk/uv2_pars_fragment.glsl.js +0 -7
  857. package/src/renderers/shaders/ShaderChunk/uv2_pars_vertex.glsl.js +0 -10
  858. package/src/renderers/shaders/ShaderChunk/uv2_vertex.glsl.js +0 -7
  859. /package/examples/{js → jsm}/libs/ammo.wasm.js +0 -0
  860. /package/examples/{js → jsm}/libs/ammo.wasm.wasm +0 -0
  861. /package/examples/{js → jsm}/libs/basis/basis_transcoder.js +0 -0
  862. /package/examples/{js → jsm}/libs/basis/basis_transcoder.wasm +0 -0
  863. /package/examples/{js → jsm}/libs/draco/README.md +0 -0
  864. /package/examples/{js → jsm}/libs/draco/draco_encoder.js +0 -0
  865. /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
- } )();