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