@needle-tools/three 0.145.4 → 0.146.2

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 (393) hide show
  1. package/README.md +1 -1
  2. package/build/three.cjs +32586 -35951
  3. package/build/three.js +32600 -35965
  4. package/build/three.min.js +6 -7
  5. package/build/three.module.js +1547 -1154
  6. package/examples/js/animation/AnimationClipCreator.js +0 -8
  7. package/examples/js/animation/CCDIKSolver.js +49 -66
  8. package/examples/js/animation/MMDAnimationHelper.js +66 -137
  9. package/examples/js/animation/MMDPhysics.js +70 -134
  10. package/examples/js/cameras/CinematicCamera.js +33 -22
  11. package/examples/js/controls/ArcballControls.js +138 -405
  12. package/examples/js/controls/DragControls.js +8 -33
  13. package/examples/js/controls/FirstPersonControls.js +32 -54
  14. package/examples/js/controls/FlyControls.js +29 -55
  15. package/examples/js/controls/OrbitControls.js +85 -95
  16. package/examples/js/controls/PointerLockControls.js +5 -14
  17. package/examples/js/controls/TrackballControls.js +33 -86
  18. package/examples/js/controls/TransformControls.js +84 -169
  19. package/examples/js/csm/CSM.js +4 -39
  20. package/examples/js/csm/CSMFrustum.js +3 -9
  21. package/examples/js/csm/CSMHelper.js +24 -4
  22. package/examples/js/csm/CSMShader.js +2 -6
  23. package/examples/js/curves/CurveExtras.js +27 -27
  24. package/examples/js/curves/NURBSCurve.js +4 -16
  25. package/examples/js/curves/NURBSSurface.js +3 -9
  26. package/examples/js/curves/NURBSUtils.js +8 -45
  27. package/examples/js/effects/AnaglyphEffect.js +4 -18
  28. package/examples/js/effects/AsciiEffect.js +32 -31
  29. package/examples/js/effects/OutlineEffect.js +26 -30
  30. package/examples/js/effects/ParallaxBarrierEffect.js +0 -13
  31. package/examples/js/effects/PeppersGhostEffect.js +12 -39
  32. package/examples/js/effects/StereoEffect.js +0 -4
  33. package/examples/js/environments/RoomEnvironment.js +12 -10
  34. package/examples/js/exporters/ColladaExporter.js +48 -65
  35. package/examples/js/exporters/DRACOExporter.js +22 -22
  36. package/examples/js/exporters/EXRExporter.js +15 -18
  37. package/examples/js/exporters/GLTFExporter.js +143 -261
  38. package/examples/js/exporters/MMDExporter.js +5 -12
  39. package/examples/js/exporters/OBJExporter.js +42 -33
  40. package/examples/js/exporters/PLYExporter.js +38 -33
  41. package/examples/js/exporters/STLExporter.js +5 -7
  42. package/examples/js/exporters/USDZExporter.js +110 -25
  43. package/examples/js/geometries/BoxLineGeometry.js +0 -1
  44. package/examples/js/geometries/ConvexGeometry.js +11 -6
  45. package/examples/js/geometries/DecalGeometry.js +53 -20
  46. package/examples/js/geometries/LightningStrike.js +54 -67
  47. package/examples/js/geometries/ParametricGeometries.js +8 -7
  48. package/examples/js/geometries/ParametricGeometry.js +25 -12
  49. package/examples/js/geometries/RoundedBoxGeometry.js +21 -19
  50. package/examples/js/geometries/TeapotGeometry.js +54 -50
  51. package/examples/js/geometries/TextGeometry.js +6 -4
  52. package/examples/js/helpers/LightProbeHelper.js +1 -2
  53. package/examples/js/helpers/OctreeHelper.js +22 -20
  54. package/examples/js/helpers/PositionalAudioHelper.js +8 -6
  55. package/examples/js/helpers/RectAreaLightHelper.js +6 -7
  56. package/examples/js/helpers/VertexNormalsHelper.js +15 -13
  57. package/examples/js/helpers/VertexTangentsHelper.js +15 -9
  58. package/examples/js/helpers/ViewHelper.js +31 -16
  59. package/examples/js/interactive/HTMLMesh.js +22 -33
  60. package/examples/js/interactive/InteractiveGroup.js +6 -12
  61. package/examples/js/interactive/SelectionBox.js +3 -70
  62. package/examples/js/interactive/SelectionHelper.js +0 -8
  63. package/examples/js/lights/LightProbeGenerator.js +32 -39
  64. package/examples/js/lights/RectAreaLightUniformsLib.js +5 -1
  65. package/examples/js/lines/LineGeometry.js +3 -5
  66. package/examples/js/lines/LineMaterial.js +4 -11
  67. package/examples/js/lines/LineSegments2.js +38 -89
  68. package/examples/js/lines/LineSegmentsGeometry.js +7 -28
  69. package/examples/js/lines/Wireframe.js +2 -7
  70. package/examples/js/lines/WireframeGeometry2.js +3 -1
  71. package/examples/js/loaders/3DMLoader.js +58 -155
  72. package/examples/js/loaders/3MFLoader.js +72 -106
  73. package/examples/js/loaders/AMFLoader.js +0 -25
  74. package/examples/js/loaders/BVHLoader.js +44 -43
  75. package/examples/js/loaders/BasisTextureLoader.js +16 -46
  76. package/examples/js/loaders/ColladaLoader.js +201 -359
  77. package/examples/js/loaders/DDSLoader.js +24 -25
  78. package/examples/js/loaders/DRACOLoader.js +29 -66
  79. package/examples/js/loaders/EXRLoader.js +67 -164
  80. package/examples/js/loaders/FBXLoader.js +286 -441
  81. package/examples/js/loaders/FontLoader.js +6 -15
  82. package/examples/js/loaders/GCodeLoader.js +15 -16
  83. package/examples/js/loaders/GLTFLoader.js +354 -405
  84. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -6
  85. package/examples/js/loaders/KMZLoader.js +3 -7
  86. package/examples/js/loaders/KTXLoader.js +12 -30
  87. package/examples/js/loaders/LDrawLoader.js +178 -289
  88. package/examples/js/loaders/LUT3dlLoader.js +7 -11
  89. package/examples/js/loaders/LUTCubeLoader.js +0 -8
  90. package/examples/js/loaders/LWOLoader.js +59 -124
  91. package/examples/js/loaders/LogLuvLoader.js +27 -77
  92. package/examples/js/loaders/LottieLoader.js +4 -4
  93. package/examples/js/loaders/MD2Loader.js +26 -27
  94. package/examples/js/loaders/MDDLoader.js +6 -10
  95. package/examples/js/loaders/MMDLoader.js +180 -189
  96. package/examples/js/loaders/MTLLoader.js +18 -47
  97. package/examples/js/loaders/MaterialXLoader.js +392 -0
  98. package/examples/js/loaders/NRRDLoader.js +44 -84
  99. package/examples/js/loaders/OBJLoader.js +50 -65
  100. package/examples/js/loaders/PCDLoader.js +34 -29
  101. package/examples/js/loaders/PDBLoader.js +17 -13
  102. package/examples/js/loaders/PLYLoader.js +9 -39
  103. package/examples/js/loaders/PRWMLoader.js +11 -22
  104. package/examples/js/loaders/PVRLoader.js +7 -16
  105. package/examples/js/loaders/RGBELoader.js +36 -61
  106. package/examples/js/loaders/RGBMLoader.js +26 -87
  107. package/examples/js/loaders/STLLoader.js +20 -27
  108. package/examples/js/loaders/SVGLoader.js +361 -233
  109. package/examples/js/loaders/TDSLoader.js +81 -118
  110. package/examples/js/loaders/TGALoader.js +39 -41
  111. package/examples/js/loaders/TIFFLoader.js +0 -1
  112. package/examples/js/loaders/TTFLoader.js +0 -8
  113. package/examples/js/loaders/TiltLoader.js +14 -15
  114. package/examples/js/loaders/VOXLoader.js +8 -16
  115. package/examples/js/loaders/VRMLLoader.js +243 -340
  116. package/examples/js/loaders/VTKLoader.js +101 -118
  117. package/examples/js/loaders/XYZLoader.js +2 -4
  118. package/examples/js/loaders/lwo/IFFParser.js +55 -136
  119. package/examples/js/loaders/lwo/LWO2Parser.js +32 -83
  120. package/examples/js/loaders/lwo/LWO3Parser.js +31 -73
  121. package/examples/js/materials/MeshGouraudMaterial.js +15 -13
  122. package/examples/js/math/Capsule.js +0 -17
  123. package/examples/js/math/ColorConverter.js +3 -3
  124. package/examples/js/math/ConvexHull.js +183 -139
  125. package/examples/js/math/ImprovedNoise.js +1 -1
  126. package/examples/js/math/Lut.js +8 -15
  127. package/examples/js/math/MeshSurfaceSampler.js +6 -28
  128. package/examples/js/math/OBB.js +90 -49
  129. package/examples/js/math/Octree.js +2 -57
  130. package/examples/js/math/SimplexNoise.js +74 -88
  131. package/examples/js/misc/ConvexObjectBreaker.js +37 -48
  132. package/examples/js/misc/GPUComputationRenderer.js +14 -18
  133. package/examples/js/misc/Gyroscope.js +5 -9
  134. package/examples/js/misc/MD2Character.js +14 -23
  135. package/examples/js/misc/MD2CharacterComplex.js +73 -54
  136. package/examples/js/misc/MorphAnimMesh.js +0 -6
  137. package/examples/js/misc/MorphBlendMesh.js +3 -30
  138. package/examples/js/misc/ProgressiveLightMap.js +47 -43
  139. package/examples/js/misc/RollerCoaster.js +17 -24
  140. package/examples/js/misc/TubePainter.js +18 -12
  141. package/examples/js/misc/Volume.js +16 -45
  142. package/examples/js/misc/VolumeSlice.js +14 -24
  143. package/examples/js/modifiers/CurveModifier.js +19 -21
  144. package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
  145. package/examples/js/modifiers/SimplifyModifier.js +56 -59
  146. package/examples/js/modifiers/TessellateModifier.js +2 -9
  147. package/examples/js/objects/GroundProjectedEnv.js +2 -14
  148. package/examples/js/objects/Lensflare.js +47 -38
  149. package/examples/js/objects/LightningStorm.js +10 -13
  150. package/examples/js/objects/MarchingCubes.js +80 -59
  151. package/examples/js/objects/Reflector.js +22 -20
  152. package/examples/js/objects/ReflectorForSSRPass.js +19 -23
  153. package/examples/js/objects/Refractor.js +52 -30
  154. package/examples/js/objects/ShadowMesh.js +1 -2
  155. package/examples/js/objects/Sky.js +2 -7
  156. package/examples/js/objects/Water.js +23 -18
  157. package/examples/js/objects/Water2.js +20 -19
  158. package/examples/js/physics/AmmoPhysics.js +23 -20
  159. package/examples/js/physics/OimoPhysics.js +19 -17
  160. package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
  161. package/examples/js/postprocessing/AfterimagePass.js +19 -12
  162. package/examples/js/postprocessing/BloomPass.js +38 -17
  163. package/examples/js/postprocessing/BokehPass.js +29 -12
  164. package/examples/js/postprocessing/ClearPass.js +1 -6
  165. package/examples/js/postprocessing/CubeTexturePass.js +12 -9
  166. package/examples/js/postprocessing/DotScreenPass.js +7 -5
  167. package/examples/js/postprocessing/EffectComposer.js +25 -32
  168. package/examples/js/postprocessing/FilmPass.js +7 -5
  169. package/examples/js/postprocessing/GlitchPass.js +10 -11
  170. package/examples/js/postprocessing/HalftonePass.js +9 -9
  171. package/examples/js/postprocessing/LUTPass.js +2 -15
  172. package/examples/js/postprocessing/MaskPass.js +20 -17
  173. package/examples/js/postprocessing/OutlinePass.js +45 -36
  174. package/examples/js/postprocessing/Pass.js +11 -14
  175. package/examples/js/postprocessing/RenderPass.js +3 -7
  176. package/examples/js/postprocessing/SAOPass.js +40 -32
  177. package/examples/js/postprocessing/SMAAPass.js +34 -17
  178. package/examples/js/postprocessing/SSAARenderPass.js +14 -14
  179. package/examples/js/postprocessing/SSAOPass.js +56 -42
  180. package/examples/js/postprocessing/SSRPass.js +78 -61
  181. package/examples/js/postprocessing/SavePass.js +14 -6
  182. package/examples/js/postprocessing/ShaderPass.js +9 -8
  183. package/examples/js/postprocessing/TAARenderPass.js +11 -9
  184. package/examples/js/postprocessing/TexturePass.js +7 -4
  185. package/examples/js/postprocessing/UnrealBloomPass.js +43 -25
  186. package/examples/js/renderers/CSS2DRenderer.js +2 -21
  187. package/examples/js/renderers/CSS3DRenderer.js +3 -24
  188. package/examples/js/renderers/Projector.js +29 -85
  189. package/examples/js/renderers/SVGRenderer.js +4 -50
  190. package/examples/js/shaders/ACESFilmicToneMappingShader.js +3 -6
  191. package/examples/js/shaders/AfterimageShader.js +3 -6
  192. package/examples/js/shaders/BasicShader.js +3 -6
  193. package/examples/js/shaders/BleachBypassShader.js +3 -6
  194. package/examples/js/shaders/BlendShader.js +3 -6
  195. package/examples/js/shaders/BokehShader.js +3 -6
  196. package/examples/js/shaders/BokehShader2.js +4 -13
  197. package/examples/js/shaders/BrightnessContrastShader.js +3 -6
  198. package/examples/js/shaders/ColorCorrectionShader.js +2 -6
  199. package/examples/js/shaders/ColorifyShader.js +2 -6
  200. package/examples/js/shaders/ConvolutionShader.js +5 -10
  201. package/examples/js/shaders/CopyShader.js +3 -6
  202. package/examples/js/shaders/DOFMipMapShader.js +3 -6
  203. package/examples/js/shaders/DepthLimitedBlurShader.js +2 -9
  204. package/examples/js/shaders/DigitalGlitch.js +3 -6
  205. package/examples/js/shaders/DotScreenShader.js +2 -6
  206. package/examples/js/shaders/FXAAShader.js +1 -3
  207. package/examples/js/shaders/FilmShader.js +3 -6
  208. package/examples/js/shaders/FocusShader.js +3 -6
  209. package/examples/js/shaders/FreiChenShader.js +2 -6
  210. package/examples/js/shaders/GammaCorrectionShader.js +3 -6
  211. package/examples/js/shaders/GodRaysShader.js +11 -24
  212. package/examples/js/shaders/HalftoneShader.js +3 -6
  213. package/examples/js/shaders/HorizontalBlurShader.js +3 -6
  214. package/examples/js/shaders/HorizontalTiltShiftShader.js +3 -6
  215. package/examples/js/shaders/HueSaturationShader.js +3 -6
  216. package/examples/js/shaders/KaleidoShader.js +3 -6
  217. package/examples/js/shaders/LuminosityHighPassShader.js +2 -6
  218. package/examples/js/shaders/LuminosityShader.js +3 -6
  219. package/examples/js/shaders/MMDToonShader.js +2 -6
  220. package/examples/js/shaders/MirrorShader.js +3 -6
  221. package/examples/js/shaders/NormalMapShader.js +2 -6
  222. package/examples/js/shaders/RGBShiftShader.js +3 -6
  223. package/examples/js/shaders/SAOShader.js +2 -6
  224. package/examples/js/shaders/SMAAShader.js +6 -18
  225. package/examples/js/shaders/SSAOShader.js +2 -6
  226. package/examples/js/shaders/SSRShader.js +6 -18
  227. package/examples/js/shaders/SepiaShader.js +3 -6
  228. package/examples/js/shaders/SobelOperatorShader.js +2 -6
  229. package/examples/js/shaders/TechnicolorShader.js +3 -6
  230. package/examples/js/shaders/ToneMapShader.js +3 -6
  231. package/examples/js/shaders/ToonShader.js +8 -24
  232. package/examples/js/shaders/TriangleBlurShader.js +2 -6
  233. package/examples/js/shaders/UnpackDepthRGBAShader.js +3 -6
  234. package/examples/js/shaders/VelocityShader.js +126 -0
  235. package/examples/js/shaders/VerticalBlurShader.js +3 -6
  236. package/examples/js/shaders/VerticalTiltShiftShader.js +3 -6
  237. package/examples/js/shaders/VignetteShader.js +3 -6
  238. package/examples/js/shaders/VolumeShader.js +2 -6
  239. package/examples/js/shaders/WaterRefractionShader.js +2 -6
  240. package/examples/js/textures/FlakesTexture.js +0 -1
  241. package/examples/js/utils/BufferGeometryUtils.js +234 -168
  242. package/examples/js/utils/CameraUtils.js +5 -20
  243. package/examples/js/utils/GPUStatsPanel.js +3 -12
  244. package/examples/js/utils/GeometryCompressionUtils.js +19 -44
  245. package/examples/js/utils/GeometryUtils.js +13 -18
  246. package/examples/js/utils/LDrawUtils.js +8 -11
  247. package/examples/js/utils/PackedPhongMaterial.js +6 -4
  248. package/examples/js/utils/SceneUtils.js +117 -6
  249. package/examples/js/utils/ShadowMapViewer.js +17 -14
  250. package/examples/js/utils/SkeletonUtils.js +13 -27
  251. package/examples/js/utils/UVsDebug.js +20 -12
  252. package/examples/js/utils/WorkerPool.js +1 -11
  253. package/examples/jsm/animation/CCDIKSolver.js +1 -1
  254. package/examples/jsm/capabilities/WebGPU.js +3 -1
  255. package/examples/jsm/controls/OrbitControls.js +44 -4
  256. package/examples/jsm/exporters/GLTFExporter.js +17 -131
  257. package/examples/jsm/exporters/USDZExporter.js +75 -19
  258. package/examples/jsm/interactive/HTMLMesh.js +2 -0
  259. package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
  260. package/examples/jsm/loaders/3DMLoader.js +1 -2
  261. package/examples/jsm/loaders/ColladaLoader.js +28 -0
  262. package/examples/jsm/loaders/FBXLoader.js +16 -2
  263. package/examples/jsm/loaders/GLTFLoader.js +204 -377
  264. package/examples/jsm/loaders/KTX2Loader.js +68 -29
  265. package/examples/jsm/loaders/LDrawLoader.js +14 -13
  266. package/examples/jsm/loaders/LottieLoader.js +4 -2
  267. package/examples/jsm/loaders/MaterialXLoader.js +728 -0
  268. package/examples/jsm/loaders/PCDLoader.js +1 -1
  269. package/examples/jsm/loaders/PLYLoader.js +68 -16
  270. package/examples/jsm/loaders/SVGLoader.js +227 -14
  271. package/examples/jsm/loaders/USDZLoader.js +31 -16
  272. package/examples/jsm/nodes/Nodes.js +14 -2
  273. package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
  274. package/examples/jsm/nodes/accessors/PositionNode.js +6 -0
  275. package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
  276. package/examples/jsm/nodes/accessors/SkinningNode.js +1 -1
  277. package/examples/jsm/nodes/core/Node.js +1 -1
  278. package/examples/jsm/nodes/core/NodeBuilder.js +36 -4
  279. package/examples/jsm/nodes/core/NodeFrame.js +2 -2
  280. package/examples/jsm/nodes/core/NodeVarying.js +7 -4
  281. package/examples/jsm/nodes/core/VaryingNode.js +6 -4
  282. package/examples/jsm/nodes/core/constants.js +13 -13
  283. package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
  284. package/examples/jsm/nodes/display/ViewportNode.js +106 -0
  285. package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
  286. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
  287. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +3 -1
  288. package/examples/jsm/nodes/materials/Materials.js +9 -7
  289. package/examples/jsm/nodes/materials/NodeMaterial.js +9 -1
  290. package/examples/jsm/nodes/materialx/MaterialXNodes.js +6 -2
  291. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
  292. package/examples/jsm/nodes/math/MathNode.js +5 -0
  293. package/examples/jsm/nodes/math/OperatorNode.js +6 -1
  294. package/examples/jsm/nodes/shadernode/ShaderNode.js +26 -13
  295. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +2 -0
  296. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +18 -0
  297. package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
  298. package/examples/jsm/nodes/utils/JoinNode.js +8 -2
  299. package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
  300. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
  301. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
  302. package/examples/jsm/nodes/utils/TimerNode.js +1 -1
  303. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
  304. package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
  305. package/examples/jsm/postprocessing/BloomPass.js +22 -3
  306. package/examples/jsm/postprocessing/BokehPass.js +18 -4
  307. package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
  308. package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
  309. package/examples/jsm/postprocessing/EffectComposer.js +9 -0
  310. package/examples/jsm/postprocessing/FilmPass.js +8 -0
  311. package/examples/jsm/postprocessing/GlitchPass.js +13 -1
  312. package/examples/jsm/postprocessing/HalftonePass.js +8 -0
  313. package/examples/jsm/postprocessing/OutlinePass.js +10 -0
  314. package/examples/jsm/postprocessing/Pass.js +2 -0
  315. package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
  316. package/examples/jsm/postprocessing/SAOPass.js +20 -0
  317. package/examples/jsm/postprocessing/SMAAPass.js +16 -0
  318. package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
  319. package/examples/jsm/postprocessing/SavePass.js +17 -1
  320. package/examples/jsm/postprocessing/ShaderPass.js +8 -0
  321. package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
  322. package/examples/jsm/postprocessing/TexturePass.js +8 -0
  323. package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
  324. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +39 -16
  325. package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
  326. package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
  327. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +36 -7
  328. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +47 -12
  329. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +35 -5
  330. package/examples/jsm/shaders/MMDToonShader.js +0 -2
  331. package/examples/jsm/shaders/VelocityShader.js +128 -0
  332. package/examples/jsm/utils/BufferGeometryUtils.js +130 -6
  333. package/examples/jsm/utils/SceneUtils.js +129 -4
  334. package/examples/jsm/utils/TextureUtils.js +85 -0
  335. package/examples/jsm/webxr/OculusHandModel.js +1 -1
  336. package/examples/jsm/webxr/XRHandMeshModel.js +6 -3
  337. package/package.json +11 -12
  338. package/src/Three.js +1 -0
  339. package/src/audio/AudioContext.js +5 -5
  340. package/src/cameras/CubeCamera.js +14 -14
  341. package/src/constants.js +1 -1
  342. package/src/core/InstancedBufferGeometry.js +1 -7
  343. package/src/extras/Earcut.js +67 -67
  344. package/src/helpers/DirectionalLightHelper.js +5 -1
  345. package/src/helpers/HemisphereLightHelper.js +4 -1
  346. package/src/helpers/PointLightHelper.js +2 -1
  347. package/src/helpers/SpotLightHelper.js +4 -2
  348. package/src/lights/PointLight.js +2 -2
  349. package/src/lights/SpotLight.js +2 -2
  350. package/src/loaders/FileLoader.js +4 -1
  351. package/src/loaders/ObjectLoader.js +5 -1
  352. package/src/materials/Material.js +1 -1
  353. package/src/math/Color.js +5 -5
  354. package/src/math/Matrix3.js +53 -18
  355. package/src/math/Ray.js +2 -5
  356. package/src/math/Sphere.js +19 -26
  357. package/src/objects/InstancedMesh.js +7 -0
  358. package/src/objects/LOD.js +25 -6
  359. package/src/renderers/WebGL3DRenderTarget.js +1 -1
  360. package/src/renderers/WebGLArrayRenderTarget.js +1 -1
  361. package/src/renderers/WebGLCubeRenderTarget.js +1 -1
  362. package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
  363. package/src/renderers/WebGLRenderTarget.js +1 -1
  364. package/src/renderers/WebGLRenderer.js +36 -62
  365. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
  366. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +0 -1
  367. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +0 -2
  368. package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
  369. package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
  370. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
  371. package/src/renderers/shaders/ShaderChunk.js +3 -0
  372. package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
  373. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
  374. package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
  375. package/src/renderers/shaders/ShaderLib.js +20 -6
  376. package/src/renderers/shaders/UniformsLib.js +1 -1
  377. package/src/renderers/shaders/UniformsUtils.js +15 -0
  378. package/src/renderers/webgl/WebGLAttributes.js +2 -0
  379. package/src/renderers/webgl/WebGLBackground.js +15 -7
  380. package/src/renderers/webgl/WebGLLights.js +0 -4
  381. package/src/renderers/webgl/WebGLMaterials.js +2 -1
  382. package/src/renderers/webgl/WebGLShadowMap.js +3 -1
  383. package/src/renderers/webgl/WebGLState.js +31 -1
  384. package/src/renderers/webgl/WebGLTextures.js +71 -18
  385. package/src/renderers/webgl/WebGLUniforms.js +116 -20
  386. package/src/renderers/webgl/WebGLUtils.js +1 -1
  387. package/src/renderers/webxr/WebXRController.js +46 -13
  388. package/src/renderers/webxr/WebXRManager.js +85 -3
  389. package/src/scenes/Scene.js +8 -0
  390. package/src/textures/CompressedArrayTexture.js +18 -0
  391. package/examples/js/libs/lottie_canvas.js +0 -12751
  392. package/examples/js/shaders/PixelShader.js +0 -51
  393. package/examples/jsm/shaders/PixelShader.js +0 -44
