@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
@@ -1,11 +1,8 @@
1
1
  ( function () {
2
2
 
3
3
  const _A = new THREE.Vector3();
4
-
5
4
  const _B = new THREE.Vector3();
6
-
7
5
  const _C = new THREE.Vector3();
8
-
9
6
  class EdgeSplitModifier {
10
7
 
11
8
  modify( geometry, cutOffAngle, tryKeepNormals = true ) {
@@ -13,27 +10,17 @@
13
10
  function computeNormals() {
14
11
 
15
12
  normals = new Float32Array( indexes.length * 3 );
16
-
17
13
  for ( let i = 0; i < indexes.length; i += 3 ) {
18
14
 
19
15
  let index = indexes[ i ];
20
-
21
16
  _A.set( positions[ 3 * index ], positions[ 3 * index + 1 ], positions[ 3 * index + 2 ] );
22
-
23
17
  index = indexes[ i + 1 ];
24
-
25
18
  _B.set( positions[ 3 * index ], positions[ 3 * index + 1 ], positions[ 3 * index + 2 ] );
26
-
27
19
  index = indexes[ i + 2 ];
28
-
29
20
  _C.set( positions[ 3 * index ], positions[ 3 * index + 1 ], positions[ 3 * index + 2 ] );
30
-
31
21
  _C.sub( _B );
32
-
33
22
  _A.sub( _B );
34
-
35
23
  const normal = _C.cross( _A ).normalize();
36
-
37
24
  for ( let j = 0; j < 3; j ++ ) {
38
25
 
39
26
  normals[ 3 * ( i + j ) ] = normal.x;
@@ -49,11 +36,9 @@
49
36
  function mapPositionsToIndexes() {
50
37
 
51
38
  pointToIndexMap = Array( positions.length / 3 );
52
-
53
39
  for ( let i = 0; i < indexes.length; i ++ ) {
54
40
 
55
41
  const index = indexes[ i ];
56
-
57
42
  if ( pointToIndexMap[ index ] == null ) {
58
43
 
59
44
  pointToIndexMap[ index ] = [];
@@ -69,18 +54,15 @@
69
54
  function edgeSplitToGroups( indexes, cutOff, firstIndex ) {
70
55
 
71
56
  _A.set( normals[ 3 * firstIndex ], normals[ 3 * firstIndex + 1 ], normals[ 3 * firstIndex + 2 ] ).normalize();
72
-
73
57
  const result = {
74
58
  splitGroup: [],
75
59
  currentGroup: [ firstIndex ]
76
60
  };
77
-
78
61
  for ( const j of indexes ) {
79
62
 
80
63
  if ( j !== firstIndex ) {
81
64
 
82
65
  _B.set( normals[ 3 * j ], normals[ 3 * j + 1 ], normals[ 3 * j + 2 ] ).normalize();
83
-
84
66
  if ( _B.dot( _A ) < cutOff ) {
85
67
 
86
68
  result.splitGroup.push( j );
@@ -103,7 +85,6 @@
103
85
 
104
86
  if ( indexes.length === 0 ) return;
105
87
  const groupResults = [];
106
-
107
88
  for ( const index of indexes ) {
108
89
 
109
90
  groupResults.push( edgeSplitToGroups( indexes, cutOff, index ) );
@@ -111,7 +92,6 @@
111
92
  }
112
93
 
113
94
  let result = groupResults[ 0 ];
114
-
115
95
  for ( const groupResult of groupResults ) {
116
96
 
117
97
  if ( groupResult.currentGroup.length > result.currentGroup.length ) {
@@ -141,12 +121,10 @@
141
121
 
142
122
  let hadNormals = false;
143
123
  let oldNormals = null;
144
-
145
124
  if ( geometry.attributes.normal ) {
146
125
 
147
126
  hadNormals = true;
148
127
  geometry = geometry.clone();
149
-
150
128
  if ( tryKeepNormals === true && geometry.index !== null ) {
151
129
 
152
130
  oldNormals = geometry.attributes.normal.array;
@@ -170,7 +148,6 @@
170
148
  computeNormals();
171
149
  mapPositionsToIndexes();
172
150
  const splitIndexes = [];
173
-
174
151
  for ( const vertexIndexes of pointToIndexMap ) {
175
152
 
176
153
  edgeSplit( vertexIndexes, Math.cos( cutOffAngle ) - 0.001 );
@@ -178,7 +155,6 @@
178
155
  }
179
156
 
180
157
  const newAttributes = {};
181
-
182
158
  for ( const name of Object.keys( geometry.attributes ) ) {
183
159
 
184
160
  const oldAttribute = geometry.attributes[ name ];
@@ -190,12 +166,10 @@
190
166
 
191
167
  const newIndexes = new Uint32Array( indexes.length );
192
168
  newIndexes.set( indexes );
193
-
194
169
  for ( let i = 0; i < splitIndexes.length; i ++ ) {
195
170
 
196
171
  const split = splitIndexes[ i ];
197
172
  const index = indexes[ split.original ];
198
-
199
173
  for ( const attribute of Object.values( newAttributes ) ) {
200
174
 
201
175
  for ( let j = 0; j < attribute.itemSize; j ++ ) {
@@ -216,7 +190,6 @@
216
190
 
217
191
  geometry = new THREE.BufferGeometry();
218
192
  geometry.setIndex( new THREE.BufferAttribute( newIndexes, 1 ) );
219
-
220
193
  for ( const name of Object.keys( newAttributes ) ) {
221
194
 
222
195
  geometry.setAttribute( name, newAttributes[ name ] );
@@ -226,13 +199,10 @@
226
199
  if ( hadNormals ) {
227
200
 
228
201
  geometry.computeVertexNormals();
229
-
230
202
  if ( oldNormals !== null ) {
231
203
 
232
204
  const changedNormals = new Array( oldNormals.length / 3 ).fill( false );
233
-
234
205
  for ( const splitData of splitIndexes ) changedNormals[ splitData.original ] = true;
235
-
236
206
  for ( let i = 0; i < changedNormals.length; i ++ ) {
237
207
 
238
208
  if ( changedNormals[ i ] === false ) {
@@ -10,13 +10,14 @@
10
10
 
11
11
  const _cb = new THREE.Vector3(),
12
12
  _ab = new THREE.Vector3();
13
-
14
13
  class SimplifyModifier {
15
14
 
16
15
  modify( geometry, count ) {
17
16
 
18
17
  geometry = geometry.clone();
19
- const attributes = geometry.attributes; // this modifier can only process indexed and non-indexed geomtries with a position attribute
18
+ const attributes = geometry.attributes;
19
+
20
+ // this modifier can only process indexed and non-indexed geomtries with a position attribute
20
21
 
21
22
  for ( const name in attributes ) {
22
23
 
@@ -24,26 +25,29 @@
24
25
 
25
26
  }
26
27
 
27
- geometry = THREE.BufferGeometryUtils.mergeVertices( geometry ); //
28
+ geometry = THREE.BufferGeometryUtils.mergeVertices( geometry );
29
+
30
+ //
28
31
  // put data of original geometry in different data structures
29
32
  //
30
33
 
31
34
  const vertices = [];
32
- const faces = []; // add vertices
35
+ const faces = [];
33
36
 
34
- const positionAttribute = geometry.getAttribute( 'position' );
37
+ // add vertices
35
38
 
39
+ const positionAttribute = geometry.getAttribute( 'position' );
36
40
  for ( let i = 0; i < positionAttribute.count; i ++ ) {
37
41
 
38
42
  const v = new THREE.Vector3().fromBufferAttribute( positionAttribute, i );
39
43
  const vertex = new Vertex( v );
40
44
  vertices.push( vertex );
41
45
 
42
- } // add faces
46
+ }
43
47
 
48
+ // add faces
44
49
 
45
50
  let index = geometry.getIndex();
46
-
47
51
  if ( index !== null ) {
48
52
 
49
53
  for ( let i = 0; i < index.count; i += 3 ) {
@@ -68,8 +72,9 @@
68
72
 
69
73
  }
70
74
 
71
- } // compute all edge collapse costs
75
+ }
72
76
 
77
+ // compute all edge collapse costs
73
78
 
74
79
  for ( let i = 0, il = vertices.length; i < il; i ++ ) {
75
80
 
@@ -79,11 +84,9 @@
79
84
 
80
85
  let nextVertex;
81
86
  let z = count;
82
-
83
87
  while ( z -- ) {
84
88
 
85
89
  nextVertex = minimumCostEdge( vertices );
86
-
87
90
  if ( ! nextVertex ) {
88
91
 
89
92
  console.log( 'THREE.SimplifyModifier: No next vertex' );
@@ -93,30 +96,35 @@
93
96
 
94
97
  collapse( vertices, faces, nextVertex, nextVertex.collapseNeighbor );
95
98
 
96
- } //
99
+ }
97
100
 
101
+ //
98
102
 
99
103
  const simplifiedGeometry = new THREE.BufferGeometry();
100
104
  const position = [];
101
- index = []; //
105
+ index = [];
106
+
107
+ //
102
108
 
103
109
  for ( let i = 0; i < vertices.length; i ++ ) {
104
110
 
105
111
  const vertex = vertices[ i ].position;
106
- position.push( vertex.x, vertex.y, vertex.z ); // cache final index to GREATLY speed up faces reconstruction
107
-
112
+ position.push( vertex.x, vertex.y, vertex.z );
113
+ // cache final index to GREATLY speed up faces reconstruction
108
114
  vertices[ i ].id = i;
109
115
 
110
- } //
116
+ }
111
117
 
118
+ //
112
119
 
113
120
  for ( let i = 0; i < faces.length; i ++ ) {
114
121
 
115
122
  const face = faces[ i ];
116
123
  index.push( face.v1.id, face.v2.id, face.v3.id );
117
124
 
118
- } //
125
+ }
119
126
 
127
+ //
120
128
 
121
129
  simplifiedGeometry.setAttribute( 'position', new THREE.Float32BufferAttribute( position, 3 ) );
122
130
  simplifiedGeometry.setIndex( index );
@@ -125,7 +133,6 @@
125
133
  }
126
134
 
127
135
  }
128
-
129
136
  function pushIfUnique( array, object ) {
130
137
 
131
138
  if ( array.indexOf( object ) === - 1 ) array.push( object );
@@ -143,33 +150,33 @@
143
150
 
144
151
  // if we collapse edge uv by moving u to v then how
145
152
  // much different will the model change, i.e. the "error".
153
+
146
154
  const edgelength = v.position.distanceTo( u.position );
147
155
  let curvature = 0;
148
- const sideFaces = []; // find the "sides" triangles that are on the edge uv
156
+ const sideFaces = [];
149
157
 
158
+ // find the "sides" triangles that are on the edge uv
150
159
  for ( let i = 0, il = u.faces.length; i < il; i ++ ) {
151
160
 
152
161
  const face = u.faces[ i ];
153
-
154
162
  if ( face.hasVertex( v ) ) {
155
163
 
156
164
  sideFaces.push( face );
157
165
 
158
166
  }
159
167
 
160
- } // use the triangle facing most away from the sides
161
- // to determine our curvature term
162
-
168
+ }
163
169
 
170
+ // use the triangle facing most away from the sides
171
+ // to determine our curvature term
164
172
  for ( let i = 0, il = u.faces.length; i < il; i ++ ) {
165
173
 
166
174
  let minCurvature = 1;
167
175
  const face = u.faces[ i ];
168
-
169
176
  for ( let j = 0; j < sideFaces.length; j ++ ) {
170
177
 
171
- const sideFace = sideFaces[ j ]; // use dot product of face normals.
172
-
178
+ const sideFace = sideFaces[ j ];
179
+ // use dot product of face normals.
173
180
  const dotProd = face.normal.dot( sideFace.normal );
174
181
  minCurvature = Math.min( minCurvature, ( 1.001 - dotProd ) / 2 );
175
182
 
@@ -177,12 +184,11 @@
177
184
 
178
185
  curvature = Math.max( curvature, minCurvature );
179
186
 
180
- } // crude approach in attempt to preserve borders
181
- // though it seems not to be totally correct
182
-
187
+ }
183
188
 
189
+ // crude approach in attempt to preserve borders
190
+ // though it seems not to be totally correct
184
191
  const borders = 0;
185
-
186
192
  if ( sideFaces.length < 2 ) {
187
193
 
188
194
  // we add some arbitrary cost for borders,
@@ -204,6 +210,7 @@
204
210
  // only cache the cost of the least cost edge at this vertex
205
211
  // (in member variable collapse) as well as the value of the
206
212
  // cost (in member variable collapseCost).
213
+
207
214
  if ( v.neighbors.length === 0 ) {
208
215
 
209
216
  // collapse if no neighbors.
@@ -214,12 +221,12 @@
214
221
  }
215
222
 
216
223
  v.collapseCost = 100000;
217
- v.collapseNeighbor = null; // search all neighboring edges for "least cost" edge
224
+ v.collapseNeighbor = null;
218
225
 
226
+ // search all neighboring edges for "least cost" edge
219
227
  for ( let i = 0; i < v.neighbors.length; i ++ ) {
220
228
 
221
229
  const collapseCost = computeEdgeCollapseCost( v, v.neighbors[ i ] );
222
-
223
230
  if ( ! v.collapseNeighbor ) {
224
231
 
225
232
  v.collapseNeighbor = v.neighbors[ i ];
@@ -232,7 +239,6 @@
232
239
 
233
240
  v.costCount ++;
234
241
  v.totalCost += collapseCost;
235
-
236
242
  if ( collapseCost < v.minCost ) {
237
243
 
238
244
  v.collapseNeighbor = v.neighbors[ i ];
@@ -240,17 +246,17 @@
240
246
 
241
247
  }
242
248
 
243
- } // we average the cost of collapsing at this vertex
244
-
249
+ }
245
250
 
246
- v.collapseCost = v.totalCost / v.costCount; // v.collapseCost = v.minCost;
251
+ // we average the cost of collapsing at this vertex
252
+ v.collapseCost = v.totalCost / v.costCount;
253
+ // v.collapseCost = v.minCost;
247
254
 
248
255
  }
249
256
 
250
257
  function removeVertex( v, vertices ) {
251
258
 
252
259
  console.assert( v.faces.length === 0 );
253
-
254
260
  while ( v.neighbors.length ) {
255
261
 
256
262
  const n = v.neighbors.pop();
@@ -267,10 +273,10 @@
267
273
  removeFromArray( faces, f );
268
274
  if ( f.v1 ) removeFromArray( f.v1.faces, f );
269
275
  if ( f.v2 ) removeFromArray( f.v2.faces, f );
270
- if ( f.v3 ) removeFromArray( f.v3.faces, f ); // TODO optimize this!
276
+ if ( f.v3 ) removeFromArray( f.v3.faces, f );
271
277
 
278
+ // TODO optimize this!
272
279
  const vs = [ f.v1, f.v2, f.v3 ];
273
-
274
280
  for ( let i = 0; i < 3; i ++ ) {
275
281
 
276
282
  const v1 = vs[ i ];
@@ -286,7 +292,9 @@
286
292
  function collapse( vertices, faces, u, v ) {
287
293
 
288
294
  // u and v are pointers to vertices of an edge
295
+
289
296
  // Collapse the edge uv by moving vertex u onto v
297
+
290
298
  if ( ! v ) {
291
299
 
292
300
  // u is a vertex all by itself so just delete it..
@@ -296,14 +304,13 @@
296
304
  }
297
305
 
298
306
  const tmpVertices = [];
299
-
300
307
  for ( let i = 0; i < u.neighbors.length; i ++ ) {
301
308
 
302
309
  tmpVertices.push( u.neighbors[ i ] );
303
310
 
304
- } // delete triangles on edge uv:
305
-
311
+ }
306
312
 
313
+ // delete triangles on edge uv:
307
314
  for ( let i = u.faces.length - 1; i >= 0; i -- ) {
308
315
 
309
316
  if ( u.faces[ i ] && u.faces[ i ].hasVertex( v ) ) {
@@ -312,17 +319,18 @@
312
319
 
313
320
  }
314
321
 
315
- } // update remaining triangles to have v instead of u
316
-
322
+ }
317
323
 
324
+ // update remaining triangles to have v instead of u
318
325
  for ( let i = u.faces.length - 1; i >= 0; i -- ) {
319
326
 
320
327
  u.faces[ i ].replaceVertex( u, v );
321
328
 
322
329
  }
323
330
 
324
- removeVertex( u, vertices ); // recompute the edge collapse costs in neighborhood
331
+ removeVertex( u, vertices );
325
332
 
333
+ // recompute the edge collapse costs in neighborhood
326
334
  for ( let i = 0; i < tmpVertices.length; i ++ ) {
327
335
 
328
336
  computeEdgeCostAtVertex( tmpVertices[ i ] );
@@ -334,8 +342,8 @@
334
342
  function minimumCostEdge( vertices ) {
335
343
 
336
344
  // O(n * n) approach. TODO optimize this
337
- let least = vertices[ 0 ];
338
345
 
346
+ let least = vertices[ 0 ];
339
347
  for ( let i = 0; i < vertices.length; i ++ ) {
340
348
 
341
349
  if ( vertices[ i ].collapseCost < least.collapseCost ) {
@@ -348,8 +356,9 @@
348
356
 
349
357
  return least;
350
358
 
351
- } // we use a triangle class to represent structure of face slightly differently
359
+ }
352
360
 
361
+ // we use a triangle class to represent structure of face slightly differently
353
362
 
354
363
  class Triangle {
355
364
 
@@ -374,29 +383,22 @@
374
383
  v3.addUniqueNeighbor( v2 );
375
384
 
376
385
  }
377
-
378
386
  computeNormal() {
379
387
 
380
388
  const vA = this.v1.position;
381
389
  const vB = this.v2.position;
382
390
  const vC = this.v3.position;
383
-
384
391
  _cb.subVectors( vC, vB );
385
-
386
392
  _ab.subVectors( vA, vB );
387
-
388
393
  _cb.cross( _ab ).normalize();
389
-
390
394
  this.normal.copy( _cb );
391
395
 
392
396
  }
393
-
394
397
  hasVertex( v ) {
395
398
 
396
399
  return v === this.v1 || v === this.v2 || v === this.v3;
397
400
 
398
401
  }
399
-
400
402
  replaceVertex( oldv, newv ) {
401
403
 
402
404
  if ( oldv === this.v1 ) this.v1 = newv; else if ( oldv === this.v2 ) this.v2 = newv; else if ( oldv === this.v3 ) this.v3 = newv;
@@ -419,7 +421,6 @@
419
421
  }
420
422
 
421
423
  }
422
-
423
424
  class Vertex {
424
425
 
425
426
  constructor( v ) {
@@ -428,12 +429,10 @@
428
429
  this.id = - 1; // external use position in vertices list (for e.g. face generation)
429
430
 
430
431
  this.faces = []; // faces vertex is connected
431
-
432
432
  this.neighbors = []; // neighbouring vertices aka "adjacentVertices"
433
- // these will be computed in computeEdgeCostAtVertex()
434
433
 
434
+ // these will be computed in computeEdgeCostAtVertex()
435
435
  this.collapseCost = 0; // cost of collapsing this vertex, the less the better. aka objdist
436
-
437
436
  this.collapseNeighbor = null; // best candinate for collapsing
438
437
 
439
438
  }
@@ -443,14 +442,12 @@
443
442
  pushIfUnique( this.neighbors, vertex );
444
443
 
445
444
  }
446
-
447
445
  removeIfNonNeighbor( n ) {
448
446
 
449
447
  const neighbors = this.neighbors;
450
448
  const faces = this.faces;
451
449
  const offset = neighbors.indexOf( n );
452
450
  if ( offset === - 1 ) return;
453
-
454
451
  for ( let i = 0; i < faces.length; i ++ ) {
455
452
 
456
453
  if ( faces[ i ].hasVertex( n ) ) return;
@@ -12,15 +12,15 @@
12
12
  this.maxIterations = maxIterations;
13
13
 
14
14
  }
15
-
16
15
  modify( geometry ) {
17
16
 
18
17
  if ( geometry.index !== null ) {
19
18
 
20
19
  geometry = geometry.toNonIndexed();
21
20
 
22
- } //
21
+ }
23
22
 
23
+ //
24
24
 
25
25
  const maxIterations = this.maxIterations;
26
26
  const maxEdgeLengthSquared = this.maxEdgeLength * this.maxEdgeLength;
@@ -66,7 +66,6 @@
66
66
  let uv2s2 = uv2s;
67
67
  let iteration = 0;
68
68
  let tessellating = true;
69
-
70
69
  function addTriangle( a, b, c ) {
71
70
 
72
71
  const v1 = vs[ a ];
@@ -75,7 +74,6 @@
75
74
  positions2.push( v1.x, v1.y, v1.z );
76
75
  positions2.push( v2.x, v2.y, v2.z );
77
76
  positions2.push( v3.x, v3.y, v3.z );
78
-
79
77
  if ( hasNormals ) {
80
78
 
81
79
  const n1 = ns[ a ];
@@ -128,7 +126,6 @@
128
126
  tessellating = false;
129
127
  positions = positions2;
130
128
  positions2 = [];
131
-
132
129
  if ( hasNormals ) {
133
130
 
134
131
  normals = normals2;
@@ -162,7 +159,6 @@
162
159
  va.fromArray( positions, i + 0 );
163
160
  vb.fromArray( positions, i + 3 );
164
161
  vc.fromArray( positions, i + 6 );
165
-
166
162
  if ( hasNormals ) {
167
163
 
168
164
  na.fromArray( normals, i + 0 );
@@ -198,11 +194,9 @@
198
194
  const dab = va.distanceToSquared( vb );
199
195
  const dbc = vb.distanceToSquared( vc );
200
196
  const dac = va.distanceToSquared( vc );
201
-
202
197
  if ( dab > maxEdgeLengthSquared || dbc > maxEdgeLengthSquared || dac > maxEdgeLengthSquared ) {
203
198
 
204
199
  tessellating = true;
205
-
206
200
  if ( dab >= dbc && dab >= dac ) {
207
201
 
208
202
  vm.lerpVectors( va, vb, 0.5 );
@@ -247,7 +241,6 @@
247
241
 
248
242
  const geometry2 = new THREE.BufferGeometry();
249
243
  geometry2.setAttribute( 'position', new THREE.Float32BufferAttribute( positions2, 3 ) );
250
-
251
244
  if ( hasNormals ) {
252
245
 
253
246
  geometry2.setAttribute( 'normal', new THREE.Float32BufferAttribute( normals2, 3 ) );
@@ -4,7 +4,6 @@
4
4
  * Ground projected env map adapted from @react-three/drei.
5
5
  * https://github.com/pmndrs/drei/blob/master/src/core/Environment.tsx
6
6
  */
7
-
8
7
  class GroundProjectedEnv extends THREE.Mesh {
9
8
 
10
9
  constructor( texture, options ) {
@@ -12,17 +11,12 @@
12
11
  const isCubeMap = texture.isCubeTexture;
13
12
  const w = ( isCubeMap ? texture.image[ 0 ]?.width : texture.image.width ) ?? 1024;
14
13
  const cubeSize = w / 4;
15
-
16
14
  const _lodMax = Math.floor( Math.log2( cubeSize ) );
17
-
18
15
  const _cubeSize = Math.pow( 2, _lodMax );
19
-
20
16
  const width = 3 * Math.max( _cubeSize, 16 * 7 );
21
17
  const height = 4 * _cubeSize;
22
18
  const defines = [ isCubeMap ? '#define ENVMAP_TYPE_CUBE' : '', `#define CUBEUV_TEXEL_WIDTH ${1.0 / width}`, `#define CUBEUV_TEXEL_HEIGHT ${1.0 / height}`, `#define CUBEUV_MAX_MIP ${_lodMax}.0` ];
23
- const vertexShader =
24
- /* glsl */
25
- `
19
+ const vertexShader = /* glsl */`
26
20
  varying vec3 vWorldPosition;
27
21
 
28
22
  void main()
@@ -35,9 +29,7 @@
35
29
 
36
30
  }
37
31
  `;
38
- const fragmentShader = defines.join( '\n' ) +
39
- /* glsl */
40
- `
32
+ const fragmentShader = defines.join( '\n' ) + /* glsl */`
41
33
  #define ENVMAP_TYPE_CUBE_UV
42
34
 
43
35
  varying vec3 vWorldPosition;
@@ -161,25 +153,21 @@
161
153
  super( geometry, material );
162
154
 
163
155
  }
164
-
165
156
  set radius( radius ) {
166
157
 
167
158
  this.material.uniforms.radius.value = radius;
168
159
 
169
160
  }
170
-
171
161
  get radius() {
172
162
 
173
163
  return this.material.uniforms.radius.value;
174
164
 
175
165
  }
176
-
177
166
  set height( height ) {
178
167
 
179
168
  this.material.uniforms.height.value = height;
180
169
 
181
170
  }
182
-
183
171
  get height() {
184
172
 
185
173
  return this.material.uniforms.height.value;