three-stdlib 2.35.4 → 2.35.5

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 +17 -20
  2. package/_polyfill/CapsuleGeometry.cjs.map +1 -1
  3. package/_polyfill/CapsuleGeometry.js +17 -20
  4. package/_polyfill/CapsuleGeometry.js.map +1 -1
  5. package/_polyfill/constants.cjs +1 -1
  6. package/_polyfill/constants.cjs.map +1 -1
  7. package/_polyfill/constants.js +1 -1
  8. package/_polyfill/constants.js.map +1 -1
  9. package/animation/AnimationClipCreator.cjs +13 -13
  10. package/animation/AnimationClipCreator.cjs.map +1 -1
  11. package/animation/AnimationClipCreator.js +13 -13
  12. package/animation/AnimationClipCreator.js.map +1 -1
  13. package/animation/CCDIKSolver.cjs +11 -11
  14. package/animation/CCDIKSolver.cjs.map +1 -1
  15. package/animation/CCDIKSolver.js +12 -12
  16. package/animation/CCDIKSolver.js.map +1 -1
  17. package/animation/MMDAnimationHelper.cjs +1 -1
  18. package/animation/MMDAnimationHelper.cjs.map +1 -1
  19. package/animation/MMDAnimationHelper.js +1 -1
  20. package/animation/MMDAnimationHelper.js.map +1 -1
  21. package/animation/MMDPhysics.cjs +4 -4
  22. package/animation/MMDPhysics.cjs.map +1 -1
  23. package/animation/MMDPhysics.js +4 -4
  24. package/animation/MMDPhysics.js.map +1 -1
  25. package/controls/ArcballControls.cjs +2 -2
  26. package/controls/ArcballControls.cjs.map +1 -1
  27. package/controls/ArcballControls.js +3 -3
  28. package/controls/ArcballControls.js.map +1 -1
  29. package/controls/FirstPersonControls.cjs +1 -1
  30. package/controls/FirstPersonControls.cjs.map +1 -1
  31. package/controls/FirstPersonControls.js +1 -1
  32. package/controls/FirstPersonControls.js.map +1 -1
  33. package/controls/OrbitControls.cjs +2 -2
  34. package/controls/OrbitControls.cjs.map +1 -1
  35. package/controls/OrbitControls.js +3 -3
  36. package/controls/OrbitControls.js.map +1 -1
  37. package/controls/PointerLockControls.cjs +2 -2
  38. package/controls/PointerLockControls.cjs.map +1 -1
  39. package/controls/PointerLockControls.js +3 -3
  40. package/controls/PointerLockControls.js.map +1 -1
  41. package/csm/CSM.cjs +4 -4
  42. package/csm/CSM.cjs.map +1 -1
  43. package/csm/CSM.js +5 -5
  44. package/csm/CSM.js.map +1 -1
  45. package/csm/CSMFrustum.cjs +1 -1
  46. package/csm/CSMFrustum.cjs.map +1 -1
  47. package/csm/CSMFrustum.js +2 -2
  48. package/csm/CSMFrustum.js.map +1 -1
  49. package/deprecated/Geometry.cjs +715 -722
  50. package/deprecated/Geometry.cjs.map +1 -1
  51. package/deprecated/Geometry.js +716 -723
  52. package/deprecated/Geometry.js.map +1 -1
  53. package/effects/AnaglyphEffect.cjs +1 -2
  54. package/effects/AnaglyphEffect.cjs.map +1 -1
  55. package/effects/AnaglyphEffect.js +2 -3
  56. package/effects/AnaglyphEffect.js.map +1 -1
  57. package/effects/OutlineEffect.cjs +1 -2
  58. package/effects/OutlineEffect.cjs.map +1 -1
  59. package/effects/OutlineEffect.js +2 -3
  60. package/effects/OutlineEffect.js.map +1 -1
  61. package/effects/ParallaxBarrierEffect.cjs +1 -2
  62. package/effects/ParallaxBarrierEffect.cjs.map +1 -1
  63. package/effects/ParallaxBarrierEffect.js +2 -3
  64. package/effects/ParallaxBarrierEffect.js.map +1 -1
  65. package/exporters/DRACOExporter.cjs +122 -133
  66. package/exporters/DRACOExporter.cjs.map +1 -1
  67. package/exporters/DRACOExporter.d.ts +21 -23
  68. package/exporters/DRACOExporter.js +122 -133
  69. package/exporters/DRACOExporter.js.map +1 -1
  70. package/exporters/GLTFExporter.cjs +167 -170
  71. package/exporters/GLTFExporter.cjs.map +1 -1
  72. package/exporters/GLTFExporter.js +167 -170
  73. package/exporters/GLTFExporter.js.map +1 -1
  74. package/geometries/LightningStrike.cjs +515 -524
  75. package/geometries/LightningStrike.cjs.map +1 -1
  76. package/geometries/LightningStrike.js +515 -524
  77. package/geometries/LightningStrike.js.map +1 -1
  78. package/geometries/RoundedBoxGeometry.cjs +1 -1
  79. package/geometries/RoundedBoxGeometry.cjs.map +1 -1
  80. package/geometries/RoundedBoxGeometry.js +2 -2
  81. package/geometries/RoundedBoxGeometry.js.map +1 -1
  82. package/helpers/RaycasterHelper.cjs +2 -2
  83. package/helpers/RaycasterHelper.cjs.map +1 -1
  84. package/helpers/RaycasterHelper.js +3 -3
  85. package/helpers/RaycasterHelper.js.map +1 -1
  86. package/helpers/VertexNormalsHelper.cjs +3 -3
  87. package/helpers/VertexNormalsHelper.cjs.map +1 -1
  88. package/helpers/VertexNormalsHelper.js +4 -4
  89. package/helpers/VertexNormalsHelper.js.map +1 -1
  90. package/helpers/VertexTangentsHelper.cjs +2 -2
  91. package/helpers/VertexTangentsHelper.cjs.map +1 -1
  92. package/helpers/VertexTangentsHelper.js +3 -3
  93. package/helpers/VertexTangentsHelper.js.map +1 -1
  94. package/interactive/InteractiveGroup.cjs +1 -1
  95. package/interactive/InteractiveGroup.cjs.map +1 -1
  96. package/interactive/InteractiveGroup.js +2 -2
  97. package/interactive/InteractiveGroup.js.map +1 -1
  98. package/interactive/SelectionBox.cjs +15 -15
  99. package/interactive/SelectionBox.cjs.map +1 -1
  100. package/interactive/SelectionBox.js +16 -16
  101. package/interactive/SelectionBox.js.map +1 -1
  102. package/libs/chevrotain.cjs +1 -1
  103. package/libs/chevrotain.cjs.map +1 -1
  104. package/libs/chevrotain.js +1 -1
  105. package/libs/chevrotain.js.map +1 -1
  106. package/libs/lottie.cjs +1 -1
  107. package/libs/lottie.cjs.map +1 -1
  108. package/libs/lottie.js +1 -1
  109. package/libs/lottie.js.map +1 -1
  110. package/libs/opentype.cjs +1 -1
  111. package/libs/opentype.cjs.map +1 -1
  112. package/libs/opentype.js +1 -1
  113. package/libs/opentype.js.map +1 -1
  114. package/lights/LightProbeGenerator.cjs +5 -5
  115. package/lights/LightProbeGenerator.cjs.map +1 -1
  116. package/lights/LightProbeGenerator.js +5 -5
  117. package/lights/LightProbeGenerator.js.map +1 -1
  118. package/lights/RectAreaLightUniformsLib.cjs +3 -3
  119. package/lights/RectAreaLightUniformsLib.cjs.map +1 -1
  120. package/lights/RectAreaLightUniformsLib.js +3 -3
  121. package/lights/RectAreaLightUniformsLib.js.map +1 -1
  122. package/lines/LineMaterial.cjs +1 -2
  123. package/lines/LineMaterial.cjs.map +1 -1
  124. package/lines/LineMaterial.js +2 -3
  125. package/lines/LineMaterial.js.map +1 -1
  126. package/lines/LineSegments2.cjs +13 -13
  127. package/lines/LineSegments2.cjs.map +1 -1
  128. package/lines/LineSegments2.js +14 -14
  129. package/lines/LineSegments2.js.map +1 -1
  130. package/lines/LineSegmentsGeometry.cjs +2 -2
  131. package/lines/LineSegmentsGeometry.cjs.map +1 -1
  132. package/lines/LineSegmentsGeometry.js +3 -3
  133. package/lines/LineSegmentsGeometry.js.map +1 -1
  134. package/lines/Wireframe.cjs +3 -3
  135. package/lines/Wireframe.cjs.map +1 -1
  136. package/lines/Wireframe.js +4 -4
  137. package/lines/Wireframe.js.map +1 -1
  138. package/loaders/BasisTextureLoader.cjs +435 -441
  139. package/loaders/BasisTextureLoader.cjs.map +1 -1
  140. package/loaders/BasisTextureLoader.js +435 -441
  141. package/loaders/BasisTextureLoader.js.map +1 -1
  142. package/loaders/EXRLoader.cjs +1 -2
  143. package/loaders/EXRLoader.cjs.map +1 -1
  144. package/loaders/EXRLoader.js +2 -3
  145. package/loaders/EXRLoader.js.map +1 -1
  146. package/loaders/FBXLoader.cjs +2 -2
  147. package/loaders/FBXLoader.cjs.map +1 -1
  148. package/loaders/FBXLoader.js +2 -2
  149. package/loaders/FBXLoader.js.map +1 -1
  150. package/loaders/FontLoader.cjs +2 -2
  151. package/loaders/FontLoader.cjs.map +1 -1
  152. package/loaders/FontLoader.d.ts +2 -2
  153. package/loaders/FontLoader.js +2 -2
  154. package/loaders/FontLoader.js.map +1 -1
  155. package/loaders/GLTFLoader.cjs +2 -2
  156. package/loaders/GLTFLoader.cjs.map +1 -1
  157. package/loaders/GLTFLoader.js +2 -2
  158. package/loaders/GLTFLoader.js.map +1 -1
  159. package/loaders/KTX2Loader.cjs +374 -377
  160. package/loaders/KTX2Loader.cjs.map +1 -1
  161. package/loaders/KTX2Loader.js +374 -377
  162. package/loaders/KTX2Loader.js.map +1 -1
  163. package/loaders/LDrawLoader.cjs +4 -5
  164. package/loaders/LDrawLoader.cjs.map +1 -1
  165. package/loaders/LDrawLoader.js +5 -6
  166. package/loaders/LDrawLoader.js.map +1 -1
  167. package/loaders/OBJLoader.cjs +5 -5
  168. package/loaders/OBJLoader.cjs.map +1 -1
  169. package/loaders/OBJLoader.js +6 -6
  170. package/loaders/OBJLoader.js.map +1 -1
  171. package/loaders/PRWMLoader.cjs +43 -46
  172. package/loaders/PRWMLoader.cjs.map +1 -1
  173. package/loaders/PRWMLoader.js +43 -46
  174. package/loaders/PRWMLoader.js.map +1 -1
  175. package/loaders/SVGLoader.cjs +1688 -1694
  176. package/loaders/SVGLoader.cjs.map +1 -1
  177. package/loaders/SVGLoader.js +1688 -1694
  178. package/loaders/SVGLoader.js.map +1 -1
  179. package/loaders/XLoader.cjs +1 -1
  180. package/loaders/XLoader.cjs.map +1 -1
  181. package/loaders/XLoader.js +1 -1
  182. package/loaders/XLoader.js.map +1 -1
  183. package/math/Capsule.cjs +3 -3
  184. package/math/Capsule.cjs.map +1 -1
  185. package/math/Capsule.js +3 -3
  186. package/math/Capsule.js.map +1 -1
  187. package/math/ColorConverter.cjs +9 -9
  188. package/math/ColorConverter.cjs.map +1 -1
  189. package/math/ColorConverter.js +9 -9
  190. package/math/ColorConverter.js.map +1 -1
  191. package/math/ConvexHull.cjs +50 -53
  192. package/math/ConvexHull.cjs.map +1 -1
  193. package/math/ConvexHull.js +50 -53
  194. package/math/ConvexHull.js.map +1 -1
  195. package/math/ImprovedNoise.cjs +1 -1
  196. package/math/ImprovedNoise.cjs.map +1 -1
  197. package/math/ImprovedNoise.js +1 -1
  198. package/math/ImprovedNoise.js.map +1 -1
  199. package/math/MeshSurfaceSampler.cjs +2 -2
  200. package/math/MeshSurfaceSampler.cjs.map +1 -1
  201. package/math/MeshSurfaceSampler.js +2 -2
  202. package/math/MeshSurfaceSampler.js.map +1 -1
  203. package/math/OBB.cjs +14 -14
  204. package/math/OBB.cjs.map +1 -1
  205. package/math/OBB.js +15 -15
  206. package/math/OBB.js.map +1 -1
  207. package/math/Octree.cjs +7 -7
  208. package/math/Octree.cjs.map +1 -1
  209. package/math/Octree.js +8 -8
  210. package/math/Octree.js.map +1 -1
  211. package/misc/ConvexObjectBreaker.cjs +268 -271
  212. package/misc/ConvexObjectBreaker.cjs.map +1 -1
  213. package/misc/ConvexObjectBreaker.js +269 -272
  214. package/misc/ConvexObjectBreaker.js.map +1 -1
  215. package/misc/Gyroscope.cjs +6 -6
  216. package/misc/Gyroscope.cjs.map +1 -1
  217. package/misc/Gyroscope.js +7 -7
  218. package/misc/Gyroscope.js.map +1 -1
  219. package/modifiers/CurveModifier.cjs +1 -1
  220. package/modifiers/CurveModifier.cjs.map +1 -1
  221. package/modifiers/CurveModifier.js +2 -2
  222. package/modifiers/CurveModifier.js.map +1 -1
  223. package/modifiers/SimplifyModifier.cjs +2 -2
  224. package/modifiers/SimplifyModifier.cjs.map +1 -1
  225. package/modifiers/SimplifyModifier.js +2 -2
  226. package/modifiers/SimplifyModifier.js.map +1 -1
  227. package/objects/BatchedMesh.cjs +2 -2
  228. package/objects/BatchedMesh.cjs.map +1 -1
  229. package/objects/BatchedMesh.js +3 -3
  230. package/objects/BatchedMesh.js.map +1 -1
  231. package/objects/GroundProjectedEnv.cjs +1 -2
  232. package/objects/GroundProjectedEnv.cjs.map +1 -1
  233. package/objects/GroundProjectedEnv.js +2 -3
  234. package/objects/GroundProjectedEnv.js.map +1 -1
  235. package/objects/Lensflare.cjs +206 -209
  236. package/objects/Lensflare.cjs.map +1 -1
  237. package/objects/Lensflare.js +206 -209
  238. package/objects/Lensflare.js.map +1 -1
  239. package/objects/Reflector.cjs +146 -154
  240. package/objects/Reflector.cjs.map +1 -1
  241. package/objects/Reflector.js +146 -154
  242. package/objects/Reflector.js.map +1 -1
  243. package/objects/ReflectorForSSRPass.cjs +180 -183
  244. package/objects/ReflectorForSSRPass.cjs.map +1 -1
  245. package/objects/ReflectorForSSRPass.js +180 -183
  246. package/objects/ReflectorForSSRPass.js.map +1 -1
  247. package/objects/Refractor.cjs +161 -164
  248. package/objects/Refractor.cjs.map +1 -1
  249. package/objects/Refractor.js +161 -164
  250. package/objects/Refractor.js.map +1 -1
  251. package/objects/ShadowMesh.cjs +1 -1
  252. package/objects/ShadowMesh.cjs.map +1 -1
  253. package/objects/ShadowMesh.js +2 -2
  254. package/objects/ShadowMesh.js.map +1 -1
  255. package/objects/Sky.cjs +32 -35
  256. package/objects/Sky.cjs.map +1 -1
  257. package/objects/Sky.d.ts +6 -100
  258. package/objects/Sky.js +32 -35
  259. package/objects/Sky.js.map +1 -1
  260. package/objects/Water.cjs +1 -2
  261. package/objects/Water.cjs.map +1 -1
  262. package/objects/Water.js +2 -3
  263. package/objects/Water.js.map +1 -1
  264. package/objects/Water2.cjs +140 -143
  265. package/objects/Water2.cjs.map +1 -1
  266. package/objects/Water2.js +140 -143
  267. package/objects/Water2.js.map +1 -1
  268. package/package.json +1 -1
  269. package/postprocessing/SAOPass.cjs +264 -267
  270. package/postprocessing/SAOPass.cjs.map +1 -1
  271. package/postprocessing/SAOPass.js +264 -267
  272. package/postprocessing/SAOPass.js.map +1 -1
  273. package/postprocessing/SSAOPass.cjs +250 -253
  274. package/postprocessing/SSAOPass.cjs.map +1 -1
  275. package/postprocessing/SSAOPass.js +250 -253
  276. package/postprocessing/SSAOPass.js.map +1 -1
  277. package/postprocessing/SSRPass.cjs +376 -379
  278. package/postprocessing/SSRPass.cjs.map +1 -1
  279. package/postprocessing/SSRPass.js +376 -379
  280. package/postprocessing/SSRPass.js.map +1 -1
  281. package/postprocessing/UnrealBloomPass.cjs +202 -205
  282. package/postprocessing/UnrealBloomPass.cjs.map +1 -1
  283. package/postprocessing/UnrealBloomPass.js +202 -205
  284. package/postprocessing/UnrealBloomPass.js.map +1 -1
  285. package/renderers/CSS2DRenderer.cjs +5 -5
  286. package/renderers/CSS2DRenderer.cjs.map +1 -1
  287. package/renderers/CSS2DRenderer.js +5 -5
  288. package/renderers/CSS2DRenderer.js.map +1 -1
  289. package/renderers/CSS3DRenderer.cjs +5 -5
  290. package/renderers/CSS3DRenderer.cjs.map +1 -1
  291. package/renderers/CSS3DRenderer.js +6 -6
  292. package/renderers/CSS3DRenderer.js.map +1 -1
  293. package/shaders/ACESFilmicToneMappingShader.cjs +46 -71
  294. package/shaders/ACESFilmicToneMappingShader.cjs.map +1 -1
  295. package/shaders/ACESFilmicToneMappingShader.js +46 -71
  296. package/shaders/ACESFilmicToneMappingShader.js.map +1 -1
  297. package/shaders/AfterimageShader.cjs +22 -41
  298. package/shaders/AfterimageShader.cjs.map +1 -1
  299. package/shaders/AfterimageShader.js +22 -41
  300. package/shaders/AfterimageShader.js.map +1 -1
  301. package/shaders/BasicShader.cjs +6 -20
  302. package/shaders/BasicShader.cjs.map +1 -1
  303. package/shaders/BasicShader.js +6 -20
  304. package/shaders/BasicShader.js.map +1 -1
  305. package/shaders/BleachBypassShader.cjs +26 -46
  306. package/shaders/BleachBypassShader.cjs.map +1 -1
  307. package/shaders/BleachBypassShader.js +26 -46
  308. package/shaders/BleachBypassShader.js.map +1 -1
  309. package/shaders/BlendShader.cjs +19 -33
  310. package/shaders/BlendShader.cjs.map +1 -1
  311. package/shaders/BlendShader.js +19 -33
  312. package/shaders/BlendShader.js.map +1 -1
  313. package/shaders/BokehShader.cjs +90 -117
  314. package/shaders/BokehShader.cjs.map +1 -1
  315. package/shaders/BokehShader.js +90 -117
  316. package/shaders/BokehShader.js.map +1 -1
  317. package/shaders/BokehShader2.cjs +232 -333
  318. package/shaders/BokehShader2.cjs.map +1 -1
  319. package/shaders/BokehShader2.js +232 -333
  320. package/shaders/BokehShader2.js.map +1 -1
  321. package/shaders/BrightnessContrastShader.cjs +22 -38
  322. package/shaders/BrightnessContrastShader.cjs.map +1 -1
  323. package/shaders/BrightnessContrastShader.js +22 -38
  324. package/shaders/BrightnessContrastShader.js.map +1 -1
  325. package/shaders/ColorCorrectionShader.cjs +21 -35
  326. package/shaders/ColorCorrectionShader.cjs.map +1 -1
  327. package/shaders/ColorCorrectionShader.js +21 -35
  328. package/shaders/ColorCorrectionShader.js.map +1 -1
  329. package/shaders/ColorifyShader.cjs +19 -34
  330. package/shaders/ColorifyShader.cjs.map +1 -1
  331. package/shaders/ColorifyShader.js +19 -34
  332. package/shaders/ColorifyShader.js.map +1 -1
  333. package/shaders/ConvolutionShader.cjs +24 -43
  334. package/shaders/ConvolutionShader.cjs.map +1 -1
  335. package/shaders/ConvolutionShader.js +24 -43
  336. package/shaders/ConvolutionShader.js.map +1 -1
  337. package/shaders/CopyShader.cjs +16 -30
  338. package/shaders/CopyShader.cjs.map +1 -1
  339. package/shaders/CopyShader.js +16 -30
  340. package/shaders/CopyShader.js.map +1 -1
  341. package/shaders/DOFMipMapShader.cjs +21 -38
  342. package/shaders/DOFMipMapShader.cjs.map +1 -1
  343. package/shaders/DOFMipMapShader.js +21 -38
  344. package/shaders/DOFMipMapShader.js.map +1 -1
  345. package/shaders/DepthLimitedBlurShader.cjs +69 -98
  346. package/shaders/DepthLimitedBlurShader.cjs.map +1 -1
  347. package/shaders/DepthLimitedBlurShader.js +69 -98
  348. package/shaders/DepthLimitedBlurShader.js.map +1 -1
  349. package/shaders/DigitalGlitch.cjs +59 -70
  350. package/shaders/DigitalGlitch.cjs.map +1 -1
  351. package/shaders/DigitalGlitch.js +59 -70
  352. package/shaders/DigitalGlitch.js.map +1 -1
  353. package/shaders/DotScreenShader.cjs +28 -49
  354. package/shaders/DotScreenShader.cjs.map +1 -1
  355. package/shaders/DotScreenShader.js +28 -49
  356. package/shaders/DotScreenShader.js.map +1 -1
  357. package/shaders/FXAAShader.cjs +1089 -1098
  358. package/shaders/FXAAShader.cjs.map +1 -1
  359. package/shaders/FXAAShader.js +1089 -1098
  360. package/shaders/FXAAShader.js.map +1 -1
  361. package/shaders/FilmShader.cjs +29 -57
  362. package/shaders/FilmShader.cjs.map +1 -1
  363. package/shaders/FilmShader.js +29 -57
  364. package/shaders/FilmShader.js.map +1 -1
  365. package/shaders/FocusShader.cjs +43 -70
  366. package/shaders/FocusShader.cjs.map +1 -1
  367. package/shaders/FocusShader.js +43 -70
  368. package/shaders/FocusShader.js.map +1 -1
  369. package/shaders/FreiChenShader.cjs +53 -74
  370. package/shaders/FreiChenShader.cjs.map +1 -1
  371. package/shaders/FreiChenShader.js +53 -74
  372. package/shaders/FreiChenShader.js.map +1 -1
  373. package/shaders/FresnelShader.cjs +35 -55
  374. package/shaders/FresnelShader.cjs.map +1 -1
  375. package/shaders/FresnelShader.js +35 -55
  376. package/shaders/FresnelShader.js.map +1 -1
  377. package/shaders/GammaCorrectionShader.cjs +19 -33
  378. package/shaders/GammaCorrectionShader.cjs.map +1 -1
  379. package/shaders/GammaCorrectionShader.js +19 -33
  380. package/shaders/GammaCorrectionShader.js.map +1 -1
  381. package/shaders/GodRaysShader.cjs +116 -193
  382. package/shaders/GodRaysShader.cjs.map +1 -1
  383. package/shaders/GodRaysShader.js +116 -193
  384. package/shaders/GodRaysShader.js.map +1 -1
  385. package/shaders/HalftoneShader.cjs +192 -270
  386. package/shaders/HalftoneShader.cjs.map +1 -1
  387. package/shaders/HalftoneShader.js +192 -270
  388. package/shaders/HalftoneShader.js.map +1 -1
  389. package/shaders/HorizontalTiltShiftShader.cjs +27 -43
  390. package/shaders/HorizontalTiltShiftShader.cjs.map +1 -1
  391. package/shaders/HorizontalTiltShiftShader.js +27 -43
  392. package/shaders/HorizontalTiltShiftShader.js.map +1 -1
  393. package/shaders/HueSaturationShader.cjs +31 -47
  394. package/shaders/HueSaturationShader.cjs.map +1 -1
  395. package/shaders/HueSaturationShader.js +31 -47
  396. package/shaders/HueSaturationShader.js.map +1 -1
  397. package/shaders/KaleidoShader.cjs +24 -37
  398. package/shaders/KaleidoShader.cjs.map +1 -1
  399. package/shaders/KaleidoShader.js +24 -37
  400. package/shaders/KaleidoShader.js.map +1 -1
  401. package/shaders/LuminosityHighPassShader.cjs +24 -43
  402. package/shaders/LuminosityHighPassShader.cjs.map +1 -1
  403. package/shaders/LuminosityHighPassShader.js +24 -43
  404. package/shaders/LuminosityHighPassShader.js.map +1 -1
  405. package/shaders/LuminosityShader.cjs +17 -34
  406. package/shaders/LuminosityShader.cjs.map +1 -1
  407. package/shaders/LuminosityShader.js +17 -34
  408. package/shaders/LuminosityShader.js.map +1 -1
  409. package/shaders/MirrorShader.cjs +26 -39
  410. package/shaders/MirrorShader.cjs.map +1 -1
  411. package/shaders/MirrorShader.js +26 -39
  412. package/shaders/MirrorShader.js.map +1 -1
  413. package/shaders/NormalMapShader.cjs +21 -36
  414. package/shaders/NormalMapShader.cjs.map +1 -1
  415. package/shaders/NormalMapShader.js +21 -36
  416. package/shaders/NormalMapShader.js.map +1 -1
  417. package/shaders/ParallaxShader.cjs +97 -147
  418. package/shaders/ParallaxShader.cjs.map +1 -1
  419. package/shaders/ParallaxShader.js +97 -147
  420. package/shaders/ParallaxShader.js.map +1 -1
  421. package/shaders/PixelShader.cjs +18 -31
  422. package/shaders/PixelShader.cjs.map +1 -1
  423. package/shaders/PixelShader.js +18 -31
  424. package/shaders/PixelShader.js.map +1 -1
  425. package/shaders/RGBShiftShader.cjs +20 -33
  426. package/shaders/RGBShiftShader.cjs.map +1 -1
  427. package/shaders/RGBShiftShader.js +20 -33
  428. package/shaders/RGBShiftShader.js.map +1 -1
  429. package/shaders/SAOShader.cjs +117 -154
  430. package/shaders/SAOShader.cjs.map +1 -1
  431. package/shaders/SAOShader.js +117 -154
  432. package/shaders/SAOShader.js.map +1 -1
  433. package/shaders/SMAAShader.cjs +270 -358
  434. package/shaders/SMAAShader.cjs.map +1 -1
  435. package/shaders/SMAAShader.js +270 -358
  436. package/shaders/SMAAShader.js.map +1 -1
  437. package/shaders/SSAOShader.cjs +142 -236
  438. package/shaders/SSAOShader.cjs.map +1 -1
  439. package/shaders/SSAOShader.js +142 -236
  440. package/shaders/SSAOShader.js.map +1 -1
  441. package/shaders/SSRShader.cjs +4 -4
  442. package/shaders/SSRShader.cjs.map +1 -1
  443. package/shaders/SSRShader.js +4 -4
  444. package/shaders/SSRShader.js.map +1 -1
  445. package/shaders/SepiaShader.cjs +20 -36
  446. package/shaders/SepiaShader.cjs.map +1 -1
  447. package/shaders/SepiaShader.js +20 -36
  448. package/shaders/SepiaShader.js.map +1 -1
  449. package/shaders/SobelOperatorShader.cjs +37 -64
  450. package/shaders/SobelOperatorShader.cjs.map +1 -1
  451. package/shaders/SobelOperatorShader.js +37 -64
  452. package/shaders/SobelOperatorShader.js.map +1 -1
  453. package/shaders/TechnicolorShader.cjs +16 -29
  454. package/shaders/TechnicolorShader.cjs.map +1 -1
  455. package/shaders/TechnicolorShader.js +16 -29
  456. package/shaders/TechnicolorShader.js.map +1 -1
  457. package/shaders/ToneMapShader.cjs +35 -55
  458. package/shaders/ToneMapShader.cjs.map +1 -1
  459. package/shaders/ToneMapShader.js +35 -55
  460. package/shaders/ToneMapShader.js.map +1 -1
  461. package/shaders/ToonShader.cjs +165 -275
  462. package/shaders/ToonShader.cjs.map +1 -1
  463. package/shaders/ToonShader.js +165 -275
  464. package/shaders/ToonShader.js.map +1 -1
  465. package/shaders/TriangleBlurShader.cjs +27 -50
  466. package/shaders/TriangleBlurShader.cjs.map +1 -1
  467. package/shaders/TriangleBlurShader.js +27 -50
  468. package/shaders/TriangleBlurShader.js.map +1 -1
  469. package/shaders/UnpackDepthRGBAShader.cjs +17 -32
  470. package/shaders/UnpackDepthRGBAShader.cjs.map +1 -1
  471. package/shaders/UnpackDepthRGBAShader.js +17 -32
  472. package/shaders/UnpackDepthRGBAShader.js.map +1 -1
  473. package/shaders/VerticalTiltShiftShader.cjs +27 -43
  474. package/shaders/VerticalTiltShiftShader.cjs.map +1 -1
  475. package/shaders/VerticalTiltShiftShader.js +27 -43
  476. package/shaders/VerticalTiltShiftShader.js.map +1 -1
  477. package/shaders/VignetteShader.cjs +27 -43
  478. package/shaders/VignetteShader.cjs.map +1 -1
  479. package/shaders/VignetteShader.js +27 -43
  480. package/shaders/VignetteShader.js.map +1 -1
  481. package/shaders/VolumeShader.cjs +213 -264
  482. package/shaders/VolumeShader.cjs.map +1 -1
  483. package/shaders/VolumeShader.js +213 -264
  484. package/shaders/VolumeShader.js.map +1 -1
  485. package/shaders/WaterRefractionShader.cjs +35 -63
  486. package/shaders/WaterRefractionShader.cjs.map +1 -1
  487. package/shaders/WaterRefractionShader.js +35 -63
  488. package/shaders/WaterRefractionShader.js.map +1 -1
  489. package/utils/GeometryCompressionUtils.cjs +1 -2
  490. package/utils/GeometryCompressionUtils.cjs.map +1 -1
  491. package/utils/GeometryCompressionUtils.js +2 -3
  492. package/utils/GeometryCompressionUtils.js.map +1 -1
  493. package/utils/RoughnessMipmapper.cjs +3 -3
  494. package/utils/RoughnessMipmapper.cjs.map +1 -1
  495. package/utils/RoughnessMipmapper.js +4 -4
  496. package/utils/RoughnessMipmapper.js.map +1 -1
  497. package/webxr/ARButton.cjs +106 -109
  498. package/webxr/ARButton.cjs.map +1 -1
  499. package/webxr/ARButton.d.ts +3 -4
  500. package/webxr/ARButton.js +106 -109
  501. package/webxr/ARButton.js.map +1 -1
  502. package/webxr/OculusHandPointerModel.cjs +2 -2
  503. package/webxr/OculusHandPointerModel.cjs.map +1 -1
  504. package/webxr/OculusHandPointerModel.js +2 -2
  505. package/webxr/OculusHandPointerModel.js.map +1 -1
  506. package/webxr/VRButton.cjs +95 -98
  507. package/webxr/VRButton.cjs.map +1 -1
  508. package/webxr/VRButton.d.ts +5 -6
  509. package/webxr/VRButton.js +95 -98
  510. package/webxr/VRButton.js.map +1 -1
  511. package/webxr/XRHandPrimitiveModel.cjs +2 -2
  512. package/webxr/XRHandPrimitiveModel.cjs.map +1 -1
  513. package/webxr/XRHandPrimitiveModel.js +3 -3
  514. package/webxr/XRHandPrimitiveModel.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"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
