three-stdlib 2.35.3 → 2.35.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (514) hide show
  1. package/_polyfill/CapsuleGeometry.cjs +20 -17
  2. package/_polyfill/CapsuleGeometry.cjs.map +1 -1
  3. package/_polyfill/CapsuleGeometry.js +20 -17
  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 +722 -715
  50. package/deprecated/Geometry.cjs.map +1 -1
  51. package/deprecated/Geometry.js +723 -716
  52. package/deprecated/Geometry.js.map +1 -1
  53. package/effects/AnaglyphEffect.cjs +2 -1
  54. package/effects/AnaglyphEffect.cjs.map +1 -1
  55. package/effects/AnaglyphEffect.js +3 -2
  56. package/effects/AnaglyphEffect.js.map +1 -1
  57. package/effects/OutlineEffect.cjs +2 -1
  58. package/effects/OutlineEffect.cjs.map +1 -1
  59. package/effects/OutlineEffect.js +3 -2
  60. package/effects/OutlineEffect.js.map +1 -1
  61. package/effects/ParallaxBarrierEffect.cjs +2 -1
  62. package/effects/ParallaxBarrierEffect.cjs.map +1 -1
  63. package/effects/ParallaxBarrierEffect.js +3 -2
  64. package/effects/ParallaxBarrierEffect.js.map +1 -1
  65. package/exporters/DRACOExporter.cjs +133 -122
  66. package/exporters/DRACOExporter.cjs.map +1 -1
  67. package/exporters/DRACOExporter.d.ts +23 -21
  68. package/exporters/DRACOExporter.js +133 -122
  69. package/exporters/DRACOExporter.js.map +1 -1
  70. package/exporters/GLTFExporter.cjs +170 -167
  71. package/exporters/GLTFExporter.cjs.map +1 -1
  72. package/exporters/GLTFExporter.js +170 -167
  73. package/exporters/GLTFExporter.js.map +1 -1
  74. package/geometries/LightningStrike.cjs +524 -515
  75. package/geometries/LightningStrike.cjs.map +1 -1
  76. package/geometries/LightningStrike.js +524 -515
  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 +2 -1
  123. package/lines/LineMaterial.cjs.map +1 -1
  124. package/lines/LineMaterial.js +3 -2
  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 +441 -435
  139. package/loaders/BasisTextureLoader.cjs.map +1 -1
  140. package/loaders/BasisTextureLoader.js +441 -435
  141. package/loaders/BasisTextureLoader.js.map +1 -1
  142. package/loaders/EXRLoader.cjs +2 -1
  143. package/loaders/EXRLoader.cjs.map +1 -1
  144. package/loaders/EXRLoader.js +3 -2
  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 +377 -374
  160. package/loaders/KTX2Loader.cjs.map +1 -1
  161. package/loaders/KTX2Loader.js +377 -374
  162. package/loaders/KTX2Loader.js.map +1 -1
  163. package/loaders/LDrawLoader.cjs +5 -4
  164. package/loaders/LDrawLoader.cjs.map +1 -1
  165. package/loaders/LDrawLoader.js +6 -5
  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 +46 -43
  172. package/loaders/PRWMLoader.cjs.map +1 -1
  173. package/loaders/PRWMLoader.js +46 -43
  174. package/loaders/PRWMLoader.js.map +1 -1
  175. package/loaders/SVGLoader.cjs +1694 -1688
  176. package/loaders/SVGLoader.cjs.map +1 -1
  177. package/loaders/SVGLoader.js +1694 -1688
  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 +53 -50
  192. package/math/ConvexHull.cjs.map +1 -1
  193. package/math/ConvexHull.js +53 -50
  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 +271 -268
  212. package/misc/ConvexObjectBreaker.cjs.map +1 -1
  213. package/misc/ConvexObjectBreaker.js +272 -269
  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 +2 -1
  232. package/objects/GroundProjectedEnv.cjs.map +1 -1
  233. package/objects/GroundProjectedEnv.js +3 -2
  234. package/objects/GroundProjectedEnv.js.map +1 -1
  235. package/objects/Lensflare.cjs +209 -206
  236. package/objects/Lensflare.cjs.map +1 -1
  237. package/objects/Lensflare.js +209 -206
  238. package/objects/Lensflare.js.map +1 -1
  239. package/objects/Reflector.cjs +154 -146
  240. package/objects/Reflector.cjs.map +1 -1
  241. package/objects/Reflector.js +154 -146
  242. package/objects/Reflector.js.map +1 -1
  243. package/objects/ReflectorForSSRPass.cjs +183 -180
  244. package/objects/ReflectorForSSRPass.cjs.map +1 -1
  245. package/objects/ReflectorForSSRPass.js +183 -180
  246. package/objects/ReflectorForSSRPass.js.map +1 -1
  247. package/objects/Refractor.cjs +164 -161
  248. package/objects/Refractor.cjs.map +1 -1
  249. package/objects/Refractor.js +164 -161
  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 +35 -32
  256. package/objects/Sky.cjs.map +1 -1
  257. package/objects/Sky.d.ts +100 -6
  258. package/objects/Sky.js +35 -32
  259. package/objects/Sky.js.map +1 -1
  260. package/objects/Water.cjs +2 -1
  261. package/objects/Water.cjs.map +1 -1
  262. package/objects/Water.js +3 -2
  263. package/objects/Water.js.map +1 -1
  264. package/objects/Water2.cjs +143 -140
  265. package/objects/Water2.cjs.map +1 -1
  266. package/objects/Water2.js +143 -140
  267. package/objects/Water2.js.map +1 -1
  268. package/package.json +1 -1
  269. package/postprocessing/SAOPass.cjs +267 -264
  270. package/postprocessing/SAOPass.cjs.map +1 -1
  271. package/postprocessing/SAOPass.js +267 -264
  272. package/postprocessing/SAOPass.js.map +1 -1
  273. package/postprocessing/SSAOPass.cjs +253 -250
  274. package/postprocessing/SSAOPass.cjs.map +1 -1
  275. package/postprocessing/SSAOPass.js +253 -250
  276. package/postprocessing/SSAOPass.js.map +1 -1
  277. package/postprocessing/SSRPass.cjs +379 -376
  278. package/postprocessing/SSRPass.cjs.map +1 -1
  279. package/postprocessing/SSRPass.js +379 -376
  280. package/postprocessing/SSRPass.js.map +1 -1
  281. package/postprocessing/UnrealBloomPass.cjs +205 -202
  282. package/postprocessing/UnrealBloomPass.cjs.map +1 -1
  283. package/postprocessing/UnrealBloomPass.js +205 -202
  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 +71 -46
  294. package/shaders/ACESFilmicToneMappingShader.cjs.map +1 -1
  295. package/shaders/ACESFilmicToneMappingShader.js +71 -46
  296. package/shaders/ACESFilmicToneMappingShader.js.map +1 -1
  297. package/shaders/AfterimageShader.cjs +41 -22
  298. package/shaders/AfterimageShader.cjs.map +1 -1
  299. package/shaders/AfterimageShader.js +41 -22
  300. package/shaders/AfterimageShader.js.map +1 -1
  301. package/shaders/BasicShader.cjs +20 -6
  302. package/shaders/BasicShader.cjs.map +1 -1
  303. package/shaders/BasicShader.js +20 -6
  304. package/shaders/BasicShader.js.map +1 -1
  305. package/shaders/BleachBypassShader.cjs +46 -26
  306. package/shaders/BleachBypassShader.cjs.map +1 -1
  307. package/shaders/BleachBypassShader.js +46 -26
  308. package/shaders/BleachBypassShader.js.map +1 -1
  309. package/shaders/BlendShader.cjs +33 -19
  310. package/shaders/BlendShader.cjs.map +1 -1
  311. package/shaders/BlendShader.js +33 -19
  312. package/shaders/BlendShader.js.map +1 -1
  313. package/shaders/BokehShader.cjs +117 -90
  314. package/shaders/BokehShader.cjs.map +1 -1
  315. package/shaders/BokehShader.js +117 -90
  316. package/shaders/BokehShader.js.map +1 -1
  317. package/shaders/BokehShader2.cjs +333 -232
  318. package/shaders/BokehShader2.cjs.map +1 -1
  319. package/shaders/BokehShader2.js +333 -232
  320. package/shaders/BokehShader2.js.map +1 -1
  321. package/shaders/BrightnessContrastShader.cjs +38 -22
  322. package/shaders/BrightnessContrastShader.cjs.map +1 -1
  323. package/shaders/BrightnessContrastShader.js +38 -22
  324. package/shaders/BrightnessContrastShader.js.map +1 -1
  325. package/shaders/ColorCorrectionShader.cjs +35 -21
  326. package/shaders/ColorCorrectionShader.cjs.map +1 -1
  327. package/shaders/ColorCorrectionShader.js +35 -21
  328. package/shaders/ColorCorrectionShader.js.map +1 -1
  329. package/shaders/ColorifyShader.cjs +34 -19
  330. package/shaders/ColorifyShader.cjs.map +1 -1
  331. package/shaders/ColorifyShader.js +34 -19
  332. package/shaders/ColorifyShader.js.map +1 -1
  333. package/shaders/ConvolutionShader.cjs +43 -24
  334. package/shaders/ConvolutionShader.cjs.map +1 -1
  335. package/shaders/ConvolutionShader.js +43 -24
  336. package/shaders/ConvolutionShader.js.map +1 -1
  337. package/shaders/CopyShader.cjs +30 -16
  338. package/shaders/CopyShader.cjs.map +1 -1
  339. package/shaders/CopyShader.js +30 -16
  340. package/shaders/CopyShader.js.map +1 -1
  341. package/shaders/DOFMipMapShader.cjs +38 -21
  342. package/shaders/DOFMipMapShader.cjs.map +1 -1
  343. package/shaders/DOFMipMapShader.js +38 -21
  344. package/shaders/DOFMipMapShader.js.map +1 -1
  345. package/shaders/DepthLimitedBlurShader.cjs +98 -69
  346. package/shaders/DepthLimitedBlurShader.cjs.map +1 -1
  347. package/shaders/DepthLimitedBlurShader.js +98 -69
  348. package/shaders/DepthLimitedBlurShader.js.map +1 -1
  349. package/shaders/DigitalGlitch.cjs +70 -59
  350. package/shaders/DigitalGlitch.cjs.map +1 -1
  351. package/shaders/DigitalGlitch.js +70 -59
  352. package/shaders/DigitalGlitch.js.map +1 -1
  353. package/shaders/DotScreenShader.cjs +49 -28
  354. package/shaders/DotScreenShader.cjs.map +1 -1
  355. package/shaders/DotScreenShader.js +49 -28
  356. package/shaders/DotScreenShader.js.map +1 -1
  357. package/shaders/FXAAShader.cjs +1098 -1089
  358. package/shaders/FXAAShader.cjs.map +1 -1
  359. package/shaders/FXAAShader.js +1098 -1089
  360. package/shaders/FXAAShader.js.map +1 -1
  361. package/shaders/FilmShader.cjs +57 -29
  362. package/shaders/FilmShader.cjs.map +1 -1
  363. package/shaders/FilmShader.js +57 -29
  364. package/shaders/FilmShader.js.map +1 -1
  365. package/shaders/FocusShader.cjs +70 -43
  366. package/shaders/FocusShader.cjs.map +1 -1
  367. package/shaders/FocusShader.js +70 -43
  368. package/shaders/FocusShader.js.map +1 -1
  369. package/shaders/FreiChenShader.cjs +74 -53
  370. package/shaders/FreiChenShader.cjs.map +1 -1
  371. package/shaders/FreiChenShader.js +74 -53
  372. package/shaders/FreiChenShader.js.map +1 -1
  373. package/shaders/FresnelShader.cjs +55 -35
  374. package/shaders/FresnelShader.cjs.map +1 -1
  375. package/shaders/FresnelShader.js +55 -35
  376. package/shaders/FresnelShader.js.map +1 -1
  377. package/shaders/GammaCorrectionShader.cjs +33 -19
  378. package/shaders/GammaCorrectionShader.cjs.map +1 -1
  379. package/shaders/GammaCorrectionShader.js +33 -19
  380. package/shaders/GammaCorrectionShader.js.map +1 -1
  381. package/shaders/GodRaysShader.cjs +193 -116
  382. package/shaders/GodRaysShader.cjs.map +1 -1
  383. package/shaders/GodRaysShader.js +193 -116
  384. package/shaders/GodRaysShader.js.map +1 -1
  385. package/shaders/HalftoneShader.cjs +270 -192
  386. package/shaders/HalftoneShader.cjs.map +1 -1
  387. package/shaders/HalftoneShader.js +270 -192
  388. package/shaders/HalftoneShader.js.map +1 -1
  389. package/shaders/HorizontalTiltShiftShader.cjs +43 -27
  390. package/shaders/HorizontalTiltShiftShader.cjs.map +1 -1
  391. package/shaders/HorizontalTiltShiftShader.js +43 -27
  392. package/shaders/HorizontalTiltShiftShader.js.map +1 -1
  393. package/shaders/HueSaturationShader.cjs +47 -31
  394. package/shaders/HueSaturationShader.cjs.map +1 -1
  395. package/shaders/HueSaturationShader.js +47 -31
  396. package/shaders/HueSaturationShader.js.map +1 -1
  397. package/shaders/KaleidoShader.cjs +37 -24
  398. package/shaders/KaleidoShader.cjs.map +1 -1
  399. package/shaders/KaleidoShader.js +37 -24
  400. package/shaders/KaleidoShader.js.map +1 -1
  401. package/shaders/LuminosityHighPassShader.cjs +43 -24
  402. package/shaders/LuminosityHighPassShader.cjs.map +1 -1
  403. package/shaders/LuminosityHighPassShader.js +43 -24
  404. package/shaders/LuminosityHighPassShader.js.map +1 -1
  405. package/shaders/LuminosityShader.cjs +34 -17
  406. package/shaders/LuminosityShader.cjs.map +1 -1
  407. package/shaders/LuminosityShader.js +34 -17
  408. package/shaders/LuminosityShader.js.map +1 -1
  409. package/shaders/MirrorShader.cjs +39 -26
  410. package/shaders/MirrorShader.cjs.map +1 -1
  411. package/shaders/MirrorShader.js +39 -26
  412. package/shaders/MirrorShader.js.map +1 -1
  413. package/shaders/NormalMapShader.cjs +36 -21
  414. package/shaders/NormalMapShader.cjs.map +1 -1
  415. package/shaders/NormalMapShader.js +36 -21
  416. package/shaders/NormalMapShader.js.map +1 -1
  417. package/shaders/ParallaxShader.cjs +147 -97
  418. package/shaders/ParallaxShader.cjs.map +1 -1
  419. package/shaders/ParallaxShader.js +147 -97
  420. package/shaders/ParallaxShader.js.map +1 -1
  421. package/shaders/PixelShader.cjs +31 -18
  422. package/shaders/PixelShader.cjs.map +1 -1
  423. package/shaders/PixelShader.js +31 -18
  424. package/shaders/PixelShader.js.map +1 -1
  425. package/shaders/RGBShiftShader.cjs +33 -20
  426. package/shaders/RGBShiftShader.cjs.map +1 -1
  427. package/shaders/RGBShiftShader.js +33 -20
  428. package/shaders/RGBShiftShader.js.map +1 -1
  429. package/shaders/SAOShader.cjs +154 -117
  430. package/shaders/SAOShader.cjs.map +1 -1
  431. package/shaders/SAOShader.js +154 -117
  432. package/shaders/SAOShader.js.map +1 -1
  433. package/shaders/SMAAShader.cjs +358 -270
  434. package/shaders/SMAAShader.cjs.map +1 -1
  435. package/shaders/SMAAShader.js +358 -270
  436. package/shaders/SMAAShader.js.map +1 -1
  437. package/shaders/SSAOShader.cjs +236 -142
  438. package/shaders/SSAOShader.cjs.map +1 -1
  439. package/shaders/SSAOShader.js +236 -142
  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 +36 -20
  446. package/shaders/SepiaShader.cjs.map +1 -1
  447. package/shaders/SepiaShader.js +36 -20
  448. package/shaders/SepiaShader.js.map +1 -1
  449. package/shaders/SobelOperatorShader.cjs +64 -37
  450. package/shaders/SobelOperatorShader.cjs.map +1 -1
  451. package/shaders/SobelOperatorShader.js +64 -37
  452. package/shaders/SobelOperatorShader.js.map +1 -1
  453. package/shaders/TechnicolorShader.cjs +29 -16
  454. package/shaders/TechnicolorShader.cjs.map +1 -1
  455. package/shaders/TechnicolorShader.js +29 -16
  456. package/shaders/TechnicolorShader.js.map +1 -1
  457. package/shaders/ToneMapShader.cjs +55 -35
  458. package/shaders/ToneMapShader.cjs.map +1 -1
  459. package/shaders/ToneMapShader.js +55 -35
  460. package/shaders/ToneMapShader.js.map +1 -1
  461. package/shaders/ToonShader.cjs +275 -165
  462. package/shaders/ToonShader.cjs.map +1 -1
  463. package/shaders/ToonShader.js +275 -165
  464. package/shaders/ToonShader.js.map +1 -1
  465. package/shaders/TriangleBlurShader.cjs +50 -27
  466. package/shaders/TriangleBlurShader.cjs.map +1 -1
  467. package/shaders/TriangleBlurShader.js +50 -27
  468. package/shaders/TriangleBlurShader.js.map +1 -1
  469. package/shaders/UnpackDepthRGBAShader.cjs +32 -17
  470. package/shaders/UnpackDepthRGBAShader.cjs.map +1 -1
  471. package/shaders/UnpackDepthRGBAShader.js +32 -17
  472. package/shaders/UnpackDepthRGBAShader.js.map +1 -1
  473. package/shaders/VerticalTiltShiftShader.cjs +43 -27
  474. package/shaders/VerticalTiltShiftShader.cjs.map +1 -1
  475. package/shaders/VerticalTiltShiftShader.js +43 -27
  476. package/shaders/VerticalTiltShiftShader.js.map +1 -1
  477. package/shaders/VignetteShader.cjs +43 -27
  478. package/shaders/VignetteShader.cjs.map +1 -1
  479. package/shaders/VignetteShader.js +43 -27
  480. package/shaders/VignetteShader.js.map +1 -1
  481. package/shaders/VolumeShader.cjs +264 -213
  482. package/shaders/VolumeShader.cjs.map +1 -1
  483. package/shaders/VolumeShader.js +264 -213
  484. package/shaders/VolumeShader.js.map +1 -1
  485. package/shaders/WaterRefractionShader.cjs +63 -35
  486. package/shaders/WaterRefractionShader.cjs.map +1 -1
  487. package/shaders/WaterRefractionShader.js +63 -35
  488. package/shaders/WaterRefractionShader.js.map +1 -1
  489. package/utils/GeometryCompressionUtils.cjs +2 -1
  490. package/utils/GeometryCompressionUtils.cjs.map +1 -1
  491. package/utils/GeometryCompressionUtils.js +3 -2
  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 +109 -106
  498. package/webxr/ARButton.cjs.map +1 -1
  499. package/webxr/ARButton.d.ts +4 -3
  500. package/webxr/ARButton.js +109 -106
  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 +98 -95
  507. package/webxr/VRButton.cjs.map +1 -1
  508. package/webxr/VRButton.d.ts +6 -5
  509. package/webxr/VRButton.js +98 -95
  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":"OutlineEffect.js","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":["renderer"],"mappings":";AA0DA,MAAM,cAAc;AAAA,EAClB,YAAY,UAAU,aAAa,IAAI;AACrC,SAAK,UAAU;AAEf,UAAM,mBAAmB,WAAW,qBAAqB,SAAY,WAAW,mBAAmB;AACnG,UAAM,eAAe,IAAI,MAAK,EAAG;AAAA,MAC/B,WAAW,iBAAiB,SAAY,WAAW,eAAe,CAAC,GAAG,GAAG,CAAC;AAAA,IAC3E;AACD,UAAM,eAAe,WAAW,iBAAiB,SAAY,WAAW,eAAe;AACvF,UAAM,mBAAmB,WAAW,qBAAqB,SAAY,WAAW,mBAAmB;AAOnG,UAAM,QAAQ,CAAE;AAEhB,UAAM,uBAAuB;AAK7B,UAAM,oBAAoB,CAAE;AAI5B,UAAM,0BAA0B,CAAE;AAIlC,UAAM,kBAAkB;AAAA,MACtB,kBAAkB,EAAE,OAAO,iBAAkB;AAAA,MAC7C,cAAc,EAAE,OAAO,aAAc;AAAA,MACrC,cAAc,EAAE,OAAO,aAAc;AAAA,IACtC;AAED,UAAM,eAAe;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MACA;AAAA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MAEA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,IACN,EAAM,KAAK,IAAI;AAEX,UAAM,iBAAiB;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MAEA;AAAA,MAEA;AAAA,MACA;AAAA,MAEA;AAAA,MAEA;AAAA,MACA,cAAc,SAAS,SAAS,QAAQ,QAAQ,EAAE,CAAC,KAAK,MAAM,wBAAwB;AAAA,MACtF;AAAA,MACA;AAAA,MAEA;AAAA,IACN,EAAM,KAAK,IAAI;AAEX,aAAS,iBAAiB;AACxB,aAAO,IAAI,eAAe;AAAA,QACxB,MAAM;AAAA,QACN,UAAU,cAAc,MAAM,CAAC,YAAY,KAAK,GAAG,YAAY,iBAAiB,GAAG,eAAe,CAAC;AAAA,QACnG;AAAA,QACA;AAAA,QACA,MAAM;AAAA,MACd,CAAO;AAAA,IACF;AAED,aAAS,4BAA4B,kBAAkB;AACrD,UAAI,OAAO,MAAM,iBAAiB,IAAI;AAEtC,UAAI,SAAS,QAAW;AACtB,eAAO;AAAA,UACL,UAAU,eAAgB;AAAA,UAC1B,MAAM;AAAA,UACN,WAAW;AAAA,UACX,OAAO;AAAA,QACR;AAED,cAAM,iBAAiB,IAAI,IAAI;AAAA,MAChC;AAED,WAAK,OAAO;AAEZ,aAAO,KAAK;AAAA,IACb;AAED,aAAS,mBAAmB,kBAAkB;AAC5C,YAAM,kBAAkB,4BAA4B,gBAAgB;AAEpE,wBAAkB,gBAAgB,IAAI,IAAI;AAE1C,4BAAsB,iBAAiB,gBAAgB;AAEvD,aAAO;AAAA,IACR;AAED,aAAS,aAAa,QAAQ;AAC5B,YAAM,WAAW,OAAO;AACxB,YAAM,aAAa,aAAa,UAAa,SAAS,WAAW,WAAW;AAE5E,aAAO,OAAO,WAAW,QAAQ,OAAO,aAAa,UAAa,eAAe;AAAA,IAClF;AAED,aAAS,mBAAmB,QAAQ;AAClC,UAAI,aAAa,MAAM,MAAM;AAAO;AAEpC,UAAI,MAAM,QAAQ,OAAO,QAAQ,GAAG;AAClC,iBAAS,IAAI,GAAG,KAAK,OAAO,SAAS,QAAQ,IAAI,IAAI,KAAK;AACxD,iBAAO,SAAS,CAAC,IAAI,mBAAmB,OAAO,SAAS,CAAC,CAAC;AAAA,QAC3D;AAAA,MACT,OAAa;AACL,eAAO,WAAW,mBAAmB,OAAO,QAAQ;AAAA,MACrD;AAED,8BAAwB,OAAO,IAAI,IAAI,OAAO;AAC9C,aAAO,iBAAiB;AAAA,IACzB;AAED,aAAS,wBAAwB,QAAQ;AACvC,UAAI,aAAa,MAAM,MAAM;AAAO;AAEpC,UAAI,MAAM,QAAQ,OAAO,QAAQ,GAAG;AAClC,iBAAS,IAAI,GAAG,KAAK,OAAO,SAAS,QAAQ,IAAI,IAAI,KAAK;AACxD,iBAAO,SAAS,CAAC,IAAI,kBAAkB,OAAO,SAAS,CAAC,EAAE,IAAI;AAAA,QAC/D;AAAA,MACT,OAAa;AACL,eAAO,WAAW,kBAAkB,OAAO,SAAS,IAAI;AAAA,MACzD;AAED,aAAO,iBAAiB,wBAAwB,OAAO,IAAI;AAAA,IAC5D;AAED,aAAS,eAAeA,WAAU,OAAO,QAAQ,UAAU,UAAU;AACnE,YAAM,mBAAmB,kBAAkB,SAAS,IAAI;AAGxD,UAAI,qBAAqB;AAAW;AAEpC,qBAAe,UAAU,gBAAgB;AAAA,IAC1C;AAED,aAAS,eAAe,UAAU,kBAAkB;AAClD,YAAM,oBAAoB,iBAAiB,SAAS;AAEpD,eAAS,SAAS,aAAa,QAAQ,iBAAiB;AAExD,UAAI,sBAAsB,QAAW;AACnC,YAAI,kBAAkB,cAAc;AAClC,mBAAS,SAAS,iBAAiB,QAAQ,kBAAkB;AAC/D,YAAI,kBAAkB,UAAU;AAC9B,mBAAS,SAAS,aAAa,MAAM,UAAU,kBAAkB,KAAK;AACxE,YAAI,kBAAkB,UAAU;AAAW,mBAAS,SAAS,aAAa,QAAQ,kBAAkB;AAAA,MACrG;AAED,UAAI,iBAAiB,iBAAiB;AACpC,iBAAS,SAAS,gBAAgB,QAAQ,iBAAiB;AAC3D,iBAAS,SAAS,kBAAkB,QAAQ,iBAAiB;AAC7D,iBAAS,SAAS,iBAAiB,QAAQ,iBAAiB;AAAA,MAC7D;AAAA,IACF;AAED,aAAS,sBAAsB,UAAU,kBAAkB;AACzD,UAAI,SAAS,SAAS;AAAa;AAEnC,YAAM,oBAAoB,iBAAiB,SAAS;AAEpD,eAAS,MAAM,iBAAiB;AAChC,eAAS,aAAa,iBAAiB;AACvC,eAAS,qBAAqB,iBAAiB;AAC/C,eAAS,kBAAkB,iBAAiB;AAE5C,UAAI,sBAAsB,QAAW;AACnC,YAAI,iBAAiB,YAAY,OAAO;AACtC,mBAAS,UAAU;AAAA,QAC7B,OAAe;AACL,mBAAS,UAAU,kBAAkB,YAAY,SAAY,kBAAkB,UAAU;AAAA,QAC1F;AAED,iBAAS,cACP,kBAAkB,UAAU,UAAa,kBAAkB,QAAQ,IAAM,OAAO,iBAAiB;AAEnG,YAAI,kBAAkB,cAAc;AAClC,gBAAM,iBAAiB,IAAI,EAAE,YAAY,kBAAkB;AAAA,MACrE,OAAa;AACL,iBAAS,cAAc,iBAAiB;AACxC,iBAAS,UAAU,iBAAiB;AAAA,MACrC;AAED,UAAI,iBAAiB,cAAc,QAAQ,iBAAiB,cAAc;AAAO,iBAAS,UAAU;AAEpG,UAAI,iBAAiB,gBAAgB;AACnC,iBAAS,WAAW;AAEpB,iBAAS,iBAAiB,iBAAiB;AAC3C,iBAAS,mBAAmB,iBAAiB;AAC7C,iBAAS,cAAc,iBAAiB;AAAA,MACzC;AAED,eAAS,UAAU,iBAAiB;AAAA,IACrC;AAED,aAAS,eAAe;AACtB,UAAI;AAGJ,aAAO,OAAO,KAAK,iBAAiB;AAEpC,eAAS,IAAI,GAAG,KAAK,KAAK,QAAQ,IAAI,IAAI,KAAK;AAC7C,0BAAkB,KAAK,CAAC,CAAC,IAAI;AAAA,MAC9B;AAGD,aAAO,OAAO,KAAK,uBAAuB;AAE1C,eAAS,IAAI,GAAG,KAAK,KAAK,QAAQ,IAAI,IAAI,KAAK;AAC7C,gCAAwB,KAAK,CAAC,CAAC,IAAI;AAAA,MACpC;AAGD,aAAO,OAAO,KAAK,KAAK;AAExB,eAAS,IAAI,GAAG,KAAK,KAAK,QAAQ,IAAI,IAAI,KAAK;AAC7C,cAAM,MAAM,KAAK,CAAC;AAElB,YAAI,MAAM,GAAG,EAAE,SAAS,OAAO;AAC7B,gBAAM,GAAG,EAAE;AAEX,cAAI,MAAM,GAAG,EAAE,cAAc,SAAS,MAAM,GAAG,EAAE,QAAQ,sBAAsB;AAC7E,mBAAO,MAAM,GAAG;AAAA,UACjB;AAAA,QACX,OAAe;AACL,gBAAM,GAAG,EAAE,OAAO;AAClB,gBAAM,GAAG,EAAE,QAAQ;AAAA,QACpB;AAAA,MACF;AAAA,IACF;AAED,SAAK,SAAS,SAAU,OAAO,QAAQ;AACrC,UAAI,KAAK,YAAY,OAAO;AAC1B,iBAAS,OAAO,OAAO,MAAM;AAC7B;AAAA,MACD;AAED,YAAM,mBAAmB,SAAS;AAClC,eAAS,YAAY,KAAK;AAE1B,eAAS,OAAO,OAAO,MAAM;AAE7B,eAAS,YAAY;AAErB,WAAK,cAAc,OAAO,MAAM;AAAA,IACjC;AAED,SAAK,gBAAgB,SAAU,OAAO,QAAQ;AAC5C,YAAM,mBAAmB,SAAS;AAClC,YAAM,yBAAyB,MAAM;AACrC,YAAM,yBAAyB,MAAM;AACrC,YAAM,0BAA0B,SAAS,UAAU;AAEnD,YAAM,wBAAwB;AAC9B,YAAM,aAAa;AACnB,eAAS,YAAY;AACrB,eAAS,UAAU,UAAU;AAE7B,YAAM,SAAS,kBAAkB;AAEjC,eAAS,OAAO,OAAO,MAAM;AAE7B,YAAM,SAAS,uBAAuB;AAEtC,mBAAc;AAEd,YAAM,wBAAwB;AAC9B,YAAM,aAAa;AACnB,eAAS,YAAY;AACrB,eAAS,UAAU,UAAU;AAAA,IAC9B;AAgBD,SAAK,YAAY,SAAS;AAC1B,SAAK,aAAa,SAAS;AAC3B,SAAK,YAAY,SAAS;AAE1B,SAAK,QAAQ,SAAU,OAAO,OAAO,SAAS;AAC5C,eAAS,MAAM,OAAO,OAAO,OAAO;AAAA,IACrC;AAED,SAAK,gBAAgB,WAAY;AAC/B,aAAO,SAAS,cAAe;AAAA,IAChC;AAED,SAAK,gBAAgB,SAAU,OAAO;AACpC,eAAS,cAAc,KAAK;AAAA,IAC7B;AAED,SAAK,UAAU,SAAU,QAAQ;AAC/B,aAAO,SAAS,QAAQ,MAAM;AAAA,IAC/B;AAED,SAAK,UAAU,SAAU,OAAO,QAAQ,aAAa;AACnD,eAAS,QAAQ,OAAO,QAAQ,WAAW;AAAA,IAC5C;AAED,SAAK,cAAc,SAAU,GAAG,GAAG,OAAO,QAAQ;AAChD,eAAS,YAAY,GAAG,GAAG,OAAO,MAAM;AAAA,IACzC;AAED,SAAK,aAAa,SAAU,GAAG,GAAG,OAAO,QAAQ;AAC/C,eAAS,WAAW,GAAG,GAAG,OAAO,MAAM;AAAA,IACxC;AAED,SAAK,iBAAiB,SAAU,SAAS;AACvC,eAAS,eAAe,OAAO;AAAA,IAChC;AAED,SAAK,kBAAkB,SAAU,cAAc;AAC7C,eAAS,gBAAgB,YAAY;AAAA,IACtC;AAAA,EACF;AACH;"}