@@ -7,7 +7,6 @@
7
7
  super( manager );
8
8
 
9
9
  }
10
-
11
10
  load( url, onLoad, onProgress, onError ) {
12
11
 
13
12
  const scope = this;
@@ -39,8 +38,9 @@
39
38
 
40
39
  }, onProgress, onError );
41
40
 
42
- } // Based on CanvasMol PDB parser
41
+ }
43
42
 
43
+ // Based on CanvasMol PDB parser
44
44
 
45
45
  parse( text ) {
46
46
 
@@ -65,18 +65,17 @@
65
65
  function parseBond( start, length, satom, i ) {
66
66
 
67
67
  const eatom = parseInt( lines[ i ].slice( start, start + length ) );
68
-
69
68
  if ( eatom ) {
70
69
 
71
70
  const h = hash( satom, eatom );
72
-
73
71
  if ( _bhash[ h ] === undefined ) {
74
72
 
75
73
  _bonds.push( [ satom - 1, eatom - 1, 1 ] );
76
-
77
74
  _bhash[ h ] = _bonds.length - 1;
78
75
 
79
- } else { // doesn't really work as almost all PDBs
76
+ } else {
77
+
78
+ // doesn't really work as almost all PDBs
80
79
  // have just normal bonds appearing multiple
81
80
  // times instead of being double/triple bonds
82
81
  // bonds[bhash[h]][2] += 1;
@@ -99,7 +98,9 @@
99
98
  const geometryBonds = build.geometryBonds;
100
99
  const verticesAtoms = [];
101
100
  const colorsAtoms = [];
102
- const verticesBonds = []; // atoms
101
+ const verticesBonds = [];
102
+
103
+ // atoms
103
104
 
104
105
  for ( let i = 0, l = atoms.length; i < l; i ++ ) {
105
106
 
@@ -113,8 +114,9 @@
113
114
  const b = atom[ 3 ][ 2 ] / 255;
114
115
  colorsAtoms.push( r, g, b );
115
116
 
116
- } // bonds
117
+ }
117
118
 
119
+ // bonds
118
120
 
119
121
  for ( let i = 0, l = _bonds.length; i < l; i ++ ) {
120
122
 
@@ -132,8 +134,9 @@
132
134
  z = endAtom[ 2 ];
133
135
  verticesBonds.push( x, y, z );
134
136
 
135
- } // build geometry
137
+ }
136
138
 
139
+ // build geometry
137
140
 
138
141
  geometryAtoms.setAttribute( 'position', new THREE.Float32BufferAttribute( verticesAtoms, 3 ) );
139
142
  geometryAtoms.setAttribute( 'color', new THREE.Float32BufferAttribute( colorsAtoms, 3 ) );
@@ -265,10 +268,11 @@
265
268
  const atoms = [];
266
269
  const _bonds = [];
267
270
  const _bhash = {};
268
- const _atomMap = {}; // parse
271
+ const _atomMap = {};
269
272
 
270
- const lines = text.split( '\n' );
273
+ // parse
271
274
 
275
+ const lines = text.split( '\n' );
272
276
  for ( let i = 0, l = lines.length; i < l; i ++ ) {
273
277
 
274
278
  if ( lines[ i ].slice( 0, 4 ) === 'ATOM' || lines[ i ].slice( 0, 6 ) === 'HETATM' ) {
@@ -278,7 +282,6 @@
278
282
  const z = parseFloat( lines[ i ].slice( 46, 53 ) );
279
283
  const index = parseInt( lines[ i ].slice( 6, 11 ) ) - 1;
280
284
  let e = trim( lines[ i ].slice( 76, 78 ) ).toLowerCase();
281
-
282
285
  if ( e === '' ) {
283
286
 
284
287
  e = trim( lines[ i ].slice( 12, 14 ) ).toLowerCase();
@@ -299,8 +302,9 @@
299
302
 
300
303
  }
301
304
 
302
- } // build and return geometry
305
+ }
303
306
 
307
+ // build and return geometry
304
308
 
305
309
  return buildGeometry();
306
310
 
@@ -27,7 +27,6 @@
27
27
  */
28
28
 
29
29
  const _color = new THREE.Color();
30
-
31
30
  class PLYLoader extends THREE.Loader {
32
31
 
33
32
  constructor( manager ) {
@@ -36,7 +35,6 @@
36
35
  this.propertyNameMapping = {};
37
36
 
38
37
  }
39
-
40
38
  load( url, onLoad, onProgress, onError ) {
41
39
 
42
40
  const scope = this;
@@ -70,13 +68,11 @@
70
68
  }, onProgress, onError );
71
69
 
72
70
  }
73
-
74
71
  setPropertyNameMapping( mapping ) {
75
72
 
76
73
  this.propertyNameMapping = mapping;
77
74
 
78
75
  }
79
-
80
76
  parse( data ) {
81
77
 
82
78
  function parseHeader( data ) {
@@ -85,7 +81,6 @@
85
81
  let headerText = '';
86
82
  let headerLength = 0;
87
83
  const result = patternHeader.exec( data );
88
-
89
84
  if ( result !== null ) {
90
85
 
91
86
  headerText = result[ 1 ];
@@ -101,13 +96,11 @@
101
96
  };
102
97
  const lines = headerText.split( /\r\n|\r|\n/ );
103
98
  let currentElement;
104
-
105
99
  function make_ply_element_property( propertValues, propertyNameMapping ) {
106
100
 
107
101
  const property = {
108
102
  type: propertValues[ 0 ]
109
103
  };
110
-
111
104
  if ( property.type === 'list' ) {
112
105
 
113
106
  property.name = propertValues[ 3 ];
@@ -138,18 +131,15 @@
138
131
  const lineValues = line.split( /\s+/ );
139
132
  const lineType = lineValues.shift();
140
133
  line = lineValues.join( ' ' );
141
-
142
134
  switch ( lineType ) {
143
135
 
144
136
  case 'format':
145
137
  header.format = lineValues[ 0 ];
146
138
  header.version = lineValues[ 1 ];
147
139
  break;
148
-
149
140
  case 'comment':
150
141
  header.comments.push( line );
151
142
  break;
152
-
153
143
  case 'element':
154
144
  if ( currentElement !== undefined ) {
155
145
 
@@ -162,15 +152,12 @@
162
152
  currentElement.count = parseInt( lineValues[ 1 ] );
163
153
  currentElement.properties = [];
164
154
  break;
165
-
166
155
  case 'property':
167
156
  currentElement.properties.push( make_ply_element_property( lineValues, scope.propertyNameMapping ) );
168
157
  break;
169
-
170
158
  case 'obj_info':
171
159
  header.objInfo = line;
172
160
  break;
173
-
174
161
  default:
175
162
  console.log( 'unhandled', lineType, lineValues );
176
163
 
@@ -205,7 +192,6 @@
205
192
  case 'int32':
206
193
  case 'uint32':
207
194
  return parseInt( n );
208
-
209
195
  case 'float':
210
196
  case 'double':
211
197
  case 'float32':
@@ -220,14 +206,12 @@
220
206
 
221
207
  const values = line.split( /\s+/ );
222
208
  const element = {};
223
-
224
209
  for ( let i = 0; i < properties.length; i ++ ) {
225
210
 
226
211
  if ( properties[ i ].type === 'list' ) {
227
212
 
228
213
  const list = [];
229
214
  const n = parseASCIINumber( values.shift(), properties[ i ].countType );
230
-
231
215
  for ( let j = 0; j < n; j ++ ) {
232
216
 
233
217
  list.push( parseASCIINumber( values.shift(), properties[ i ].itemType ) );
@@ -251,6 +235,7 @@
251
235
  function parseASCII( data, header ) {
252
236
 
253
237
  // PLY ascii format specification, as per http://en.wikipedia.org/wiki/PLY_(file_format)
238
+
254
239
  const buffer = {
255
240
  indices: [],
256
241
  vertices: [],
@@ -262,7 +247,6 @@
262
247
  let result;
263
248
  const patternBody = /end_header\s([\s\S]*)$/;
264
249
  let body = '';
265
-
266
250
  if ( ( result = patternBody.exec( data ) ) !== null ) {
267
251
 
268
252
  body = result[ 1 ];
@@ -272,12 +256,10 @@
272
256
  const lines = body.split( /\r\n|\r|\n/ );
273
257
  let currentElement = 0;
274
258
  let currentElementCount = 0;
275
-
276
259
  for ( let i = 0; i < lines.length; i ++ ) {
277
260
 
278
261
  let line = lines[ i ];
279
262
  line = line.trim();
280
-
281
263
  if ( line === '' ) {
282
264
 
283
265
  continue;
@@ -303,7 +285,9 @@
303
285
 
304
286
  function postProcess( buffer ) {
305
287
 
306
- let geometry = new THREE.BufferGeometry(); // mandatory buffer data
288
+ let geometry = new THREE.BufferGeometry();
289
+
290
+ // mandatory buffer data
307
291
 
308
292
  if ( buffer.indices.length > 0 ) {
309
293
 
@@ -311,7 +295,9 @@
311
295
 
312
296
  }
313
297
 
314
- geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( buffer.vertices, 3 ) ); // optional buffer data
298
+ geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( buffer.vertices, 3 ) );
299
+
300
+ // optional buffer data
315
301
 
316
302
  if ( buffer.normals.length > 0 ) {
317
303
 
@@ -369,11 +355,9 @@
369
355
  const attrR = findAttrName( [ 'red', 'diffuse_red', 'r', 'diffuse_r' ] );
370
356
  const attrG = findAttrName( [ 'green', 'diffuse_green', 'g', 'diffuse_g' ] );
371
357
  const attrB = findAttrName( [ 'blue', 'diffuse_blue', 'b', 'diffuse_b' ] );
372
-
373
358
  if ( elementName === 'vertex' ) {
374
359
 
375
360
  buffer.vertices.push( element[ attrX ], element[ attrY ], element[ attrZ ] );
376
-
377
361
  if ( attrNX !== null && attrNY !== null && attrNZ !== null ) {
378
362
 
379
363
  buffer.normals.push( element[ attrNX ], element[ attrNY ], element[ attrNZ ] );
@@ -389,7 +373,6 @@
389
373
  if ( attrR !== null && attrG !== null && attrB !== null ) {
390
374
 
391
375
  _color.setRGB( element[ attrR ] / 255.0, element[ attrG ] / 255.0, element[ attrB ] / 255.0 ).convertSRGBToLinear();
392
-
393
376
  buffer.colors.push( _color.r, _color.g, _color.b );
394
377
 
395
378
  }
@@ -397,13 +380,10 @@
397
380
  } else if ( elementName === 'face' ) {
398
381
 
399
382
  const vertex_indices = element.vertex_indices || element.vertex_index; // issue #9338
400
-
401
383
  const texcoord = element.texcoord;
402
-
403
384
  if ( vertex_indices.length === 3 ) {
404
385
 
405
386
  buffer.indices.push( vertex_indices[ 0 ], vertex_indices[ 1 ], vertex_indices[ 2 ] );
406
-
407
387
  if ( texcoord && texcoord.length === 6 ) {
408
388
 
409
389
  buffer.faceVertexUvs.push( texcoord[ 0 ], texcoord[ 1 ] );
@@ -431,31 +411,24 @@
431
411
  case 'int8':
432
412
  case 'char':
433
413
  return [ dataview.getInt8( at ), 1 ];
434
-
435
414
  case 'uint8':
436
415
  case 'uchar':
437
416
  return [ dataview.getUint8( at ), 1 ];
438
-
439
417
  case 'int16':
440
418
  case 'short':
441
419
  return [ dataview.getInt16( at, little_endian ), 2 ];
442
-
443
420
  case 'uint16':
444
421
  case 'ushort':
445
422
  return [ dataview.getUint16( at, little_endian ), 2 ];
446
-
447
423
  case 'int32':
448
424
  case 'int':
449
425
  return [ dataview.getInt32( at, little_endian ), 4 ];
450
-
451
426
  case 'uint32':
452
427
  case 'uint':
453
428
  return [ dataview.getUint32( at, little_endian ), 4 ];
454
-
455
429
  case 'float32':
456
430
  case 'float':
457
431
  return [ dataview.getFloat32( at, little_endian ), 4 ];
458
-
459
432
  case 'float64':
460
433
  case 'double':
461
434
  return [ dataview.getFloat64( at, little_endian ), 8 ];
@@ -469,7 +442,6 @@
469
442
  const element = {};
470
443
  let result,
471
444
  read = 0;
472
-
473
445
  for ( let i = 0; i < properties.length; i ++ ) {
474
446
 
475
447
  if ( properties[ i ].type === 'list' ) {
@@ -478,7 +450,6 @@
478
450
  result = binaryRead( dataview, at + read, properties[ i ].countType, little_endian );
479
451
  const n = result[ 0 ];
480
452
  read += result[ 1 ];
481
-
482
453
  for ( let j = 0; j < n; j ++ ) {
483
454
 
484
455
  result = binaryRead( dataview, at + read, properties[ i ].itemType, little_endian );
@@ -517,7 +488,6 @@
517
488
  const body = new DataView( data, header.headerLength );
518
489
  let result,
519
490
  loc = 0;
520
-
521
491
  for ( let currentElement = 0; currentElement < header.elements.length; currentElement ++ ) {
522
492
 
523
493
  for ( let currentElementCount = 0; currentElementCount < header.elements[ currentElement ].count; currentElementCount ++ ) {
@@ -533,12 +503,12 @@
533
503
 
534
504
  return postProcess( buffer );
535
505
 
536
- } //
506
+ }
537
507
 
508
+ //
538
509
 
539
510
  let geometry;
540
511
  const scope = this;
541
-
542
512
  if ( data instanceof ArrayBuffer ) {
543
513
 
544
514
  const text = THREE.LoaderUtils.decodeText( new Uint8Array( data ) );
@@ -5,11 +5,11 @@
5
5
  */
6
6
 
7
7
  let bigEndianPlatform = null;
8
+
8
9
  /**
9
10
  * Check if the endianness of the platform is big-endian (most significant bit first)
10
11
  * @returns {boolean} True if big-endian, false if little-endian
11
12
  */
12
-
13
13
  function isBigEndianPlatform() {
14
14
 
15
15
  if ( bigEndianPlatform === null ) {
@@ -18,20 +18,19 @@
18
18
  uint8Array = new Uint8Array( buffer ),
19
19
  uint16Array = new Uint16Array( buffer );
20
20
  uint8Array[ 0 ] = 0xAA; // set first byte
21
-
22
21
  uint8Array[ 1 ] = 0xBB; // set second byte
23
-
24
22
  bigEndianPlatform = uint16Array[ 0 ] === 0xAABB;
25
23
 
26
24
  }
27
25
 
28
26
  return bigEndianPlatform;
29
27
 
30
- } // match the values defined in the spec to the TypedArray types
31
-
28
+ }
32
29
 
33
- const InvertedEncodingTypes = [ null, Float32Array, null, Int8Array, Int16Array, null, Int32Array, Uint8Array, Uint16Array, null, Uint32Array ]; // define the method to use on a DataView, corresponding the TypedArray type
30
+ // match the values defined in the spec to the TypedArray types
31
+ const InvertedEncodingTypes = [ null, Float32Array, null, Int8Array, Int16Array, null, Int32Array, Uint8Array, Uint16Array, null, Uint32Array ];
34
32
 
33
+ // define the method to use on a DataView, corresponding the TypedArray type
35
34
  const getMethods = {
36
35
  Uint16Array: 'getUint16',
37
36
  Uint32Array: 'getUint32',
@@ -40,12 +39,10 @@
40
39
  Float32Array: 'getFloat32',
41
40
  Float64Array: 'getFloat64'
42
41
  };
43
-
44
42
  function copyFromBuffer( sourceArrayBuffer, viewType, position, length, fromBigEndian ) {
45
43
 
46
44
  const bytesPerElement = viewType.BYTES_PER_ELEMENT;
47
45
  let result;
48
-
49
46
  if ( fromBigEndian === isBigEndianPlatform() || bytesPerElement === 1 ) {
50
47
 
51
48
  result = new viewType( sourceArrayBuffer, position, length );
@@ -56,7 +53,6 @@
56
53
  getMethod = getMethods[ viewType.name ],
57
54
  littleEndian = ! fromBigEndian;
58
55
  result = new viewType( length );
59
-
60
56
  for ( let i = 0; i < length; i ++ ) {
61
57
 
62
58
  result[ i ] = readView[ getMethod ]( i * bytesPerElement, littleEndian );
@@ -80,7 +76,6 @@
80
76
  attributesNumber = flags & 0x1F;
81
77
  let valuesNumber = 0,
82
78
  indicesNumber = 0;
83
-
84
79
  if ( bigEndian ) {
85
80
 
86
81
  valuesNumber = ( array[ 2 ] << 16 ) + ( array[ 3 ] << 8 ) + array[ 4 ];
@@ -92,8 +87,8 @@
92
87
  indicesNumber = array[ 5 ] + ( array[ 6 ] << 8 ) + ( array[ 7 ] << 16 );
93
88
 
94
89
  }
95
- /** PRELIMINARY CHECKS **/
96
90
 
91
+ /** PRELIMINARY CHECKS **/
97
92
 
98
93
  if ( version === 0 ) {
99
94
 
@@ -118,21 +113,18 @@
118
113
  }
119
114
 
120
115
  }
121
- /** PARSING **/
122
116
 
117
+ /** PARSING **/
123
118
 
124
119
  let pos = 8;
125
120
  const attributes = {};
126
-
127
121
  for ( let i = 0; i < attributesNumber; i ++ ) {
128
122
 
129
123
  let attributeName = '';
130
-
131
124
  while ( pos < array.length ) {
132
125
 
133
126
  const char = array[ pos ];
134
127
  pos ++;
135
-
136
128
  if ( char === 0 ) {
137
129
 
138
130
  break;
@@ -150,8 +142,9 @@
150
142
  const cardinality = ( flags >> 4 & 0x03 ) + 1;
151
143
  const encodingType = flags & 0x0F;
152
144
  const arrayType = InvertedEncodingTypes[ encodingType ];
153
- pos ++; // padding to next multiple of 4
145
+ pos ++;
154
146
 
147
+ // padding to next multiple of 4
155
148
  pos = Math.ceil( pos / 4 ) * 4;
156
149
  const values = copyFromBuffer( buffer, arrayType, pos, cardinality * valuesNumber, bigEndian );
157
150
  pos += arrayType.BYTES_PER_ELEMENT * cardinality * valuesNumber;
@@ -165,7 +158,6 @@
165
158
 
166
159
  pos = Math.ceil( pos / 4 ) * 4;
167
160
  let indices = null;
168
-
169
161
  if ( indexedGeometry ) {
170
162
 
171
163
  indices = copyFromBuffer( buffer, indicesType === 1 ? Uint32Array : Uint16Array, pos, indicesNumber, bigEndian );
@@ -178,8 +170,9 @@
178
170
  indices: indices
179
171
  };
180
172
 
181
- } // Define the public interface
173
+ }
182
174
 
175
+ // Define the public interface
183
176
 
184
177
  class PRWMLoader extends THREE.Loader {
185
178
 
@@ -188,7 +181,6 @@
188
181
  super( manager );
189
182
 
190
183
  }
191
-
192
184
  load( url, onLoad, onProgress, onError ) {
193
185
 
194
186
  const scope = this;
@@ -223,13 +215,11 @@
223
215
  }, onProgress, onError );
224
216
 
225
217
  }
226
-
227
218
  parse( arrayBuffer ) {
228
219
 
229
220
  const data = decodePrwm( arrayBuffer ),
230
221
  attributesKey = Object.keys( data.attributes ),
231
222
  bufferGeometry = new THREE.BufferGeometry();
232
-
233
223
  for ( let i = 0; i < attributesKey.length; i ++ ) {
234
224
 
235
225
  const attribute = data.attributes[ attributesKey[ i ] ];
@@ -246,7 +236,6 @@
246
236
  return bufferGeometry;
247
237
 
248
238
  }
249
-
250
239
  static isBigEndianPlatform() {
251
240
 
252
241
  return isBigEndianPlatform();
@@ -13,7 +13,6 @@
13
13
  super( manager );
14
14
 
15
15
  }
16
-
17
16
  parse( buffer, loadMipmaps ) {
18
17
 
19
18
  const headerLengthInt = 13;
@@ -23,15 +22,16 @@
23
22
  header: header,
24
23
  loadMipmaps: loadMipmaps
25
24
  };
26
-
27
25
  if ( header[ 0 ] === 0x03525650 ) {
28
26
 
29
27
  // PVR v3
28
+
30
29
  return _parseV3( pvrDatas );
31
30
 
32
31
  } else if ( header[ 11 ] === 0x21525650 ) {
33
32
 
34
33
  // PVR v2
34
+
35
35
  return _parseV2( pvrDatas );
36
36
 
37
37
  } else {
@@ -43,7 +43,6 @@
43
43
  }
44
44
 
45
45
  }
46
-
47
46
  function _parseV3( pvrDatas ) {
48
47
 
49
48
  const header = pvrDatas.header;
@@ -55,7 +54,6 @@
55
54
  // numSurfs = header[ 9 ],
56
55
  numFaces = header[ 10 ],
57
56
  numMipmaps = header[ 11 ];
58
-
59
57
  switch ( pixelFormat ) {
60
58
 
61
59
  case 0:
@@ -63,25 +61,21 @@
63
61
  bpp = 2;
64
62
  format = THREE.RGB_PVRTC_2BPPV1_Format;
65
63
  break;
66
-
67
64
  case 1:
68
65
  // PVRTC 2bpp RGBA
69
66
  bpp = 2;
70
67
  format = THREE.RGBA_PVRTC_2BPPV1_Format;
71
68
  break;
72
-
73
69
  case 2:
74
70
  // PVRTC 4bpp RGB
75
71
  bpp = 4;
76
72
  format = THREE.RGB_PVRTC_4BPPV1_Format;
77
73
  break;
78
-
79
74
  case 3:
80
75
  // PVRTC 4bpp RGBA
81
76
  bpp = 4;
82
77
  format = THREE.RGBA_PVRTC_4BPPV1_Format;
83
78
  break;
84
-
85
79
  default:
86
80
  console.error( 'THREE.PVRLoader: Unsupported PVR format:', pixelFormat );
87
81
 
@@ -120,9 +114,7 @@
120
114
  PVRTC_4 = 25;
121
115
  const formatFlags = flags & TYPE_MASK;
122
116
  let bpp, format;
123
-
124
117
  const _hasAlpha = bitmaskAlpha > 0;
125
-
126
118
  if ( formatFlags === PVRTC_4 ) {
127
119
 
128
120
  format = _hasAlpha ? THREE.RGBA_PVRTC_4BPPV1_Format : THREE.RGB_PVRTC_4BPPV1_Format;
@@ -145,9 +137,10 @@
145
137
  pvrDatas.width = width;
146
138
  pvrDatas.height = height;
147
139
  pvrDatas.numSurfaces = numSurfs;
148
- pvrDatas.numMipmaps = numMipmaps + 1; // guess cubemap type seems tricky in v2
149
- // it juste a pvr containing 6 surface (no explicit cubemap type)
140
+ pvrDatas.numMipmaps = numMipmaps + 1;
150
141
 
142
+ // guess cubemap type seems tricky in v2
143
+ // it juste a pvr containing 6 surface (no explicit cubemap type)
151
144
  pvrDatas.isCubemap = numSurfs === 6;
152
145
  return _extract( pvrDatas );
153
146
 
@@ -173,7 +166,6 @@
173
166
  heightBlocks = 0;
174
167
  const bpp = pvrDatas.bpp,
175
168
  numSurfs = pvrDatas.numSurfaces;
176
-
177
169
  if ( bpp === 2 ) {
178
170
 
179
171
  blockWidth = 8;
@@ -189,18 +181,17 @@
189
181
  blockSize = blockWidth * blockHeight * bpp / 8;
190
182
  pvr.mipmaps.length = pvrDatas.numMipmaps * numSurfs;
191
183
  let mipLevel = 0;
192
-
193
184
  while ( mipLevel < pvrDatas.numMipmaps ) {
194
185
 
195
186
  const sWidth = pvrDatas.width >> mipLevel,
196
187
  sHeight = pvrDatas.height >> mipLevel;
197
188
  widthBlocks = sWidth / blockWidth;
198
- heightBlocks = sHeight / blockHeight; // Clamp to minimum number of blocks
189
+ heightBlocks = sHeight / blockHeight;
199
190
 
191
+ // Clamp to minimum number of blocks
200
192
  if ( widthBlocks < 2 ) widthBlocks = 2;
201
193
  if ( heightBlocks < 2 ) heightBlocks = 2;
202
194
  dataSize = widthBlocks * heightBlocks * blockSize;
203
-
204
195
  for ( let surfIndex = 0; surfIndex < numSurfs; surfIndex ++ ) {
205
196
 
206
197
  const byteArray = new Uint8Array( buffer, dataOffset, dataSize );