+ {"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":"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"}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const THREE = require("three");
4
- const constants = require("../_polyfill/constants.cjs");
5
4
  class ParallaxBarrierEffect {
6
5
  constructor(renderer) {
7
6
  const _camera = new THREE.OrthographicCamera(-1, 1, 1, -1, 0, 1);
@@ -34,7 +33,7 @@ class ParallaxBarrierEffect {
34
33
  " gl_FragColor = texture2D( mapRight, uv );",
35
34
  " }",
36
35
  " #include <tonemapping_fragment>",
37
- ` #include <${constants.version >= 154 ? "colorspace_fragment" : "encodings_fragment"}>`,
36
+ ` #include <${parseInt(THREE.REVISION.replace(/\D+/g, "")) >= 154 ? "colorspace_fragment" : "encodings_fragment"}>`,
38
37
  "}"
39
38
  ].join("\n")
40
39
  });
@@ -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} 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
+ {"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,5 +1,4 @@
1
- import { OrthographicCamera, Scene, StereoCamera, WebGLRenderTarget, ShaderMaterial, Mesh, PlaneGeometry, LinearFilter, NearestFilter, RGBAFormat } from "three";
2
- import { version } from "../_polyfill/constants.js";
1
+ import { OrthographicCamera, Scene, StereoCamera, WebGLRenderTarget, ShaderMaterial, REVISION, Mesh, PlaneGeometry, LinearFilter, NearestFilter, RGBAFormat } from "three";
3
2
  class ParallaxBarrierEffect {
4
3
  constructor(renderer) {
5
4
  const _camera = new OrthographicCamera(-1, 1, 1, -1, 0, 1);
@@ -32,7 +31,7 @@ class ParallaxBarrierEffect {
32
31
  " gl_FragColor = texture2D( mapRight, uv );",
33
32
  " }",
34
33
  " #include <tonemapping_fragment>",
35
- ` #include <${version >= 154 ? "colorspace_fragment" : "encodings_fragment"}>`,
34
+ ` #include <${parseInt(REVISION.replace(/\D+/g, "")) >= 154 ? "colorspace_fragment" : "encodings_fragment"}>`,
36
35
  "}"
37
36
  ].join("\n")
38
37
  });
@@ -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} 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;"}
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;"}
@@ -7,147 +7,136 @@ 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 = /* @__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.");
23
- }
24
- if (DracoEncoderModule === void 0) {
25
- throw new Error("THREE.DRACOExporter: required the draco_encoder to work.");
26
- }
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
- );
36
- }
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);
57
- }
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
- }
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
- }
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);
99
48
  } else {
100
- throw new Error("DRACOExporter: Unsupported object type.");
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);
101
54
  }
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);
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
+ }
108
66
  }
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
- }
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);
114
71
  }
115
72
  }
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);
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);
77
+ }
121
78
  }
122
- dracoEncoder.destroy(dracoObject);
123
- if (length === 0) {
124
- throw new Error("THREE.DRACOExporter: Draco encoding failed.");
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);
88
+ }
125
89
  }
126
- const outputData = new Int8Array(new ArrayBuffer(length));
127
- for (let i = 0; i < length; i++) {
128
- outputData[i] = encodedData.GetValue(i);
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]);
104
+ }
129
105
  }
130
- dracoEncoder.destroy(encodedData);
131
- dracoEncoder.destroy(encoder);
132
- dracoEncoder.destroy(builder);
133
- return outputData;
134
106
  }
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
- })();
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);
152
141
  exports.DRACOExporter = DRACOExporter;
153
142
  //# 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\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
+ {"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,25 +1,23 @@
1
1
  import { Mesh, Points } from 'three';
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
- };
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
+ }
25
23
  export { DRACOExporter };