1
+ {"version":3,"file":"OutlineEffect.js","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":["renderer"],"mappings":"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"}
@@ -1,6 +1,7 @@
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");
4
5
  class ParallaxBarrierEffect {
5
6
  constructor(renderer) {
6
7
  const _camera = new THREE.OrthographicCamera(-1, 1, 1, -1, 0, 1);
@@ -33,7 +34,7 @@ class ParallaxBarrierEffect {
33
34
  " gl_FragColor = texture2D( mapRight, uv );",
34
35
  " }",
35
36
  " #include <tonemapping_fragment>",
36
- ` #include <${parseInt(THREE.REVISION.replace(/\D+/g, "")) >= 154 ? "colorspace_fragment" : "encodings_fragment"}>`,
37
+ ` #include <${constants.version >= 154 ? "colorspace_fragment" : "encodings_fragment"}>`,
37
38
  "}"
38
39
  ].join("\n")
39
40
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ParallaxBarrierEffect.cjs","sources":["../../src/effects/ParallaxBarrierEffect.js"],"sourcesContent":["import {\n LinearFilter,\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 ParallaxBarrierEffect {\n constructor(renderer) {\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(512, 512, _params)\n const _renderTargetR = new WebGLRenderTarget(512, 512, _params)\n\n const _material = new ShaderMaterial({\n uniforms: {\n mapLeft: { value: _renderTargetL.texture },\n mapRight: { value: _renderTargetR.texture },\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 'void main() {',\n\n '\tvec2 uv = vUv;',\n\n '\tif ( ( mod( gl_FragCoord.y, 2.0 ) ) > 1.00 ) {',\n\n '\t\tgl_FragColor = texture2D( mapLeft, uv );',\n\n '\t} else {',\n\n '\t\tgl_FragColor = texture2D( mapRight, uv );',\n\n '\t}',\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 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 }\n}\n\nexport { ParallaxBarrierEffect }\n"],"names":["OrthographicCamera","Scene","StereoCamera","LinearFilter","NearestFilter","RGBAFormat","WebGLRenderTarget","ShaderMaterial","REVISION","Mesh","PlaneGeometry"],"mappings":";;;AAcA,MAAM,sBAAsB;AAAA,EAC1B,YAAY,UAAU;AACpB,UAAM,UAAU,IAAIA,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,KAAK,KAAK,OAAO;AAC9D,UAAM,iBAAiB,IAAIA,MAAAA,kBAAkB,KAAK,KAAK,OAAO;AAE9D,UAAM,YAAY,IAAIC,qBAAe;AAAA,MACnC,UAAU;AAAA,QACR,SAAS,EAAE,OAAO,eAAe,QAAS;AAAA,QAC1C,UAAU,EAAE,OAAO,eAAe,QAAS;AAAA,MAC5C;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,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QACA,cAAc,SAASC,MAAQ,SAAC,QAAQ,QAAQ,EAAE,CAAC,KAAK,MAAM,wBAAwB;AAAA,QAEtF;AAAA,MACR,EAAQ,KAAK,IAAI;AAAA,IACjB,CAAK;AAED,UAAM,OAAO,IAAIC,WAAK,IAAIC,MAAa,cAAC,GAAG,CAAC,GAAG,SAAS;AACxD,WAAO,IAAI,IAAI;AAEf,SAAK,UAAU,SAAU,OAAO,QAAQ;AACtC,eAAS,QAAQ,OAAO,MAAM;AAE9B,YAAM,aAAa,SAAS,cAAe;AAE3C,qBAAe,QAAQ,QAAQ,YAAY,SAAS,UAAU;AAC9D,qBAAe,QAAQ,QAAQ,YAAY,SAAS,UAAU;AAAA,IAC/D;AAED,SAAK,SAAS,SAAU,OAAO,QAAQ;AACrC,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;AAAA,IAChC;AAAA,EACF;AACH;;"}
1
+ {"version":3,"file":"ParallaxBarrierEffect.cjs","sources":["../../src/effects/ParallaxBarrierEffect.js"],"sourcesContent":["import {\n LinearFilter,\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 ParallaxBarrierEffect {\n constructor(renderer) {\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(512, 512, _params)\n const _renderTargetR = new WebGLRenderTarget(512, 512, _params)\n\n const _material = new ShaderMaterial({\n uniforms: {\n mapLeft: { value: _renderTargetL.texture },\n mapRight: { value: _renderTargetR.texture },\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 'void main() {',\n\n '\tvec2 uv = vUv;',\n\n '\tif ( ( mod( gl_FragCoord.y, 2.0 ) ) > 1.00 ) {',\n\n '\t\tgl_FragColor = texture2D( mapLeft, uv );',\n\n '\t} else {',\n\n '\t\tgl_FragColor = texture2D( mapRight, uv );',\n\n '\t}',\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 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 }\n}\n\nexport { ParallaxBarrierEffect }\n"],"names":["OrthographicCamera","Scene","StereoCamera","LinearFilter","NearestFilter","RGBAFormat","WebGLRenderTarget","ShaderMaterial","version","Mesh","PlaneGeometry"],"mappings":";;;;AAcA,MAAM,sBAAsB;AAAA,EAC1B,YAAY,UAAU;AACpB,UAAM,UAAU,IAAIA,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,KAAK,KAAK,OAAO;AAC9D,UAAM,iBAAiB,IAAIA,MAAAA,kBAAkB,KAAK,KAAK,OAAO;AAE9D,UAAM,YAAY,IAAIC,qBAAe;AAAA,MACnC,UAAU;AAAA,QACR,SAAS,EAAE,OAAO,eAAe,QAAS;AAAA,QAC1C,UAAU,EAAE,OAAO,eAAe,QAAS;AAAA,MAC5C;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,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QACA,cAAcC,UAAAA,WAAW,MAAM,wBAAwB;AAAA,QAEvD;AAAA,MACR,EAAQ,KAAK,IAAI;AAAA,IACjB,CAAK;AAED,UAAM,OAAO,IAAIC,WAAK,IAAIC,MAAa,cAAC,GAAG,CAAC,GAAG,SAAS;AACxD,WAAO,IAAI,IAAI;AAEf,SAAK,UAAU,SAAU,OAAO,QAAQ;AACtC,eAAS,QAAQ,OAAO,MAAM;AAE9B,YAAM,aAAa,SAAS,cAAe;AAE3C,qBAAe,QAAQ,QAAQ,YAAY,SAAS,UAAU;AAC9D,qBAAe,QAAQ,QAAQ,YAAY,SAAS,UAAU;AAAA,IAC/D;AAED,SAAK,SAAS,SAAU,OAAO,QAAQ;AACrC,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;AAAA,IAChC;AAAA,EACF;AACH;;"}
@@ -1,4 +1,5 @@
1
- import { OrthographicCamera, Scene, StereoCamera, WebGLRenderTarget, ShaderMaterial, REVISION, Mesh, PlaneGeometry, LinearFilter, NearestFilter, RGBAFormat } from "three";
1
+ import { OrthographicCamera, Scene, StereoCamera, WebGLRenderTarget, ShaderMaterial, Mesh, PlaneGeometry, LinearFilter, NearestFilter, RGBAFormat } from "three";
2
+ import { version } from "../_polyfill/constants.js";
2
3
  class ParallaxBarrierEffect {
3
4
  constructor(renderer) {
4
5
  const _camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1);
@@ -31,7 +32,7 @@ class ParallaxBarrierEffect {
31
32
  " gl_FragColor = texture2D( mapRight, uv );",
32
33
  " }",
33
34
  " #include <tonemapping_fragment>",
34
- ` #include <${parseInt(REVISION.replace(/\D+/g, "")) >= 154 ? "colorspace_fragment" : "encodings_fragment"}>`,
35
+ ` #include <${version >= 154 ? "colorspace_fragment" : "encodings_fragment"}>`,
35
36
  "}"
36
37
  ].join("\n")
37
38
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ParallaxBarrierEffect.js","sources":["../../src/effects/ParallaxBarrierEffect.js"],"sourcesContent":["import {\n LinearFilter,\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 ParallaxBarrierEffect {\n constructor(renderer) {\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(512, 512, _params)\n const _renderTargetR = new WebGLRenderTarget(512, 512, _params)\n\n const _material = new ShaderMaterial({\n uniforms: {\n mapLeft: { value: _renderTargetL.texture },\n mapRight: { value: _renderTargetR.texture },\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 'void main() {',\n\n '\tvec2 uv = vUv;',\n\n '\tif ( ( mod( gl_FragCoord.y, 2.0 ) ) > 1.00 ) {',\n\n '\t\tgl_FragColor = texture2D( mapLeft, uv );',\n\n '\t} else {',\n\n '\t\tgl_FragColor = texture2D( mapRight, uv );',\n\n '\t}',\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 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 }\n}\n\nexport { ParallaxBarrierEffect }\n"],"names":[],"mappings":";AAcA,MAAM,sBAAsB;AAAA,EAC1B,YAAY,UAAU;AACpB,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,KAAK,KAAK,OAAO;AAC9D,UAAM,iBAAiB,IAAI,kBAAkB,KAAK,KAAK,OAAO;AAE9D,UAAM,YAAY,IAAI,eAAe;AAAA,MACnC,UAAU;AAAA,QACR,SAAS,EAAE,OAAO,eAAe,QAAS;AAAA,QAC1C,UAAU,EAAE,OAAO,eAAe,QAAS;AAAA,MAC5C;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,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;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,OAAO,IAAI,KAAK,IAAI,cAAc,GAAG,CAAC,GAAG,SAAS;AACxD,WAAO,IAAI,IAAI;AAEf,SAAK,UAAU,SAAU,OAAO,QAAQ;AACtC,eAAS,QAAQ,OAAO,MAAM;AAE9B,YAAM,aAAa,SAAS,cAAe;AAE3C,qBAAe,QAAQ,QAAQ,YAAY,SAAS,UAAU;AAC9D,qBAAe,QAAQ,QAAQ,YAAY,SAAS,UAAU;AAAA,IAC/D;AAED,SAAK,SAAS,SAAU,OAAO,QAAQ;AACrC,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;AAAA,IAChC;AAAA,EACF;AACH;"}
1
+ {"version":3,"file":"ParallaxBarrierEffect.js","sources":["../../src/effects/ParallaxBarrierEffect.js"],"sourcesContent":["import {\n LinearFilter,\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 ParallaxBarrierEffect {\n constructor(renderer) {\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(512, 512, _params)\n const _renderTargetR = new WebGLRenderTarget(512, 512, _params)\n\n const _material = new ShaderMaterial({\n uniforms: {\n mapLeft: { value: _renderTargetL.texture },\n mapRight: { value: _renderTargetR.texture },\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 'void main() {',\n\n '\tvec2 uv = vUv;',\n\n '\tif ( ( mod( gl_FragCoord.y, 2.0 ) ) > 1.00 ) {',\n\n '\t\tgl_FragColor = texture2D( mapLeft, uv );',\n\n '\t} else {',\n\n '\t\tgl_FragColor = texture2D( mapRight, uv );',\n\n '\t}',\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 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 }\n}\n\nexport { ParallaxBarrierEffect }\n"],"names":[],"mappings":";;AAcA,MAAM,sBAAsB;AAAA,EAC1B,YAAY,UAAU;AACpB,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,KAAK,KAAK,OAAO;AAC9D,UAAM,iBAAiB,IAAI,kBAAkB,KAAK,KAAK,OAAO;AAE9D,UAAM,YAAY,IAAI,eAAe;AAAA,MACnC,UAAU;AAAA,QACR,SAAS,EAAE,OAAO,eAAe,QAAS;AAAA,QAC1C,UAAU,EAAE,OAAO,eAAe,QAAS;AAAA,MAC5C;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,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QAEA;AAAA,QACA,cAAc,WAAW,MAAM,wBAAwB;AAAA,QAEvD;AAAA,MACR,EAAQ,KAAK,IAAI;AAAA,IACjB,CAAK;AAED,UAAM,OAAO,IAAI,KAAK,IAAI,cAAc,GAAG,CAAC,GAAG,SAAS;AACxD,WAAO,IAAI,IAAI;AAEf,SAAK,UAAU,SAAU,OAAO,QAAQ;AACtC,eAAS,QAAQ,OAAO,MAAM;AAE9B,YAAM,aAAa,SAAS,cAAe;AAE3C,qBAAe,QAAQ,QAAQ,YAAY,SAAS,UAAU;AAC9D,qBAAe,QAAQ,QAAQ,YAAY,SAAS,UAAU;AAAA,IAC/D;AAED,SAAK,SAAS,SAAU,OAAO,QAAQ;AACrC,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;AAAA,IAChC;AAAA,EACF;AACH;"}
@@ -7,136 +7,147 @@ var __publicField = (obj, key, value) => {
7
7
  };
8
8
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
9
9
  const THREE = require("three");
10
- const _DRACOExporter = class {
11
- parse(object, options = {
12
- decodeSpeed: 5,
13
- encodeSpeed: 5,
14
- encoderMethod: _DRACOExporter.MESH_EDGEBREAKER_ENCODING,
15
- quantization: [16, 8, 8, 8, 8],
16
- exportUvs: true,
17
- exportNormals: true,
18
- exportColor: false
19
- }) {
20
- if (object instanceof THREE.BufferGeometry && object.isBufferGeometry) {
21
- throw new Error("DRACOExporter: The first parameter of parse() is now an instance of Mesh or Points.");
22
- }
23
- if (DracoEncoderModule === void 0) {
24
- throw new Error("THREE.DRACOExporter: required the draco_encoder to work.");
25
- }
26
- const geometry = object.geometry;
27
- const dracoEncoder = DracoEncoderModule();
28
- const encoder = new dracoEncoder.Encoder();
29
- let builder;
30
- let dracoObject;
31
- if (!geometry.isBufferGeometry) {
32
- throw new Error("THREE.DRACOExporter.parse(geometry, options): geometry is not a THREE.BufferGeometry instance.");
33
- }
34
- if (object instanceof THREE.Mesh && object.isMesh) {
35
- builder = new dracoEncoder.MeshBuilder();
36
- dracoObject = new dracoEncoder.Mesh();
37
- const vertices = geometry.getAttribute("position");
38
- builder.AddFloatAttributeToMesh(
39
- dracoObject,
40
- dracoEncoder.POSITION,
41
- vertices.count,
42
- vertices.itemSize,
43
- vertices.array
44
- );
45
- const faces = geometry.getIndex();
46
- if (faces !== null) {
47
- builder.AddFacesToMesh(dracoObject, faces.count / 3, faces.array);
48
- } else {
49
- const faces2 = new (vertices.count > 65535 ? Uint32Array : Uint16Array)(vertices.count);
50
- for (let i = 0; i < faces2.length; i++) {
51
- faces2[i] = i;
52
- }
53
- builder.AddFacesToMesh(dracoObject, vertices.count, faces2);
10
+ const DRACOExporter = /* @__PURE__ */ (() => {
11
+ const _DRACOExporter2 = class {
12
+ parse(object, options = {
13
+ decodeSpeed: 5,
14
+ encodeSpeed: 5,
15
+ encoderMethod: _DRACOExporter2.MESH_EDGEBREAKER_ENCODING,
16
+ quantization: [16, 8, 8, 8, 8],
17
+ exportUvs: true,
18
+ exportNormals: true,
19
+ exportColor: false
20
+ }) {
21
+ if (object instanceof THREE.BufferGeometry && object.isBufferGeometry) {
22
+ throw new Error("DRACOExporter: The first parameter of parse() is now an instance of Mesh or Points.");
54
23
  }
55
- if (options.exportNormals) {
56
- const normals = geometry.getAttribute("normal");
57
- if (normals !== void 0) {
58
- builder.AddFloatAttributeToMesh(
59
- dracoObject,
60
- dracoEncoder.NORMAL,
61
- normals.count,
62
- normals.itemSize,
63
- normals.array
64
- );
65
- }
24
+ if (DracoEncoderModule === void 0) {
25
+ throw new Error("THREE.DRACOExporter: required the draco_encoder to work.");
66
26
  }
67
- if (options.exportUvs) {
68
- const uvs = geometry.getAttribute("uv");
69
- if (uvs !== void 0) {
70
- builder.AddFloatAttributeToMesh(dracoObject, dracoEncoder.TEX_COORD, uvs.count, uvs.itemSize, uvs.array);
71
- }
27
+ const geometry = object.geometry;
28
+ const dracoEncoder = DracoEncoderModule();
29
+ const encoder = new dracoEncoder.Encoder();
30
+ let builder;
31
+ let dracoObject;
32
+ if (!geometry.isBufferGeometry) {
33
+ throw new Error(
34
+ "THREE.DRACOExporter.parse(geometry, options): geometry is not a THREE.BufferGeometry instance."
35
+ );
72
36
  }
73
- if (options.exportColor) {
74
- const colors = geometry.getAttribute("color");
75
- if (colors !== void 0) {
76
- builder.AddFloatAttributeToMesh(dracoObject, dracoEncoder.COLOR, colors.count, colors.itemSize, colors.array);
37
+ if (object instanceof THREE.Mesh && object.isMesh) {
38
+ builder = new dracoEncoder.MeshBuilder();
39
+ dracoObject = new dracoEncoder.Mesh();
40
+ const vertices = geometry.getAttribute("position");
41
+ builder.AddFloatAttributeToMesh(
42
+ dracoObject,
43
+ dracoEncoder.POSITION,
44
+ vertices.count,
45
+ vertices.itemSize,
46
+ vertices.array
47
+ );
48
+ const faces = geometry.getIndex();
49
+ if (faces !== null) {
50
+ builder.AddFacesToMesh(dracoObject, faces.count / 3, faces.array);
51
+ } else {
52
+ const faces2 = new (vertices.count > 65535 ? Uint32Array : Uint16Array)(vertices.count);
53
+ for (let i = 0; i < faces2.length; i++) {
54
+ faces2[i] = i;
55
+ }
56
+ builder.AddFacesToMesh(dracoObject, vertices.count, faces2);
77
57
  }
78
- }
79
- } else if (object instanceof THREE.Points && object.isPoints) {
80
- builder = new dracoEncoder.PointCloudBuilder();
81
- dracoObject = new dracoEncoder.PointCloud();
82
- const vertices = geometry.getAttribute("position");
83
- builder.AddFloatAttribute(dracoObject, dracoEncoder.POSITION, vertices.count, vertices.itemSize, vertices.array);
84
- if (options.exportColor) {
85
- const colors = geometry.getAttribute("color");
86
- if (colors !== void 0) {
87
- builder.AddFloatAttribute(dracoObject, dracoEncoder.COLOR, colors.count, colors.itemSize, colors.array);
58
+ if (options.exportNormals) {
59
+ const normals = geometry.getAttribute("normal");
60
+ if (normals !== void 0) {
61
+ builder.AddFloatAttributeToMesh(
62
+ dracoObject,
63
+ dracoEncoder.NORMAL,
64
+ normals.count,
65
+ normals.itemSize,
66
+ normals.array
67
+ );
68
+ }
69
+ }
70
+ if (options.exportUvs) {
71
+ const uvs = geometry.getAttribute("uv");
72
+ if (uvs !== void 0) {
73
+ builder.AddFloatAttributeToMesh(dracoObject, dracoEncoder.TEX_COORD, uvs.count, uvs.itemSize, uvs.array);
74
+ }
88
75
  }
76
+ if (options.exportColor) {
77
+ const colors = geometry.getAttribute("color");
78
+ if (colors !== void 0) {
79
+ builder.AddFloatAttributeToMesh(
80
+ dracoObject,
81
+ dracoEncoder.COLOR,
82
+ colors.count,
83
+ colors.itemSize,
84
+ colors.array
85
+ );
86
+ }
87
+ }
88
+ } else if (object instanceof THREE.Points && object.isPoints) {
89
+ builder = new dracoEncoder.PointCloudBuilder();
90
+ dracoObject = new dracoEncoder.PointCloud();
91
+ const vertices = geometry.getAttribute("position");
92
+ builder.AddFloatAttribute(dracoObject, dracoEncoder.POSITION, vertices.count, vertices.itemSize, vertices.array);
93
+ if (options.exportColor) {
94
+ const colors = geometry.getAttribute("color");
95
+ if (colors !== void 0) {
96
+ builder.AddFloatAttribute(dracoObject, dracoEncoder.COLOR, colors.count, colors.itemSize, colors.array);
97
+ }
98
+ }
99
+ } else {
100
+ throw new Error("DRACOExporter: Unsupported object type.");
89
101
  }
90
- } else {
91
- throw new Error("DRACOExporter: Unsupported object type.");
92
- }
93
- const encodedData = new dracoEncoder.DracoInt8Array();
94
- const encodeSpeed = options.encodeSpeed !== void 0 ? options.encodeSpeed : 5;
95
- const decodeSpeed = options.decodeSpeed !== void 0 ? options.decodeSpeed : 5;
96
- encoder.SetSpeedOptions(encodeSpeed, decodeSpeed);
97
- if (options.encoderMethod !== void 0) {
98
- encoder.SetEncodingMethod(options.encoderMethod);
99
- }
100
- if (options.quantization !== void 0) {
101
- for (let i = 0; i < 5; i++) {
102
- if (options.quantization[i] !== void 0) {
103
- encoder.SetAttributeQuantization(i, options.quantization[i]);
102
+ const encodedData = new dracoEncoder.DracoInt8Array();
103
+ const encodeSpeed = options.encodeSpeed !== void 0 ? options.encodeSpeed : 5;
104
+ const decodeSpeed = options.decodeSpeed !== void 0 ? options.decodeSpeed : 5;
105
+ encoder.SetSpeedOptions(encodeSpeed, decodeSpeed);
106
+ if (options.encoderMethod !== void 0) {
107
+ encoder.SetEncodingMethod(options.encoderMethod);
108
+ }
109
+ if (options.quantization !== void 0) {
110
+ for (let i = 0; i < 5; i++) {
111
+ if (options.quantization[i] !== void 0) {
112
+ encoder.SetAttributeQuantization(i, options.quantization[i]);
113
+ }
104
114
  }
105
115
  }
116
+ let length;
117
+ if (object instanceof THREE.Mesh && object.isMesh) {
118
+ length = encoder.EncodeMeshToDracoBuffer(dracoObject, encodedData);
119
+ } else {
120
+ length = encoder.EncodePointCloudToDracoBuffer(dracoObject, true, encodedData);
121
+ }
122
+ dracoEncoder.destroy(dracoObject);
123
+ if (length === 0) {
124
+ throw new Error("THREE.DRACOExporter: Draco encoding failed.");
125
+ }
126
+ const outputData = new Int8Array(new ArrayBuffer(length));
127
+ for (let i = 0; i < length; i++) {
128
+ outputData[i] = encodedData.GetValue(i);
129
+ }
130
+ dracoEncoder.destroy(encodedData);
131
+ dracoEncoder.destroy(encoder);
132
+ dracoEncoder.destroy(builder);
133
+ return outputData;
106
134
  }
107
- let length;
108
- if (object instanceof THREE.Mesh && object.isMesh) {
109
- length = encoder.EncodeMeshToDracoBuffer(dracoObject, encodedData);
110
- } else {
111
- length = encoder.EncodePointCloudToDracoBuffer(dracoObject, true, encodedData);
112
- }
113
- dracoEncoder.destroy(dracoObject);
114
- if (length === 0) {
115
- throw new Error("THREE.DRACOExporter: Draco encoding failed.");
116
- }
117
- const outputData = new Int8Array(new ArrayBuffer(length));
118
- for (let i = 0; i < length; i++) {
119
- outputData[i] = encodedData.GetValue(i);
120
- }
121
- dracoEncoder.destroy(encodedData);
122
- dracoEncoder.destroy(encoder);
123
- dracoEncoder.destroy(builder);
124
- return outputData;
125
- }
126
- };
127
- let DRACOExporter = _DRACOExporter;
128
- // Encoder methods
129
- __publicField(DRACOExporter, "MESH_EDGEBREAKER_ENCODING", 1);
130
- __publicField(DRACOExporter, "MESH_SEQUENTIAL_ENCODING", 0);
131
- // Geometry type
132
- __publicField(DRACOExporter, "POINT_CLOUD", 0);
133
- __publicField(DRACOExporter, "TRIANGULAR_MESH", 1);
134
- // Attribute type
135
- __publicField(DRACOExporter, "INVALID", -1);
136
- __publicField(DRACOExporter, "POSITION", 0);
137
- __publicField(DRACOExporter, "NORMAL", 1);
138
- __publicField(DRACOExporter, "COLOR", 2);
139
- __publicField(DRACOExporter, "TEX_COORD", 3);
140
- __publicField(DRACOExporter, "GENERIC", 4);
135
+ };
136
+ let DRACOExporter2 = _DRACOExporter2;
137
+ // Encoder methods
138
+ __publicField(DRACOExporter2, "MESH_EDGEBREAKER_ENCODING", 1);
139
+ __publicField(DRACOExporter2, "MESH_SEQUENTIAL_ENCODING", 0);
140
+ // Geometry type
141
+ __publicField(DRACOExporter2, "POINT_CLOUD", 0);
142
+ __publicField(DRACOExporter2, "TRIANGULAR_MESH", 1);
143
+ // Attribute type
144
+ __publicField(DRACOExporter2, "INVALID", -1);
145
+ __publicField(DRACOExporter2, "POSITION", 0);
146
+ __publicField(DRACOExporter2, "NORMAL", 1);
147
+ __publicField(DRACOExporter2, "COLOR", 2);
148
+ __publicField(DRACOExporter2, "TEX_COORD", 3);
149
+ __publicField(DRACOExporter2, "GENERIC", 4);
150
+ return DRACOExporter2;
151
+ })();
141
152
  exports.DRACOExporter = DRACOExporter;
142
153
  //# sourceMappingURL=DRACOExporter.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"DRACOExporter.cjs","sources":["../../src/exporters/DRACOExporter.ts"],"sourcesContent":["import type { EncoderModule } from 'draco3d'\nimport { BufferGeometry, Mesh, Points } from 'three'\n\n/**\n * Export draco compressed files from threejs geometry objects.\n *\n * Draco files are compressed and usually are smaller than conventional 3D file formats.\n *\n * The exporter receives a options object containing\n * - decodeSpeed, indicates how to tune the encoder regarding decode speed (0 gives better speed but worst quality)\n * - encodeSpeed, indicates how to tune the encoder parameters (0 gives better speed but worst quality)\n * - encoderMethod\n * - quantization, indicates the presision of each type of data stored in the draco file in the order (POSITION, NORMAL, COLOR, TEX_COORD, GENERIC)\n * - exportUvs\n * - exportNormals\n */\n\ndeclare const DracoEncoderModule: () => EncoderModule\n\nclass DRACOExporter {\n // Encoder methods\n\n public static MESH_EDGEBREAKER_ENCODING = 1\n public static MESH_SEQUENTIAL_ENCODING = 0\n\n // Geometry type\n\n public static POINT_CLOUD = 0\n public static TRIANGULAR_MESH = 1\n\n // Attribute type\n public static INVALID = -1\n public static POSITION = 0\n public static NORMAL = 1\n public static COLOR = 2\n public static TEX_COORD = 3\n public static GENERIC = 4\n\n public parse(\n object: Mesh | Points,\n options = {\n decodeSpeed: 5,\n encodeSpeed: 5,\n encoderMethod: DRACOExporter.MESH_EDGEBREAKER_ENCODING,\n quantization: [16, 8, 8, 8, 8],\n exportUvs: true,\n exportNormals: true,\n exportColor: false,\n },\n ): Int8Array {\n if (object instanceof BufferGeometry && object.isBufferGeometry) {\n throw new Error('DRACOExporter: The first parameter of parse() is now an instance of Mesh or Points.')\n }\n\n if (DracoEncoderModule === undefined) {\n throw new Error('THREE.DRACOExporter: required the draco_encoder to work.')\n }\n\n const geometry = object.geometry\n\n const dracoEncoder = DracoEncoderModule()\n const encoder = new dracoEncoder.Encoder()\n let builder\n let dracoObject\n\n if (!geometry.isBufferGeometry) {\n throw new Error('THREE.DRACOExporter.parse(geometry, options): geometry is not a THREE.BufferGeometry instance.')\n }\n\n if (object instanceof Mesh && object.isMesh) {\n builder = new dracoEncoder.MeshBuilder()\n dracoObject = new dracoEncoder.Mesh()\n\n const vertices = geometry.getAttribute('position')\n // @ts-ignore\n builder.AddFloatAttributeToMesh(\n dracoObject,\n dracoEncoder.POSITION,\n vertices.count,\n vertices.itemSize,\n vertices.array,\n )\n\n const faces = geometry.getIndex()\n\n if (faces !== null) {\n builder.AddFacesToMesh(dracoObject, faces.count / 3, faces.array as Uint16Array | Uint32Array)\n } else {\n const faces = new (vertices.count > 65535 ? Uint32Array : Uint16Array)(vertices.count)\n\n for (let i = 0; i < faces.length; i++) {\n faces[i] = i\n }\n\n builder.AddFacesToMesh(dracoObject, vertices.count, faces)\n }\n\n if (options.exportNormals) {\n const normals = geometry.getAttribute('normal')\n\n if (normals !== undefined) {\n // @ts-ignore\n builder.AddFloatAttributeToMesh(\n dracoObject,\n dracoEncoder.NORMAL,\n normals.count,\n normals.itemSize,\n normals.array,\n )\n }\n }\n\n if (options.exportUvs) {\n const uvs = geometry.getAttribute('uv')\n\n if (uvs !== undefined) {\n // @ts-ignore\n builder.AddFloatAttributeToMesh(dracoObject, dracoEncoder.TEX_COORD, uvs.count, uvs.itemSize, uvs.array)\n }\n }\n\n if (options.exportColor) {\n const colors = geometry.getAttribute('color')\n\n if (colors !== undefined) {\n // @ts-ignore\n builder.AddFloatAttributeToMesh(dracoObject, dracoEncoder.COLOR, colors.count, colors.itemSize, colors.array)\n }\n }\n } else if (object instanceof Points && object.isPoints) {\n // @ts-ignore\n builder = new dracoEncoder.PointCloudBuilder()\n // @ts-ignore\n dracoObject = new dracoEncoder.PointCloud()\n\n const vertices = geometry.getAttribute('position')\n builder.AddFloatAttribute(dracoObject, dracoEncoder.POSITION, vertices.count, vertices.itemSize, vertices.array)\n\n if (options.exportColor) {\n const colors = geometry.getAttribute('color')\n\n if (colors !== undefined) {\n builder.AddFloatAttribute(dracoObject, dracoEncoder.COLOR, colors.count, colors.itemSize, colors.array)\n }\n }\n } else {\n throw new Error('DRACOExporter: Unsupported object type.')\n }\n\n //Compress using draco encoder\n\n const encodedData = new dracoEncoder.DracoInt8Array()\n\n //Sets the desired encoding and decoding speed for the given options from 0 (slowest speed, but the best compression) to 10 (fastest, but the worst compression).\n\n const encodeSpeed = options.encodeSpeed !== undefined ? options.encodeSpeed : 5\n const decodeSpeed = options.decodeSpeed !== undefined ? options.decodeSpeed : 5\n\n encoder.SetSpeedOptions(encodeSpeed, decodeSpeed)\n\n // Sets the desired encoding method for a given geometry.\n\n if (options.encoderMethod !== undefined) {\n encoder.SetEncodingMethod(options.encoderMethod)\n }\n\n // Sets the quantization (number of bits used to represent) compression options for a named attribute.\n // The attribute values will be quantized in a box defined by the maximum extent of the attribute values.\n if (options.quantization !== undefined) {\n for (let i = 0; i < 5; i++) {\n if (options.quantization[i] !== undefined) {\n encoder.SetAttributeQuantization(i, options.quantization[i])\n }\n }\n }\n\n let length\n\n if (object instanceof Mesh && object.isMesh) {\n length = encoder.EncodeMeshToDracoBuffer(dracoObject, encodedData)\n } else {\n // @ts-ignore\n length = encoder.EncodePointCloudToDracoBuffer(dracoObject, true, encodedData)\n }\n\n dracoEncoder.destroy(dracoObject)\n\n if (length === 0) {\n throw new Error('THREE.DRACOExporter: Draco encoding failed.')\n }\n\n //Copy encoded data to buffer.\n const outputData = new Int8Array(new ArrayBuffer(length))\n\n for (let i = 0; i < length; i++) {\n outputData[i] = encodedData.GetValue(i)\n }\n\n dracoEncoder.destroy(encodedData)\n dracoEncoder.destroy(encoder)\n dracoEncoder.destroy(builder)\n\n return outputData\n }\n}\n\nexport { DRACOExporter }\n"],"names":["BufferGeometry","Mesh","faces","Points"],"mappings":"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"}
1
+ {"version":3,"file":"DRACOExporter.cjs","sources":["../../src/exporters/DRACOExporter.ts"],"sourcesContent":["import type { EncoderModule } from 'draco3d'\nimport { BufferGeometry, Mesh, Points } from 'three'\n\n/**\n * Export draco compressed files from threejs geometry objects.\n *\n * Draco files are compressed and usually are smaller than conventional 3D file formats.\n *\n * The exporter receives a options object containing\n * - decodeSpeed, indicates how to tune the encoder regarding decode speed (0 gives better speed but worst quality)\n * - encodeSpeed, indicates how to tune the encoder parameters (0 gives better speed but worst quality)\n * - encoderMethod\n * - quantization, indicates the presision of each type of data stored in the draco file in the order (POSITION, NORMAL, COLOR, TEX_COORD, GENERIC)\n * - exportUvs\n * - exportNormals\n */\n\ndeclare const DracoEncoderModule: () => EncoderModule\n\nconst DRACOExporter = /* @__PURE__ */ (() => {\n class DRACOExporter {\n // Encoder methods\n\n public static MESH_EDGEBREAKER_ENCODING = 1\n public static MESH_SEQUENTIAL_ENCODING = 0\n\n // Geometry type\n\n public static POINT_CLOUD = 0\n public static TRIANGULAR_MESH = 1\n\n // Attribute type\n public static INVALID = -1\n public static POSITION = 0\n public static NORMAL = 1\n public static COLOR = 2\n public static TEX_COORD = 3\n public static GENERIC = 4\n\n public parse(\n object: Mesh | Points,\n options = {\n decodeSpeed: 5,\n encodeSpeed: 5,\n encoderMethod: DRACOExporter.MESH_EDGEBREAKER_ENCODING,\n quantization: [16, 8, 8, 8, 8],\n exportUvs: true,\n exportNormals: true,\n exportColor: false,\n },\n ): Int8Array {\n if (object instanceof BufferGeometry && object.isBufferGeometry) {\n throw new Error('DRACOExporter: The first parameter of parse() is now an instance of Mesh or Points.')\n }\n\n if (DracoEncoderModule === undefined) {\n throw new Error('THREE.DRACOExporter: required the draco_encoder to work.')\n }\n\n const geometry = object.geometry\n\n const dracoEncoder = DracoEncoderModule()\n const encoder = new dracoEncoder.Encoder()\n let builder\n let dracoObject\n\n if (!geometry.isBufferGeometry) {\n throw new Error(\n 'THREE.DRACOExporter.parse(geometry, options): geometry is not a THREE.BufferGeometry instance.',\n )\n }\n\n if (object instanceof Mesh && object.isMesh) {\n builder = new dracoEncoder.MeshBuilder()\n dracoObject = new dracoEncoder.Mesh()\n\n const vertices = geometry.getAttribute('position')\n // @ts-ignore\n builder.AddFloatAttributeToMesh(\n dracoObject,\n dracoEncoder.POSITION,\n vertices.count,\n vertices.itemSize,\n vertices.array,\n )\n\n const faces = geometry.getIndex()\n\n if (faces !== null) {\n builder.AddFacesToMesh(dracoObject, faces.count / 3, faces.array as Uint16Array | Uint32Array)\n } else {\n const faces = new (vertices.count > 65535 ? Uint32Array : Uint16Array)(vertices.count)\n\n for (let i = 0; i < faces.length; i++) {\n faces[i] = i\n }\n\n builder.AddFacesToMesh(dracoObject, vertices.count, faces)\n }\n\n if (options.exportNormals) {\n const normals = geometry.getAttribute('normal')\n\n if (normals !== undefined) {\n // @ts-ignore\n builder.AddFloatAttributeToMesh(\n dracoObject,\n dracoEncoder.NORMAL,\n normals.count,\n normals.itemSize,\n normals.array,\n )\n }\n }\n\n if (options.exportUvs) {\n const uvs = geometry.getAttribute('uv')\n\n if (uvs !== undefined) {\n // @ts-ignore\n builder.AddFloatAttributeToMesh(dracoObject, dracoEncoder.TEX_COORD, uvs.count, uvs.itemSize, uvs.array)\n }\n }\n\n if (options.exportColor) {\n const colors = geometry.getAttribute('color')\n\n if (colors !== undefined) {\n // @ts-ignore\n builder.AddFloatAttributeToMesh(\n dracoObject,\n dracoEncoder.COLOR,\n colors.count,\n colors.itemSize,\n colors.array,\n )\n }\n }\n } else if (object instanceof Points && object.isPoints) {\n // @ts-ignore\n builder = new dracoEncoder.PointCloudBuilder()\n // @ts-ignore\n dracoObject = new dracoEncoder.PointCloud()\n\n const vertices = geometry.getAttribute('position')\n builder.AddFloatAttribute(dracoObject, dracoEncoder.POSITION, vertices.count, vertices.itemSize, vertices.array)\n\n if (options.exportColor) {\n const colors = geometry.getAttribute('color')\n\n if (colors !== undefined) {\n builder.AddFloatAttribute(dracoObject, dracoEncoder.COLOR, colors.count, colors.itemSize, colors.array)\n }\n }\n } else {\n throw new Error('DRACOExporter: Unsupported object type.')\n }\n\n //Compress using draco encoder\n\n const encodedData = new dracoEncoder.DracoInt8Array()\n\n //Sets the desired encoding and decoding speed for the given options from 0 (slowest speed, but the best compression) to 10 (fastest, but the worst compression).\n\n const encodeSpeed = options.encodeSpeed !== undefined ? options.encodeSpeed : 5\n const decodeSpeed = options.decodeSpeed !== undefined ? options.decodeSpeed : 5\n\n encoder.SetSpeedOptions(encodeSpeed, decodeSpeed)\n\n // Sets the desired encoding method for a given geometry.\n\n if (options.encoderMethod !== undefined) {\n encoder.SetEncodingMethod(options.encoderMethod)\n }\n\n // Sets the quantization (number of bits used to represent) compression options for a named attribute.\n // The attribute values will be quantized in a box defined by the maximum extent of the attribute values.\n if (options.quantization !== undefined) {\n for (let i = 0; i < 5; i++) {\n if (options.quantization[i] !== undefined) {\n encoder.SetAttributeQuantization(i, options.quantization[i])\n }\n }\n }\n\n let length\n\n if (object instanceof Mesh && object.isMesh) {\n length = encoder.EncodeMeshToDracoBuffer(dracoObject, encodedData)\n } else {\n // @ts-ignore\n length = encoder.EncodePointCloudToDracoBuffer(dracoObject, true, encodedData)\n }\n\n dracoEncoder.destroy(dracoObject)\n\n if (length === 0) {\n throw new Error('THREE.DRACOExporter: Draco encoding failed.')\n }\n\n //Copy encoded data to buffer.\n const outputData = new Int8Array(new ArrayBuffer(length))\n\n for (let i = 0; i < length; i++) {\n outputData[i] = encodedData.GetValue(i)\n }\n\n dracoEncoder.destroy(encodedData)\n dracoEncoder.destroy(encoder)\n dracoEncoder.destroy(builder)\n\n return outputData\n }\n }\n\n return DRACOExporter\n})()\n\nexport { DRACOExporter }\n"],"names":["DRACOExporter","BufferGeometry","Mesh","faces","Points"],"mappings":"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"}
@@ -1,23 +1,25 @@
1
1
  import { Mesh, Points } from 'three';
2
- declare class DRACOExporter {
3
- static MESH_EDGEBREAKER_ENCODING: number;
4
- static MESH_SEQUENTIAL_ENCODING: number;
5
- static POINT_CLOUD: number;
6
- static TRIANGULAR_MESH: number;
7
- static INVALID: number;
8
- static POSITION: number;
9
- static NORMAL: number;
10
- static COLOR: number;
11
- static TEX_COORD: number;
12
- static GENERIC: number;
13
- parse(object: Mesh | Points, options?: {
14
- decodeSpeed: number;
15
- encodeSpeed: number;
16
- encoderMethod: number;
17
- quantization: number[];
18
- exportUvs: boolean;
19
- exportNormals: boolean;
20
- exportColor: boolean;
21
- }): Int8Array;
22
- }
2
+ declare const DRACOExporter: {
3
+ new (): {
4
+ parse(object: Mesh | Points, options?: {
5
+ decodeSpeed: number;
6
+ encodeSpeed: number;
7
+ encoderMethod: number;
8
+ quantization: number[];
9
+ exportUvs: boolean;
10
+ exportNormals: boolean;
11
+ exportColor: boolean;
12
+ }): Int8Array;
13
+ };
14
+ MESH_EDGEBREAKER_ENCODING: number;
15
+ MESH_SEQUENTIAL_ENCODING: number;
16
+ POINT_CLOUD: number;
17
+ TRIANGULAR_MESH: number;
18
+ INVALID: number;
19
+ POSITION: number;
20
+ NORMAL: number;
21
+ COLOR: number;
22
+ TEX_COORD: number;
23
+ GENERIC: number;
24
+ };
23
25
  export { DRACOExporter };