three-stdlib 2.35.4 → 2.35.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (514) hide show
  1. package/_polyfill/CapsuleGeometry.cjs +17 -20
  2. package/_polyfill/CapsuleGeometry.cjs.map +1 -1
  3. package/_polyfill/CapsuleGeometry.js +17 -20
  4. package/_polyfill/CapsuleGeometry.js.map +1 -1
  5. package/_polyfill/constants.cjs +1 -1
  6. package/_polyfill/constants.cjs.map +1 -1
  7. package/_polyfill/constants.js +1 -1
  8. package/_polyfill/constants.js.map +1 -1
  9. package/animation/AnimationClipCreator.cjs +13 -13
  10. package/animation/AnimationClipCreator.cjs.map +1 -1
  11. package/animation/AnimationClipCreator.js +13 -13
  12. package/animation/AnimationClipCreator.js.map +1 -1
  13. package/animation/CCDIKSolver.cjs +11 -11
  14. package/animation/CCDIKSolver.cjs.map +1 -1
  15. package/animation/CCDIKSolver.js +12 -12
  16. package/animation/CCDIKSolver.js.map +1 -1
  17. package/animation/MMDAnimationHelper.cjs +1 -1
  18. package/animation/MMDAnimationHelper.cjs.map +1 -1
  19. package/animation/MMDAnimationHelper.js +1 -1
  20. package/animation/MMDAnimationHelper.js.map +1 -1
  21. package/animation/MMDPhysics.cjs +4 -4
  22. package/animation/MMDPhysics.cjs.map +1 -1
  23. package/animation/MMDPhysics.js +4 -4
  24. package/animation/MMDPhysics.js.map +1 -1
  25. package/controls/ArcballControls.cjs +2 -2
  26. package/controls/ArcballControls.cjs.map +1 -1
  27. package/controls/ArcballControls.js +3 -3
  28. package/controls/ArcballControls.js.map +1 -1
  29. package/controls/FirstPersonControls.cjs +1 -1
  30. package/controls/FirstPersonControls.cjs.map +1 -1
  31. package/controls/FirstPersonControls.js +1 -1
  32. package/controls/FirstPersonControls.js.map +1 -1
  33. package/controls/OrbitControls.cjs +2 -2
  34. package/controls/OrbitControls.cjs.map +1 -1
  35. package/controls/OrbitControls.js +3 -3
  36. package/controls/OrbitControls.js.map +1 -1
  37. package/controls/PointerLockControls.cjs +2 -2
  38. package/controls/PointerLockControls.cjs.map +1 -1
  39. package/controls/PointerLockControls.js +3 -3
  40. package/controls/PointerLockControls.js.map +1 -1
  41. package/csm/CSM.cjs +4 -4
  42. package/csm/CSM.cjs.map +1 -1
  43. package/csm/CSM.js +5 -5
  44. package/csm/CSM.js.map +1 -1
  45. package/csm/CSMFrustum.cjs +1 -1
  46. package/csm/CSMFrustum.cjs.map +1 -1
  47. package/csm/CSMFrustum.js +2 -2
  48. package/csm/CSMFrustum.js.map +1 -1
  49. package/deprecated/Geometry.cjs +715 -722
  50. package/deprecated/Geometry.cjs.map +1 -1
  51. package/deprecated/Geometry.js +716 -723
  52. package/deprecated/Geometry.js.map +1 -1
  53. package/effects/AnaglyphEffect.cjs +1 -2
  54. package/effects/AnaglyphEffect.cjs.map +1 -1
  55. package/effects/AnaglyphEffect.js +2 -3
  56. package/effects/AnaglyphEffect.js.map +1 -1
  57. package/effects/OutlineEffect.cjs +1 -2
  58. package/effects/OutlineEffect.cjs.map +1 -1
  59. package/effects/OutlineEffect.js +2 -3
  60. package/effects/OutlineEffect.js.map +1 -1
  61. package/effects/ParallaxBarrierEffect.cjs +1 -2
  62. package/effects/ParallaxBarrierEffect.cjs.map +1 -1
  63. package/effects/ParallaxBarrierEffect.js +2 -3
  64. package/effects/ParallaxBarrierEffect.js.map +1 -1
  65. package/exporters/DRACOExporter.cjs +122 -133
  66. package/exporters/DRACOExporter.cjs.map +1 -1
  67. package/exporters/DRACOExporter.d.ts +21 -23
  68. package/exporters/DRACOExporter.js +122 -133
  69. package/exporters/DRACOExporter.js.map +1 -1
  70. package/exporters/GLTFExporter.cjs +167 -170
  71. package/exporters/GLTFExporter.cjs.map +1 -1
  72. package/exporters/GLTFExporter.js +167 -170
  73. package/exporters/GLTFExporter.js.map +1 -1
  74. package/geometries/LightningStrike.cjs +515 -524
  75. package/geometries/LightningStrike.cjs.map +1 -1
  76. package/geometries/LightningStrike.js +515 -524
  77. package/geometries/LightningStrike.js.map +1 -1
  78. package/geometries/RoundedBoxGeometry.cjs +1 -1
  79. package/geometries/RoundedBoxGeometry.cjs.map +1 -1
  80. package/geometries/RoundedBoxGeometry.js +2 -2
  81. package/geometries/RoundedBoxGeometry.js.map +1 -1
  82. package/helpers/RaycasterHelper.cjs +2 -2
  83. package/helpers/RaycasterHelper.cjs.map +1 -1
  84. package/helpers/RaycasterHelper.js +3 -3
  85. package/helpers/RaycasterHelper.js.map +1 -1
  86. package/helpers/VertexNormalsHelper.cjs +3 -3
  87. package/helpers/VertexNormalsHelper.cjs.map +1 -1
  88. package/helpers/VertexNormalsHelper.js +4 -4
  89. package/helpers/VertexNormalsHelper.js.map +1 -1
  90. package/helpers/VertexTangentsHelper.cjs +2 -2
  91. package/helpers/VertexTangentsHelper.cjs.map +1 -1
  92. package/helpers/VertexTangentsHelper.js +3 -3
  93. package/helpers/VertexTangentsHelper.js.map +1 -1
  94. package/interactive/InteractiveGroup.cjs +1 -1
  95. package/interactive/InteractiveGroup.cjs.map +1 -1
  96. package/interactive/InteractiveGroup.js +2 -2
  97. package/interactive/InteractiveGroup.js.map +1 -1
  98. package/interactive/SelectionBox.cjs +15 -15
  99. package/interactive/SelectionBox.cjs.map +1 -1
  100. package/interactive/SelectionBox.js +16 -16
  101. package/interactive/SelectionBox.js.map +1 -1
  102. package/libs/chevrotain.cjs +1 -1
  103. package/libs/chevrotain.cjs.map +1 -1
  104. package/libs/chevrotain.js +1 -1
  105. package/libs/chevrotain.js.map +1 -1
  106. package/libs/lottie.cjs +1 -1
  107. package/libs/lottie.cjs.map +1 -1
  108. package/libs/lottie.js +1 -1
  109. package/libs/lottie.js.map +1 -1
  110. package/libs/opentype.cjs +1 -1
  111. package/libs/opentype.cjs.map +1 -1
  112. package/libs/opentype.js +1 -1
  113. package/libs/opentype.js.map +1 -1
  114. package/lights/LightProbeGenerator.cjs +5 -5
  115. package/lights/LightProbeGenerator.cjs.map +1 -1
  116. package/lights/LightProbeGenerator.js +5 -5
  117. package/lights/LightProbeGenerator.js.map +1 -1
  118. package/lights/RectAreaLightUniformsLib.cjs +3 -3
  119. package/lights/RectAreaLightUniformsLib.cjs.map +1 -1
  120. package/lights/RectAreaLightUniformsLib.js +3 -3
  121. package/lights/RectAreaLightUniformsLib.js.map +1 -1
  122. package/lines/LineMaterial.cjs +1 -2
  123. package/lines/LineMaterial.cjs.map +1 -1
  124. package/lines/LineMaterial.js +2 -3
  125. package/lines/LineMaterial.js.map +1 -1
  126. package/lines/LineSegments2.cjs +13 -13
  127. package/lines/LineSegments2.cjs.map +1 -1
  128. package/lines/LineSegments2.js +14 -14
  129. package/lines/LineSegments2.js.map +1 -1
  130. package/lines/LineSegmentsGeometry.cjs +2 -2
  131. package/lines/LineSegmentsGeometry.cjs.map +1 -1
  132. package/lines/LineSegmentsGeometry.js +3 -3
  133. package/lines/LineSegmentsGeometry.js.map +1 -1
  134. package/lines/Wireframe.cjs +3 -3
  135. package/lines/Wireframe.cjs.map +1 -1
  136. package/lines/Wireframe.js +4 -4
  137. package/lines/Wireframe.js.map +1 -1
  138. package/loaders/BasisTextureLoader.cjs +435 -441
  139. package/loaders/BasisTextureLoader.cjs.map +1 -1
  140. package/loaders/BasisTextureLoader.js +435 -441
  141. package/loaders/BasisTextureLoader.js.map +1 -1
  142. package/loaders/EXRLoader.cjs +1 -2
  143. package/loaders/EXRLoader.cjs.map +1 -1
  144. package/loaders/EXRLoader.js +2 -3
  145. package/loaders/EXRLoader.js.map +1 -1
  146. package/loaders/FBXLoader.cjs +2 -2
  147. package/loaders/FBXLoader.cjs.map +1 -1
  148. package/loaders/FBXLoader.js +2 -2
  149. package/loaders/FBXLoader.js.map +1 -1
  150. package/loaders/FontLoader.cjs +2 -2
  151. package/loaders/FontLoader.cjs.map +1 -1
  152. package/loaders/FontLoader.d.ts +2 -2
  153. package/loaders/FontLoader.js +2 -2
  154. package/loaders/FontLoader.js.map +1 -1
  155. package/loaders/GLTFLoader.cjs +2 -2
  156. package/loaders/GLTFLoader.cjs.map +1 -1
  157. package/loaders/GLTFLoader.js +2 -2
  158. package/loaders/GLTFLoader.js.map +1 -1
  159. package/loaders/KTX2Loader.cjs +374 -377
  160. package/loaders/KTX2Loader.cjs.map +1 -1
  161. package/loaders/KTX2Loader.js +374 -377
  162. package/loaders/KTX2Loader.js.map +1 -1
  163. package/loaders/LDrawLoader.cjs +4 -5
  164. package/loaders/LDrawLoader.cjs.map +1 -1
  165. package/loaders/LDrawLoader.js +5 -6
  166. package/loaders/LDrawLoader.js.map +1 -1
  167. package/loaders/OBJLoader.cjs +5 -5
  168. package/loaders/OBJLoader.cjs.map +1 -1
  169. package/loaders/OBJLoader.js +6 -6
  170. package/loaders/OBJLoader.js.map +1 -1
  171. package/loaders/PRWMLoader.cjs +43 -46
  172. package/loaders/PRWMLoader.cjs.map +1 -1
  173. package/loaders/PRWMLoader.js +43 -46
  174. package/loaders/PRWMLoader.js.map +1 -1
  175. package/loaders/SVGLoader.cjs +1688 -1694
  176. package/loaders/SVGLoader.cjs.map +1 -1
  177. package/loaders/SVGLoader.js +1688 -1694
  178. package/loaders/SVGLoader.js.map +1 -1
  179. package/loaders/XLoader.cjs +1 -1
  180. package/loaders/XLoader.cjs.map +1 -1
  181. package/loaders/XLoader.js +1 -1
  182. package/loaders/XLoader.js.map +1 -1
  183. package/math/Capsule.cjs +3 -3
  184. package/math/Capsule.cjs.map +1 -1
  185. package/math/Capsule.js +3 -3
  186. package/math/Capsule.js.map +1 -1
  187. package/math/ColorConverter.cjs +9 -9
  188. package/math/ColorConverter.cjs.map +1 -1
  189. package/math/ColorConverter.js +9 -9
  190. package/math/ColorConverter.js.map +1 -1
  191. package/math/ConvexHull.cjs +50 -53
  192. package/math/ConvexHull.cjs.map +1 -1
  193. package/math/ConvexHull.js +50 -53
  194. package/math/ConvexHull.js.map +1 -1
  195. package/math/ImprovedNoise.cjs +1 -1
  196. package/math/ImprovedNoise.cjs.map +1 -1
  197. package/math/ImprovedNoise.js +1 -1
  198. package/math/ImprovedNoise.js.map +1 -1
  199. package/math/MeshSurfaceSampler.cjs +2 -2
  200. package/math/MeshSurfaceSampler.cjs.map +1 -1
  201. package/math/MeshSurfaceSampler.js +2 -2
  202. package/math/MeshSurfaceSampler.js.map +1 -1
  203. package/math/OBB.cjs +14 -14
  204. package/math/OBB.cjs.map +1 -1
  205. package/math/OBB.js +15 -15
  206. package/math/OBB.js.map +1 -1
  207. package/math/Octree.cjs +7 -7
  208. package/math/Octree.cjs.map +1 -1
  209. package/math/Octree.js +8 -8
  210. package/math/Octree.js.map +1 -1
  211. package/misc/ConvexObjectBreaker.cjs +268 -271
  212. package/misc/ConvexObjectBreaker.cjs.map +1 -1
  213. package/misc/ConvexObjectBreaker.js +269 -272
  214. package/misc/ConvexObjectBreaker.js.map +1 -1
  215. package/misc/Gyroscope.cjs +6 -6
  216. package/misc/Gyroscope.cjs.map +1 -1
  217. package/misc/Gyroscope.js +7 -7
  218. package/misc/Gyroscope.js.map +1 -1
  219. package/modifiers/CurveModifier.cjs +1 -1
  220. package/modifiers/CurveModifier.cjs.map +1 -1
  221. package/modifiers/CurveModifier.js +2 -2
  222. package/modifiers/CurveModifier.js.map +1 -1
  223. package/modifiers/SimplifyModifier.cjs +2 -2
  224. package/modifiers/SimplifyModifier.cjs.map +1 -1
  225. package/modifiers/SimplifyModifier.js +2 -2
  226. package/modifiers/SimplifyModifier.js.map +1 -1
  227. package/objects/BatchedMesh.cjs +2 -2
  228. package/objects/BatchedMesh.cjs.map +1 -1
  229. package/objects/BatchedMesh.js +3 -3
  230. package/objects/BatchedMesh.js.map +1 -1
  231. package/objects/GroundProjectedEnv.cjs +1 -2
  232. package/objects/GroundProjectedEnv.cjs.map +1 -1
  233. package/objects/GroundProjectedEnv.js +2 -3
  234. package/objects/GroundProjectedEnv.js.map +1 -1
  235. package/objects/Lensflare.cjs +206 -209
  236. package/objects/Lensflare.cjs.map +1 -1
  237. package/objects/Lensflare.js +206 -209
  238. package/objects/Lensflare.js.map +1 -1
  239. package/objects/Reflector.cjs +146 -154
  240. package/objects/Reflector.cjs.map +1 -1
  241. package/objects/Reflector.js +146 -154
  242. package/objects/Reflector.js.map +1 -1
  243. package/objects/ReflectorForSSRPass.cjs +180 -183
  244. package/objects/ReflectorForSSRPass.cjs.map +1 -1
  245. package/objects/ReflectorForSSRPass.js +180 -183
  246. package/objects/ReflectorForSSRPass.js.map +1 -1
  247. package/objects/Refractor.cjs +161 -164
  248. package/objects/Refractor.cjs.map +1 -1
  249. package/objects/Refractor.js +161 -164
  250. package/objects/Refractor.js.map +1 -1
  251. package/objects/ShadowMesh.cjs +1 -1
  252. package/objects/ShadowMesh.cjs.map +1 -1
  253. package/objects/ShadowMesh.js +2 -2
  254. package/objects/ShadowMesh.js.map +1 -1
  255. package/objects/Sky.cjs +32 -35
  256. package/objects/Sky.cjs.map +1 -1
  257. package/objects/Sky.d.ts +6 -100
  258. package/objects/Sky.js +32 -35
  259. package/objects/Sky.js.map +1 -1
  260. package/objects/Water.cjs +1 -2
  261. package/objects/Water.cjs.map +1 -1
  262. package/objects/Water.js +2 -3
  263. package/objects/Water.js.map +1 -1
  264. package/objects/Water2.cjs +140 -143
  265. package/objects/Water2.cjs.map +1 -1
  266. package/objects/Water2.js +140 -143
  267. package/objects/Water2.js.map +1 -1
  268. package/package.json +1 -1
  269. package/postprocessing/SAOPass.cjs +264 -267
  270. package/postprocessing/SAOPass.cjs.map +1 -1
  271. package/postprocessing/SAOPass.js +264 -267
  272. package/postprocessing/SAOPass.js.map +1 -1
  273. package/postprocessing/SSAOPass.cjs +250 -253
  274. package/postprocessing/SSAOPass.cjs.map +1 -1
  275. package/postprocessing/SSAOPass.js +250 -253
  276. package/postprocessing/SSAOPass.js.map +1 -1
  277. package/postprocessing/SSRPass.cjs +376 -379
  278. package/postprocessing/SSRPass.cjs.map +1 -1
  279. package/postprocessing/SSRPass.js +376 -379
  280. package/postprocessing/SSRPass.js.map +1 -1
  281. package/postprocessing/UnrealBloomPass.cjs +202 -205
  282. package/postprocessing/UnrealBloomPass.cjs.map +1 -1
  283. package/postprocessing/UnrealBloomPass.js +202 -205
  284. package/postprocessing/UnrealBloomPass.js.map +1 -1
  285. package/renderers/CSS2DRenderer.cjs +5 -5
  286. package/renderers/CSS2DRenderer.cjs.map +1 -1
  287. package/renderers/CSS2DRenderer.js +5 -5
  288. package/renderers/CSS2DRenderer.js.map +1 -1
  289. package/renderers/CSS3DRenderer.cjs +5 -5
  290. package/renderers/CSS3DRenderer.cjs.map +1 -1
  291. package/renderers/CSS3DRenderer.js +6 -6
  292. package/renderers/CSS3DRenderer.js.map +1 -1
  293. package/shaders/ACESFilmicToneMappingShader.cjs +46 -71
  294. package/shaders/ACESFilmicToneMappingShader.cjs.map +1 -1
  295. package/shaders/ACESFilmicToneMappingShader.js +46 -71
  296. package/shaders/ACESFilmicToneMappingShader.js.map +1 -1
  297. package/shaders/AfterimageShader.cjs +22 -41
  298. package/shaders/AfterimageShader.cjs.map +1 -1
  299. package/shaders/AfterimageShader.js +22 -41
  300. package/shaders/AfterimageShader.js.map +1 -1
  301. package/shaders/BasicShader.cjs +6 -20
  302. package/shaders/BasicShader.cjs.map +1 -1
  303. package/shaders/BasicShader.js +6 -20
  304. package/shaders/BasicShader.js.map +1 -1
  305. package/shaders/BleachBypassShader.cjs +26 -46
  306. package/shaders/BleachBypassShader.cjs.map +1 -1
  307. package/shaders/BleachBypassShader.js +26 -46
  308. package/shaders/BleachBypassShader.js.map +1 -1
  309. package/shaders/BlendShader.cjs +19 -33
  310. package/shaders/BlendShader.cjs.map +1 -1
  311. package/shaders/BlendShader.js +19 -33
  312. package/shaders/BlendShader.js.map +1 -1
  313. package/shaders/BokehShader.cjs +90 -117
  314. package/shaders/BokehShader.cjs.map +1 -1
  315. package/shaders/BokehShader.js +90 -117
  316. package/shaders/BokehShader.js.map +1 -1
  317. package/shaders/BokehShader2.cjs +232 -333
  318. package/shaders/BokehShader2.cjs.map +1 -1
  319. package/shaders/BokehShader2.js +232 -333
  320. package/shaders/BokehShader2.js.map +1 -1
  321. package/shaders/BrightnessContrastShader.cjs +22 -38
  322. package/shaders/BrightnessContrastShader.cjs.map +1 -1
  323. package/shaders/BrightnessContrastShader.js +22 -38
  324. package/shaders/BrightnessContrastShader.js.map +1 -1
  325. package/shaders/ColorCorrectionShader.cjs +21 -35
  326. package/shaders/ColorCorrectionShader.cjs.map +1 -1
  327. package/shaders/ColorCorrectionShader.js +21 -35
  328. package/shaders/ColorCorrectionShader.js.map +1 -1
  329. package/shaders/ColorifyShader.cjs +19 -34
  330. package/shaders/ColorifyShader.cjs.map +1 -1
  331. package/shaders/ColorifyShader.js +19 -34
  332. package/shaders/ColorifyShader.js.map +1 -1
  333. package/shaders/ConvolutionShader.cjs +24 -43
  334. package/shaders/ConvolutionShader.cjs.map +1 -1
  335. package/shaders/ConvolutionShader.js +24 -43
  336. package/shaders/ConvolutionShader.js.map +1 -1
  337. package/shaders/CopyShader.cjs +16 -30
  338. package/shaders/CopyShader.cjs.map +1 -1
  339. package/shaders/CopyShader.js +16 -30
  340. package/shaders/CopyShader.js.map +1 -1
  341. package/shaders/DOFMipMapShader.cjs +21 -38
  342. package/shaders/DOFMipMapShader.cjs.map +1 -1
  343. package/shaders/DOFMipMapShader.js +21 -38
  344. package/shaders/DOFMipMapShader.js.map +1 -1
  345. package/shaders/DepthLimitedBlurShader.cjs +69 -98
  346. package/shaders/DepthLimitedBlurShader.cjs.map +1 -1
  347. package/shaders/DepthLimitedBlurShader.js +69 -98
  348. package/shaders/DepthLimitedBlurShader.js.map +1 -1
  349. package/shaders/DigitalGlitch.cjs +59 -70
  350. package/shaders/DigitalGlitch.cjs.map +1 -1
  351. package/shaders/DigitalGlitch.js +59 -70
  352. package/shaders/DigitalGlitch.js.map +1 -1
  353. package/shaders/DotScreenShader.cjs +28 -49
  354. package/shaders/DotScreenShader.cjs.map +1 -1
  355. package/shaders/DotScreenShader.js +28 -49
  356. package/shaders/DotScreenShader.js.map +1 -1
  357. package/shaders/FXAAShader.cjs +1089 -1098
  358. package/shaders/FXAAShader.cjs.map +1 -1
  359. package/shaders/FXAAShader.js +1089 -1098
  360. package/shaders/FXAAShader.js.map +1 -1
  361. package/shaders/FilmShader.cjs +29 -57
  362. package/shaders/FilmShader.cjs.map +1 -1
  363. package/shaders/FilmShader.js +29 -57
  364. package/shaders/FilmShader.js.map +1 -1
  365. package/shaders/FocusShader.cjs +43 -70
  366. package/shaders/FocusShader.cjs.map +1 -1
  367. package/shaders/FocusShader.js +43 -70
  368. package/shaders/FocusShader.js.map +1 -1
  369. package/shaders/FreiChenShader.cjs +53 -74
  370. package/shaders/FreiChenShader.cjs.map +1 -1
  371. package/shaders/FreiChenShader.js +53 -74
  372. package/shaders/FreiChenShader.js.map +1 -1
  373. package/shaders/FresnelShader.cjs +35 -55
  374. package/shaders/FresnelShader.cjs.map +1 -1
  375. package/shaders/FresnelShader.js +35 -55
  376. package/shaders/FresnelShader.js.map +1 -1
  377. package/shaders/GammaCorrectionShader.cjs +19 -33
  378. package/shaders/GammaCorrectionShader.cjs.map +1 -1
  379. package/shaders/GammaCorrectionShader.js +19 -33
  380. package/shaders/GammaCorrectionShader.js.map +1 -1
  381. package/shaders/GodRaysShader.cjs +116 -193
  382. package/shaders/GodRaysShader.cjs.map +1 -1
  383. package/shaders/GodRaysShader.js +116 -193
  384. package/shaders/GodRaysShader.js.map +1 -1
  385. package/shaders/HalftoneShader.cjs +192 -270
  386. package/shaders/HalftoneShader.cjs.map +1 -1
  387. package/shaders/HalftoneShader.js +192 -270
  388. package/shaders/HalftoneShader.js.map +1 -1
  389. package/shaders/HorizontalTiltShiftShader.cjs +27 -43
  390. package/shaders/HorizontalTiltShiftShader.cjs.map +1 -1
  391. package/shaders/HorizontalTiltShiftShader.js +27 -43
  392. package/shaders/HorizontalTiltShiftShader.js.map +1 -1
  393. package/shaders/HueSaturationShader.cjs +31 -47
  394. package/shaders/HueSaturationShader.cjs.map +1 -1
  395. package/shaders/HueSaturationShader.js +31 -47
  396. package/shaders/HueSaturationShader.js.map +1 -1
  397. package/shaders/KaleidoShader.cjs +24 -37
  398. package/shaders/KaleidoShader.cjs.map +1 -1
  399. package/shaders/KaleidoShader.js +24 -37
  400. package/shaders/KaleidoShader.js.map +1 -1
  401. package/shaders/LuminosityHighPassShader.cjs +24 -43
  402. package/shaders/LuminosityHighPassShader.cjs.map +1 -1
  403. package/shaders/LuminosityHighPassShader.js +24 -43
  404. package/shaders/LuminosityHighPassShader.js.map +1 -1
  405. package/shaders/LuminosityShader.cjs +17 -34
  406. package/shaders/LuminosityShader.cjs.map +1 -1
  407. package/shaders/LuminosityShader.js +17 -34
  408. package/shaders/LuminosityShader.js.map +1 -1
  409. package/shaders/MirrorShader.cjs +26 -39
  410. package/shaders/MirrorShader.cjs.map +1 -1
  411. package/shaders/MirrorShader.js +26 -39
  412. package/shaders/MirrorShader.js.map +1 -1
  413. package/shaders/NormalMapShader.cjs +21 -36
  414. package/shaders/NormalMapShader.cjs.map +1 -1
  415. package/shaders/NormalMapShader.js +21 -36
  416. package/shaders/NormalMapShader.js.map +1 -1
  417. package/shaders/ParallaxShader.cjs +97 -147
  418. package/shaders/ParallaxShader.cjs.map +1 -1
  419. package/shaders/ParallaxShader.js +97 -147
  420. package/shaders/ParallaxShader.js.map +1 -1
  421. package/shaders/PixelShader.cjs +18 -31
  422. package/shaders/PixelShader.cjs.map +1 -1
  423. package/shaders/PixelShader.js +18 -31
  424. package/shaders/PixelShader.js.map +1 -1
  425. package/shaders/RGBShiftShader.cjs +20 -33
  426. package/shaders/RGBShiftShader.cjs.map +1 -1
  427. package/shaders/RGBShiftShader.js +20 -33
  428. package/shaders/RGBShiftShader.js.map +1 -1
  429. package/shaders/SAOShader.cjs +117 -154
  430. package/shaders/SAOShader.cjs.map +1 -1
  431. package/shaders/SAOShader.js +117 -154
  432. package/shaders/SAOShader.js.map +1 -1
  433. package/shaders/SMAAShader.cjs +270 -358
  434. package/shaders/SMAAShader.cjs.map +1 -1
  435. package/shaders/SMAAShader.js +270 -358
  436. package/shaders/SMAAShader.js.map +1 -1
  437. package/shaders/SSAOShader.cjs +142 -236
  438. package/shaders/SSAOShader.cjs.map +1 -1
  439. package/shaders/SSAOShader.js +142 -236
  440. package/shaders/SSAOShader.js.map +1 -1
  441. package/shaders/SSRShader.cjs +4 -4
  442. package/shaders/SSRShader.cjs.map +1 -1
  443. package/shaders/SSRShader.js +4 -4
  444. package/shaders/SSRShader.js.map +1 -1
  445. package/shaders/SepiaShader.cjs +20 -36
  446. package/shaders/SepiaShader.cjs.map +1 -1
  447. package/shaders/SepiaShader.js +20 -36
  448. package/shaders/SepiaShader.js.map +1 -1
  449. package/shaders/SobelOperatorShader.cjs +37 -64
  450. package/shaders/SobelOperatorShader.cjs.map +1 -1
  451. package/shaders/SobelOperatorShader.js +37 -64
  452. package/shaders/SobelOperatorShader.js.map +1 -1
  453. package/shaders/TechnicolorShader.cjs +16 -29
  454. package/shaders/TechnicolorShader.cjs.map +1 -1
  455. package/shaders/TechnicolorShader.js +16 -29
  456. package/shaders/TechnicolorShader.js.map +1 -1
  457. package/shaders/ToneMapShader.cjs +35 -55
  458. package/shaders/ToneMapShader.cjs.map +1 -1
  459. package/shaders/ToneMapShader.js +35 -55
  460. package/shaders/ToneMapShader.js.map +1 -1
  461. package/shaders/ToonShader.cjs +165 -275
  462. package/shaders/ToonShader.cjs.map +1 -1
  463. package/shaders/ToonShader.js +165 -275
  464. package/shaders/ToonShader.js.map +1 -1
  465. package/shaders/TriangleBlurShader.cjs +27 -50
  466. package/shaders/TriangleBlurShader.cjs.map +1 -1
  467. package/shaders/TriangleBlurShader.js +27 -50
  468. package/shaders/TriangleBlurShader.js.map +1 -1
  469. package/shaders/UnpackDepthRGBAShader.cjs +17 -32
  470. package/shaders/UnpackDepthRGBAShader.cjs.map +1 -1
  471. package/shaders/UnpackDepthRGBAShader.js +17 -32
  472. package/shaders/UnpackDepthRGBAShader.js.map +1 -1
  473. package/shaders/VerticalTiltShiftShader.cjs +27 -43
  474. package/shaders/VerticalTiltShiftShader.cjs.map +1 -1
  475. package/shaders/VerticalTiltShiftShader.js +27 -43
  476. package/shaders/VerticalTiltShiftShader.js.map +1 -1
  477. package/shaders/VignetteShader.cjs +27 -43
  478. package/shaders/VignetteShader.cjs.map +1 -1
  479. package/shaders/VignetteShader.js +27 -43
  480. package/shaders/VignetteShader.js.map +1 -1
  481. package/shaders/VolumeShader.cjs +213 -264
  482. package/shaders/VolumeShader.cjs.map +1 -1
  483. package/shaders/VolumeShader.js +213 -264
  484. package/shaders/VolumeShader.js.map +1 -1
  485. package/shaders/WaterRefractionShader.cjs +35 -63
  486. package/shaders/WaterRefractionShader.cjs.map +1 -1
  487. package/shaders/WaterRefractionShader.js +35 -63
  488. package/shaders/WaterRefractionShader.js.map +1 -1
  489. package/utils/GeometryCompressionUtils.cjs +1 -2
  490. package/utils/GeometryCompressionUtils.cjs.map +1 -1
  491. package/utils/GeometryCompressionUtils.js +2 -3
  492. package/utils/GeometryCompressionUtils.js.map +1 -1
  493. package/utils/RoughnessMipmapper.cjs +3 -3
  494. package/utils/RoughnessMipmapper.cjs.map +1 -1
  495. package/utils/RoughnessMipmapper.js +4 -4
  496. package/utils/RoughnessMipmapper.js.map +1 -1
  497. package/webxr/ARButton.cjs +106 -109
  498. package/webxr/ARButton.cjs.map +1 -1
  499. package/webxr/ARButton.d.ts +3 -4
  500. package/webxr/ARButton.js +106 -109
  501. package/webxr/ARButton.js.map +1 -1
  502. package/webxr/OculusHandPointerModel.cjs +2 -2
  503. package/webxr/OculusHandPointerModel.cjs.map +1 -1
  504. package/webxr/OculusHandPointerModel.js +2 -2
  505. package/webxr/OculusHandPointerModel.js.map +1 -1
  506. package/webxr/VRButton.cjs +95 -98
  507. package/webxr/VRButton.cjs.map +1 -1
  508. package/webxr/VRButton.d.ts +5 -6
  509. package/webxr/VRButton.js +95 -98
  510. package/webxr/VRButton.js.map +1 -1
  511. package/webxr/XRHandPrimitiveModel.cjs +2 -2
  512. package/webxr/XRHandPrimitiveModel.cjs.map +1 -1
  513. package/webxr/XRHandPrimitiveModel.js +3 -3
  514. package/webxr/XRHandPrimitiveModel.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Geometry.js","sources":["../../src/deprecated/Geometry.js"],"sourcesContent":["import {\n Box3,\n BufferAttribute,\n BufferGeometry,\n Color,\n EventDispatcher,\n Float32BufferAttribute,\n Matrix3,\n Matrix4,\n MathUtils,\n Object3D,\n Sphere,\n Vector2,\n Vector3,\n} from 'three'\n\nconst _m1 = /* @__PURE__ */ new Matrix4()\nconst _obj = /* @__PURE__ */ new Object3D()\nconst _offset = /* @__PURE__ */ new Vector3()\n\nconst Geometry = /* @__PURE__ */ (() => {\n class Geometry extends EventDispatcher {\n static createBufferGeometryFromObject(object) {\n let buffergeometry = new BufferGeometry()\n\n const geometry = object.geometry\n\n if (object.isPoints || object.isLine) {\n const positions = new Float32BufferAttribute(geometry.vertices.length * 3, 3)\n const colors = new Float32BufferAttribute(geometry.colors.length * 3, 3)\n\n buffergeometry.setAttribute('position', positions.copyVector3sArray(geometry.vertices))\n buffergeometry.setAttribute('color', colors.copyColorsArray(geometry.colors))\n\n if (geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length) {\n const lineDistances = new Float32BufferAttribute(geometry.lineDistances.length, 1)\n\n buffergeometry.setAttribute('lineDistance', lineDistances.copyArray(geometry.lineDistances))\n }\n\n if (geometry.boundingSphere !== null) {\n buffergeometry.boundingSphere = geometry.boundingSphere.clone()\n }\n\n if (geometry.boundingBox !== null) {\n buffergeometry.boundingBox = geometry.boundingBox.clone()\n }\n } else if (object.isMesh) {\n buffergeometry = geometry.toBufferGeometry()\n }\n\n return buffergeometry\n }\n\n constructor() {\n super()\n this.isGeometry = true\n this.uuid = MathUtils.generateUUID()\n\n this.name = ''\n this.type = 'Geometry'\n\n this.vertices = []\n this.colors = []\n this.faces = []\n this.faceVertexUvs = [[]]\n\n this.morphTargets = []\n this.morphNormals = []\n\n this.skinWeights = []\n this.skinIndices = []\n\n this.lineDistances = []\n\n this.boundingBox = null\n this.boundingSphere = null\n\n // update flags\n\n this.elementsNeedUpdate = false\n this.verticesNeedUpdate = false\n this.uvsNeedUpdate = false\n this.normalsNeedUpdate = false\n this.colorsNeedUpdate = false\n this.lineDistancesNeedUpdate = false\n this.groupsNeedUpdate = false\n }\n\n applyMatrix4(matrix) {\n const normalMatrix = new Matrix3().getNormalMatrix(matrix)\n\n for (let i = 0, il = this.vertices.length; i < il; i++) {\n const vertex = this.vertices[i]\n vertex.applyMatrix4(matrix)\n }\n\n for (let i = 0, il = this.faces.length; i < il; i++) {\n const face = this.faces[i]\n face.normal.applyMatrix3(normalMatrix).normalize()\n\n for (let j = 0, jl = face.vertexNormals.length; j < jl; j++) {\n face.vertexNormals[j].applyMatrix3(normalMatrix).normalize()\n }\n }\n\n if (this.boundingBox !== null) {\n this.computeBoundingBox()\n }\n\n if (this.boundingSphere !== null) {\n this.computeBoundingSphere()\n }\n\n this.verticesNeedUpdate = true\n this.normalsNeedUpdate = true\n\n return this\n }\n\n rotateX(angle) {\n // rotate geometry around world x-axis\n\n _m1.makeRotationX(angle)\n\n this.applyMatrix4(_m1)\n\n return this\n }\n\n rotateY(angle) {\n // rotate geometry around world y-axis\n\n _m1.makeRotationY(angle)\n\n this.applyMatrix4(_m1)\n\n return this\n }\n\n rotateZ(angle) {\n // rotate geometry around world z-axis\n\n _m1.makeRotationZ(angle)\n\n this.applyMatrix4(_m1)\n\n return this\n }\n\n translate(x, y, z) {\n // translate geometry\n\n _m1.makeTranslation(x, y, z)\n\n this.applyMatrix4(_m1)\n\n return this\n }\n\n scale(x, y, z) {\n // scale geometry\n\n _m1.makeScale(x, y, z)\n\n this.applyMatrix4(_m1)\n\n return this\n }\n\n lookAt(vector) {\n _obj.lookAt(vector)\n\n _obj.updateMatrix()\n\n this.applyMatrix4(_obj.matrix)\n\n return this\n }\n\n fromBufferGeometry(geometry) {\n const scope = this\n\n const index = geometry.index !== null ? geometry.index : undefined\n const attributes = geometry.attributes\n\n if (attributes.position === undefined) {\n console.error('THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion.')\n return this\n }\n\n const position = attributes.position\n const normal = attributes.normal\n const color = attributes.color\n const uv = attributes.uv\n const uv2 = attributes.uv2\n\n if (uv2 !== undefined) this.faceVertexUvs[1] = []\n\n for (let i = 0; i < position.count; i++) {\n scope.vertices.push(new Vector3().fromBufferAttribute(position, i))\n\n if (color !== undefined) {\n scope.colors.push(new Color().fromBufferAttribute(color, i))\n }\n }\n\n function addFace(a, b, c, materialIndex) {\n const vertexColors =\n color === undefined ? [] : [scope.colors[a].clone(), scope.colors[b].clone(), scope.colors[c].clone()]\n\n const vertexNormals =\n normal === undefined\n ? []\n : [\n new Vector3().fromBufferAttribute(normal, a),\n new Vector3().fromBufferAttribute(normal, b),\n new Vector3().fromBufferAttribute(normal, c),\n ]\n\n const face = new Face3(a, b, c, vertexNormals, vertexColors, materialIndex)\n\n scope.faces.push(face)\n\n if (uv !== undefined) {\n scope.faceVertexUvs[0].push([\n new Vector2().fromBufferAttribute(uv, a),\n new Vector2().fromBufferAttribute(uv, b),\n new Vector2().fromBufferAttribute(uv, c),\n ])\n }\n\n if (uv2 !== undefined) {\n scope.faceVertexUvs[1].push([\n new Vector2().fromBufferAttribute(uv2, a),\n new Vector2().fromBufferAttribute(uv2, b),\n new Vector2().fromBufferAttribute(uv2, c),\n ])\n }\n }\n\n const groups = geometry.groups\n\n if (groups.length > 0) {\n for (let i = 0; i < groups.length; i++) {\n const group = groups[i]\n\n const start = group.start\n const count = group.count\n\n for (let j = start, jl = start + count; j < jl; j += 3) {\n if (index !== undefined) {\n addFace(index.getX(j), index.getX(j + 1), index.getX(j + 2), group.materialIndex)\n } else {\n addFace(j, j + 1, j + 2, group.materialIndex)\n }\n }\n }\n } else {\n if (index !== undefined) {\n for (let i = 0; i < index.count; i += 3) {\n addFace(index.getX(i), index.getX(i + 1), index.getX(i + 2))\n }\n } else {\n for (let i = 0; i < position.count; i += 3) {\n addFace(i, i + 1, i + 2)\n }\n }\n }\n\n this.computeFaceNormals()\n\n if (geometry.boundingBox !== null) {\n this.boundingBox = geometry.boundingBox.clone()\n }\n\n if (geometry.boundingSphere !== null) {\n this.boundingSphere = geometry.boundingSphere.clone()\n }\n\n return this\n }\n\n center() {\n this.computeBoundingBox()\n\n this.boundingBox.getCenter(_offset).negate()\n\n this.translate(_offset.x, _offset.y, _offset.z)\n\n return this\n }\n\n normalize() {\n this.computeBoundingSphere()\n\n const center = this.boundingSphere.center\n const radius = this.boundingSphere.radius\n\n const s = radius === 0 ? 1 : 1.0 / radius\n\n const matrix = new Matrix4()\n matrix.set(s, 0, 0, -s * center.x, 0, s, 0, -s * center.y, 0, 0, s, -s * center.z, 0, 0, 0, 1)\n\n this.applyMatrix4(matrix)\n\n return this\n }\n\n computeFaceNormals() {\n const cb = new Vector3(),\n ab = new Vector3()\n\n for (let f = 0, fl = this.faces.length; f < fl; f++) {\n const face = this.faces[f]\n\n const vA = this.vertices[face.a]\n const vB = this.vertices[face.b]\n const vC = this.vertices[face.c]\n\n cb.subVectors(vC, vB)\n ab.subVectors(vA, vB)\n cb.cross(ab)\n\n cb.normalize()\n\n face.normal.copy(cb)\n }\n }\n\n computeVertexNormals(areaWeighted = true) {\n const vertices = new Array(this.vertices.length)\n\n for (let v = 0, vl = this.vertices.length; v < vl; v++) {\n vertices[v] = new Vector3()\n }\n\n if (areaWeighted) {\n // vertex normals weighted by triangle areas\n // http://www.iquilezles.org/www/articles/normals/normals.htm\n\n const cb = new Vector3(),\n ab = new Vector3()\n\n for (let f = 0, fl = this.faces.length; f < fl; f++) {\n const face = this.faces[f]\n\n const vA = this.vertices[face.a]\n const vB = this.vertices[face.b]\n const vC = this.vertices[face.c]\n\n cb.subVectors(vC, vB)\n ab.subVectors(vA, vB)\n cb.cross(ab)\n\n vertices[face.a].add(cb)\n vertices[face.b].add(cb)\n vertices[face.c].add(cb)\n }\n } else {\n this.computeFaceNormals()\n\n for (let f = 0, fl = this.faces.length; f < fl; f++) {\n const face = this.faces[f]\n\n vertices[face.a].add(face.normal)\n vertices[face.b].add(face.normal)\n vertices[face.c].add(face.normal)\n }\n }\n\n for (let v = 0, vl = this.vertices.length; v < vl; v++) {\n vertices[v].normalize()\n }\n\n for (let f = 0, fl = this.faces.length; f < fl; f++) {\n const face = this.faces[f]\n\n const vertexNormals = face.vertexNormals\n\n if (vertexNormals.length === 3) {\n vertexNormals[0].copy(vertices[face.a])\n vertexNormals[1].copy(vertices[face.b])\n vertexNormals[2].copy(vertices[face.c])\n } else {\n vertexNormals[0] = vertices[face.a].clone()\n vertexNormals[1] = vertices[face.b].clone()\n vertexNormals[2] = vertices[face.c].clone()\n }\n }\n\n if (this.faces.length > 0) {\n this.normalsNeedUpdate = true\n }\n }\n\n computeFlatVertexNormals() {\n this.computeFaceNormals()\n\n for (let f = 0, fl = this.faces.length; f < fl; f++) {\n const face = this.faces[f]\n\n const vertexNormals = face.vertexNormals\n\n if (vertexNormals.length === 3) {\n vertexNormals[0].copy(face.normal)\n vertexNormals[1].copy(face.normal)\n vertexNormals[2].copy(face.normal)\n } else {\n vertexNormals[0] = face.normal.clone()\n vertexNormals[1] = face.normal.clone()\n vertexNormals[2] = face.normal.clone()\n }\n }\n\n if (this.faces.length > 0) {\n this.normalsNeedUpdate = true\n }\n }\n\n computeMorphNormals() {\n // save original normals\n // - create temp variables on first access\n // otherwise just copy (for faster repeated calls)\n\n for (let f = 0, fl = this.faces.length; f < fl; f++) {\n const face = this.faces[f]\n\n if (!face.__originalFaceNormal) {\n face.__originalFaceNormal = face.normal.clone()\n } else {\n face.__originalFaceNormal.copy(face.normal)\n }\n\n if (!face.__originalVertexNormals) face.__originalVertexNormals = []\n\n for (let i = 0, il = face.vertexNormals.length; i < il; i++) {\n if (!face.__originalVertexNormals[i]) {\n face.__originalVertexNormals[i] = face.vertexNormals[i].clone()\n } else {\n face.__originalVertexNormals[i].copy(face.vertexNormals[i])\n }\n }\n }\n\n // use temp geometry to compute face and vertex normals for each morph\n\n const tmpGeo = new Geometry()\n tmpGeo.faces = this.faces\n\n for (let i = 0, il = this.morphTargets.length; i < il; i++) {\n // create on first access\n\n if (!this.morphNormals[i]) {\n this.morphNormals[i] = {}\n this.morphNormals[i].faceNormals = []\n this.morphNormals[i].vertexNormals = []\n\n const dstNormalsFace = this.morphNormals[i].faceNormals\n const dstNormalsVertex = this.morphNormals[i].vertexNormals\n\n for (let f = 0, fl = this.faces.length; f < fl; f++) {\n const faceNormal = new Vector3()\n const vertexNormals = {\n a: new Vector3(),\n b: new Vector3(),\n c: new Vector3(),\n }\n\n dstNormalsFace.push(faceNormal)\n dstNormalsVertex.push(vertexNormals)\n }\n }\n\n const morphNormals = this.morphNormals[i]\n\n // set vertices to morph target\n\n tmpGeo.vertices = this.morphTargets[i].vertices\n\n // compute morph normals\n\n tmpGeo.computeFaceNormals()\n tmpGeo.computeVertexNormals()\n\n // store morph normals\n\n for (let f = 0, fl = this.faces.length; f < fl; f++) {\n const face = this.faces[f]\n\n const faceNormal = morphNormals.faceNormals[f]\n const vertexNormals = morphNormals.vertexNormals[f]\n\n faceNormal.copy(face.normal)\n\n vertexNormals.a.copy(face.vertexNormals[0])\n vertexNormals.b.copy(face.vertexNormals[1])\n vertexNormals.c.copy(face.vertexNormals[2])\n }\n }\n\n // restore original normals\n\n for (let f = 0, fl = this.faces.length; f < fl; f++) {\n const face = this.faces[f]\n\n face.normal = face.__originalFaceNormal\n face.vertexNormals = face.__originalVertexNormals\n }\n }\n\n computeBoundingBox() {\n if (this.boundingBox === null) {\n this.boundingBox = new Box3()\n }\n\n this.boundingBox.setFromPoints(this.vertices)\n }\n\n computeBoundingSphere() {\n if (this.boundingSphere === null) {\n this.boundingSphere = new Sphere()\n }\n\n this.boundingSphere.setFromPoints(this.vertices)\n }\n\n merge(geometry, matrix, materialIndexOffset = 0) {\n if (!(geometry && geometry.isGeometry)) {\n console.error('THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry)\n return\n }\n\n let normalMatrix\n const vertexOffset = this.vertices.length,\n vertices1 = this.vertices,\n vertices2 = geometry.vertices,\n faces1 = this.faces,\n faces2 = geometry.faces,\n colors1 = this.colors,\n colors2 = geometry.colors\n\n if (matrix !== undefined) {\n normalMatrix = new Matrix3().getNormalMatrix(matrix)\n }\n\n // vertices\n\n for (let i = 0, il = vertices2.length; i < il; i++) {\n const vertex = vertices2[i]\n\n const vertexCopy = vertex.clone()\n\n if (matrix !== undefined) vertexCopy.applyMatrix4(matrix)\n\n vertices1.push(vertexCopy)\n }\n\n // colors\n\n for (let i = 0, il = colors2.length; i < il; i++) {\n colors1.push(colors2[i].clone())\n }\n\n // faces\n\n for (let i = 0, il = faces2.length; i < il; i++) {\n const face = faces2[i]\n let normal, color\n const faceVertexNormals = face.vertexNormals,\n faceVertexColors = face.vertexColors\n\n const faceCopy = new Face3(face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset)\n faceCopy.normal.copy(face.normal)\n\n if (normalMatrix !== undefined) {\n faceCopy.normal.applyMatrix3(normalMatrix).normalize()\n }\n\n for (let j = 0, jl = faceVertexNormals.length; j < jl; j++) {\n normal = faceVertexNormals[j].clone()\n\n if (normalMatrix !== undefined) {\n normal.applyMatrix3(normalMatrix).normalize()\n }\n\n faceCopy.vertexNormals.push(normal)\n }\n\n faceCopy.color.copy(face.color)\n\n for (let j = 0, jl = faceVertexColors.length; j < jl; j++) {\n color = faceVertexColors[j]\n faceCopy.vertexColors.push(color.clone())\n }\n\n faceCopy.materialIndex = face.materialIndex + materialIndexOffset\n\n faces1.push(faceCopy)\n }\n\n // uvs\n\n for (let i = 0, il = geometry.faceVertexUvs.length; i < il; i++) {\n const faceVertexUvs2 = geometry.faceVertexUvs[i]\n\n if (this.faceVertexUvs[i] === undefined) this.faceVertexUvs[i] = []\n\n for (let j = 0, jl = faceVertexUvs2.length; j < jl; j++) {\n const uvs2 = faceVertexUvs2[j],\n uvsCopy = []\n\n for (let k = 0, kl = uvs2.length; k < kl; k++) {\n uvsCopy.push(uvs2[k].clone())\n }\n\n this.faceVertexUvs[i].push(uvsCopy)\n }\n }\n }\n\n mergeMesh(mesh) {\n if (!(mesh && mesh.isMesh)) {\n console.error('THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh)\n return\n }\n\n if (mesh.matrixAutoUpdate) mesh.updateMatrix()\n\n this.merge(mesh.geometry, mesh.matrix)\n }\n\n /*\n * Checks for duplicate vertices with hashmap.\n * Duplicated vertices are removed\n * and faces' vertices are updated.\n */\n\n mergeVertices(precisionPoints = 4) {\n const verticesMap = {} // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n const unique = [],\n changes = []\n\n const precision = Math.pow(10, precisionPoints)\n\n for (let i = 0, il = this.vertices.length; i < il; i++) {\n const v = this.vertices[i]\n const key = `${Math.round(v.x * precision)}_${Math.round(v.y * precision)}_${Math.round(v.z * precision)}`\n\n if (verticesMap[key] === undefined) {\n verticesMap[key] = i\n unique.push(this.vertices[i])\n changes[i] = unique.length - 1\n } else {\n //console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n changes[i] = changes[verticesMap[key]]\n }\n }\n\n // if faces are completely degenerate after merging vertices, we\n // have to remove them from the geometry.\n const faceIndicesToRemove = []\n\n for (let i = 0, il = this.faces.length; i < il; i++) {\n const face = this.faces[i]\n\n face.a = changes[face.a]\n face.b = changes[face.b]\n face.c = changes[face.c]\n\n const indices = [face.a, face.b, face.c]\n\n // if any duplicate vertices are found in a Face3\n // we have to remove the face as nothing can be saved\n for (let n = 0; n < 3; n++) {\n if (indices[n] === indices[(n + 1) % 3]) {\n faceIndicesToRemove.push(i)\n break\n }\n }\n }\n\n for (let i = faceIndicesToRemove.length - 1; i >= 0; i--) {\n const idx = faceIndicesToRemove[i]\n\n this.faces.splice(idx, 1)\n\n for (let j = 0, jl = this.faceVertexUvs.length; j < jl; j++) {\n this.faceVertexUvs[j].splice(idx, 1)\n }\n }\n\n // Use unique set of vertices\n\n const diff = this.vertices.length - unique.length\n this.vertices = unique\n return diff\n }\n\n setFromPoints(points) {\n this.vertices = []\n\n for (let i = 0, l = points.length; i < l; i++) {\n const point = points[i]\n this.vertices.push(new Vector3(point.x, point.y, point.z || 0))\n }\n\n return this\n }\n\n sortFacesByMaterialIndex() {\n const faces = this.faces\n const length = faces.length\n\n // tag faces\n\n for (let i = 0; i < length; i++) {\n faces[i]._id = i\n }\n\n // sort faces\n\n function materialIndexSort(a, b) {\n return a.materialIndex - b.materialIndex\n }\n\n faces.sort(materialIndexSort)\n\n // sort uvs\n\n const uvs1 = this.faceVertexUvs[0]\n const uvs2 = this.faceVertexUvs[1]\n\n let newUvs1, newUvs2\n\n if (uvs1 && uvs1.length === length) newUvs1 = []\n if (uvs2 && uvs2.length === length) newUvs2 = []\n\n for (let i = 0; i < length; i++) {\n const id = faces[i]._id\n\n if (newUvs1) newUvs1.push(uvs1[id])\n if (newUvs2) newUvs2.push(uvs2[id])\n }\n\n if (newUvs1) this.faceVertexUvs[0] = newUvs1\n if (newUvs2) this.faceVertexUvs[1] = newUvs2\n }\n\n toJSON() {\n const data = {\n metadata: {\n version: 4.5,\n type: 'Geometry',\n generator: 'Geometry.toJSON',\n },\n }\n\n // standard Geometry serialization\n\n data.uuid = this.uuid\n data.type = this.type\n if (this.name !== '') data.name = this.name\n\n if (this.parameters !== undefined) {\n const parameters = this.parameters\n\n for (let key in parameters) {\n if (parameters[key] !== undefined) data[key] = parameters[key]\n }\n\n return data\n }\n\n const vertices = []\n\n for (let i = 0; i < this.vertices.length; i++) {\n const vertex = this.vertices[i]\n vertices.push(vertex.x, vertex.y, vertex.z)\n }\n\n const faces = []\n const normals = []\n const normalsHash = {}\n const colors = []\n const colorsHash = {}\n const uvs = []\n const uvsHash = {}\n\n for (let i = 0; i < this.faces.length; i++) {\n const face = this.faces[i]\n\n const hasMaterial = true\n const hasFaceUv = false // deprecated\n const hasFaceVertexUv = this.faceVertexUvs[0][i] !== undefined\n const hasFaceNormal = face.normal.length() > 0\n const hasFaceVertexNormal = face.vertexNormals.length > 0\n const hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1\n const hasFaceVertexColor = face.vertexColors.length > 0\n\n let faceType = 0\n\n faceType = setBit(faceType, 0, 0) // isQuad\n faceType = setBit(faceType, 1, hasMaterial)\n faceType = setBit(faceType, 2, hasFaceUv)\n faceType = setBit(faceType, 3, hasFaceVertexUv)\n faceType = setBit(faceType, 4, hasFaceNormal)\n faceType = setBit(faceType, 5, hasFaceVertexNormal)\n faceType = setBit(faceType, 6, hasFaceColor)\n faceType = setBit(faceType, 7, hasFaceVertexColor)\n\n faces.push(faceType)\n faces.push(face.a, face.b, face.c)\n faces.push(face.materialIndex)\n\n if (hasFaceVertexUv) {\n const faceVertexUvs = this.faceVertexUvs[0][i]\n\n faces.push(getUvIndex(faceVertexUvs[0]), getUvIndex(faceVertexUvs[1]), getUvIndex(faceVertexUvs[2]))\n }\n\n if (hasFaceNormal) {\n faces.push(getNormalIndex(face.normal))\n }\n\n if (hasFaceVertexNormal) {\n const vertexNormals = face.vertexNormals\n\n faces.push(\n getNormalIndex(vertexNormals[0]),\n getNormalIndex(vertexNormals[1]),\n getNormalIndex(vertexNormals[2]),\n )\n }\n\n if (hasFaceColor) {\n faces.push(getColorIndex(face.color))\n }\n\n if (hasFaceVertexColor) {\n const vertexColors = face.vertexColors\n\n faces.push(getColorIndex(vertexColors[0]), getColorIndex(vertexColors[1]), getColorIndex(vertexColors[2]))\n }\n }\n\n function setBit(value, position, enabled) {\n return enabled ? value | (1 << position) : value & ~(1 << position)\n }\n\n function getNormalIndex(normal) {\n const hash = normal.x.toString() + normal.y.toString() + normal.z.toString()\n\n if (normalsHash[hash] !== undefined) {\n return normalsHash[hash]\n }\n\n normalsHash[hash] = normals.length / 3\n normals.push(normal.x, normal.y, normal.z)\n\n return normalsHash[hash]\n }\n\n function getColorIndex(color) {\n const hash = color.r.toString() + color.g.toString() + color.b.toString()\n\n if (colorsHash[hash] !== undefined) {\n return colorsHash[hash]\n }\n\n colorsHash[hash] = colors.length\n colors.push(color.getHex())\n\n return colorsHash[hash]\n }\n\n function getUvIndex(uv) {\n const hash = uv.x.toString() + uv.y.toString()\n\n if (uvsHash[hash] !== undefined) {\n return uvsHash[hash]\n }\n\n uvsHash[hash] = uvs.length / 2\n uvs.push(uv.x, uv.y)\n\n return uvsHash[hash]\n }\n\n data.data = {}\n\n data.data.vertices = vertices\n data.data.normals = normals\n if (colors.length > 0) data.data.colors = colors\n if (uvs.length > 0) data.data.uvs = [uvs] // temporal backward compatibility\n data.data.faces = faces\n\n return data\n }\n\n clone() {\n /*\n\t\t // Handle primitives\n\n\t\t const parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t const values = [];\n\n\t\t for ( const key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t const geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n return new Geometry().copy(this)\n }\n\n copy(source) {\n // reset\n\n this.vertices = []\n this.colors = []\n this.faces = []\n this.faceVertexUvs = [[]]\n this.morphTargets = []\n this.morphNormals = []\n this.skinWeights = []\n this.skinIndices = []\n this.lineDistances = []\n this.boundingBox = null\n this.boundingSphere = null\n\n // name\n\n this.name = source.name\n\n // vertices\n\n const vertices = source.vertices\n\n for (let i = 0, il = vertices.length; i < il; i++) {\n this.vertices.push(vertices[i].clone())\n }\n\n // colors\n\n const colors = source.colors\n\n for (let i = 0, il = colors.length; i < il; i++) {\n this.colors.push(colors[i].clone())\n }\n\n // faces\n\n const faces = source.faces\n\n for (let i = 0, il = faces.length; i < il; i++) {\n this.faces.push(faces[i].clone())\n }\n\n // face vertex uvs\n\n for (let i = 0, il = source.faceVertexUvs.length; i < il; i++) {\n const faceVertexUvs = source.faceVertexUvs[i]\n\n if (this.faceVertexUvs[i] === undefined) {\n this.faceVertexUvs[i] = []\n }\n\n for (let j = 0, jl = faceVertexUvs.length; j < jl; j++) {\n const uvs = faceVertexUvs[j],\n uvsCopy = []\n\n for (let k = 0, kl = uvs.length; k < kl; k++) {\n const uv = uvs[k]\n\n uvsCopy.push(uv.clone())\n }\n\n this.faceVertexUvs[i].push(uvsCopy)\n }\n }\n\n // morph targets\n\n const morphTargets = source.morphTargets\n\n for (let i = 0, il = morphTargets.length; i < il; i++) {\n const morphTarget = {}\n morphTarget.name = morphTargets[i].name\n\n // vertices\n\n if (morphTargets[i].vertices !== undefined) {\n morphTarget.vertices = []\n\n for (let j = 0, jl = morphTargets[i].vertices.length; j < jl; j++) {\n morphTarget.vertices.push(morphTargets[i].vertices[j].clone())\n }\n }\n\n // normals\n\n if (morphTargets[i].normals !== undefined) {\n morphTarget.normals = []\n\n for (let j = 0, jl = morphTargets[i].normals.length; j < jl; j++) {\n morphTarget.normals.push(morphTargets[i].normals[j].clone())\n }\n }\n\n this.morphTargets.push(morphTarget)\n }\n\n // morph normals\n\n const morphNormals = source.morphNormals\n\n for (let i = 0, il = morphNormals.length; i < il; i++) {\n const morphNormal = {}\n\n // vertex normals\n\n if (morphNormals[i].vertexNormals !== undefined) {\n morphNormal.vertexNormals = []\n\n for (let j = 0, jl = morphNormals[i].vertexNormals.length; j < jl; j++) {\n const srcVertexNormal = morphNormals[i].vertexNormals[j]\n const destVertexNormal = {}\n\n destVertexNormal.a = srcVertexNormal.a.clone()\n destVertexNormal.b = srcVertexNormal.b.clone()\n destVertexNormal.c = srcVertexNormal.c.clone()\n\n morphNormal.vertexNormals.push(destVertexNormal)\n }\n }\n\n // face normals\n\n if (morphNormals[i].faceNormals !== undefined) {\n morphNormal.faceNormals = []\n\n for (let j = 0, jl = morphNormals[i].faceNormals.length; j < jl; j++) {\n morphNormal.faceNormals.push(morphNormals[i].faceNormals[j].clone())\n }\n }\n\n this.morphNormals.push(morphNormal)\n }\n\n // skin weights\n\n const skinWeights = source.skinWeights\n\n for (let i = 0, il = skinWeights.length; i < il; i++) {\n this.skinWeights.push(skinWeights[i].clone())\n }\n\n // skin indices\n\n const skinIndices = source.skinIndices\n\n for (let i = 0, il = skinIndices.length; i < il; i++) {\n this.skinIndices.push(skinIndices[i].clone())\n }\n\n // line distances\n\n const lineDistances = source.lineDistances\n\n for (let i = 0, il = lineDistances.length; i < il; i++) {\n this.lineDistances.push(lineDistances[i])\n }\n\n // bounding box\n\n const boundingBox = source.boundingBox\n\n if (boundingBox !== null) {\n this.boundingBox = boundingBox.clone()\n }\n\n // bounding sphere\n\n const boundingSphere = source.boundingSphere\n\n if (boundingSphere !== null) {\n this.boundingSphere = boundingSphere.clone()\n }\n\n // update flags\n\n this.elementsNeedUpdate = source.elementsNeedUpdate\n this.verticesNeedUpdate = source.verticesNeedUpdate\n this.uvsNeedUpdate = source.uvsNeedUpdate\n this.normalsNeedUpdate = source.normalsNeedUpdate\n this.colorsNeedUpdate = source.colorsNeedUpdate\n this.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate\n this.groupsNeedUpdate = source.groupsNeedUpdate\n\n return this\n }\n\n toBufferGeometry() {\n const geometry = new DirectGeometry().fromGeometry(this)\n\n const buffergeometry = new BufferGeometry()\n\n const positions = new Float32Array(geometry.vertices.length * 3)\n buffergeometry.setAttribute('position', new BufferAttribute(positions, 3).copyVector3sArray(geometry.vertices))\n\n if (geometry.normals.length > 0) {\n const normals = new Float32Array(geometry.normals.length * 3)\n buffergeometry.setAttribute('normal', new BufferAttribute(normals, 3).copyVector3sArray(geometry.normals))\n }\n\n if (geometry.colors.length > 0) {\n const colors = new Float32Array(geometry.colors.length * 3)\n buffergeometry.setAttribute('color', new BufferAttribute(colors, 3).copyColorsArray(geometry.colors))\n }\n\n if (geometry.uvs.length > 0) {\n const uvs = new Float32Array(geometry.uvs.length * 2)\n buffergeometry.setAttribute('uv', new BufferAttribute(uvs, 2).copyVector2sArray(geometry.uvs))\n }\n\n if (geometry.uvs2.length > 0) {\n const uvs2 = new Float32Array(geometry.uvs2.length * 2)\n buffergeometry.setAttribute('uv2', new BufferAttribute(uvs2, 2).copyVector2sArray(geometry.uvs2))\n }\n\n // groups\n\n buffergeometry.groups = geometry.groups\n\n // morphs\n\n for (let name in geometry.morphTargets) {\n const array = []\n const morphTargets = geometry.morphTargets[name]\n\n for (let i = 0, l = morphTargets.length; i < l; i++) {\n const morphTarget = morphTargets[i]\n\n const attribute = new Float32BufferAttribute(morphTarget.data.length * 3, 3)\n attribute.name = morphTarget.name\n\n array.push(attribute.copyVector3sArray(morphTarget.data))\n }\n\n buffergeometry.morphAttributes[name] = array\n }\n\n // skinning\n\n if (geometry.skinIndices.length > 0) {\n const skinIndices = new Float32BufferAttribute(geometry.skinIndices.length * 4, 4)\n buffergeometry.setAttribute('skinIndex', skinIndices.copyVector4sArray(geometry.skinIndices))\n }\n\n if (geometry.skinWeights.length > 0) {\n const skinWeights = new Float32BufferAttribute(geometry.skinWeights.length * 4, 4)\n buffergeometry.setAttribute('skinWeight', skinWeights.copyVector4sArray(geometry.skinWeights))\n }\n\n //\n\n if (geometry.boundingSphere !== null) {\n buffergeometry.boundingSphere = geometry.boundingSphere.clone()\n }\n\n if (geometry.boundingBox !== null) {\n buffergeometry.boundingBox = geometry.boundingBox.clone()\n }\n\n return buffergeometry\n }\n\n computeTangents() {\n console.error('THREE.Geometry: .computeTangents() has been removed.')\n }\n\n computeLineDistances() {\n console.error(\n 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.',\n )\n }\n\n applyMatrix(matrix) {\n console.warn('THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4().')\n return this.applyMatrix4(matrix)\n }\n\n dispose() {\n this.dispatchEvent({ type: 'dispose' })\n }\n }\n\n return Geometry\n})()\n\nclass DirectGeometry {\n constructor() {\n this.vertices = []\n this.normals = []\n this.colors = []\n this.uvs = []\n this.uvs2 = []\n\n this.groups = []\n\n this.morphTargets = {}\n\n this.skinWeights = []\n this.skinIndices = []\n\n // this.lineDistances = [];\n\n this.boundingBox = null\n this.boundingSphere = null\n\n // update flags\n\n this.verticesNeedUpdate = false\n this.normalsNeedUpdate = false\n this.colorsNeedUpdate = false\n this.uvsNeedUpdate = false\n this.groupsNeedUpdate = false\n }\n\n computeGroups(geometry) {\n const groups = []\n\n let group, i\n let materialIndex = undefined\n\n const faces = geometry.faces\n\n for (i = 0; i < faces.length; i++) {\n const face = faces[i]\n\n // materials\n\n if (face.materialIndex !== materialIndex) {\n materialIndex = face.materialIndex\n\n if (group !== undefined) {\n group.count = i * 3 - group.start\n groups.push(group)\n }\n\n group = {\n start: i * 3,\n materialIndex,\n }\n }\n }\n\n if (group !== undefined) {\n group.count = i * 3 - group.start\n groups.push(group)\n }\n\n this.groups = groups\n }\n\n fromGeometry(geometry) {\n const faces = geometry.faces\n const vertices = geometry.vertices\n const faceVertexUvs = geometry.faceVertexUvs\n\n const hasFaceVertexUv = faceVertexUvs[0] && faceVertexUvs[0].length > 0\n const hasFaceVertexUv2 = faceVertexUvs[1] && faceVertexUvs[1].length > 0\n\n // morphs\n\n const morphTargets = geometry.morphTargets\n const morphTargetsLength = morphTargets.length\n\n let morphTargetsPosition\n\n if (morphTargetsLength > 0) {\n morphTargetsPosition = []\n\n for (let i = 0; i < morphTargetsLength; i++) {\n morphTargetsPosition[i] = {\n name: morphTargets[i].name,\n data: [],\n }\n }\n\n this.morphTargets.position = morphTargetsPosition\n }\n\n const morphNormals = geometry.morphNormals\n const morphNormalsLength = morphNormals.length\n\n let morphTargetsNormal\n\n if (morphNormalsLength > 0) {\n morphTargetsNormal = []\n\n for (let i = 0; i < morphNormalsLength; i++) {\n morphTargetsNormal[i] = {\n name: morphNormals[i].name,\n data: [],\n }\n }\n\n this.morphTargets.normal = morphTargetsNormal\n }\n\n // skins\n\n const skinIndices = geometry.skinIndices\n const skinWeights = geometry.skinWeights\n\n const hasSkinIndices = skinIndices.length === vertices.length\n const hasSkinWeights = skinWeights.length === vertices.length\n\n //\n\n if (vertices.length > 0 && faces.length === 0) {\n console.error('THREE.DirectGeometry: Faceless geometries are not supported.')\n }\n\n for (let i = 0; i < faces.length; i++) {\n const face = faces[i]\n\n this.vertices.push(vertices[face.a], vertices[face.b], vertices[face.c])\n\n const vertexNormals = face.vertexNormals\n\n if (vertexNormals.length === 3) {\n this.normals.push(vertexNormals[0], vertexNormals[1], vertexNormals[2])\n } else {\n const normal = face.normal\n\n this.normals.push(normal, normal, normal)\n }\n\n const vertexColors = face.vertexColors\n\n if (vertexColors.length === 3) {\n this.colors.push(vertexColors[0], vertexColors[1], vertexColors[2])\n } else {\n const color = face.color\n\n this.colors.push(color, color, color)\n }\n\n if (hasFaceVertexUv === true) {\n const vertexUvs = faceVertexUvs[0][i]\n\n if (vertexUvs !== undefined) {\n this.uvs.push(vertexUvs[0], vertexUvs[1], vertexUvs[2])\n } else {\n console.warn('THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i)\n\n this.uvs.push(new Vector2(), new Vector2(), new Vector2())\n }\n }\n\n if (hasFaceVertexUv2 === true) {\n const vertexUvs = faceVertexUvs[1][i]\n\n if (vertexUvs !== undefined) {\n this.uvs2.push(vertexUvs[0], vertexUvs[1], vertexUvs[2])\n } else {\n console.warn('THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i)\n\n this.uvs2.push(new Vector2(), new Vector2(), new Vector2())\n }\n }\n\n // morphs\n\n for (let j = 0; j < morphTargetsLength; j++) {\n const morphTarget = morphTargets[j].vertices\n\n morphTargetsPosition[j].data.push(morphTarget[face.a], morphTarget[face.b], morphTarget[face.c])\n }\n\n for (let j = 0; j < morphNormalsLength; j++) {\n const morphNormal = morphNormals[j].vertexNormals[i]\n\n morphTargetsNormal[j].data.push(morphNormal.a, morphNormal.b, morphNormal.c)\n }\n\n // skins\n\n if (hasSkinIndices) {\n this.skinIndices.push(skinIndices[face.a], skinIndices[face.b], skinIndices[face.c])\n }\n\n if (hasSkinWeights) {\n this.skinWeights.push(skinWeights[face.a], skinWeights[face.b], skinWeights[face.c])\n }\n }\n\n this.computeGroups(geometry)\n\n this.verticesNeedUpdate = geometry.verticesNeedUpdate\n this.normalsNeedUpdate = geometry.normalsNeedUpdate\n this.colorsNeedUpdate = geometry.colorsNeedUpdate\n this.uvsNeedUpdate = geometry.uvsNeedUpdate\n this.groupsNeedUpdate = geometry.groupsNeedUpdate\n\n if (geometry.boundingSphere !== null) {\n this.boundingSphere = geometry.boundingSphere.clone()\n }\n\n if (geometry.boundingBox !== null) {\n this.boundingBox = geometry.boundingBox.clone()\n }\n\n return this\n }\n}\n\nclass Face3 {\n constructor(a, b, c, normal, color, materialIndex = 0) {\n this.a = a\n this.b = b\n this.c = c\n\n this.normal = normal && normal.isVector3 ? normal : new Vector3()\n this.vertexNormals = Array.isArray(normal) ? normal : []\n\n this.color = color && color.isColor ? color : new Color()\n this.vertexColors = Array.isArray(color) ? color : []\n\n this.materialIndex = materialIndex\n }\n\n clone() {\n return new this.constructor().copy(this)\n }\n\n copy(source) {\n this.a = source.a\n this.b = source.b\n this.c = source.c\n\n this.normal.copy(source.normal)\n this.color.copy(source.color)\n\n this.materialIndex = source.materialIndex\n\n for (let i = 0, il = source.vertexNormals.length; i < il; i++) {\n this.vertexNormals[i] = source.vertexNormals[i].clone()\n }\n\n for (let i = 0, il = source.vertexColors.length; i < il; i++) {\n this.vertexColors[i] = source.vertexColors[i].clone()\n }\n\n return this\n }\n}\n\nexport { Face3, Geometry }\n"],"names":["Geometry"],"mappings":"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"}
1
+ {"version":3,"file":"Geometry.js","sources":["../../src/deprecated/Geometry.js"],"sourcesContent":["import {\n Box3,\n BufferAttribute,\n BufferGeometry,\n Color,\n EventDispatcher,\n Float32BufferAttribute,\n Matrix3,\n Matrix4,\n MathUtils,\n Object3D,\n Sphere,\n Vector2,\n Vector3,\n} from 'three'\n\nconst _m1 = new Matrix4()\nconst _obj = new Object3D()\nconst _offset = new Vector3()\n\nclass Geometry extends EventDispatcher {\n static createBufferGeometryFromObject(object) {\n let buffergeometry = new BufferGeometry()\n\n const geometry = object.geometry\n\n if (object.isPoints || object.isLine) {\n const positions = new Float32BufferAttribute(geometry.vertices.length * 3, 3)\n const colors = new Float32BufferAttribute(geometry.colors.length * 3, 3)\n\n buffergeometry.setAttribute('position', positions.copyVector3sArray(geometry.vertices))\n buffergeometry.setAttribute('color', colors.copyColorsArray(geometry.colors))\n\n if (geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length) {\n const lineDistances = new Float32BufferAttribute(geometry.lineDistances.length, 1)\n\n buffergeometry.setAttribute('lineDistance', lineDistances.copyArray(geometry.lineDistances))\n }\n\n if (geometry.boundingSphere !== null) {\n buffergeometry.boundingSphere = geometry.boundingSphere.clone()\n }\n\n if (geometry.boundingBox !== null) {\n buffergeometry.boundingBox = geometry.boundingBox.clone()\n }\n } else if (object.isMesh) {\n buffergeometry = geometry.toBufferGeometry()\n }\n\n return buffergeometry\n }\n\n constructor() {\n super()\n this.isGeometry = true\n this.uuid = MathUtils.generateUUID()\n\n this.name = ''\n this.type = 'Geometry'\n\n this.vertices = []\n this.colors = []\n this.faces = []\n this.faceVertexUvs = [[]]\n\n this.morphTargets = []\n this.morphNormals = []\n\n this.skinWeights = []\n this.skinIndices = []\n\n this.lineDistances = []\n\n this.boundingBox = null\n this.boundingSphere = null\n\n // update flags\n\n this.elementsNeedUpdate = false\n this.verticesNeedUpdate = false\n this.uvsNeedUpdate = false\n this.normalsNeedUpdate = false\n this.colorsNeedUpdate = false\n this.lineDistancesNeedUpdate = false\n this.groupsNeedUpdate = false\n }\n\n applyMatrix4(matrix) {\n const normalMatrix = new Matrix3().getNormalMatrix(matrix)\n\n for (let i = 0, il = this.vertices.length; i < il; i++) {\n const vertex = this.vertices[i]\n vertex.applyMatrix4(matrix)\n }\n\n for (let i = 0, il = this.faces.length; i < il; i++) {\n const face = this.faces[i]\n face.normal.applyMatrix3(normalMatrix).normalize()\n\n for (let j = 0, jl = face.vertexNormals.length; j < jl; j++) {\n face.vertexNormals[j].applyMatrix3(normalMatrix).normalize()\n }\n }\n\n if (this.boundingBox !== null) {\n this.computeBoundingBox()\n }\n\n if (this.boundingSphere !== null) {\n this.computeBoundingSphere()\n }\n\n this.verticesNeedUpdate = true\n this.normalsNeedUpdate = true\n\n return this\n }\n\n rotateX(angle) {\n // rotate geometry around world x-axis\n\n _m1.makeRotationX(angle)\n\n this.applyMatrix4(_m1)\n\n return this\n }\n\n rotateY(angle) {\n // rotate geometry around world y-axis\n\n _m1.makeRotationY(angle)\n\n this.applyMatrix4(_m1)\n\n return this\n }\n\n rotateZ(angle) {\n // rotate geometry around world z-axis\n\n _m1.makeRotationZ(angle)\n\n this.applyMatrix4(_m1)\n\n return this\n }\n\n translate(x, y, z) {\n // translate geometry\n\n _m1.makeTranslation(x, y, z)\n\n this.applyMatrix4(_m1)\n\n return this\n }\n\n scale(x, y, z) {\n // scale geometry\n\n _m1.makeScale(x, y, z)\n\n this.applyMatrix4(_m1)\n\n return this\n }\n\n lookAt(vector) {\n _obj.lookAt(vector)\n\n _obj.updateMatrix()\n\n this.applyMatrix4(_obj.matrix)\n\n return this\n }\n\n fromBufferGeometry(geometry) {\n const scope = this\n\n const index = geometry.index !== null ? geometry.index : undefined\n const attributes = geometry.attributes\n\n if (attributes.position === undefined) {\n console.error('THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion.')\n return this\n }\n\n const position = attributes.position\n const normal = attributes.normal\n const color = attributes.color\n const uv = attributes.uv\n const uv2 = attributes.uv2\n\n if (uv2 !== undefined) this.faceVertexUvs[1] = []\n\n for (let i = 0; i < position.count; i++) {\n scope.vertices.push(new Vector3().fromBufferAttribute(position, i))\n\n if (color !== undefined) {\n scope.colors.push(new Color().fromBufferAttribute(color, i))\n }\n }\n\n function addFace(a, b, c, materialIndex) {\n const vertexColors =\n color === undefined ? [] : [scope.colors[a].clone(), scope.colors[b].clone(), scope.colors[c].clone()]\n\n const vertexNormals =\n normal === undefined\n ? []\n : [\n new Vector3().fromBufferAttribute(normal, a),\n new Vector3().fromBufferAttribute(normal, b),\n new Vector3().fromBufferAttribute(normal, c),\n ]\n\n const face = new Face3(a, b, c, vertexNormals, vertexColors, materialIndex)\n\n scope.faces.push(face)\n\n if (uv !== undefined) {\n scope.faceVertexUvs[0].push([\n new Vector2().fromBufferAttribute(uv, a),\n new Vector2().fromBufferAttribute(uv, b),\n new Vector2().fromBufferAttribute(uv, c),\n ])\n }\n\n if (uv2 !== undefined) {\n scope.faceVertexUvs[1].push([\n new Vector2().fromBufferAttribute(uv2, a),\n new Vector2().fromBufferAttribute(uv2, b),\n new Vector2().fromBufferAttribute(uv2, c),\n ])\n }\n }\n\n const groups = geometry.groups\n\n if (groups.length > 0) {\n for (let i = 0; i < groups.length; i++) {\n const group = groups[i]\n\n const start = group.start\n const count = group.count\n\n for (let j = start, jl = start + count; j < jl; j += 3) {\n if (index !== undefined) {\n addFace(index.getX(j), index.getX(j + 1), index.getX(j + 2), group.materialIndex)\n } else {\n addFace(j, j + 1, j + 2, group.materialIndex)\n }\n }\n }\n } else {\n if (index !== undefined) {\n for (let i = 0; i < index.count; i += 3) {\n addFace(index.getX(i), index.getX(i + 1), index.getX(i + 2))\n }\n } else {\n for (let i = 0; i < position.count; i += 3) {\n addFace(i, i + 1, i + 2)\n }\n }\n }\n\n this.computeFaceNormals()\n\n if (geometry.boundingBox !== null) {\n this.boundingBox = geometry.boundingBox.clone()\n }\n\n if (geometry.boundingSphere !== null) {\n this.boundingSphere = geometry.boundingSphere.clone()\n }\n\n return this\n }\n\n center() {\n this.computeBoundingBox()\n\n this.boundingBox.getCenter(_offset).negate()\n\n this.translate(_offset.x, _offset.y, _offset.z)\n\n return this\n }\n\n normalize() {\n this.computeBoundingSphere()\n\n const center = this.boundingSphere.center\n const radius = this.boundingSphere.radius\n\n const s = radius === 0 ? 1 : 1.0 / radius\n\n const matrix = new Matrix4()\n matrix.set(s, 0, 0, -s * center.x, 0, s, 0, -s * center.y, 0, 0, s, -s * center.z, 0, 0, 0, 1)\n\n this.applyMatrix4(matrix)\n\n return this\n }\n\n computeFaceNormals() {\n const cb = new Vector3(),\n ab = new Vector3()\n\n for (let f = 0, fl = this.faces.length; f < fl; f++) {\n const face = this.faces[f]\n\n const vA = this.vertices[face.a]\n const vB = this.vertices[face.b]\n const vC = this.vertices[face.c]\n\n cb.subVectors(vC, vB)\n ab.subVectors(vA, vB)\n cb.cross(ab)\n\n cb.normalize()\n\n face.normal.copy(cb)\n }\n }\n\n computeVertexNormals(areaWeighted = true) {\n const vertices = new Array(this.vertices.length)\n\n for (let v = 0, vl = this.vertices.length; v < vl; v++) {\n vertices[v] = new Vector3()\n }\n\n if (areaWeighted) {\n // vertex normals weighted by triangle areas\n // http://www.iquilezles.org/www/articles/normals/normals.htm\n\n const cb = new Vector3(),\n ab = new Vector3()\n\n for (let f = 0, fl = this.faces.length; f < fl; f++) {\n const face = this.faces[f]\n\n const vA = this.vertices[face.a]\n const vB = this.vertices[face.b]\n const vC = this.vertices[face.c]\n\n cb.subVectors(vC, vB)\n ab.subVectors(vA, vB)\n cb.cross(ab)\n\n vertices[face.a].add(cb)\n vertices[face.b].add(cb)\n vertices[face.c].add(cb)\n }\n } else {\n this.computeFaceNormals()\n\n for (let f = 0, fl = this.faces.length; f < fl; f++) {\n const face = this.faces[f]\n\n vertices[face.a].add(face.normal)\n vertices[face.b].add(face.normal)\n vertices[face.c].add(face.normal)\n }\n }\n\n for (let v = 0, vl = this.vertices.length; v < vl; v++) {\n vertices[v].normalize()\n }\n\n for (let f = 0, fl = this.faces.length; f < fl; f++) {\n const face = this.faces[f]\n\n const vertexNormals = face.vertexNormals\n\n if (vertexNormals.length === 3) {\n vertexNormals[0].copy(vertices[face.a])\n vertexNormals[1].copy(vertices[face.b])\n vertexNormals[2].copy(vertices[face.c])\n } else {\n vertexNormals[0] = vertices[face.a].clone()\n vertexNormals[1] = vertices[face.b].clone()\n vertexNormals[2] = vertices[face.c].clone()\n }\n }\n\n if (this.faces.length > 0) {\n this.normalsNeedUpdate = true\n }\n }\n\n computeFlatVertexNormals() {\n this.computeFaceNormals()\n\n for (let f = 0, fl = this.faces.length; f < fl; f++) {\n const face = this.faces[f]\n\n const vertexNormals = face.vertexNormals\n\n if (vertexNormals.length === 3) {\n vertexNormals[0].copy(face.normal)\n vertexNormals[1].copy(face.normal)\n vertexNormals[2].copy(face.normal)\n } else {\n vertexNormals[0] = face.normal.clone()\n vertexNormals[1] = face.normal.clone()\n vertexNormals[2] = face.normal.clone()\n }\n }\n\n if (this.faces.length > 0) {\n this.normalsNeedUpdate = true\n }\n }\n\n computeMorphNormals() {\n // save original normals\n // - create temp variables on first access\n // otherwise just copy (for faster repeated calls)\n\n for (let f = 0, fl = this.faces.length; f < fl; f++) {\n const face = this.faces[f]\n\n if (!face.__originalFaceNormal) {\n face.__originalFaceNormal = face.normal.clone()\n } else {\n face.__originalFaceNormal.copy(face.normal)\n }\n\n if (!face.__originalVertexNormals) face.__originalVertexNormals = []\n\n for (let i = 0, il = face.vertexNormals.length; i < il; i++) {\n if (!face.__originalVertexNormals[i]) {\n face.__originalVertexNormals[i] = face.vertexNormals[i].clone()\n } else {\n face.__originalVertexNormals[i].copy(face.vertexNormals[i])\n }\n }\n }\n\n // use temp geometry to compute face and vertex normals for each morph\n\n const tmpGeo = new Geometry()\n tmpGeo.faces = this.faces\n\n for (let i = 0, il = this.morphTargets.length; i < il; i++) {\n // create on first access\n\n if (!this.morphNormals[i]) {\n this.morphNormals[i] = {}\n this.morphNormals[i].faceNormals = []\n this.morphNormals[i].vertexNormals = []\n\n const dstNormalsFace = this.morphNormals[i].faceNormals\n const dstNormalsVertex = this.morphNormals[i].vertexNormals\n\n for (let f = 0, fl = this.faces.length; f < fl; f++) {\n const faceNormal = new Vector3()\n const vertexNormals = {\n a: new Vector3(),\n b: new Vector3(),\n c: new Vector3(),\n }\n\n dstNormalsFace.push(faceNormal)\n dstNormalsVertex.push(vertexNormals)\n }\n }\n\n const morphNormals = this.morphNormals[i]\n\n // set vertices to morph target\n\n tmpGeo.vertices = this.morphTargets[i].vertices\n\n // compute morph normals\n\n tmpGeo.computeFaceNormals()\n tmpGeo.computeVertexNormals()\n\n // store morph normals\n\n for (let f = 0, fl = this.faces.length; f < fl; f++) {\n const face = this.faces[f]\n\n const faceNormal = morphNormals.faceNormals[f]\n const vertexNormals = morphNormals.vertexNormals[f]\n\n faceNormal.copy(face.normal)\n\n vertexNormals.a.copy(face.vertexNormals[0])\n vertexNormals.b.copy(face.vertexNormals[1])\n vertexNormals.c.copy(face.vertexNormals[2])\n }\n }\n\n // restore original normals\n\n for (let f = 0, fl = this.faces.length; f < fl; f++) {\n const face = this.faces[f]\n\n face.normal = face.__originalFaceNormal\n face.vertexNormals = face.__originalVertexNormals\n }\n }\n\n computeBoundingBox() {\n if (this.boundingBox === null) {\n this.boundingBox = new Box3()\n }\n\n this.boundingBox.setFromPoints(this.vertices)\n }\n\n computeBoundingSphere() {\n if (this.boundingSphere === null) {\n this.boundingSphere = new Sphere()\n }\n\n this.boundingSphere.setFromPoints(this.vertices)\n }\n\n merge(geometry, matrix, materialIndexOffset = 0) {\n if (!(geometry && geometry.isGeometry)) {\n console.error('THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry)\n return\n }\n\n let normalMatrix\n const vertexOffset = this.vertices.length,\n vertices1 = this.vertices,\n vertices2 = geometry.vertices,\n faces1 = this.faces,\n faces2 = geometry.faces,\n colors1 = this.colors,\n colors2 = geometry.colors\n\n if (matrix !== undefined) {\n normalMatrix = new Matrix3().getNormalMatrix(matrix)\n }\n\n // vertices\n\n for (let i = 0, il = vertices2.length; i < il; i++) {\n const vertex = vertices2[i]\n\n const vertexCopy = vertex.clone()\n\n if (matrix !== undefined) vertexCopy.applyMatrix4(matrix)\n\n vertices1.push(vertexCopy)\n }\n\n // colors\n\n for (let i = 0, il = colors2.length; i < il; i++) {\n colors1.push(colors2[i].clone())\n }\n\n // faces\n\n for (let i = 0, il = faces2.length; i < il; i++) {\n const face = faces2[i]\n let normal, color\n const faceVertexNormals = face.vertexNormals,\n faceVertexColors = face.vertexColors\n\n const faceCopy = new Face3(face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset)\n faceCopy.normal.copy(face.normal)\n\n if (normalMatrix !== undefined) {\n faceCopy.normal.applyMatrix3(normalMatrix).normalize()\n }\n\n for (let j = 0, jl = faceVertexNormals.length; j < jl; j++) {\n normal = faceVertexNormals[j].clone()\n\n if (normalMatrix !== undefined) {\n normal.applyMatrix3(normalMatrix).normalize()\n }\n\n faceCopy.vertexNormals.push(normal)\n }\n\n faceCopy.color.copy(face.color)\n\n for (let j = 0, jl = faceVertexColors.length; j < jl; j++) {\n color = faceVertexColors[j]\n faceCopy.vertexColors.push(color.clone())\n }\n\n faceCopy.materialIndex = face.materialIndex + materialIndexOffset\n\n faces1.push(faceCopy)\n }\n\n // uvs\n\n for (let i = 0, il = geometry.faceVertexUvs.length; i < il; i++) {\n const faceVertexUvs2 = geometry.faceVertexUvs[i]\n\n if (this.faceVertexUvs[i] === undefined) this.faceVertexUvs[i] = []\n\n for (let j = 0, jl = faceVertexUvs2.length; j < jl; j++) {\n const uvs2 = faceVertexUvs2[j],\n uvsCopy = []\n\n for (let k = 0, kl = uvs2.length; k < kl; k++) {\n uvsCopy.push(uvs2[k].clone())\n }\n\n this.faceVertexUvs[i].push(uvsCopy)\n }\n }\n }\n\n mergeMesh(mesh) {\n if (!(mesh && mesh.isMesh)) {\n console.error('THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh)\n return\n }\n\n if (mesh.matrixAutoUpdate) mesh.updateMatrix()\n\n this.merge(mesh.geometry, mesh.matrix)\n }\n\n /*\n * Checks for duplicate vertices with hashmap.\n * Duplicated vertices are removed\n * and faces' vertices are updated.\n */\n\n mergeVertices(precisionPoints = 4) {\n const verticesMap = {} // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n const unique = [],\n changes = []\n\n const precision = Math.pow(10, precisionPoints)\n\n for (let i = 0, il = this.vertices.length; i < il; i++) {\n const v = this.vertices[i]\n const key = `${Math.round(v.x * precision)}_${Math.round(v.y * precision)}_${Math.round(v.z * precision)}`\n\n if (verticesMap[key] === undefined) {\n verticesMap[key] = i\n unique.push(this.vertices[i])\n changes[i] = unique.length - 1\n } else {\n //console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\n changes[i] = changes[verticesMap[key]]\n }\n }\n\n // if faces are completely degenerate after merging vertices, we\n // have to remove them from the geometry.\n const faceIndicesToRemove = []\n\n for (let i = 0, il = this.faces.length; i < il; i++) {\n const face = this.faces[i]\n\n face.a = changes[face.a]\n face.b = changes[face.b]\n face.c = changes[face.c]\n\n const indices = [face.a, face.b, face.c]\n\n // if any duplicate vertices are found in a Face3\n // we have to remove the face as nothing can be saved\n for (let n = 0; n < 3; n++) {\n if (indices[n] === indices[(n + 1) % 3]) {\n faceIndicesToRemove.push(i)\n break\n }\n }\n }\n\n for (let i = faceIndicesToRemove.length - 1; i >= 0; i--) {\n const idx = faceIndicesToRemove[i]\n\n this.faces.splice(idx, 1)\n\n for (let j = 0, jl = this.faceVertexUvs.length; j < jl; j++) {\n this.faceVertexUvs[j].splice(idx, 1)\n }\n }\n\n // Use unique set of vertices\n\n const diff = this.vertices.length - unique.length\n this.vertices = unique\n return diff\n }\n\n setFromPoints(points) {\n this.vertices = []\n\n for (let i = 0, l = points.length; i < l; i++) {\n const point = points[i]\n this.vertices.push(new Vector3(point.x, point.y, point.z || 0))\n }\n\n return this\n }\n\n sortFacesByMaterialIndex() {\n const faces = this.faces\n const length = faces.length\n\n // tag faces\n\n for (let i = 0; i < length; i++) {\n faces[i]._id = i\n }\n\n // sort faces\n\n function materialIndexSort(a, b) {\n return a.materialIndex - b.materialIndex\n }\n\n faces.sort(materialIndexSort)\n\n // sort uvs\n\n const uvs1 = this.faceVertexUvs[0]\n const uvs2 = this.faceVertexUvs[1]\n\n let newUvs1, newUvs2\n\n if (uvs1 && uvs1.length === length) newUvs1 = []\n if (uvs2 && uvs2.length === length) newUvs2 = []\n\n for (let i = 0; i < length; i++) {\n const id = faces[i]._id\n\n if (newUvs1) newUvs1.push(uvs1[id])\n if (newUvs2) newUvs2.push(uvs2[id])\n }\n\n if (newUvs1) this.faceVertexUvs[0] = newUvs1\n if (newUvs2) this.faceVertexUvs[1] = newUvs2\n }\n\n toJSON() {\n const data = {\n metadata: {\n version: 4.5,\n type: 'Geometry',\n generator: 'Geometry.toJSON',\n },\n }\n\n // standard Geometry serialization\n\n data.uuid = this.uuid\n data.type = this.type\n if (this.name !== '') data.name = this.name\n\n if (this.parameters !== undefined) {\n const parameters = this.parameters\n\n for (let key in parameters) {\n if (parameters[key] !== undefined) data[key] = parameters[key]\n }\n\n return data\n }\n\n const vertices = []\n\n for (let i = 0; i < this.vertices.length; i++) {\n const vertex = this.vertices[i]\n vertices.push(vertex.x, vertex.y, vertex.z)\n }\n\n const faces = []\n const normals = []\n const normalsHash = {}\n const colors = []\n const colorsHash = {}\n const uvs = []\n const uvsHash = {}\n\n for (let i = 0; i < this.faces.length; i++) {\n const face = this.faces[i]\n\n const hasMaterial = true\n const hasFaceUv = false // deprecated\n const hasFaceVertexUv = this.faceVertexUvs[0][i] !== undefined\n const hasFaceNormal = face.normal.length() > 0\n const hasFaceVertexNormal = face.vertexNormals.length > 0\n const hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1\n const hasFaceVertexColor = face.vertexColors.length > 0\n\n let faceType = 0\n\n faceType = setBit(faceType, 0, 0) // isQuad\n faceType = setBit(faceType, 1, hasMaterial)\n faceType = setBit(faceType, 2, hasFaceUv)\n faceType = setBit(faceType, 3, hasFaceVertexUv)\n faceType = setBit(faceType, 4, hasFaceNormal)\n faceType = setBit(faceType, 5, hasFaceVertexNormal)\n faceType = setBit(faceType, 6, hasFaceColor)\n faceType = setBit(faceType, 7, hasFaceVertexColor)\n\n faces.push(faceType)\n faces.push(face.a, face.b, face.c)\n faces.push(face.materialIndex)\n\n if (hasFaceVertexUv) {\n const faceVertexUvs = this.faceVertexUvs[0][i]\n\n faces.push(getUvIndex(faceVertexUvs[0]), getUvIndex(faceVertexUvs[1]), getUvIndex(faceVertexUvs[2]))\n }\n\n if (hasFaceNormal) {\n faces.push(getNormalIndex(face.normal))\n }\n\n if (hasFaceVertexNormal) {\n const vertexNormals = face.vertexNormals\n\n faces.push(getNormalIndex(vertexNormals[0]), getNormalIndex(vertexNormals[1]), getNormalIndex(vertexNormals[2]))\n }\n\n if (hasFaceColor) {\n faces.push(getColorIndex(face.color))\n }\n\n if (hasFaceVertexColor) {\n const vertexColors = face.vertexColors\n\n faces.push(getColorIndex(vertexColors[0]), getColorIndex(vertexColors[1]), getColorIndex(vertexColors[2]))\n }\n }\n\n function setBit(value, position, enabled) {\n return enabled ? value | (1 << position) : value & ~(1 << position)\n }\n\n function getNormalIndex(normal) {\n const hash = normal.x.toString() + normal.y.toString() + normal.z.toString()\n\n if (normalsHash[hash] !== undefined) {\n return normalsHash[hash]\n }\n\n normalsHash[hash] = normals.length / 3\n normals.push(normal.x, normal.y, normal.z)\n\n return normalsHash[hash]\n }\n\n function getColorIndex(color) {\n const hash = color.r.toString() + color.g.toString() + color.b.toString()\n\n if (colorsHash[hash] !== undefined) {\n return colorsHash[hash]\n }\n\n colorsHash[hash] = colors.length\n colors.push(color.getHex())\n\n return colorsHash[hash]\n }\n\n function getUvIndex(uv) {\n const hash = uv.x.toString() + uv.y.toString()\n\n if (uvsHash[hash] !== undefined) {\n return uvsHash[hash]\n }\n\n uvsHash[hash] = uvs.length / 2\n uvs.push(uv.x, uv.y)\n\n return uvsHash[hash]\n }\n\n data.data = {}\n\n data.data.vertices = vertices\n data.data.normals = normals\n if (colors.length > 0) data.data.colors = colors\n if (uvs.length > 0) data.data.uvs = [uvs] // temporal backward compatibility\n data.data.faces = faces\n\n return data\n }\n\n clone() {\n /*\n\t\t // Handle primitives\n\n\t\t const parameters = this.parameters;\n\n\t\t if ( parameters !== undefined ) {\n\n\t\t const values = [];\n\n\t\t for ( const key in parameters ) {\n\n\t\t values.push( parameters[ key ] );\n\n\t\t }\n\n\t\t const geometry = Object.create( this.constructor.prototype );\n\t\t this.constructor.apply( geometry, values );\n\t\t return geometry;\n\n\t\t }\n\n\t\t return new this.constructor().copy( this );\n\t\t */\n\n return new Geometry().copy(this)\n }\n\n copy(source) {\n // reset\n\n this.vertices = []\n this.colors = []\n this.faces = []\n this.faceVertexUvs = [[]]\n this.morphTargets = []\n this.morphNormals = []\n this.skinWeights = []\n this.skinIndices = []\n this.lineDistances = []\n this.boundingBox = null\n this.boundingSphere = null\n\n // name\n\n this.name = source.name\n\n // vertices\n\n const vertices = source.vertices\n\n for (let i = 0, il = vertices.length; i < il; i++) {\n this.vertices.push(vertices[i].clone())\n }\n\n // colors\n\n const colors = source.colors\n\n for (let i = 0, il = colors.length; i < il; i++) {\n this.colors.push(colors[i].clone())\n }\n\n // faces\n\n const faces = source.faces\n\n for (let i = 0, il = faces.length; i < il; i++) {\n this.faces.push(faces[i].clone())\n }\n\n // face vertex uvs\n\n for (let i = 0, il = source.faceVertexUvs.length; i < il; i++) {\n const faceVertexUvs = source.faceVertexUvs[i]\n\n if (this.faceVertexUvs[i] === undefined) {\n this.faceVertexUvs[i] = []\n }\n\n for (let j = 0, jl = faceVertexUvs.length; j < jl; j++) {\n const uvs = faceVertexUvs[j],\n uvsCopy = []\n\n for (let k = 0, kl = uvs.length; k < kl; k++) {\n const uv = uvs[k]\n\n uvsCopy.push(uv.clone())\n }\n\n this.faceVertexUvs[i].push(uvsCopy)\n }\n }\n\n // morph targets\n\n const morphTargets = source.morphTargets\n\n for (let i = 0, il = morphTargets.length; i < il; i++) {\n const morphTarget = {}\n morphTarget.name = morphTargets[i].name\n\n // vertices\n\n if (morphTargets[i].vertices !== undefined) {\n morphTarget.vertices = []\n\n for (let j = 0, jl = morphTargets[i].vertices.length; j < jl; j++) {\n morphTarget.vertices.push(morphTargets[i].vertices[j].clone())\n }\n }\n\n // normals\n\n if (morphTargets[i].normals !== undefined) {\n morphTarget.normals = []\n\n for (let j = 0, jl = morphTargets[i].normals.length; j < jl; j++) {\n morphTarget.normals.push(morphTargets[i].normals[j].clone())\n }\n }\n\n this.morphTargets.push(morphTarget)\n }\n\n // morph normals\n\n const morphNormals = source.morphNormals\n\n for (let i = 0, il = morphNormals.length; i < il; i++) {\n const morphNormal = {}\n\n // vertex normals\n\n if (morphNormals[i].vertexNormals !== undefined) {\n morphNormal.vertexNormals = []\n\n for (let j = 0, jl = morphNormals[i].vertexNormals.length; j < jl; j++) {\n const srcVertexNormal = morphNormals[i].vertexNormals[j]\n const destVertexNormal = {}\n\n destVertexNormal.a = srcVertexNormal.a.clone()\n destVertexNormal.b = srcVertexNormal.b.clone()\n destVertexNormal.c = srcVertexNormal.c.clone()\n\n morphNormal.vertexNormals.push(destVertexNormal)\n }\n }\n\n // face normals\n\n if (morphNormals[i].faceNormals !== undefined) {\n morphNormal.faceNormals = []\n\n for (let j = 0, jl = morphNormals[i].faceNormals.length; j < jl; j++) {\n morphNormal.faceNormals.push(morphNormals[i].faceNormals[j].clone())\n }\n }\n\n this.morphNormals.push(morphNormal)\n }\n\n // skin weights\n\n const skinWeights = source.skinWeights\n\n for (let i = 0, il = skinWeights.length; i < il; i++) {\n this.skinWeights.push(skinWeights[i].clone())\n }\n\n // skin indices\n\n const skinIndices = source.skinIndices\n\n for (let i = 0, il = skinIndices.length; i < il; i++) {\n this.skinIndices.push(skinIndices[i].clone())\n }\n\n // line distances\n\n const lineDistances = source.lineDistances\n\n for (let i = 0, il = lineDistances.length; i < il; i++) {\n this.lineDistances.push(lineDistances[i])\n }\n\n // bounding box\n\n const boundingBox = source.boundingBox\n\n if (boundingBox !== null) {\n this.boundingBox = boundingBox.clone()\n }\n\n // bounding sphere\n\n const boundingSphere = source.boundingSphere\n\n if (boundingSphere !== null) {\n this.boundingSphere = boundingSphere.clone()\n }\n\n // update flags\n\n this.elementsNeedUpdate = source.elementsNeedUpdate\n this.verticesNeedUpdate = source.verticesNeedUpdate\n this.uvsNeedUpdate = source.uvsNeedUpdate\n this.normalsNeedUpdate = source.normalsNeedUpdate\n this.colorsNeedUpdate = source.colorsNeedUpdate\n this.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate\n this.groupsNeedUpdate = source.groupsNeedUpdate\n\n return this\n }\n\n toBufferGeometry() {\n const geometry = new DirectGeometry().fromGeometry(this)\n\n const buffergeometry = new BufferGeometry()\n\n const positions = new Float32Array(geometry.vertices.length * 3)\n buffergeometry.setAttribute('position', new BufferAttribute(positions, 3).copyVector3sArray(geometry.vertices))\n\n if (geometry.normals.length > 0) {\n const normals = new Float32Array(geometry.normals.length * 3)\n buffergeometry.setAttribute('normal', new BufferAttribute(normals, 3).copyVector3sArray(geometry.normals))\n }\n\n if (geometry.colors.length > 0) {\n const colors = new Float32Array(geometry.colors.length * 3)\n buffergeometry.setAttribute('color', new BufferAttribute(colors, 3).copyColorsArray(geometry.colors))\n }\n\n if (geometry.uvs.length > 0) {\n const uvs = new Float32Array(geometry.uvs.length * 2)\n buffergeometry.setAttribute('uv', new BufferAttribute(uvs, 2).copyVector2sArray(geometry.uvs))\n }\n\n if (geometry.uvs2.length > 0) {\n const uvs2 = new Float32Array(geometry.uvs2.length * 2)\n buffergeometry.setAttribute('uv2', new BufferAttribute(uvs2, 2).copyVector2sArray(geometry.uvs2))\n }\n\n // groups\n\n buffergeometry.groups = geometry.groups\n\n // morphs\n\n for (let name in geometry.morphTargets) {\n const array = []\n const morphTargets = geometry.morphTargets[name]\n\n for (let i = 0, l = morphTargets.length; i < l; i++) {\n const morphTarget = morphTargets[i]\n\n const attribute = new Float32BufferAttribute(morphTarget.data.length * 3, 3)\n attribute.name = morphTarget.name\n\n array.push(attribute.copyVector3sArray(morphTarget.data))\n }\n\n buffergeometry.morphAttributes[name] = array\n }\n\n // skinning\n\n if (geometry.skinIndices.length > 0) {\n const skinIndices = new Float32BufferAttribute(geometry.skinIndices.length * 4, 4)\n buffergeometry.setAttribute('skinIndex', skinIndices.copyVector4sArray(geometry.skinIndices))\n }\n\n if (geometry.skinWeights.length > 0) {\n const skinWeights = new Float32BufferAttribute(geometry.skinWeights.length * 4, 4)\n buffergeometry.setAttribute('skinWeight', skinWeights.copyVector4sArray(geometry.skinWeights))\n }\n\n //\n\n if (geometry.boundingSphere !== null) {\n buffergeometry.boundingSphere = geometry.boundingSphere.clone()\n }\n\n if (geometry.boundingBox !== null) {\n buffergeometry.boundingBox = geometry.boundingBox.clone()\n }\n\n return buffergeometry\n }\n\n computeTangents() {\n console.error('THREE.Geometry: .computeTangents() has been removed.')\n }\n\n computeLineDistances() {\n console.error(\n 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.',\n )\n }\n\n applyMatrix(matrix) {\n console.warn('THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4().')\n return this.applyMatrix4(matrix)\n }\n\n dispose() {\n this.dispatchEvent({ type: 'dispose' })\n }\n}\n\nclass DirectGeometry {\n constructor() {\n this.vertices = []\n this.normals = []\n this.colors = []\n this.uvs = []\n this.uvs2 = []\n\n this.groups = []\n\n this.morphTargets = {}\n\n this.skinWeights = []\n this.skinIndices = []\n\n // this.lineDistances = [];\n\n this.boundingBox = null\n this.boundingSphere = null\n\n // update flags\n\n this.verticesNeedUpdate = false\n this.normalsNeedUpdate = false\n this.colorsNeedUpdate = false\n this.uvsNeedUpdate = false\n this.groupsNeedUpdate = false\n }\n\n computeGroups(geometry) {\n const groups = []\n\n let group, i\n let materialIndex = undefined\n\n const faces = geometry.faces\n\n for (i = 0; i < faces.length; i++) {\n const face = faces[i]\n\n // materials\n\n if (face.materialIndex !== materialIndex) {\n materialIndex = face.materialIndex\n\n if (group !== undefined) {\n group.count = i * 3 - group.start\n groups.push(group)\n }\n\n group = {\n start: i * 3,\n materialIndex,\n }\n }\n }\n\n if (group !== undefined) {\n group.count = i * 3 - group.start\n groups.push(group)\n }\n\n this.groups = groups\n }\n\n fromGeometry(geometry) {\n const faces = geometry.faces\n const vertices = geometry.vertices\n const faceVertexUvs = geometry.faceVertexUvs\n\n const hasFaceVertexUv = faceVertexUvs[0] && faceVertexUvs[0].length > 0\n const hasFaceVertexUv2 = faceVertexUvs[1] && faceVertexUvs[1].length > 0\n\n // morphs\n\n const morphTargets = geometry.morphTargets\n const morphTargetsLength = morphTargets.length\n\n let morphTargetsPosition\n\n if (morphTargetsLength > 0) {\n morphTargetsPosition = []\n\n for (let i = 0; i < morphTargetsLength; i++) {\n morphTargetsPosition[i] = {\n name: morphTargets[i].name,\n data: [],\n }\n }\n\n this.morphTargets.position = morphTargetsPosition\n }\n\n const morphNormals = geometry.morphNormals\n const morphNormalsLength = morphNormals.length\n\n let morphTargetsNormal\n\n if (morphNormalsLength > 0) {\n morphTargetsNormal = []\n\n for (let i = 0; i < morphNormalsLength; i++) {\n morphTargetsNormal[i] = {\n name: morphNormals[i].name,\n data: [],\n }\n }\n\n this.morphTargets.normal = morphTargetsNormal\n }\n\n // skins\n\n const skinIndices = geometry.skinIndices\n const skinWeights = geometry.skinWeights\n\n const hasSkinIndices = skinIndices.length === vertices.length\n const hasSkinWeights = skinWeights.length === vertices.length\n\n //\n\n if (vertices.length > 0 && faces.length === 0) {\n console.error('THREE.DirectGeometry: Faceless geometries are not supported.')\n }\n\n for (let i = 0; i < faces.length; i++) {\n const face = faces[i]\n\n this.vertices.push(vertices[face.a], vertices[face.b], vertices[face.c])\n\n const vertexNormals = face.vertexNormals\n\n if (vertexNormals.length === 3) {\n this.normals.push(vertexNormals[0], vertexNormals[1], vertexNormals[2])\n } else {\n const normal = face.normal\n\n this.normals.push(normal, normal, normal)\n }\n\n const vertexColors = face.vertexColors\n\n if (vertexColors.length === 3) {\n this.colors.push(vertexColors[0], vertexColors[1], vertexColors[2])\n } else {\n const color = face.color\n\n this.colors.push(color, color, color)\n }\n\n if (hasFaceVertexUv === true) {\n const vertexUvs = faceVertexUvs[0][i]\n\n if (vertexUvs !== undefined) {\n this.uvs.push(vertexUvs[0], vertexUvs[1], vertexUvs[2])\n } else {\n console.warn('THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i)\n\n this.uvs.push(new Vector2(), new Vector2(), new Vector2())\n }\n }\n\n if (hasFaceVertexUv2 === true) {\n const vertexUvs = faceVertexUvs[1][i]\n\n if (vertexUvs !== undefined) {\n this.uvs2.push(vertexUvs[0], vertexUvs[1], vertexUvs[2])\n } else {\n console.warn('THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i)\n\n this.uvs2.push(new Vector2(), new Vector2(), new Vector2())\n }\n }\n\n // morphs\n\n for (let j = 0; j < morphTargetsLength; j++) {\n const morphTarget = morphTargets[j].vertices\n\n morphTargetsPosition[j].data.push(morphTarget[face.a], morphTarget[face.b], morphTarget[face.c])\n }\n\n for (let j = 0; j < morphNormalsLength; j++) {\n const morphNormal = morphNormals[j].vertexNormals[i]\n\n morphTargetsNormal[j].data.push(morphNormal.a, morphNormal.b, morphNormal.c)\n }\n\n // skins\n\n if (hasSkinIndices) {\n this.skinIndices.push(skinIndices[face.a], skinIndices[face.b], skinIndices[face.c])\n }\n\n if (hasSkinWeights) {\n this.skinWeights.push(skinWeights[face.a], skinWeights[face.b], skinWeights[face.c])\n }\n }\n\n this.computeGroups(geometry)\n\n this.verticesNeedUpdate = geometry.verticesNeedUpdate\n this.normalsNeedUpdate = geometry.normalsNeedUpdate\n this.colorsNeedUpdate = geometry.colorsNeedUpdate\n this.uvsNeedUpdate = geometry.uvsNeedUpdate\n this.groupsNeedUpdate = geometry.groupsNeedUpdate\n\n if (geometry.boundingSphere !== null) {\n this.boundingSphere = geometry.boundingSphere.clone()\n }\n\n if (geometry.boundingBox !== null) {\n this.boundingBox = geometry.boundingBox.clone()\n }\n\n return this\n }\n}\n\nclass Face3 {\n constructor(a, b, c, normal, color, materialIndex = 0) {\n this.a = a\n this.b = b\n this.c = c\n\n this.normal = normal && normal.isVector3 ? normal : new Vector3()\n this.vertexNormals = Array.isArray(normal) ? normal : []\n\n this.color = color && color.isColor ? color : new Color()\n this.vertexColors = Array.isArray(color) ? color : []\n\n this.materialIndex = materialIndex\n }\n\n clone() {\n return new this.constructor().copy(this)\n }\n\n copy(source) {\n this.a = source.a\n this.b = source.b\n this.c = source.c\n\n this.normal.copy(source.normal)\n this.color.copy(source.color)\n\n this.materialIndex = source.materialIndex\n\n for (let i = 0, il = source.vertexNormals.length; i < il; i++) {\n this.vertexNormals[i] = source.vertexNormals[i].clone()\n }\n\n for (let i = 0, il = source.vertexColors.length; i < il; i++) {\n this.vertexColors[i] = source.vertexColors[i].clone()\n }\n\n return this\n }\n}\n\nexport { Face3, Geometry }\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const THREE = require("three");
4
- const constants = require("../_polyfill/constants.cjs");
5
4
  class AnaglyphEffect {
6
5
  constructor(renderer, width = 512, height = 512) {
7
6
  this.colorMatrixLeft = new THREE.Matrix3().fromArray([
@@ -63,7 +62,7 @@ class AnaglyphEffect {
63
62
  " color.r, color.g, color.b,",
64
63
  " max( colorL.a, colorR.a ) );",
65
64
  " #include <tonemapping_fragment>",
66
- ` #include <${constants.version >= 154 ? "colorspace_fragment" : "encodings_fragment"}>`,
65
+ ` #include <${parseInt(THREE.REVISION.replace(/\D+/g, "")) >= 154 ? "colorspace_fragment" : "encodings_fragment"}>`,
67
66
  "}"
68
67
  ].join("\n")
69
68
  });
@@ -1 +1 @@
1
- {"version":3,"file":"AnaglyphEffect.cjs","sources":["../../src/effects/AnaglyphEffect.js"],"sourcesContent":["import {\n LinearFilter,\n Matrix3,\n Mesh,\n NearestFilter,\n OrthographicCamera,\n PlaneGeometry,\n RGBAFormat,\n Scene,\n ShaderMaterial,\n StereoCamera,\n WebGLRenderTarget,\n} from 'three'\nimport { version } from '../_polyfill/constants'\n\nclass AnaglyphEffect {\n constructor(renderer, width = 512, height = 512) {\n // Dubois matrices from https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.7.6968&rep=rep1&type=pdf#page=4\n\n this.colorMatrixLeft = new Matrix3().fromArray([\n 0.4561,\n -0.0400822,\n -0.0152161,\n 0.500484,\n -0.0378246,\n -0.0205971,\n 0.176381,\n -0.0157589,\n -0.00546856,\n ])\n\n this.colorMatrixRight = new Matrix3().fromArray([\n -0.0434706,\n 0.378476,\n -0.0721527,\n -0.0879388,\n 0.73364,\n -0.112961,\n -0.00155529,\n -0.0184503,\n 1.2264,\n ])\n\n const _camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1)\n\n const _scene = new Scene()\n\n const _stereo = new StereoCamera()\n\n const _params = { minFilter: LinearFilter, magFilter: NearestFilter, format: RGBAFormat }\n\n const _renderTargetL = new WebGLRenderTarget(width, height, _params)\n const _renderTargetR = new WebGLRenderTarget(width, height, _params)\n\n const _material = new ShaderMaterial({\n uniforms: {\n mapLeft: { value: _renderTargetL.texture },\n mapRight: { value: _renderTargetR.texture },\n\n colorMatrixLeft: { value: this.colorMatrixLeft },\n colorMatrixRight: { value: this.colorMatrixRight },\n },\n\n vertexShader: [\n 'varying vec2 vUv;',\n\n 'void main() {',\n\n '\tvUv = vec2( uv.x, uv.y );',\n '\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );',\n\n '}',\n ].join('\\n'),\n\n fragmentShader: [\n 'uniform sampler2D mapLeft;',\n 'uniform sampler2D mapRight;',\n 'varying vec2 vUv;',\n\n 'uniform mat3 colorMatrixLeft;',\n 'uniform mat3 colorMatrixRight;',\n\n 'void main() {',\n\n '\tvec2 uv = vUv;',\n\n '\tvec4 colorL = texture2D( mapLeft, uv );',\n '\tvec4 colorR = texture2D( mapRight, uv );',\n\n '\tvec3 color = clamp(',\n '\t\t\tcolorMatrixLeft * colorL.rgb +',\n '\t\t\tcolorMatrixRight * colorR.rgb, 0., 1. );',\n\n '\tgl_FragColor = vec4(',\n '\t\t\tcolor.r, color.g, color.b,',\n '\t\t\tmax( colorL.a, colorR.a ) );',\n\n '\t#include <tonemapping_fragment>',\n `\t#include <${version >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>`,\n\n '}',\n ].join('\\n'),\n })\n\n const _mesh = new Mesh(new PlaneGeometry(2, 2), _material)\n _scene.add(_mesh)\n\n this.setSize = function (width, height) {\n renderer.setSize(width, height)\n\n const pixelRatio = renderer.getPixelRatio()\n\n _renderTargetL.setSize(width * pixelRatio, height * pixelRatio)\n _renderTargetR.setSize(width * pixelRatio, height * pixelRatio)\n }\n\n this.render = function (scene, camera) {\n const currentRenderTarget = renderer.getRenderTarget()\n\n if (scene.matrixWorldAutoUpdate === true) scene.updateMatrixWorld()\n\n if (camera.parent === null && camera.matrixWorldAutoUpdate === true) camera.updateMatrixWorld()\n\n _stereo.update(camera)\n\n renderer.setRenderTarget(_renderTargetL)\n renderer.clear()\n renderer.render(scene, _stereo.cameraL)\n\n renderer.setRenderTarget(_renderTargetR)\n renderer.clear()\n renderer.render(scene, _stereo.cameraR)\n\n renderer.setRenderTarget(null)\n renderer.render(_scene, _camera)\n\n renderer.setRenderTarget(currentRenderTarget)\n }\n\n this.dispose = function () {\n _renderTargetL.dispose()\n _renderTargetR.dispose()\n _mesh.geometry.dispose()\n _mesh.material.dispose()\n }\n }\n}\n\nexport { AnaglyphEffect }\n"],"names":["Matrix3","OrthographicCamera","Scene","StereoCamera","LinearFilter","NearestFilter","RGBAFormat","WebGLRenderTarget","ShaderMaterial","version","Mesh","PlaneGeometry","width","height"],"mappings":";;;;AAeA,MAAM,eAAe;AAAA,EACnB,YAAY,UAAU,QAAQ,KAAK,SAAS,KAAK;AAG/C,SAAK,kBAAkB,IAAIA,MAAO,QAAA,EAAG,UAAU;AAAA,MAC7C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN,CAAK;AAED,SAAK,mBAAmB,IAAIA,MAAO,QAAA,EAAG,UAAU;AAAA,MAC9C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN,CAAK;AAED,UAAM,UAAU,IAAIC,MAAkB,mBAAC,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC;AAEzD,UAAM,SAAS,IAAIC,YAAO;AAE1B,UAAM,UAAU,IAAIC,mBAAc;AAElC,UAAM,UAAU,EAAE,WAAWC,MAAAA,cAAc,WAAWC,MAAa,eAAE,QAAQC,iBAAY;AAEzF,UAAM,iBAAiB,IAAIC,MAAAA,kBAAkB,OAAO,QAAQ,OAAO;AACnE,UAAM,iBAAiB,IAAIA,MAAAA,kBAAkB,OAAO,QAAQ,OAAO;AAEnE,UAAM,YAAY,IAAIC,qBAAe;AAAA,MACnC,UAAU;AAAA,QACR,SAAS,EAAE,OAAO,eAAe,QAAS;AAAA,QAC1C,UAAU,EAAE,OAAO,eAAe,QAAS;AAAA,QAE3C,iBAAiB,EAAE,OAAO,KAAK,gBAAiB;AAAA,QAChD,kBAAkB,EAAE,OAAO,KAAK,iBAAkB;AAAA,MACnD;AAAA,MAED,cAAc;AAAA,QACZ;AAAA,QAEA;AAAA,QAEA;AAAA,QACA;AAAA,QAEA;AAAA,MACR,EAAQ,KAAK,IAAI;AAAA,MAEX,gBAAgB;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QAEA;AAAA,QACA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QACA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,QAEA;AAAA,QACA,cAAcC,UAAAA,WAAW,MAAM,wBAAwB;AAAA,QAEvD;AAAA,MACR,EAAQ,KAAK,IAAI;AAAA,IACjB,CAAK;AAED,UAAM,QAAQ,IAAIC,WAAK,IAAIC,MAAa,cAAC,GAAG,CAAC,GAAG,SAAS;AACzD,WAAO,IAAI,KAAK;AAEhB,SAAK,UAAU,SAAUC,QAAOC,SAAQ;AACtC,eAAS,QAAQD,QAAOC,OAAM;AAE9B,YAAM,aAAa,SAAS,cAAe;AAE3C,qBAAe,QAAQD,SAAQ,YAAYC,UAAS,UAAU;AAC9D,qBAAe,QAAQD,SAAQ,YAAYC,UAAS,UAAU;AAAA,IAC/D;AAED,SAAK,SAAS,SAAU,OAAO,QAAQ;AACrC,YAAM,sBAAsB,SAAS,gBAAiB;AAEtD,UAAI,MAAM,0BAA0B;AAAM,cAAM,kBAAmB;AAEnE,UAAI,OAAO,WAAW,QAAQ,OAAO,0BAA0B;AAAM,eAAO,kBAAmB;AAE/F,cAAQ,OAAO,MAAM;AAErB,eAAS,gBAAgB,cAAc;AACvC,eAAS,MAAO;AAChB,eAAS,OAAO,OAAO,QAAQ,OAAO;AAEtC,eAAS,gBAAgB,cAAc;AACvC,eAAS,MAAO;AAChB,eAAS,OAAO,OAAO,QAAQ,OAAO;AAEtC,eAAS,gBAAgB,IAAI;AAC7B,eAAS,OAAO,QAAQ,OAAO;AAE/B,eAAS,gBAAgB,mBAAmB;AAAA,IAC7C;AAED,SAAK,UAAU,WAAY;AACzB,qBAAe,QAAS;AACxB,qBAAe,QAAS;AACxB,YAAM,SAAS,QAAS;AACxB,YAAM,SAAS,QAAS;AAAA,IACzB;AAAA,EACF;AACH;;"}
1
+ {"version":3,"file":"AnaglyphEffect.cjs","sources":["../../src/effects/AnaglyphEffect.js"],"sourcesContent":["import {\n LinearFilter,\n Matrix3,\n Mesh,\n NearestFilter,\n OrthographicCamera,\n PlaneGeometry,\n RGBAFormat,\n Scene,\n ShaderMaterial,\n StereoCamera,\n WebGLRenderTarget,\n REVISION,\n} from 'three'\n\nclass AnaglyphEffect {\n constructor(renderer, width = 512, height = 512) {\n // Dubois matrices from https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.7.6968&rep=rep1&type=pdf#page=4\n\n this.colorMatrixLeft = new Matrix3().fromArray([\n 0.4561,\n -0.0400822,\n -0.0152161,\n 0.500484,\n -0.0378246,\n -0.0205971,\n 0.176381,\n -0.0157589,\n -0.00546856,\n ])\n\n this.colorMatrixRight = new Matrix3().fromArray([\n -0.0434706,\n 0.378476,\n -0.0721527,\n -0.0879388,\n 0.73364,\n -0.112961,\n -0.00155529,\n -0.0184503,\n 1.2264,\n ])\n\n const _camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1)\n\n const _scene = new Scene()\n\n const _stereo = new StereoCamera()\n\n const _params = { minFilter: LinearFilter, magFilter: NearestFilter, format: RGBAFormat }\n\n const _renderTargetL = new WebGLRenderTarget(width, height, _params)\n const _renderTargetR = new WebGLRenderTarget(width, height, _params)\n\n const _material = new ShaderMaterial({\n uniforms: {\n mapLeft: { value: _renderTargetL.texture },\n mapRight: { value: _renderTargetR.texture },\n\n colorMatrixLeft: { value: this.colorMatrixLeft },\n colorMatrixRight: { value: this.colorMatrixRight },\n },\n\n vertexShader: [\n 'varying vec2 vUv;',\n\n 'void main() {',\n\n '\tvUv = vec2( uv.x, uv.y );',\n '\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );',\n\n '}',\n ].join('\\n'),\n\n fragmentShader: [\n 'uniform sampler2D mapLeft;',\n 'uniform sampler2D mapRight;',\n 'varying vec2 vUv;',\n\n 'uniform mat3 colorMatrixLeft;',\n 'uniform mat3 colorMatrixRight;',\n\n 'void main() {',\n\n '\tvec2 uv = vUv;',\n\n '\tvec4 colorL = texture2D( mapLeft, uv );',\n '\tvec4 colorR = texture2D( mapRight, uv );',\n\n '\tvec3 color = clamp(',\n '\t\t\tcolorMatrixLeft * colorL.rgb +',\n '\t\t\tcolorMatrixRight * colorR.rgb, 0., 1. );',\n\n '\tgl_FragColor = vec4(',\n '\t\t\tcolor.r, color.g, color.b,',\n '\t\t\tmax( colorL.a, colorR.a ) );',\n\n '\t#include <tonemapping_fragment>',\n `\t#include <${parseInt(REVISION.replace(/\\D+/g, '')) >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>`,\n\n '}',\n ].join('\\n'),\n })\n\n const _mesh = new Mesh(new PlaneGeometry(2, 2), _material)\n _scene.add(_mesh)\n\n this.setSize = function (width, height) {\n renderer.setSize(width, height)\n\n const pixelRatio = renderer.getPixelRatio()\n\n _renderTargetL.setSize(width * pixelRatio, height * pixelRatio)\n _renderTargetR.setSize(width * pixelRatio, height * pixelRatio)\n }\n\n this.render = function (scene, camera) {\n const currentRenderTarget = renderer.getRenderTarget()\n\n if (scene.matrixWorldAutoUpdate === true) scene.updateMatrixWorld()\n\n if (camera.parent === null && camera.matrixWorldAutoUpdate === true) camera.updateMatrixWorld()\n\n _stereo.update(camera)\n\n renderer.setRenderTarget(_renderTargetL)\n renderer.clear()\n renderer.render(scene, _stereo.cameraL)\n\n renderer.setRenderTarget(_renderTargetR)\n renderer.clear()\n renderer.render(scene, _stereo.cameraR)\n\n renderer.setRenderTarget(null)\n renderer.render(_scene, _camera)\n\n renderer.setRenderTarget(currentRenderTarget)\n }\n\n this.dispose = function () {\n _renderTargetL.dispose()\n _renderTargetR.dispose()\n _mesh.geometry.dispose()\n _mesh.material.dispose()\n }\n }\n}\n\nexport { AnaglyphEffect }\n"],"names":["Matrix3","OrthographicCamera","Scene","StereoCamera","LinearFilter","NearestFilter","RGBAFormat","WebGLRenderTarget","ShaderMaterial","REVISION","Mesh","PlaneGeometry","width","height"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- import { Matrix3, OrthographicCamera, Scene, StereoCamera, WebGLRenderTarget, ShaderMaterial, Mesh, PlaneGeometry, LinearFilter, NearestFilter, RGBAFormat } from "three";
2
- import { version } from "../_polyfill/constants.js";
1
+ import { Matrix3, OrthographicCamera, Scene, StereoCamera, WebGLRenderTarget, ShaderMaterial, REVISION, Mesh, PlaneGeometry, LinearFilter, NearestFilter, RGBAFormat } from "three";
3
2
  class AnaglyphEffect {
4
3
  constructor(renderer, width = 512, height = 512) {
5
4
  this.colorMatrixLeft = new Matrix3().fromArray([
@@ -61,7 +60,7 @@ class AnaglyphEffect {
61
60
  " color.r, color.g, color.b,",
62
61
  " max( colorL.a, colorR.a ) );",
63
62
  " #include <tonemapping_fragment>",
64
- ` #include <${version >= 154 ? "colorspace_fragment" : "encodings_fragment"}>`,
63
+ ` #include <${parseInt(REVISION.replace(/\D+/g, "")) >= 154 ? "colorspace_fragment" : "encodings_fragment"}>`,
65
64
  "}"
66
65
  ].join("\n")
67
66
  });
@@ -1 +1 @@
1
- {"version":3,"file":"AnaglyphEffect.js","sources":["../../src/effects/AnaglyphEffect.js"],"sourcesContent":["import {\n LinearFilter,\n Matrix3,\n Mesh,\n NearestFilter,\n OrthographicCamera,\n PlaneGeometry,\n RGBAFormat,\n Scene,\n ShaderMaterial,\n StereoCamera,\n WebGLRenderTarget,\n} from 'three'\nimport { version } from '../_polyfill/constants'\n\nclass AnaglyphEffect {\n constructor(renderer, width = 512, height = 512) {\n // Dubois matrices from https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.7.6968&rep=rep1&type=pdf#page=4\n\n this.colorMatrixLeft = new Matrix3().fromArray([\n 0.4561,\n -0.0400822,\n -0.0152161,\n 0.500484,\n -0.0378246,\n -0.0205971,\n 0.176381,\n -0.0157589,\n -0.00546856,\n ])\n\n this.colorMatrixRight = new Matrix3().fromArray([\n -0.0434706,\n 0.378476,\n -0.0721527,\n -0.0879388,\n 0.73364,\n -0.112961,\n -0.00155529,\n -0.0184503,\n 1.2264,\n ])\n\n const _camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1)\n\n const _scene = new Scene()\n\n const _stereo = new StereoCamera()\n\n const _params = { minFilter: LinearFilter, magFilter: NearestFilter, format: RGBAFormat }\n\n const _renderTargetL = new WebGLRenderTarget(width, height, _params)\n const _renderTargetR = new WebGLRenderTarget(width, height, _params)\n\n const _material = new ShaderMaterial({\n uniforms: {\n mapLeft: { value: _renderTargetL.texture },\n mapRight: { value: _renderTargetR.texture },\n\n colorMatrixLeft: { value: this.colorMatrixLeft },\n colorMatrixRight: { value: this.colorMatrixRight },\n },\n\n vertexShader: [\n 'varying vec2 vUv;',\n\n 'void main() {',\n\n '\tvUv = vec2( uv.x, uv.y );',\n '\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );',\n\n '}',\n ].join('\\n'),\n\n fragmentShader: [\n 'uniform sampler2D mapLeft;',\n 'uniform sampler2D mapRight;',\n 'varying vec2 vUv;',\n\n 'uniform mat3 colorMatrixLeft;',\n 'uniform mat3 colorMatrixRight;',\n\n 'void main() {',\n\n '\tvec2 uv = vUv;',\n\n '\tvec4 colorL = texture2D( mapLeft, uv );',\n '\tvec4 colorR = texture2D( mapRight, uv );',\n\n '\tvec3 color = clamp(',\n '\t\t\tcolorMatrixLeft * colorL.rgb +',\n '\t\t\tcolorMatrixRight * colorR.rgb, 0., 1. );',\n\n '\tgl_FragColor = vec4(',\n '\t\t\tcolor.r, color.g, color.b,',\n '\t\t\tmax( colorL.a, colorR.a ) );',\n\n '\t#include <tonemapping_fragment>',\n `\t#include <${version >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>`,\n\n '}',\n ].join('\\n'),\n })\n\n const _mesh = new Mesh(new PlaneGeometry(2, 2), _material)\n _scene.add(_mesh)\n\n this.setSize = function (width, height) {\n renderer.setSize(width, height)\n\n const pixelRatio = renderer.getPixelRatio()\n\n _renderTargetL.setSize(width * pixelRatio, height * pixelRatio)\n _renderTargetR.setSize(width * pixelRatio, height * pixelRatio)\n }\n\n this.render = function (scene, camera) {\n const currentRenderTarget = renderer.getRenderTarget()\n\n if (scene.matrixWorldAutoUpdate === true) scene.updateMatrixWorld()\n\n if (camera.parent === null && camera.matrixWorldAutoUpdate === true) camera.updateMatrixWorld()\n\n _stereo.update(camera)\n\n renderer.setRenderTarget(_renderTargetL)\n renderer.clear()\n renderer.render(scene, _stereo.cameraL)\n\n renderer.setRenderTarget(_renderTargetR)\n renderer.clear()\n renderer.render(scene, _stereo.cameraR)\n\n renderer.setRenderTarget(null)\n renderer.render(_scene, _camera)\n\n renderer.setRenderTarget(currentRenderTarget)\n }\n\n this.dispose = function () {\n _renderTargetL.dispose()\n _renderTargetR.dispose()\n _mesh.geometry.dispose()\n _mesh.material.dispose()\n }\n }\n}\n\nexport { AnaglyphEffect }\n"],"names":["width","height"],"mappings":";;AAeA,MAAM,eAAe;AAAA,EACnB,YAAY,UAAU,QAAQ,KAAK,SAAS,KAAK;AAG/C,SAAK,kBAAkB,IAAI,QAAO,EAAG,UAAU;AAAA,MAC7C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN,CAAK;AAED,SAAK,mBAAmB,IAAI,QAAO,EAAG,UAAU;AAAA,MAC9C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN,CAAK;AAED,UAAM,UAAU,IAAI,mBAAmB,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC;AAEzD,UAAM,SAAS,IAAI,MAAO;AAE1B,UAAM,UAAU,IAAI,aAAc;AAElC,UAAM,UAAU,EAAE,WAAW,cAAc,WAAW,eAAe,QAAQ,WAAY;AAEzF,UAAM,iBAAiB,IAAI,kBAAkB,OAAO,QAAQ,OAAO;AACnE,UAAM,iBAAiB,IAAI,kBAAkB,OAAO,QAAQ,OAAO;AAEnE,UAAM,YAAY,IAAI,eAAe;AAAA,MACnC,UAAU;AAAA,QACR,SAAS,EAAE,OAAO,eAAe,QAAS;AAAA,QAC1C,UAAU,EAAE,OAAO,eAAe,QAAS;AAAA,QAE3C,iBAAiB,EAAE,OAAO,KAAK,gBAAiB;AAAA,QAChD,kBAAkB,EAAE,OAAO,KAAK,iBAAkB;AAAA,MACnD;AAAA,MAED,cAAc;AAAA,QACZ;AAAA,QAEA;AAAA,QAEA;AAAA,QACA;AAAA,QAEA;AAAA,MACR,EAAQ,KAAK,IAAI;AAAA,MAEX,gBAAgB;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QAEA;AAAA,QACA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QACA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,QAEA;AAAA,QACA,cAAc,WAAW,MAAM,wBAAwB;AAAA,QAEvD;AAAA,MACR,EAAQ,KAAK,IAAI;AAAA,IACjB,CAAK;AAED,UAAM,QAAQ,IAAI,KAAK,IAAI,cAAc,GAAG,CAAC,GAAG,SAAS;AACzD,WAAO,IAAI,KAAK;AAEhB,SAAK,UAAU,SAAUA,QAAOC,SAAQ;AACtC,eAAS,QAAQD,QAAOC,OAAM;AAE9B,YAAM,aAAa,SAAS,cAAe;AAE3C,qBAAe,QAAQD,SAAQ,YAAYC,UAAS,UAAU;AAC9D,qBAAe,QAAQD,SAAQ,YAAYC,UAAS,UAAU;AAAA,IAC/D;AAED,SAAK,SAAS,SAAU,OAAO,QAAQ;AACrC,YAAM,sBAAsB,SAAS,gBAAiB;AAEtD,UAAI,MAAM,0BAA0B;AAAM,cAAM,kBAAmB;AAEnE,UAAI,OAAO,WAAW,QAAQ,OAAO,0BAA0B;AAAM,eAAO,kBAAmB;AAE/F,cAAQ,OAAO,MAAM;AAErB,eAAS,gBAAgB,cAAc;AACvC,eAAS,MAAO;AAChB,eAAS,OAAO,OAAO,QAAQ,OAAO;AAEtC,eAAS,gBAAgB,cAAc;AACvC,eAAS,MAAO;AAChB,eAAS,OAAO,OAAO,QAAQ,OAAO;AAEtC,eAAS,gBAAgB,IAAI;AAC7B,eAAS,OAAO,QAAQ,OAAO;AAE/B,eAAS,gBAAgB,mBAAmB;AAAA,IAC7C;AAED,SAAK,UAAU,WAAY;AACzB,qBAAe,QAAS;AACxB,qBAAe,QAAS;AACxB,YAAM,SAAS,QAAS;AACxB,YAAM,SAAS,QAAS;AAAA,IACzB;AAAA,EACF;AACH;"}
1
+ {"version":3,"file":"AnaglyphEffect.js","sources":["../../src/effects/AnaglyphEffect.js"],"sourcesContent":["import {\n LinearFilter,\n Matrix3,\n Mesh,\n NearestFilter,\n OrthographicCamera,\n PlaneGeometry,\n RGBAFormat,\n Scene,\n ShaderMaterial,\n StereoCamera,\n WebGLRenderTarget,\n REVISION,\n} from 'three'\n\nclass AnaglyphEffect {\n constructor(renderer, width = 512, height = 512) {\n // Dubois matrices from https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.7.6968&rep=rep1&type=pdf#page=4\n\n this.colorMatrixLeft = new Matrix3().fromArray([\n 0.4561,\n -0.0400822,\n -0.0152161,\n 0.500484,\n -0.0378246,\n -0.0205971,\n 0.176381,\n -0.0157589,\n -0.00546856,\n ])\n\n this.colorMatrixRight = new Matrix3().fromArray([\n -0.0434706,\n 0.378476,\n -0.0721527,\n -0.0879388,\n 0.73364,\n -0.112961,\n -0.00155529,\n -0.0184503,\n 1.2264,\n ])\n\n const _camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1)\n\n const _scene = new Scene()\n\n const _stereo = new StereoCamera()\n\n const _params = { minFilter: LinearFilter, magFilter: NearestFilter, format: RGBAFormat }\n\n const _renderTargetL = new WebGLRenderTarget(width, height, _params)\n const _renderTargetR = new WebGLRenderTarget(width, height, _params)\n\n const _material = new ShaderMaterial({\n uniforms: {\n mapLeft: { value: _renderTargetL.texture },\n mapRight: { value: _renderTargetR.texture },\n\n colorMatrixLeft: { value: this.colorMatrixLeft },\n colorMatrixRight: { value: this.colorMatrixRight },\n },\n\n vertexShader: [\n 'varying vec2 vUv;',\n\n 'void main() {',\n\n '\tvUv = vec2( uv.x, uv.y );',\n '\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );',\n\n '}',\n ].join('\\n'),\n\n fragmentShader: [\n 'uniform sampler2D mapLeft;',\n 'uniform sampler2D mapRight;',\n 'varying vec2 vUv;',\n\n 'uniform mat3 colorMatrixLeft;',\n 'uniform mat3 colorMatrixRight;',\n\n 'void main() {',\n\n '\tvec2 uv = vUv;',\n\n '\tvec4 colorL = texture2D( mapLeft, uv );',\n '\tvec4 colorR = texture2D( mapRight, uv );',\n\n '\tvec3 color = clamp(',\n '\t\t\tcolorMatrixLeft * colorL.rgb +',\n '\t\t\tcolorMatrixRight * colorR.rgb, 0., 1. );',\n\n '\tgl_FragColor = vec4(',\n '\t\t\tcolor.r, color.g, color.b,',\n '\t\t\tmax( colorL.a, colorR.a ) );',\n\n '\t#include <tonemapping_fragment>',\n `\t#include <${parseInt(REVISION.replace(/\\D+/g, '')) >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>`,\n\n '}',\n ].join('\\n'),\n })\n\n const _mesh = new Mesh(new PlaneGeometry(2, 2), _material)\n _scene.add(_mesh)\n\n this.setSize = function (width, height) {\n renderer.setSize(width, height)\n\n const pixelRatio = renderer.getPixelRatio()\n\n _renderTargetL.setSize(width * pixelRatio, height * pixelRatio)\n _renderTargetR.setSize(width * pixelRatio, height * pixelRatio)\n }\n\n this.render = function (scene, camera) {\n const currentRenderTarget = renderer.getRenderTarget()\n\n if (scene.matrixWorldAutoUpdate === true) scene.updateMatrixWorld()\n\n if (camera.parent === null && camera.matrixWorldAutoUpdate === true) camera.updateMatrixWorld()\n\n _stereo.update(camera)\n\n renderer.setRenderTarget(_renderTargetL)\n renderer.clear()\n renderer.render(scene, _stereo.cameraL)\n\n renderer.setRenderTarget(_renderTargetR)\n renderer.clear()\n renderer.render(scene, _stereo.cameraR)\n\n renderer.setRenderTarget(null)\n renderer.render(_scene, _camera)\n\n renderer.setRenderTarget(currentRenderTarget)\n }\n\n this.dispose = function () {\n _renderTargetL.dispose()\n _renderTargetR.dispose()\n _mesh.geometry.dispose()\n _mesh.material.dispose()\n }\n }\n}\n\nexport { AnaglyphEffect }\n"],"names":["width","height"],"mappings":";AAeA,MAAM,eAAe;AAAA,EACnB,YAAY,UAAU,QAAQ,KAAK,SAAS,KAAK;AAG/C,SAAK,kBAAkB,IAAI,QAAO,EAAG,UAAU;AAAA,MAC7C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN,CAAK;AAED,SAAK,mBAAmB,IAAI,QAAO,EAAG,UAAU;AAAA,MAC9C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN,CAAK;AAED,UAAM,UAAU,IAAI,mBAAmB,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC;AAEzD,UAAM,SAAS,IAAI,MAAO;AAE1B,UAAM,UAAU,IAAI,aAAc;AAElC,UAAM,UAAU,EAAE,WAAW,cAAc,WAAW,eAAe,QAAQ,WAAY;AAEzF,UAAM,iBAAiB,IAAI,kBAAkB,OAAO,QAAQ,OAAO;AACnE,UAAM,iBAAiB,IAAI,kBAAkB,OAAO,QAAQ,OAAO;AAEnE,UAAM,YAAY,IAAI,eAAe;AAAA,MACnC,UAAU;AAAA,QACR,SAAS,EAAE,OAAO,eAAe,QAAS;AAAA,QAC1C,UAAU,EAAE,OAAO,eAAe,QAAS;AAAA,QAE3C,iBAAiB,EAAE,OAAO,KAAK,gBAAiB;AAAA,QAChD,kBAAkB,EAAE,OAAO,KAAK,iBAAkB;AAAA,MACnD;AAAA,MAED,cAAc;AAAA,QACZ;AAAA,QAEA;AAAA,QAEA;AAAA,QACA;AAAA,QAEA;AAAA,MACR,EAAQ,KAAK,IAAI;AAAA,MAEX,gBAAgB;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QAEA;AAAA,QACA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QACA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,QAEA;AAAA,QACA,cAAc,SAAS,SAAS,QAAQ,QAAQ,EAAE,CAAC,KAAK,MAAM,wBAAwB;AAAA,QAEtF;AAAA,MACR,EAAQ,KAAK,IAAI;AAAA,IACjB,CAAK;AAED,UAAM,QAAQ,IAAI,KAAK,IAAI,cAAc,GAAG,CAAC,GAAG,SAAS;AACzD,WAAO,IAAI,KAAK;AAEhB,SAAK,UAAU,SAAUA,QAAOC,SAAQ;AACtC,eAAS,QAAQD,QAAOC,OAAM;AAE9B,YAAM,aAAa,SAAS,cAAe;AAE3C,qBAAe,QAAQD,SAAQ,YAAYC,UAAS,UAAU;AAC9D,qBAAe,QAAQD,SAAQ,YAAYC,UAAS,UAAU;AAAA,IAC/D;AAED,SAAK,SAAS,SAAU,OAAO,QAAQ;AACrC,YAAM,sBAAsB,SAAS,gBAAiB;AAEtD,UAAI,MAAM,0BAA0B;AAAM,cAAM,kBAAmB;AAEnE,UAAI,OAAO,WAAW,QAAQ,OAAO,0BAA0B;AAAM,eAAO,kBAAmB;AAE/F,cAAQ,OAAO,MAAM;AAErB,eAAS,gBAAgB,cAAc;AACvC,eAAS,MAAO;AAChB,eAAS,OAAO,OAAO,QAAQ,OAAO;AAEtC,eAAS,gBAAgB,cAAc;AACvC,eAAS,MAAO;AAChB,eAAS,OAAO,OAAO,QAAQ,OAAO;AAEtC,eAAS,gBAAgB,IAAI;AAC7B,eAAS,OAAO,QAAQ,OAAO;AAE/B,eAAS,gBAAgB,mBAAmB;AAAA,IAC7C;AAED,SAAK,UAAU,WAAY;AACzB,qBAAe,QAAS;AACxB,qBAAe,QAAS;AACxB,YAAM,SAAS,QAAS;AACxB,YAAM,SAAS,QAAS;AAAA,IACzB;AAAA,EACF;AACH;"}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const THREE = require("three");
4
- const constants = require("../_polyfill/constants.cjs");
5
4
  class OutlineEffect {
6
5
  constructor(renderer, parameters = {}) {
7
6
  this.enabled = true;
@@ -70,7 +69,7 @@ class OutlineEffect {
70
69
  " #include <logdepthbuf_fragment>",
71
70
  " gl_FragColor = vec4( outlineColor, outlineAlpha );",
72
71
  " #include <tonemapping_fragment>",
73
- ` #include <${constants.version >= 154 ? "colorspace_fragment" : "encodings_fragment"}>`,
72
+ ` #include <${parseInt(THREE.REVISION.replace(/\D+/g, "")) >= 154 ? "colorspace_fragment" : "encodings_fragment"}>`,
74
73
  " #include <fog_fragment>",
75
74
  " #include <premultiplied_alpha_fragment>",
76
75
  "}"
@@ -1 +1 @@
1
- {"version":3,"file":"OutlineEffect.cjs","sources":["../../src/effects/OutlineEffect.js"],"sourcesContent":["import { BackSide, Color, ShaderMaterial, UniformsLib, UniformsUtils } from 'three'\nimport { version } from '../_polyfill/constants'\n\n/**\n * Reference: https://en.wikipedia.org/wiki/Cel_shading\n *\n * API\n *\n * 1. Traditional\n *\n * const effect = new OutlineEffect( renderer );\n *\n * function render() {\n *\n * \teffect.render( scene, camera );\n *\n * }\n *\n * 2. VR compatible\n *\n * const effect = new OutlineEffect( renderer );\n * let renderingOutline = false;\n *\n * scene.onAfterRender = function () {\n *\n * \tif ( renderingOutline ) return;\n *\n * \trenderingOutline = true;\n *\n * \teffect.renderOutline( scene, camera );\n *\n * \trenderingOutline = false;\n *\n * };\n *\n * function render() {\n *\n * \trenderer.render( scene, camera );\n *\n * }\n *\n * // How to set default outline parameters\n * new OutlineEffect( renderer, {\n * \tdefaultThickness: 0.01,\n * \tdefaultColor: [ 0, 0, 0 ],\n * \tdefaultAlpha: 0.8,\n * \tdefaultKeepAlive: true // keeps outline material in cache even if material is removed from scene\n * } );\n *\n * // How to set outline parameters for each material\n * material.userData.outlineParameters = {\n * \tthickness: 0.01,\n * \tcolor: [ 0, 0, 0 ],\n * \talpha: 0.8,\n * \tvisible: true,\n * \tkeepAlive: true\n * };\n */\n\nclass OutlineEffect {\n constructor(renderer, parameters = {}) {\n this.enabled = true\n\n const defaultThickness = parameters.defaultThickness !== undefined ? parameters.defaultThickness : 0.003\n const defaultColor = new Color().fromArray(\n parameters.defaultColor !== undefined ? parameters.defaultColor : [0, 0, 0],\n )\n const defaultAlpha = parameters.defaultAlpha !== undefined ? parameters.defaultAlpha : 1.0\n const defaultKeepAlive = parameters.defaultKeepAlive !== undefined ? parameters.defaultKeepAlive : false\n\n // object.material.uuid -> outlineMaterial or\n // object.material[ n ].uuid -> outlineMaterial\n // save at the outline material creation and release\n // if it's unused removeThresholdCount frames\n // unless keepAlive is true.\n const cache = {}\n\n const removeThresholdCount = 60\n\n // outlineMaterial.uuid -> object.material or\n // outlineMaterial.uuid -> object.material[ n ]\n // save before render and release after render.\n const originalMaterials = {}\n\n // object.uuid -> originalOnBeforeRender\n // save before render and release after render.\n const originalOnBeforeRenders = {}\n\n //this.cache = cache; // for debug\n\n const uniformsOutline = {\n outlineThickness: { value: defaultThickness },\n outlineColor: { value: defaultColor },\n outlineAlpha: { value: defaultAlpha },\n }\n\n const vertexShader = [\n '#include <common>',\n '#include <uv_pars_vertex>',\n '#include <displacementmap_pars_vertex>',\n '#include <fog_pars_vertex>',\n '#include <morphtarget_pars_vertex>',\n '#include <skinning_pars_vertex>',\n '#include <logdepthbuf_pars_vertex>',\n '#include <clipping_planes_pars_vertex>',\n\n 'uniform float outlineThickness;',\n\n 'vec4 calculateOutline( vec4 pos, vec3 normal, vec4 skinned ) {',\n '\tfloat thickness = outlineThickness;',\n '\tconst float ratio = 1.0;', // TODO: support outline thickness ratio for each vertex\n '\tvec4 pos2 = projectionMatrix * modelViewMatrix * vec4( skinned.xyz + normal, 1.0 );',\n // NOTE: subtract pos2 from pos because BackSide objectNormal is negative\n '\tvec4 norm = normalize( pos - pos2 );',\n '\treturn pos + norm * thickness * pos.w * ratio;',\n '}',\n\n 'void main() {',\n\n '\t#include <uv_vertex>',\n\n '\t#include <beginnormal_vertex>',\n '\t#include <morphnormal_vertex>',\n '\t#include <skinbase_vertex>',\n '\t#include <skinnormal_vertex>',\n\n '\t#include <begin_vertex>',\n '\t#include <morphtarget_vertex>',\n '\t#include <skinning_vertex>',\n '\t#include <displacementmap_vertex>',\n '\t#include <project_vertex>',\n\n '\tvec3 outlineNormal = - objectNormal;', // the outline material is always rendered with BackSide\n\n '\tgl_Position = calculateOutline( gl_Position, outlineNormal, vec4( transformed, 1.0 ) );',\n\n '\t#include <logdepthbuf_vertex>',\n '\t#include <clipping_planes_vertex>',\n '\t#include <fog_vertex>',\n\n '}',\n ].join('\\n')\n\n const fragmentShader = [\n '#include <common>',\n '#include <fog_pars_fragment>',\n '#include <logdepthbuf_pars_fragment>',\n '#include <clipping_planes_pars_fragment>',\n\n 'uniform vec3 outlineColor;',\n 'uniform float outlineAlpha;',\n\n 'void main() {',\n\n '\t#include <clipping_planes_fragment>',\n '\t#include <logdepthbuf_fragment>',\n\n '\tgl_FragColor = vec4( outlineColor, outlineAlpha );',\n\n '\t#include <tonemapping_fragment>',\n `\t#include <${version >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>`,\n '\t#include <fog_fragment>',\n '\t#include <premultiplied_alpha_fragment>',\n\n '}',\n ].join('\\n')\n\n function createMaterial() {\n return new ShaderMaterial({\n type: 'OutlineEffect',\n uniforms: UniformsUtils.merge([UniformsLib['fog'], UniformsLib['displacementmap'], uniformsOutline]),\n vertexShader: vertexShader,\n fragmentShader: fragmentShader,\n side: BackSide,\n })\n }\n\n function getOutlineMaterialFromCache(originalMaterial) {\n let data = cache[originalMaterial.uuid]\n\n if (data === undefined) {\n data = {\n material: createMaterial(),\n used: true,\n keepAlive: defaultKeepAlive,\n count: 0,\n }\n\n cache[originalMaterial.uuid] = data\n }\n\n data.used = true\n\n return data.material\n }\n\n function getOutlineMaterial(originalMaterial) {\n const outlineMaterial = getOutlineMaterialFromCache(originalMaterial)\n\n originalMaterials[outlineMaterial.uuid] = originalMaterial\n\n updateOutlineMaterial(outlineMaterial, originalMaterial)\n\n return outlineMaterial\n }\n\n function isCompatible(object) {\n const geometry = object.geometry\n const hasNormals = geometry !== undefined && geometry.attributes.normal !== undefined\n\n return object.isMesh === true && object.material !== undefined && hasNormals === true\n }\n\n function setOutlineMaterial(object) {\n if (isCompatible(object) === false) return\n\n if (Array.isArray(object.material)) {\n for (let i = 0, il = object.material.length; i < il; i++) {\n object.material[i] = getOutlineMaterial(object.material[i])\n }\n } else {\n object.material = getOutlineMaterial(object.material)\n }\n\n originalOnBeforeRenders[object.uuid] = object.onBeforeRender\n object.onBeforeRender = onBeforeRender\n }\n\n function restoreOriginalMaterial(object) {\n if (isCompatible(object) === false) return\n\n if (Array.isArray(object.material)) {\n for (let i = 0, il = object.material.length; i < il; i++) {\n object.material[i] = originalMaterials[object.material[i].uuid]\n }\n } else {\n object.material = originalMaterials[object.material.uuid]\n }\n\n object.onBeforeRender = originalOnBeforeRenders[object.uuid]\n }\n\n function onBeforeRender(renderer, scene, camera, geometry, material) {\n const originalMaterial = originalMaterials[material.uuid]\n\n // just in case\n if (originalMaterial === undefined) return\n\n updateUniforms(material, originalMaterial)\n }\n\n function updateUniforms(material, originalMaterial) {\n const outlineParameters = originalMaterial.userData.outlineParameters\n\n material.uniforms.outlineAlpha.value = originalMaterial.opacity\n\n if (outlineParameters !== undefined) {\n if (outlineParameters.thickness !== undefined)\n material.uniforms.outlineThickness.value = outlineParameters.thickness\n if (outlineParameters.color !== undefined)\n material.uniforms.outlineColor.value.fromArray(outlineParameters.color)\n if (outlineParameters.alpha !== undefined) material.uniforms.outlineAlpha.value = outlineParameters.alpha\n }\n\n if (originalMaterial.displacementMap) {\n material.uniforms.displacementMap.value = originalMaterial.displacementMap\n material.uniforms.displacementScale.value = originalMaterial.displacementScale\n material.uniforms.displacementBias.value = originalMaterial.displacementBias\n }\n }\n\n function updateOutlineMaterial(material, originalMaterial) {\n if (material.name === 'invisible') return\n\n const outlineParameters = originalMaterial.userData.outlineParameters\n\n material.fog = originalMaterial.fog\n material.toneMapped = originalMaterial.toneMapped\n material.premultipliedAlpha = originalMaterial.premultipliedAlpha\n material.displacementMap = originalMaterial.displacementMap\n\n if (outlineParameters !== undefined) {\n if (originalMaterial.visible === false) {\n material.visible = false\n } else {\n material.visible = outlineParameters.visible !== undefined ? outlineParameters.visible : true\n }\n\n material.transparent =\n outlineParameters.alpha !== undefined && outlineParameters.alpha < 1.0 ? true : originalMaterial.transparent\n\n if (outlineParameters.keepAlive !== undefined)\n cache[originalMaterial.uuid].keepAlive = outlineParameters.keepAlive\n } else {\n material.transparent = originalMaterial.transparent\n material.visible = originalMaterial.visible\n }\n\n if (originalMaterial.wireframe === true || originalMaterial.depthTest === false) material.visible = false\n\n if (originalMaterial.clippingPlanes) {\n material.clipping = true\n\n material.clippingPlanes = originalMaterial.clippingPlanes\n material.clipIntersection = originalMaterial.clipIntersection\n material.clipShadows = originalMaterial.clipShadows\n }\n\n material.version = originalMaterial.version // update outline material if necessary\n }\n\n function cleanupCache() {\n let keys\n\n // clear originialMaterials\n keys = Object.keys(originalMaterials)\n\n for (let i = 0, il = keys.length; i < il; i++) {\n originalMaterials[keys[i]] = undefined\n }\n\n // clear originalOnBeforeRenders\n keys = Object.keys(originalOnBeforeRenders)\n\n for (let i = 0, il = keys.length; i < il; i++) {\n originalOnBeforeRenders[keys[i]] = undefined\n }\n\n // remove unused outlineMaterial from cache\n keys = Object.keys(cache)\n\n for (let i = 0, il = keys.length; i < il; i++) {\n const key = keys[i]\n\n if (cache[key].used === false) {\n cache[key].count++\n\n if (cache[key].keepAlive === false && cache[key].count > removeThresholdCount) {\n delete cache[key]\n }\n } else {\n cache[key].used = false\n cache[key].count = 0\n }\n }\n }\n\n this.render = function (scene, camera) {\n if (this.enabled === false) {\n renderer.render(scene, camera)\n return\n }\n\n const currentAutoClear = renderer.autoClear\n renderer.autoClear = this.autoClear\n\n renderer.render(scene, camera)\n\n renderer.autoClear = currentAutoClear\n\n this.renderOutline(scene, camera)\n }\n\n this.renderOutline = function (scene, camera) {\n const currentAutoClear = renderer.autoClear\n const currentSceneAutoUpdate = scene.matrixWorldAutoUpdate\n const currentSceneBackground = scene.background\n const currentShadowMapEnabled = renderer.shadowMap.enabled\n\n scene.matrixWorldAutoUpdate = false\n scene.background = null\n renderer.autoClear = false\n renderer.shadowMap.enabled = false\n\n scene.traverse(setOutlineMaterial)\n\n renderer.render(scene, camera)\n\n scene.traverse(restoreOriginalMaterial)\n\n cleanupCache()\n\n scene.matrixWorldAutoUpdate = currentSceneAutoUpdate\n scene.background = currentSceneBackground\n renderer.autoClear = currentAutoClear\n renderer.shadowMap.enabled = currentShadowMapEnabled\n }\n\n /*\n * See #9918\n *\n * The following property copies and wrapper methods enable\n * OutlineEffect to be called from other *Effect, like\n *\n * effect = new StereoEffect( new OutlineEffect( renderer ) );\n *\n * function render () {\n *\n * \teffect.render( scene, camera );\n *\n * }\n */\n this.autoClear = renderer.autoClear\n this.domElement = renderer.domElement\n this.shadowMap = renderer.shadowMap\n\n this.clear = function (color, depth, stencil) {\n renderer.clear(color, depth, stencil)\n }\n\n this.getPixelRatio = function () {\n return renderer.getPixelRatio()\n }\n\n this.setPixelRatio = function (value) {\n renderer.setPixelRatio(value)\n }\n\n this.getSize = function (target) {\n return renderer.getSize(target)\n }\n\n this.setSize = function (width, height, updateStyle) {\n renderer.setSize(width, height, updateStyle)\n }\n\n this.setViewport = function (x, y, width, height) {\n renderer.setViewport(x, y, width, height)\n }\n\n this.setScissor = function (x, y, width, height) {\n renderer.setScissor(x, y, width, height)\n }\n\n this.setScissorTest = function (boolean) {\n renderer.setScissorTest(boolean)\n }\n\n this.setRenderTarget = function (renderTarget) {\n renderer.setRenderTarget(renderTarget)\n }\n }\n}\n\nexport { OutlineEffect }\n"],"names":["Color","version","ShaderMaterial","UniformsUtils","UniformsLib","BackSide","renderer"],"mappings":"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"}
1
+ {"version":3,"file":"OutlineEffect.cjs","sources":["../../src/effects/OutlineEffect.js"],"sourcesContent":["import { BackSide, Color, ShaderMaterial, UniformsLib, UniformsUtils, REVISION } from 'three'\n\n/**\n * Reference: https://en.wikipedia.org/wiki/Cel_shading\n *\n * API\n *\n * 1. Traditional\n *\n * const effect = new OutlineEffect( renderer );\n *\n * function render() {\n *\n * \teffect.render( scene, camera );\n *\n * }\n *\n * 2. VR compatible\n *\n * const effect = new OutlineEffect( renderer );\n * let renderingOutline = false;\n *\n * scene.onAfterRender = function () {\n *\n * \tif ( renderingOutline ) return;\n *\n * \trenderingOutline = true;\n *\n * \teffect.renderOutline( scene, camera );\n *\n * \trenderingOutline = false;\n *\n * };\n *\n * function render() {\n *\n * \trenderer.render( scene, camera );\n *\n * }\n *\n * // How to set default outline parameters\n * new OutlineEffect( renderer, {\n * \tdefaultThickness: 0.01,\n * \tdefaultColor: [ 0, 0, 0 ],\n * \tdefaultAlpha: 0.8,\n * \tdefaultKeepAlive: true // keeps outline material in cache even if material is removed from scene\n * } );\n *\n * // How to set outline parameters for each material\n * material.userData.outlineParameters = {\n * \tthickness: 0.01,\n * \tcolor: [ 0, 0, 0 ],\n * \talpha: 0.8,\n * \tvisible: true,\n * \tkeepAlive: true\n * };\n */\n\nclass OutlineEffect {\n constructor(renderer, parameters = {}) {\n this.enabled = true\n\n const defaultThickness = parameters.defaultThickness !== undefined ? parameters.defaultThickness : 0.003\n const defaultColor = new Color().fromArray(\n parameters.defaultColor !== undefined ? parameters.defaultColor : [0, 0, 0],\n )\n const defaultAlpha = parameters.defaultAlpha !== undefined ? parameters.defaultAlpha : 1.0\n const defaultKeepAlive = parameters.defaultKeepAlive !== undefined ? parameters.defaultKeepAlive : false\n\n // object.material.uuid -> outlineMaterial or\n // object.material[ n ].uuid -> outlineMaterial\n // save at the outline material creation and release\n // if it's unused removeThresholdCount frames\n // unless keepAlive is true.\n const cache = {}\n\n const removeThresholdCount = 60\n\n // outlineMaterial.uuid -> object.material or\n // outlineMaterial.uuid -> object.material[ n ]\n // save before render and release after render.\n const originalMaterials = {}\n\n // object.uuid -> originalOnBeforeRender\n // save before render and release after render.\n const originalOnBeforeRenders = {}\n\n //this.cache = cache; // for debug\n\n const uniformsOutline = {\n outlineThickness: { value: defaultThickness },\n outlineColor: { value: defaultColor },\n outlineAlpha: { value: defaultAlpha },\n }\n\n const vertexShader = [\n '#include <common>',\n '#include <uv_pars_vertex>',\n '#include <displacementmap_pars_vertex>',\n '#include <fog_pars_vertex>',\n '#include <morphtarget_pars_vertex>',\n '#include <skinning_pars_vertex>',\n '#include <logdepthbuf_pars_vertex>',\n '#include <clipping_planes_pars_vertex>',\n\n 'uniform float outlineThickness;',\n\n 'vec4 calculateOutline( vec4 pos, vec3 normal, vec4 skinned ) {',\n '\tfloat thickness = outlineThickness;',\n '\tconst float ratio = 1.0;', // TODO: support outline thickness ratio for each vertex\n '\tvec4 pos2 = projectionMatrix * modelViewMatrix * vec4( skinned.xyz + normal, 1.0 );',\n // NOTE: subtract pos2 from pos because BackSide objectNormal is negative\n '\tvec4 norm = normalize( pos - pos2 );',\n '\treturn pos + norm * thickness * pos.w * ratio;',\n '}',\n\n 'void main() {',\n\n '\t#include <uv_vertex>',\n\n '\t#include <beginnormal_vertex>',\n '\t#include <morphnormal_vertex>',\n '\t#include <skinbase_vertex>',\n '\t#include <skinnormal_vertex>',\n\n '\t#include <begin_vertex>',\n '\t#include <morphtarget_vertex>',\n '\t#include <skinning_vertex>',\n '\t#include <displacementmap_vertex>',\n '\t#include <project_vertex>',\n\n '\tvec3 outlineNormal = - objectNormal;', // the outline material is always rendered with BackSide\n\n '\tgl_Position = calculateOutline( gl_Position, outlineNormal, vec4( transformed, 1.0 ) );',\n\n '\t#include <logdepthbuf_vertex>',\n '\t#include <clipping_planes_vertex>',\n '\t#include <fog_vertex>',\n\n '}',\n ].join('\\n')\n\n const fragmentShader = [\n '#include <common>',\n '#include <fog_pars_fragment>',\n '#include <logdepthbuf_pars_fragment>',\n '#include <clipping_planes_pars_fragment>',\n\n 'uniform vec3 outlineColor;',\n 'uniform float outlineAlpha;',\n\n 'void main() {',\n\n '\t#include <clipping_planes_fragment>',\n '\t#include <logdepthbuf_fragment>',\n\n '\tgl_FragColor = vec4( outlineColor, outlineAlpha );',\n\n '\t#include <tonemapping_fragment>',\n `\t#include <${parseInt(REVISION.replace(/\\D+/g, '')) >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>`,\n '\t#include <fog_fragment>',\n '\t#include <premultiplied_alpha_fragment>',\n\n '}',\n ].join('\\n')\n\n function createMaterial() {\n return new ShaderMaterial({\n type: 'OutlineEffect',\n uniforms: UniformsUtils.merge([UniformsLib['fog'], UniformsLib['displacementmap'], uniformsOutline]),\n vertexShader: vertexShader,\n fragmentShader: fragmentShader,\n side: BackSide,\n })\n }\n\n function getOutlineMaterialFromCache(originalMaterial) {\n let data = cache[originalMaterial.uuid]\n\n if (data === undefined) {\n data = {\n material: createMaterial(),\n used: true,\n keepAlive: defaultKeepAlive,\n count: 0,\n }\n\n cache[originalMaterial.uuid] = data\n }\n\n data.used = true\n\n return data.material\n }\n\n function getOutlineMaterial(originalMaterial) {\n const outlineMaterial = getOutlineMaterialFromCache(originalMaterial)\n\n originalMaterials[outlineMaterial.uuid] = originalMaterial\n\n updateOutlineMaterial(outlineMaterial, originalMaterial)\n\n return outlineMaterial\n }\n\n function isCompatible(object) {\n const geometry = object.geometry\n const hasNormals = geometry !== undefined && geometry.attributes.normal !== undefined\n\n return object.isMesh === true && object.material !== undefined && hasNormals === true\n }\n\n function setOutlineMaterial(object) {\n if (isCompatible(object) === false) return\n\n if (Array.isArray(object.material)) {\n for (let i = 0, il = object.material.length; i < il; i++) {\n object.material[i] = getOutlineMaterial(object.material[i])\n }\n } else {\n object.material = getOutlineMaterial(object.material)\n }\n\n originalOnBeforeRenders[object.uuid] = object.onBeforeRender\n object.onBeforeRender = onBeforeRender\n }\n\n function restoreOriginalMaterial(object) {\n if (isCompatible(object) === false) return\n\n if (Array.isArray(object.material)) {\n for (let i = 0, il = object.material.length; i < il; i++) {\n object.material[i] = originalMaterials[object.material[i].uuid]\n }\n } else {\n object.material = originalMaterials[object.material.uuid]\n }\n\n object.onBeforeRender = originalOnBeforeRenders[object.uuid]\n }\n\n function onBeforeRender(renderer, scene, camera, geometry, material) {\n const originalMaterial = originalMaterials[material.uuid]\n\n // just in case\n if (originalMaterial === undefined) return\n\n updateUniforms(material, originalMaterial)\n }\n\n function updateUniforms(material, originalMaterial) {\n const outlineParameters = originalMaterial.userData.outlineParameters\n\n material.uniforms.outlineAlpha.value = originalMaterial.opacity\n\n if (outlineParameters !== undefined) {\n if (outlineParameters.thickness !== undefined)\n material.uniforms.outlineThickness.value = outlineParameters.thickness\n if (outlineParameters.color !== undefined)\n material.uniforms.outlineColor.value.fromArray(outlineParameters.color)\n if (outlineParameters.alpha !== undefined) material.uniforms.outlineAlpha.value = outlineParameters.alpha\n }\n\n if (originalMaterial.displacementMap) {\n material.uniforms.displacementMap.value = originalMaterial.displacementMap\n material.uniforms.displacementScale.value = originalMaterial.displacementScale\n material.uniforms.displacementBias.value = originalMaterial.displacementBias\n }\n }\n\n function updateOutlineMaterial(material, originalMaterial) {\n if (material.name === 'invisible') return\n\n const outlineParameters = originalMaterial.userData.outlineParameters\n\n material.fog = originalMaterial.fog\n material.toneMapped = originalMaterial.toneMapped\n material.premultipliedAlpha = originalMaterial.premultipliedAlpha\n material.displacementMap = originalMaterial.displacementMap\n\n if (outlineParameters !== undefined) {\n if (originalMaterial.visible === false) {\n material.visible = false\n } else {\n material.visible = outlineParameters.visible !== undefined ? outlineParameters.visible : true\n }\n\n material.transparent =\n outlineParameters.alpha !== undefined && outlineParameters.alpha < 1.0 ? true : originalMaterial.transparent\n\n if (outlineParameters.keepAlive !== undefined)\n cache[originalMaterial.uuid].keepAlive = outlineParameters.keepAlive\n } else {\n material.transparent = originalMaterial.transparent\n material.visible = originalMaterial.visible\n }\n\n if (originalMaterial.wireframe === true || originalMaterial.depthTest === false) material.visible = false\n\n if (originalMaterial.clippingPlanes) {\n material.clipping = true\n\n material.clippingPlanes = originalMaterial.clippingPlanes\n material.clipIntersection = originalMaterial.clipIntersection\n material.clipShadows = originalMaterial.clipShadows\n }\n\n material.version = originalMaterial.version // update outline material if necessary\n }\n\n function cleanupCache() {\n let keys\n\n // clear originialMaterials\n keys = Object.keys(originalMaterials)\n\n for (let i = 0, il = keys.length; i < il; i++) {\n originalMaterials[keys[i]] = undefined\n }\n\n // clear originalOnBeforeRenders\n keys = Object.keys(originalOnBeforeRenders)\n\n for (let i = 0, il = keys.length; i < il; i++) {\n originalOnBeforeRenders[keys[i]] = undefined\n }\n\n // remove unused outlineMaterial from cache\n keys = Object.keys(cache)\n\n for (let i = 0, il = keys.length; i < il; i++) {\n const key = keys[i]\n\n if (cache[key].used === false) {\n cache[key].count++\n\n if (cache[key].keepAlive === false && cache[key].count > removeThresholdCount) {\n delete cache[key]\n }\n } else {\n cache[key].used = false\n cache[key].count = 0\n }\n }\n }\n\n this.render = function (scene, camera) {\n if (this.enabled === false) {\n renderer.render(scene, camera)\n return\n }\n\n const currentAutoClear = renderer.autoClear\n renderer.autoClear = this.autoClear\n\n renderer.render(scene, camera)\n\n renderer.autoClear = currentAutoClear\n\n this.renderOutline(scene, camera)\n }\n\n this.renderOutline = function (scene, camera) {\n const currentAutoClear = renderer.autoClear\n const currentSceneAutoUpdate = scene.matrixWorldAutoUpdate\n const currentSceneBackground = scene.background\n const currentShadowMapEnabled = renderer.shadowMap.enabled\n\n scene.matrixWorldAutoUpdate = false\n scene.background = null\n renderer.autoClear = false\n renderer.shadowMap.enabled = false\n\n scene.traverse(setOutlineMaterial)\n\n renderer.render(scene, camera)\n\n scene.traverse(restoreOriginalMaterial)\n\n cleanupCache()\n\n scene.matrixWorldAutoUpdate = currentSceneAutoUpdate\n scene.background = currentSceneBackground\n renderer.autoClear = currentAutoClear\n renderer.shadowMap.enabled = currentShadowMapEnabled\n }\n\n /*\n * See #9918\n *\n * The following property copies and wrapper methods enable\n * OutlineEffect to be called from other *Effect, like\n *\n * effect = new StereoEffect( new OutlineEffect( renderer ) );\n *\n * function render () {\n *\n * \teffect.render( scene, camera );\n *\n * }\n */\n this.autoClear = renderer.autoClear\n this.domElement = renderer.domElement\n this.shadowMap = renderer.shadowMap\n\n this.clear = function (color, depth, stencil) {\n renderer.clear(color, depth, stencil)\n }\n\n this.getPixelRatio = function () {\n return renderer.getPixelRatio()\n }\n\n this.setPixelRatio = function (value) {\n renderer.setPixelRatio(value)\n }\n\n this.getSize = function (target) {\n return renderer.getSize(target)\n }\n\n this.setSize = function (width, height, updateStyle) {\n renderer.setSize(width, height, updateStyle)\n }\n\n this.setViewport = function (x, y, width, height) {\n renderer.setViewport(x, y, width, height)\n }\n\n this.setScissor = function (x, y, width, height) {\n renderer.setScissor(x, y, width, height)\n }\n\n this.setScissorTest = function (boolean) {\n renderer.setScissorTest(boolean)\n }\n\n this.setRenderTarget = function (renderTarget) {\n renderer.setRenderTarget(renderTarget)\n }\n }\n}\n\nexport { OutlineEffect }\n"],"names":["Color","REVISION","ShaderMaterial","UniformsUtils","UniformsLib","BackSide","renderer"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- import { Color, ShaderMaterial, UniformsUtils, UniformsLib, BackSide } from "three";
2
- import { version } from "../_polyfill/constants.js";
1
+ import { Color, REVISION, ShaderMaterial, UniformsUtils, UniformsLib, BackSide } from "three";
3
2
  class OutlineEffect {
4
3
  constructor(renderer, parameters = {}) {
5
4
  this.enabled = true;
@@ -68,7 +67,7 @@ class OutlineEffect {
68
67
  " #include <logdepthbuf_fragment>",
69
68
  " gl_FragColor = vec4( outlineColor, outlineAlpha );",
70
69
  " #include <tonemapping_fragment>",
71
- ` #include <${version >= 154 ? "colorspace_fragment" : "encodings_fragment"}>`,
70
+ ` #include <${parseInt(REVISION.replace(/\D+/g, "")) >= 154 ? "colorspace_fragment" : "encodings_fragment"}>`,
72
71
  " #include <fog_fragment>",
73
72
  " #include <premultiplied_alpha_fragment>",
74
73
  "}"