three-stdlib 2.35.4 → 2.35.5

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