three-stdlib 2.35.5 → 2.35.6

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 +20 -17
  2. package/_polyfill/CapsuleGeometry.cjs.map +1 -1
  3. package/_polyfill/CapsuleGeometry.js +20 -17
  4. package/_polyfill/CapsuleGeometry.js.map +1 -1
  5. package/_polyfill/constants.cjs +1 -1
  6. package/_polyfill/constants.cjs.map +1 -1
  7. package/_polyfill/constants.js +1 -1
  8. package/_polyfill/constants.js.map +1 -1
  9. package/animation/AnimationClipCreator.cjs +13 -13
  10. package/animation/AnimationClipCreator.cjs.map +1 -1
  11. package/animation/AnimationClipCreator.js +13 -13
  12. package/animation/AnimationClipCreator.js.map +1 -1
  13. package/animation/CCDIKSolver.cjs +11 -11
  14. package/animation/CCDIKSolver.cjs.map +1 -1
  15. package/animation/CCDIKSolver.js +12 -12
  16. package/animation/CCDIKSolver.js.map +1 -1
  17. package/animation/MMDAnimationHelper.cjs +1 -1
  18. package/animation/MMDAnimationHelper.cjs.map +1 -1
  19. package/animation/MMDAnimationHelper.js +1 -1
  20. package/animation/MMDAnimationHelper.js.map +1 -1
  21. package/animation/MMDPhysics.cjs +4 -4
  22. package/animation/MMDPhysics.cjs.map +1 -1
  23. package/animation/MMDPhysics.js +4 -4
  24. package/animation/MMDPhysics.js.map +1 -1
  25. package/controls/ArcballControls.cjs +2 -2
  26. package/controls/ArcballControls.cjs.map +1 -1
  27. package/controls/ArcballControls.js +3 -3
  28. package/controls/ArcballControls.js.map +1 -1
  29. package/controls/FirstPersonControls.cjs +1 -1
  30. package/controls/FirstPersonControls.cjs.map +1 -1
  31. package/controls/FirstPersonControls.js +1 -1
  32. package/controls/FirstPersonControls.js.map +1 -1
  33. package/controls/OrbitControls.cjs +2 -2
  34. package/controls/OrbitControls.cjs.map +1 -1
  35. package/controls/OrbitControls.js +3 -3
  36. package/controls/OrbitControls.js.map +1 -1
  37. package/controls/PointerLockControls.cjs +2 -2
  38. package/controls/PointerLockControls.cjs.map +1 -1
  39. package/controls/PointerLockControls.js +3 -3
  40. package/controls/PointerLockControls.js.map +1 -1
  41. package/csm/CSM.cjs +4 -4
  42. package/csm/CSM.cjs.map +1 -1
  43. package/csm/CSM.js +5 -5
  44. package/csm/CSM.js.map +1 -1
  45. package/csm/CSMFrustum.cjs +1 -1
  46. package/csm/CSMFrustum.cjs.map +1 -1
  47. package/csm/CSMFrustum.js +2 -2
  48. package/csm/CSMFrustum.js.map +1 -1
  49. package/deprecated/Geometry.cjs +722 -715
  50. package/deprecated/Geometry.cjs.map +1 -1
  51. package/deprecated/Geometry.js +723 -716
  52. package/deprecated/Geometry.js.map +1 -1
  53. package/effects/AnaglyphEffect.cjs +2 -1
  54. package/effects/AnaglyphEffect.cjs.map +1 -1
  55. package/effects/AnaglyphEffect.js +3 -2
  56. package/effects/AnaglyphEffect.js.map +1 -1
  57. package/effects/OutlineEffect.cjs +2 -1
  58. package/effects/OutlineEffect.cjs.map +1 -1
  59. package/effects/OutlineEffect.js +3 -2
  60. package/effects/OutlineEffect.js.map +1 -1
  61. package/effects/ParallaxBarrierEffect.cjs +2 -1
  62. package/effects/ParallaxBarrierEffect.cjs.map +1 -1
  63. package/effects/ParallaxBarrierEffect.js +3 -2
  64. package/effects/ParallaxBarrierEffect.js.map +1 -1
  65. package/exporters/DRACOExporter.cjs +133 -122
  66. package/exporters/DRACOExporter.cjs.map +1 -1
  67. package/exporters/DRACOExporter.d.ts +34 -21
  68. package/exporters/DRACOExporter.js +133 -122
  69. package/exporters/DRACOExporter.js.map +1 -1
  70. package/exporters/GLTFExporter.cjs +170 -167
  71. package/exporters/GLTFExporter.cjs.map +1 -1
  72. package/exporters/GLTFExporter.js +170 -167
  73. package/exporters/GLTFExporter.js.map +1 -1
  74. package/geometries/LightningStrike.cjs +524 -515
  75. package/geometries/LightningStrike.cjs.map +1 -1
  76. package/geometries/LightningStrike.js +524 -515
  77. package/geometries/LightningStrike.js.map +1 -1
  78. package/geometries/RoundedBoxGeometry.cjs +1 -1
  79. package/geometries/RoundedBoxGeometry.cjs.map +1 -1
  80. package/geometries/RoundedBoxGeometry.js +2 -2
  81. package/geometries/RoundedBoxGeometry.js.map +1 -1
  82. package/helpers/RaycasterHelper.cjs +2 -2
  83. package/helpers/RaycasterHelper.cjs.map +1 -1
  84. package/helpers/RaycasterHelper.js +3 -3
  85. package/helpers/RaycasterHelper.js.map +1 -1
  86. package/helpers/VertexNormalsHelper.cjs +3 -3
  87. package/helpers/VertexNormalsHelper.cjs.map +1 -1
  88. package/helpers/VertexNormalsHelper.js +4 -4
  89. package/helpers/VertexNormalsHelper.js.map +1 -1
  90. package/helpers/VertexTangentsHelper.cjs +2 -2
  91. package/helpers/VertexTangentsHelper.cjs.map +1 -1
  92. package/helpers/VertexTangentsHelper.js +3 -3
  93. package/helpers/VertexTangentsHelper.js.map +1 -1
  94. package/interactive/InteractiveGroup.cjs +1 -1
  95. package/interactive/InteractiveGroup.cjs.map +1 -1
  96. package/interactive/InteractiveGroup.js +2 -2
  97. package/interactive/InteractiveGroup.js.map +1 -1
  98. package/interactive/SelectionBox.cjs +15 -15
  99. package/interactive/SelectionBox.cjs.map +1 -1
  100. package/interactive/SelectionBox.js +16 -16
  101. package/interactive/SelectionBox.js.map +1 -1
  102. package/libs/chevrotain.cjs +1 -1
  103. package/libs/chevrotain.cjs.map +1 -1
  104. package/libs/chevrotain.js +1 -1
  105. package/libs/chevrotain.js.map +1 -1
  106. package/libs/lottie.cjs +1 -1
  107. package/libs/lottie.cjs.map +1 -1
  108. package/libs/lottie.js +1 -1
  109. package/libs/lottie.js.map +1 -1
  110. package/libs/opentype.cjs +1 -1
  111. package/libs/opentype.cjs.map +1 -1
  112. package/libs/opentype.js +1 -1
  113. package/libs/opentype.js.map +1 -1
  114. package/lights/LightProbeGenerator.cjs +5 -5
  115. package/lights/LightProbeGenerator.cjs.map +1 -1
  116. package/lights/LightProbeGenerator.js +5 -5
  117. package/lights/LightProbeGenerator.js.map +1 -1
  118. package/lights/RectAreaLightUniformsLib.cjs +3 -3
  119. package/lights/RectAreaLightUniformsLib.cjs.map +1 -1
  120. package/lights/RectAreaLightUniformsLib.js +3 -3
  121. package/lights/RectAreaLightUniformsLib.js.map +1 -1
  122. package/lines/LineMaterial.cjs +2 -1
  123. package/lines/LineMaterial.cjs.map +1 -1
  124. package/lines/LineMaterial.js +3 -2
  125. package/lines/LineMaterial.js.map +1 -1
  126. package/lines/LineSegments2.cjs +13 -13
  127. package/lines/LineSegments2.cjs.map +1 -1
  128. package/lines/LineSegments2.js +14 -14
  129. package/lines/LineSegments2.js.map +1 -1
  130. package/lines/LineSegmentsGeometry.cjs +2 -2
  131. package/lines/LineSegmentsGeometry.cjs.map +1 -1
  132. package/lines/LineSegmentsGeometry.js +3 -3
  133. package/lines/LineSegmentsGeometry.js.map +1 -1
  134. package/lines/Wireframe.cjs +3 -3
  135. package/lines/Wireframe.cjs.map +1 -1
  136. package/lines/Wireframe.js +4 -4
  137. package/lines/Wireframe.js.map +1 -1
  138. package/loaders/BasisTextureLoader.cjs +441 -435
  139. package/loaders/BasisTextureLoader.cjs.map +1 -1
  140. package/loaders/BasisTextureLoader.js +441 -435
  141. package/loaders/BasisTextureLoader.js.map +1 -1
  142. package/loaders/EXRLoader.cjs +2 -1
  143. package/loaders/EXRLoader.cjs.map +1 -1
  144. package/loaders/EXRLoader.js +3 -2
  145. package/loaders/EXRLoader.js.map +1 -1
  146. package/loaders/FBXLoader.cjs +2 -2
  147. package/loaders/FBXLoader.cjs.map +1 -1
  148. package/loaders/FBXLoader.js +2 -2
  149. package/loaders/FBXLoader.js.map +1 -1
  150. package/loaders/FontLoader.cjs +2 -2
  151. package/loaders/FontLoader.cjs.map +1 -1
  152. package/loaders/FontLoader.d.ts +2 -2
  153. package/loaders/FontLoader.js +2 -2
  154. package/loaders/FontLoader.js.map +1 -1
  155. package/loaders/GLTFLoader.cjs +2 -2
  156. package/loaders/GLTFLoader.cjs.map +1 -1
  157. package/loaders/GLTFLoader.js +2 -2
  158. package/loaders/GLTFLoader.js.map +1 -1
  159. package/loaders/KTX2Loader.cjs +377 -374
  160. package/loaders/KTX2Loader.cjs.map +1 -1
  161. package/loaders/KTX2Loader.js +377 -374
  162. package/loaders/KTX2Loader.js.map +1 -1
  163. package/loaders/LDrawLoader.cjs +5 -4
  164. package/loaders/LDrawLoader.cjs.map +1 -1
  165. package/loaders/LDrawLoader.js +6 -5
  166. package/loaders/LDrawLoader.js.map +1 -1
  167. package/loaders/OBJLoader.cjs +5 -5
  168. package/loaders/OBJLoader.cjs.map +1 -1
  169. package/loaders/OBJLoader.js +6 -6
  170. package/loaders/OBJLoader.js.map +1 -1
  171. package/loaders/PRWMLoader.cjs +46 -43
  172. package/loaders/PRWMLoader.cjs.map +1 -1
  173. package/loaders/PRWMLoader.js +46 -43
  174. package/loaders/PRWMLoader.js.map +1 -1
  175. package/loaders/SVGLoader.cjs +1694 -1688
  176. package/loaders/SVGLoader.cjs.map +1 -1
  177. package/loaders/SVGLoader.js +1694 -1688
  178. package/loaders/SVGLoader.js.map +1 -1
  179. package/loaders/XLoader.cjs +1 -1
  180. package/loaders/XLoader.cjs.map +1 -1
  181. package/loaders/XLoader.js +1 -1
  182. package/loaders/XLoader.js.map +1 -1
  183. package/math/Capsule.cjs +3 -3
  184. package/math/Capsule.cjs.map +1 -1
  185. package/math/Capsule.js +3 -3
  186. package/math/Capsule.js.map +1 -1
  187. package/math/ColorConverter.cjs +9 -9
  188. package/math/ColorConverter.cjs.map +1 -1
  189. package/math/ColorConverter.js +9 -9
  190. package/math/ColorConverter.js.map +1 -1
  191. package/math/ConvexHull.cjs +53 -50
  192. package/math/ConvexHull.cjs.map +1 -1
  193. package/math/ConvexHull.js +53 -50
  194. package/math/ConvexHull.js.map +1 -1
  195. package/math/ImprovedNoise.cjs +1 -1
  196. package/math/ImprovedNoise.cjs.map +1 -1
  197. package/math/ImprovedNoise.js +1 -1
  198. package/math/ImprovedNoise.js.map +1 -1
  199. package/math/MeshSurfaceSampler.cjs +2 -2
  200. package/math/MeshSurfaceSampler.cjs.map +1 -1
  201. package/math/MeshSurfaceSampler.js +2 -2
  202. package/math/MeshSurfaceSampler.js.map +1 -1
  203. package/math/OBB.cjs +14 -14
  204. package/math/OBB.cjs.map +1 -1
  205. package/math/OBB.js +15 -15
  206. package/math/OBB.js.map +1 -1
  207. package/math/Octree.cjs +7 -7
  208. package/math/Octree.cjs.map +1 -1
  209. package/math/Octree.js +8 -8
  210. package/math/Octree.js.map +1 -1
  211. package/misc/ConvexObjectBreaker.cjs +271 -268
  212. package/misc/ConvexObjectBreaker.cjs.map +1 -1
  213. package/misc/ConvexObjectBreaker.js +272 -269
  214. package/misc/ConvexObjectBreaker.js.map +1 -1
  215. package/misc/Gyroscope.cjs +6 -6
  216. package/misc/Gyroscope.cjs.map +1 -1
  217. package/misc/Gyroscope.js +7 -7
  218. package/misc/Gyroscope.js.map +1 -1
  219. package/modifiers/CurveModifier.cjs +1 -1
  220. package/modifiers/CurveModifier.cjs.map +1 -1
  221. package/modifiers/CurveModifier.js +2 -2
  222. package/modifiers/CurveModifier.js.map +1 -1
  223. package/modifiers/SimplifyModifier.cjs +2 -2
  224. package/modifiers/SimplifyModifier.cjs.map +1 -1
  225. package/modifiers/SimplifyModifier.js +2 -2
  226. package/modifiers/SimplifyModifier.js.map +1 -1
  227. package/objects/BatchedMesh.cjs +2 -2
  228. package/objects/BatchedMesh.cjs.map +1 -1
  229. package/objects/BatchedMesh.js +3 -3
  230. package/objects/BatchedMesh.js.map +1 -1
  231. package/objects/GroundProjectedEnv.cjs +2 -1
  232. package/objects/GroundProjectedEnv.cjs.map +1 -1
  233. package/objects/GroundProjectedEnv.js +3 -2
  234. package/objects/GroundProjectedEnv.js.map +1 -1
  235. package/objects/Lensflare.cjs +209 -206
  236. package/objects/Lensflare.cjs.map +1 -1
  237. package/objects/Lensflare.js +209 -206
  238. package/objects/Lensflare.js.map +1 -1
  239. package/objects/Reflector.cjs +154 -146
  240. package/objects/Reflector.cjs.map +1 -1
  241. package/objects/Reflector.js +154 -146
  242. package/objects/Reflector.js.map +1 -1
  243. package/objects/ReflectorForSSRPass.cjs +183 -180
  244. package/objects/ReflectorForSSRPass.cjs.map +1 -1
  245. package/objects/ReflectorForSSRPass.js +183 -180
  246. package/objects/ReflectorForSSRPass.js.map +1 -1
  247. package/objects/Refractor.cjs +164 -161
  248. package/objects/Refractor.cjs.map +1 -1
  249. package/objects/Refractor.js +164 -161
  250. package/objects/Refractor.js.map +1 -1
  251. package/objects/ShadowMesh.cjs +1 -1
  252. package/objects/ShadowMesh.cjs.map +1 -1
  253. package/objects/ShadowMesh.js +2 -2
  254. package/objects/ShadowMesh.js.map +1 -1
  255. package/objects/Sky.cjs +35 -32
  256. package/objects/Sky.cjs.map +1 -1
  257. package/objects/Sky.d.ts +17 -42
  258. package/objects/Sky.js +35 -32
  259. package/objects/Sky.js.map +1 -1
  260. package/objects/Water.cjs +2 -1
  261. package/objects/Water.cjs.map +1 -1
  262. package/objects/Water.js +3 -2
  263. package/objects/Water.js.map +1 -1
  264. package/objects/Water2.cjs +143 -140
  265. package/objects/Water2.cjs.map +1 -1
  266. package/objects/Water2.js +143 -140
  267. package/objects/Water2.js.map +1 -1
  268. package/package.json +1 -1
  269. package/postprocessing/SAOPass.cjs +267 -264
  270. package/postprocessing/SAOPass.cjs.map +1 -1
  271. package/postprocessing/SAOPass.js +267 -264
  272. package/postprocessing/SAOPass.js.map +1 -1
  273. package/postprocessing/SSAOPass.cjs +253 -250
  274. package/postprocessing/SSAOPass.cjs.map +1 -1
  275. package/postprocessing/SSAOPass.js +253 -250
  276. package/postprocessing/SSAOPass.js.map +1 -1
  277. package/postprocessing/SSRPass.cjs +379 -376
  278. package/postprocessing/SSRPass.cjs.map +1 -1
  279. package/postprocessing/SSRPass.js +379 -376
  280. package/postprocessing/SSRPass.js.map +1 -1
  281. package/postprocessing/UnrealBloomPass.cjs +205 -202
  282. package/postprocessing/UnrealBloomPass.cjs.map +1 -1
  283. package/postprocessing/UnrealBloomPass.js +205 -202
  284. package/postprocessing/UnrealBloomPass.js.map +1 -1
  285. package/renderers/CSS2DRenderer.cjs +5 -5
  286. package/renderers/CSS2DRenderer.cjs.map +1 -1
  287. package/renderers/CSS2DRenderer.js +5 -5
  288. package/renderers/CSS2DRenderer.js.map +1 -1
  289. package/renderers/CSS3DRenderer.cjs +5 -5
  290. package/renderers/CSS3DRenderer.cjs.map +1 -1
  291. package/renderers/CSS3DRenderer.js +6 -6
  292. package/renderers/CSS3DRenderer.js.map +1 -1
  293. package/shaders/ACESFilmicToneMappingShader.cjs +71 -46
  294. package/shaders/ACESFilmicToneMappingShader.cjs.map +1 -1
  295. package/shaders/ACESFilmicToneMappingShader.js +71 -46
  296. package/shaders/ACESFilmicToneMappingShader.js.map +1 -1
  297. package/shaders/AfterimageShader.cjs +41 -22
  298. package/shaders/AfterimageShader.cjs.map +1 -1
  299. package/shaders/AfterimageShader.js +41 -22
  300. package/shaders/AfterimageShader.js.map +1 -1
  301. package/shaders/BasicShader.cjs +20 -6
  302. package/shaders/BasicShader.cjs.map +1 -1
  303. package/shaders/BasicShader.js +20 -6
  304. package/shaders/BasicShader.js.map +1 -1
  305. package/shaders/BleachBypassShader.cjs +46 -26
  306. package/shaders/BleachBypassShader.cjs.map +1 -1
  307. package/shaders/BleachBypassShader.js +46 -26
  308. package/shaders/BleachBypassShader.js.map +1 -1
  309. package/shaders/BlendShader.cjs +33 -19
  310. package/shaders/BlendShader.cjs.map +1 -1
  311. package/shaders/BlendShader.js +33 -19
  312. package/shaders/BlendShader.js.map +1 -1
  313. package/shaders/BokehShader.cjs +117 -90
  314. package/shaders/BokehShader.cjs.map +1 -1
  315. package/shaders/BokehShader.js +117 -90
  316. package/shaders/BokehShader.js.map +1 -1
  317. package/shaders/BokehShader2.cjs +333 -232
  318. package/shaders/BokehShader2.cjs.map +1 -1
  319. package/shaders/BokehShader2.js +333 -232
  320. package/shaders/BokehShader2.js.map +1 -1
  321. package/shaders/BrightnessContrastShader.cjs +38 -22
  322. package/shaders/BrightnessContrastShader.cjs.map +1 -1
  323. package/shaders/BrightnessContrastShader.js +38 -22
  324. package/shaders/BrightnessContrastShader.js.map +1 -1
  325. package/shaders/ColorCorrectionShader.cjs +35 -21
  326. package/shaders/ColorCorrectionShader.cjs.map +1 -1
  327. package/shaders/ColorCorrectionShader.js +35 -21
  328. package/shaders/ColorCorrectionShader.js.map +1 -1
  329. package/shaders/ColorifyShader.cjs +34 -19
  330. package/shaders/ColorifyShader.cjs.map +1 -1
  331. package/shaders/ColorifyShader.js +34 -19
  332. package/shaders/ColorifyShader.js.map +1 -1
  333. package/shaders/ConvolutionShader.cjs +43 -24
  334. package/shaders/ConvolutionShader.cjs.map +1 -1
  335. package/shaders/ConvolutionShader.js +43 -24
  336. package/shaders/ConvolutionShader.js.map +1 -1
  337. package/shaders/CopyShader.cjs +30 -16
  338. package/shaders/CopyShader.cjs.map +1 -1
  339. package/shaders/CopyShader.js +30 -16
  340. package/shaders/CopyShader.js.map +1 -1
  341. package/shaders/DOFMipMapShader.cjs +38 -21
  342. package/shaders/DOFMipMapShader.cjs.map +1 -1
  343. package/shaders/DOFMipMapShader.js +38 -21
  344. package/shaders/DOFMipMapShader.js.map +1 -1
  345. package/shaders/DepthLimitedBlurShader.cjs +98 -69
  346. package/shaders/DepthLimitedBlurShader.cjs.map +1 -1
  347. package/shaders/DepthLimitedBlurShader.js +98 -69
  348. package/shaders/DepthLimitedBlurShader.js.map +1 -1
  349. package/shaders/DigitalGlitch.cjs +70 -59
  350. package/shaders/DigitalGlitch.cjs.map +1 -1
  351. package/shaders/DigitalGlitch.js +70 -59
  352. package/shaders/DigitalGlitch.js.map +1 -1
  353. package/shaders/DotScreenShader.cjs +49 -28
  354. package/shaders/DotScreenShader.cjs.map +1 -1
  355. package/shaders/DotScreenShader.js +49 -28
  356. package/shaders/DotScreenShader.js.map +1 -1
  357. package/shaders/FXAAShader.cjs +1098 -1089
  358. package/shaders/FXAAShader.cjs.map +1 -1
  359. package/shaders/FXAAShader.js +1098 -1089
  360. package/shaders/FXAAShader.js.map +1 -1
  361. package/shaders/FilmShader.cjs +57 -29
  362. package/shaders/FilmShader.cjs.map +1 -1
  363. package/shaders/FilmShader.js +57 -29
  364. package/shaders/FilmShader.js.map +1 -1
  365. package/shaders/FocusShader.cjs +70 -43
  366. package/shaders/FocusShader.cjs.map +1 -1
  367. package/shaders/FocusShader.js +70 -43
  368. package/shaders/FocusShader.js.map +1 -1
  369. package/shaders/FreiChenShader.cjs +74 -53
  370. package/shaders/FreiChenShader.cjs.map +1 -1
  371. package/shaders/FreiChenShader.js +74 -53
  372. package/shaders/FreiChenShader.js.map +1 -1
  373. package/shaders/FresnelShader.cjs +55 -35
  374. package/shaders/FresnelShader.cjs.map +1 -1
  375. package/shaders/FresnelShader.js +55 -35
  376. package/shaders/FresnelShader.js.map +1 -1
  377. package/shaders/GammaCorrectionShader.cjs +33 -19
  378. package/shaders/GammaCorrectionShader.cjs.map +1 -1
  379. package/shaders/GammaCorrectionShader.js +33 -19
  380. package/shaders/GammaCorrectionShader.js.map +1 -1
  381. package/shaders/GodRaysShader.cjs +193 -116
  382. package/shaders/GodRaysShader.cjs.map +1 -1
  383. package/shaders/GodRaysShader.js +193 -116
  384. package/shaders/GodRaysShader.js.map +1 -1
  385. package/shaders/HalftoneShader.cjs +270 -192
  386. package/shaders/HalftoneShader.cjs.map +1 -1
  387. package/shaders/HalftoneShader.js +270 -192
  388. package/shaders/HalftoneShader.js.map +1 -1
  389. package/shaders/HorizontalTiltShiftShader.cjs +43 -27
  390. package/shaders/HorizontalTiltShiftShader.cjs.map +1 -1
  391. package/shaders/HorizontalTiltShiftShader.js +43 -27
  392. package/shaders/HorizontalTiltShiftShader.js.map +1 -1
  393. package/shaders/HueSaturationShader.cjs +47 -31
  394. package/shaders/HueSaturationShader.cjs.map +1 -1
  395. package/shaders/HueSaturationShader.js +47 -31
  396. package/shaders/HueSaturationShader.js.map +1 -1
  397. package/shaders/KaleidoShader.cjs +37 -24
  398. package/shaders/KaleidoShader.cjs.map +1 -1
  399. package/shaders/KaleidoShader.js +37 -24
  400. package/shaders/KaleidoShader.js.map +1 -1
  401. package/shaders/LuminosityHighPassShader.cjs +43 -24
  402. package/shaders/LuminosityHighPassShader.cjs.map +1 -1
  403. package/shaders/LuminosityHighPassShader.js +43 -24
  404. package/shaders/LuminosityHighPassShader.js.map +1 -1
  405. package/shaders/LuminosityShader.cjs +34 -17
  406. package/shaders/LuminosityShader.cjs.map +1 -1
  407. package/shaders/LuminosityShader.js +34 -17
  408. package/shaders/LuminosityShader.js.map +1 -1
  409. package/shaders/MirrorShader.cjs +39 -26
  410. package/shaders/MirrorShader.cjs.map +1 -1
  411. package/shaders/MirrorShader.js +39 -26
  412. package/shaders/MirrorShader.js.map +1 -1
  413. package/shaders/NormalMapShader.cjs +36 -21
  414. package/shaders/NormalMapShader.cjs.map +1 -1
  415. package/shaders/NormalMapShader.js +36 -21
  416. package/shaders/NormalMapShader.js.map +1 -1
  417. package/shaders/ParallaxShader.cjs +147 -97
  418. package/shaders/ParallaxShader.cjs.map +1 -1
  419. package/shaders/ParallaxShader.js +147 -97
  420. package/shaders/ParallaxShader.js.map +1 -1
  421. package/shaders/PixelShader.cjs +31 -18
  422. package/shaders/PixelShader.cjs.map +1 -1
  423. package/shaders/PixelShader.js +31 -18
  424. package/shaders/PixelShader.js.map +1 -1
  425. package/shaders/RGBShiftShader.cjs +33 -20
  426. package/shaders/RGBShiftShader.cjs.map +1 -1
  427. package/shaders/RGBShiftShader.js +33 -20
  428. package/shaders/RGBShiftShader.js.map +1 -1
  429. package/shaders/SAOShader.cjs +154 -117
  430. package/shaders/SAOShader.cjs.map +1 -1
  431. package/shaders/SAOShader.js +154 -117
  432. package/shaders/SAOShader.js.map +1 -1
  433. package/shaders/SMAAShader.cjs +358 -270
  434. package/shaders/SMAAShader.cjs.map +1 -1
  435. package/shaders/SMAAShader.js +358 -270
  436. package/shaders/SMAAShader.js.map +1 -1
  437. package/shaders/SSAOShader.cjs +236 -142
  438. package/shaders/SSAOShader.cjs.map +1 -1
  439. package/shaders/SSAOShader.js +236 -142
  440. package/shaders/SSAOShader.js.map +1 -1
  441. package/shaders/SSRShader.cjs +4 -4
  442. package/shaders/SSRShader.cjs.map +1 -1
  443. package/shaders/SSRShader.js +4 -4
  444. package/shaders/SSRShader.js.map +1 -1
  445. package/shaders/SepiaShader.cjs +36 -20
  446. package/shaders/SepiaShader.cjs.map +1 -1
  447. package/shaders/SepiaShader.js +36 -20
  448. package/shaders/SepiaShader.js.map +1 -1
  449. package/shaders/SobelOperatorShader.cjs +64 -37
  450. package/shaders/SobelOperatorShader.cjs.map +1 -1
  451. package/shaders/SobelOperatorShader.js +64 -37
  452. package/shaders/SobelOperatorShader.js.map +1 -1
  453. package/shaders/TechnicolorShader.cjs +29 -16
  454. package/shaders/TechnicolorShader.cjs.map +1 -1
  455. package/shaders/TechnicolorShader.js +29 -16
  456. package/shaders/TechnicolorShader.js.map +1 -1
  457. package/shaders/ToneMapShader.cjs +55 -35
  458. package/shaders/ToneMapShader.cjs.map +1 -1
  459. package/shaders/ToneMapShader.js +55 -35
  460. package/shaders/ToneMapShader.js.map +1 -1
  461. package/shaders/ToonShader.cjs +275 -165
  462. package/shaders/ToonShader.cjs.map +1 -1
  463. package/shaders/ToonShader.js +275 -165
  464. package/shaders/ToonShader.js.map +1 -1
  465. package/shaders/TriangleBlurShader.cjs +50 -27
  466. package/shaders/TriangleBlurShader.cjs.map +1 -1
  467. package/shaders/TriangleBlurShader.js +50 -27
  468. package/shaders/TriangleBlurShader.js.map +1 -1
  469. package/shaders/UnpackDepthRGBAShader.cjs +32 -17
  470. package/shaders/UnpackDepthRGBAShader.cjs.map +1 -1
  471. package/shaders/UnpackDepthRGBAShader.js +32 -17
  472. package/shaders/UnpackDepthRGBAShader.js.map +1 -1
  473. package/shaders/VerticalTiltShiftShader.cjs +43 -27
  474. package/shaders/VerticalTiltShiftShader.cjs.map +1 -1
  475. package/shaders/VerticalTiltShiftShader.js +43 -27
  476. package/shaders/VerticalTiltShiftShader.js.map +1 -1
  477. package/shaders/VignetteShader.cjs +43 -27
  478. package/shaders/VignetteShader.cjs.map +1 -1
  479. package/shaders/VignetteShader.js +43 -27
  480. package/shaders/VignetteShader.js.map +1 -1
  481. package/shaders/VolumeShader.cjs +264 -213
  482. package/shaders/VolumeShader.cjs.map +1 -1
  483. package/shaders/VolumeShader.js +264 -213
  484. package/shaders/VolumeShader.js.map +1 -1
  485. package/shaders/WaterRefractionShader.cjs +63 -35
  486. package/shaders/WaterRefractionShader.cjs.map +1 -1
  487. package/shaders/WaterRefractionShader.js +63 -35
  488. package/shaders/WaterRefractionShader.js.map +1 -1
  489. package/utils/GeometryCompressionUtils.cjs +2 -1
  490. package/utils/GeometryCompressionUtils.cjs.map +1 -1
  491. package/utils/GeometryCompressionUtils.js +3 -2
  492. package/utils/GeometryCompressionUtils.js.map +1 -1
  493. package/utils/RoughnessMipmapper.cjs +3 -3
  494. package/utils/RoughnessMipmapper.cjs.map +1 -1
  495. package/utils/RoughnessMipmapper.js +4 -4
  496. package/utils/RoughnessMipmapper.js.map +1 -1
  497. package/webxr/ARButton.cjs +3 -3
  498. package/webxr/ARButton.cjs.map +1 -1
  499. package/webxr/ARButton.d.ts +3 -3
  500. package/webxr/ARButton.js +3 -3
  501. package/webxr/ARButton.js.map +1 -1
  502. package/webxr/OculusHandPointerModel.cjs +2 -2
  503. package/webxr/OculusHandPointerModel.cjs.map +1 -1
  504. package/webxr/OculusHandPointerModel.js +2 -2
  505. package/webxr/OculusHandPointerModel.js.map +1 -1
  506. package/webxr/VRButton.cjs +98 -95
  507. package/webxr/VRButton.cjs.map +1 -1
  508. package/webxr/VRButton.d.ts +9 -6
  509. package/webxr/VRButton.js +98 -95
  510. package/webxr/VRButton.js.map +1 -1
  511. package/webxr/XRHandPrimitiveModel.cjs +2 -2
  512. package/webxr/XRHandPrimitiveModel.cjs.map +1 -1
  513. package/webxr/XRHandPrimitiveModel.js +3 -3
  514. package/webxr/XRHandPrimitiveModel.js.map +1 -1
@@ -18,43 +18,71 @@ const WaterRefractionShader = {
18
18
  value: null
19
19
  }
20
20
  },
21
- vertexShader: [
22
- "uniform mat4 textureMatrix;",
23
- "varying vec2 vUv;",
24
- "varying vec4 vUvRefraction;",
25
- "void main() {",
26
- " vUv = uv;",
27
- " vUvRefraction = textureMatrix * vec4( position, 1.0 );",
28
- " gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",
29
- "}"
30
- ].join("\n"),
31
- fragmentShader: [
32
- "uniform vec3 color;",
33
- "uniform float time;",
34
- "uniform sampler2D tDiffuse;",
35
- "uniform sampler2D tDudv;",
36
- "varying vec2 vUv;",
37
- "varying vec4 vUvRefraction;",
38
- "float blendOverlay( float base, float blend ) {",
39
- " return( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );",
40
- "}",
41
- "vec3 blendOverlay( vec3 base, vec3 blend ) {",
42
- " return vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ),blendOverlay( base.b, blend.b ) );",
43
- "}",
44
- "void main() {",
45
- " float waveStrength = 0.1;",
46
- " float waveSpeed = 0.03;",
21
+ vertexShader: (
22
+ /* glsl */
23
+ `
24
+ uniform mat4 textureMatrix;
25
+
26
+ varying vec2 vUv;
27
+ varying vec4 vUvRefraction;
28
+
29
+ void main() {
30
+
31
+ vUv = uv;
32
+
33
+ vUvRefraction = textureMatrix * vec4( position, 1.0 );
34
+
35
+ gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
36
+
37
+ }
38
+ `
39
+ ),
40
+ fragmentShader: (
41
+ /* glsl */
42
+ `
43
+ uniform vec3 color;
44
+ uniform float time;
45
+ uniform sampler2D tDiffuse;
46
+ uniform sampler2D tDudv;
47
+
48
+ varying vec2 vUv;
49
+ varying vec4 vUvRefraction;
50
+
51
+ float blendOverlay( float base, float blend ) {
52
+
53
+ return( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );
54
+
55
+ }
56
+
57
+ vec3 blendOverlay( vec3 base, vec3 blend ) {
58
+
59
+ return vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ),blendOverlay( base.b, blend.b ) );
60
+
61
+ }
62
+
63
+ void main() {
64
+
65
+ float waveStrength = 0.1;
66
+ float waveSpeed = 0.03;
67
+
47
68
  // simple distortion (ripple) via dudv map (see https://www.youtube.com/watch?v=6B7IF6GOu7s)
48
- " vec2 distortedUv = texture2D( tDudv, vec2( vUv.x + time * waveSpeed, vUv.y ) ).rg * waveStrength;",
49
- " distortedUv = vUv.xy + vec2( distortedUv.x, distortedUv.y + time * waveSpeed );",
50
- " vec2 distortion = ( texture2D( tDudv, distortedUv ).rg * 2.0 - 1.0 ) * waveStrength;",
69
+
70
+ vec2 distortedUv = texture2D( tDudv, vec2( vUv.x + time * waveSpeed, vUv.y ) ).rg * waveStrength;
71
+ distortedUv = vUv.xy + vec2( distortedUv.x, distortedUv.y + time * waveSpeed );
72
+ vec2 distortion = ( texture2D( tDudv, distortedUv ).rg * 2.0 - 1.0 ) * waveStrength;
73
+
51
74
  // new uv coords
52
- " vec4 uv = vec4( vUvRefraction );",
53
- " uv.xy += distortion;",
54
- " vec4 base = texture2DProj( tDiffuse, uv );",
55
- " gl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );",
56
- "}"
57
- ].join("\n")
75
+
76
+ vec4 uv = vec4( vUvRefraction );
77
+ uv.xy += distortion;
78
+
79
+ vec4 base = texture2DProj( tDiffuse, uv );
80
+
81
+ gl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );
82
+
83
+ }
84
+ `
85
+ )
58
86
  };
59
87
  exports.WaterRefractionShader = WaterRefractionShader;
60
88
  //# sourceMappingURL=WaterRefractionShader.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"WaterRefractionShader.cjs","sources":["../../src/shaders/WaterRefractionShader.ts"],"sourcesContent":["export const WaterRefractionShader = {\n uniforms: {\n color: {\n value: null,\n },\n\n time: {\n value: 0,\n },\n\n tDiffuse: {\n value: null,\n },\n\n tDudv: {\n value: null,\n },\n\n textureMatrix: {\n value: null,\n },\n },\n\n vertexShader: [\n 'uniform mat4 textureMatrix;',\n\n 'varying vec2 vUv;',\n 'varying vec4 vUvRefraction;',\n\n 'void main() {',\n\n '\tvUv = uv;',\n\n '\tvUvRefraction = textureMatrix * vec4( position, 1.0 );',\n\n '\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );',\n\n '}',\n ].join('\\n'),\n\n fragmentShader: [\n 'uniform vec3 color;',\n 'uniform float time;',\n 'uniform sampler2D tDiffuse;',\n 'uniform sampler2D tDudv;',\n\n 'varying vec2 vUv;',\n 'varying vec4 vUvRefraction;',\n\n 'float blendOverlay( float base, float blend ) {',\n\n '\treturn( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );',\n\n '}',\n\n 'vec3 blendOverlay( vec3 base, vec3 blend ) {',\n\n '\treturn vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ),blendOverlay( base.b, blend.b ) );',\n\n '}',\n\n 'void main() {',\n\n ' float waveStrength = 0.1;',\n ' float waveSpeed = 0.03;',\n\n // simple distortion (ripple) via dudv map (see https://www.youtube.com/watch?v=6B7IF6GOu7s)\n\n '\tvec2 distortedUv = texture2D( tDudv, vec2( vUv.x + time * waveSpeed, vUv.y ) ).rg * waveStrength;',\n '\tdistortedUv = vUv.xy + vec2( distortedUv.x, distortedUv.y + time * waveSpeed );',\n '\tvec2 distortion = ( texture2D( tDudv, distortedUv ).rg * 2.0 - 1.0 ) * waveStrength;',\n\n // new uv coords\n\n ' vec4 uv = vec4( vUvRefraction );',\n ' uv.xy += distortion;',\n\n '\tvec4 base = texture2DProj( tDiffuse, uv );',\n\n '\tgl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );',\n\n '}',\n ].join('\\n'),\n}\n"],"names":[],"mappings":";;AAAO,MAAM,wBAAwB;AAAA,EACnC,UAAU;AAAA,IACR,OAAO;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IAEA,MAAM;AAAA,MACJ,OAAO;AAAA,IACT;AAAA,IAEA,UAAU;AAAA,MACR,OAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IAEA,eAAe;AAAA,MACb,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,cAAc;AAAA,IACZ;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,EAAA,EACA,KAAK,IAAI;AAAA,EAEX,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA,IAIA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAIA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,EAAA,EACA,KAAK,IAAI;AACb;;"}
1
+ {"version":3,"file":"WaterRefractionShader.cjs","sources":["../../src/shaders/WaterRefractionShader.ts"],"sourcesContent":["export const WaterRefractionShader = {\n uniforms: {\n color: {\n value: null,\n },\n\n time: {\n value: 0,\n },\n\n tDiffuse: {\n value: null,\n },\n\n tDudv: {\n value: null,\n },\n\n textureMatrix: {\n value: null,\n },\n },\n\n vertexShader: /* glsl */ `\n uniform mat4 textureMatrix;\n\n varying vec2 vUv;\n varying vec4 vUvRefraction;\n\n void main() {\n\n \tvUv = uv;\n\n \tvUvRefraction = textureMatrix * vec4( position, 1.0 );\n\n \tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n }\n `,\n\n fragmentShader: /* glsl */ `\n uniform vec3 color;\n uniform float time;\n uniform sampler2D tDiffuse;\n uniform sampler2D tDudv;\n\n varying vec2 vUv;\n varying vec4 vUvRefraction;\n\n float blendOverlay( float base, float blend ) {\n\n \treturn( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );\n\n }\n\n vec3 blendOverlay( vec3 base, vec3 blend ) {\n\n \treturn vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ),blendOverlay( base.b, blend.b ) );\n\n }\n\n void main() {\n\n float waveStrength = 0.1;\n float waveSpeed = 0.03;\n\n // simple distortion (ripple) via dudv map (see https://www.youtube.com/watch?v=6B7IF6GOu7s)\n\n \tvec2 distortedUv = texture2D( tDudv, vec2( vUv.x + time * waveSpeed, vUv.y ) ).rg * waveStrength;\n \tdistortedUv = vUv.xy + vec2( distortedUv.x, distortedUv.y + time * waveSpeed );\n \tvec2 distortion = ( texture2D( tDudv, distortedUv ).rg * 2.0 - 1.0 ) * waveStrength;\n\n // new uv coords\n\n vec4 uv = vec4( vUvRefraction );\n uv.xy += distortion;\n\n \tvec4 base = texture2DProj( tDiffuse, uv );\n\n \tgl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );\n\n }\n `,\n}\n"],"names":[],"mappings":";;AAAO,MAAM,wBAAwB;AAAA,EACnC,UAAU;AAAA,IACR,OAAO;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IAEA,MAAM;AAAA,MACJ,OAAO;AAAA,IACT;AAAA,IAEA,UAAU;AAAA,MACR,OAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IAEA,eAAe;AAAA,MACb,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA;AAAA;AAAA,IAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBzB;AAAA;AAAA,IAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2C7B;;"}
@@ -16,43 +16,71 @@ const WaterRefractionShader = {
16
16
  value: null
17
17
  }
18
18
  },
19
- vertexShader: [
20
- "uniform mat4 textureMatrix;",
21
- "varying vec2 vUv;",
22
- "varying vec4 vUvRefraction;",
23
- "void main() {",
24
- " vUv = uv;",
25
- " vUvRefraction = textureMatrix * vec4( position, 1.0 );",
26
- " gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",
27
- "}"
28
- ].join("\n"),
29
- fragmentShader: [
30
- "uniform vec3 color;",
31
- "uniform float time;",
32
- "uniform sampler2D tDiffuse;",
33
- "uniform sampler2D tDudv;",
34
- "varying vec2 vUv;",
35
- "varying vec4 vUvRefraction;",
36
- "float blendOverlay( float base, float blend ) {",
37
- " return( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );",
38
- "}",
39
- "vec3 blendOverlay( vec3 base, vec3 blend ) {",
40
- " return vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ),blendOverlay( base.b, blend.b ) );",
41
- "}",
42
- "void main() {",
43
- " float waveStrength = 0.1;",
44
- " float waveSpeed = 0.03;",
19
+ vertexShader: (
20
+ /* glsl */
21
+ `
22
+ uniform mat4 textureMatrix;
23
+
24
+ varying vec2 vUv;
25
+ varying vec4 vUvRefraction;
26
+
27
+ void main() {
28
+
29
+ vUv = uv;
30
+
31
+ vUvRefraction = textureMatrix * vec4( position, 1.0 );
32
+
33
+ gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
34
+
35
+ }
36
+ `
37
+ ),
38
+ fragmentShader: (
39
+ /* glsl */
40
+ `
41
+ uniform vec3 color;
42
+ uniform float time;
43
+ uniform sampler2D tDiffuse;
44
+ uniform sampler2D tDudv;
45
+
46
+ varying vec2 vUv;
47
+ varying vec4 vUvRefraction;
48
+
49
+ float blendOverlay( float base, float blend ) {
50
+
51
+ return( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );
52
+
53
+ }
54
+
55
+ vec3 blendOverlay( vec3 base, vec3 blend ) {
56
+
57
+ return vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ),blendOverlay( base.b, blend.b ) );
58
+
59
+ }
60
+
61
+ void main() {
62
+
63
+ float waveStrength = 0.1;
64
+ float waveSpeed = 0.03;
65
+
45
66
  // simple distortion (ripple) via dudv map (see https://www.youtube.com/watch?v=6B7IF6GOu7s)
46
- " vec2 distortedUv = texture2D( tDudv, vec2( vUv.x + time * waveSpeed, vUv.y ) ).rg * waveStrength;",
47
- " distortedUv = vUv.xy + vec2( distortedUv.x, distortedUv.y + time * waveSpeed );",
48
- " vec2 distortion = ( texture2D( tDudv, distortedUv ).rg * 2.0 - 1.0 ) * waveStrength;",
67
+
68
+ vec2 distortedUv = texture2D( tDudv, vec2( vUv.x + time * waveSpeed, vUv.y ) ).rg * waveStrength;
69
+ distortedUv = vUv.xy + vec2( distortedUv.x, distortedUv.y + time * waveSpeed );
70
+ vec2 distortion = ( texture2D( tDudv, distortedUv ).rg * 2.0 - 1.0 ) * waveStrength;
71
+
49
72
  // new uv coords
50
- " vec4 uv = vec4( vUvRefraction );",
51
- " uv.xy += distortion;",
52
- " vec4 base = texture2DProj( tDiffuse, uv );",
53
- " gl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );",
54
- "}"
55
- ].join("\n")
73
+
74
+ vec4 uv = vec4( vUvRefraction );
75
+ uv.xy += distortion;
76
+
77
+ vec4 base = texture2DProj( tDiffuse, uv );
78
+
79
+ gl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );
80
+
81
+ }
82
+ `
83
+ )
56
84
  };
57
85
  export {
58
86
  WaterRefractionShader
@@ -1 +1 @@
1
- {"version":3,"file":"WaterRefractionShader.js","sources":["../../src/shaders/WaterRefractionShader.ts"],"sourcesContent":["export const WaterRefractionShader = {\n uniforms: {\n color: {\n value: null,\n },\n\n time: {\n value: 0,\n },\n\n tDiffuse: {\n value: null,\n },\n\n tDudv: {\n value: null,\n },\n\n textureMatrix: {\n value: null,\n },\n },\n\n vertexShader: [\n 'uniform mat4 textureMatrix;',\n\n 'varying vec2 vUv;',\n 'varying vec4 vUvRefraction;',\n\n 'void main() {',\n\n '\tvUv = uv;',\n\n '\tvUvRefraction = textureMatrix * vec4( position, 1.0 );',\n\n '\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );',\n\n '}',\n ].join('\\n'),\n\n fragmentShader: [\n 'uniform vec3 color;',\n 'uniform float time;',\n 'uniform sampler2D tDiffuse;',\n 'uniform sampler2D tDudv;',\n\n 'varying vec2 vUv;',\n 'varying vec4 vUvRefraction;',\n\n 'float blendOverlay( float base, float blend ) {',\n\n '\treturn( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );',\n\n '}',\n\n 'vec3 blendOverlay( vec3 base, vec3 blend ) {',\n\n '\treturn vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ),blendOverlay( base.b, blend.b ) );',\n\n '}',\n\n 'void main() {',\n\n ' float waveStrength = 0.1;',\n ' float waveSpeed = 0.03;',\n\n // simple distortion (ripple) via dudv map (see https://www.youtube.com/watch?v=6B7IF6GOu7s)\n\n '\tvec2 distortedUv = texture2D( tDudv, vec2( vUv.x + time * waveSpeed, vUv.y ) ).rg * waveStrength;',\n '\tdistortedUv = vUv.xy + vec2( distortedUv.x, distortedUv.y + time * waveSpeed );',\n '\tvec2 distortion = ( texture2D( tDudv, distortedUv ).rg * 2.0 - 1.0 ) * waveStrength;',\n\n // new uv coords\n\n ' vec4 uv = vec4( vUvRefraction );',\n ' uv.xy += distortion;',\n\n '\tvec4 base = texture2DProj( tDiffuse, uv );',\n\n '\tgl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );',\n\n '}',\n ].join('\\n'),\n}\n"],"names":[],"mappings":"AAAO,MAAM,wBAAwB;AAAA,EACnC,UAAU;AAAA,IACR,OAAO;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IAEA,MAAM;AAAA,MACJ,OAAO;AAAA,IACT;AAAA,IAEA,UAAU;AAAA,MACR,OAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IAEA,eAAe;AAAA,MACb,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,cAAc;AAAA,IACZ;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,EAAA,EACA,KAAK,IAAI;AAAA,EAEX,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA,IAIA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAIA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,EAAA,EACA,KAAK,IAAI;AACb;"}
1
+ {"version":3,"file":"WaterRefractionShader.js","sources":["../../src/shaders/WaterRefractionShader.ts"],"sourcesContent":["export const WaterRefractionShader = {\n uniforms: {\n color: {\n value: null,\n },\n\n time: {\n value: 0,\n },\n\n tDiffuse: {\n value: null,\n },\n\n tDudv: {\n value: null,\n },\n\n textureMatrix: {\n value: null,\n },\n },\n\n vertexShader: /* glsl */ `\n uniform mat4 textureMatrix;\n\n varying vec2 vUv;\n varying vec4 vUvRefraction;\n\n void main() {\n\n \tvUv = uv;\n\n \tvUvRefraction = textureMatrix * vec4( position, 1.0 );\n\n \tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n }\n `,\n\n fragmentShader: /* glsl */ `\n uniform vec3 color;\n uniform float time;\n uniform sampler2D tDiffuse;\n uniform sampler2D tDudv;\n\n varying vec2 vUv;\n varying vec4 vUvRefraction;\n\n float blendOverlay( float base, float blend ) {\n\n \treturn( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );\n\n }\n\n vec3 blendOverlay( vec3 base, vec3 blend ) {\n\n \treturn vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ),blendOverlay( base.b, blend.b ) );\n\n }\n\n void main() {\n\n float waveStrength = 0.1;\n float waveSpeed = 0.03;\n\n // simple distortion (ripple) via dudv map (see https://www.youtube.com/watch?v=6B7IF6GOu7s)\n\n \tvec2 distortedUv = texture2D( tDudv, vec2( vUv.x + time * waveSpeed, vUv.y ) ).rg * waveStrength;\n \tdistortedUv = vUv.xy + vec2( distortedUv.x, distortedUv.y + time * waveSpeed );\n \tvec2 distortion = ( texture2D( tDudv, distortedUv ).rg * 2.0 - 1.0 ) * waveStrength;\n\n // new uv coords\n\n vec4 uv = vec4( vUvRefraction );\n uv.xy += distortion;\n\n \tvec4 base = texture2DProj( tDiffuse, uv );\n\n \tgl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );\n\n }\n `,\n}\n"],"names":[],"mappings":"AAAO,MAAM,wBAAwB;AAAA,EACnC,UAAU;AAAA,IACR,OAAO;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IAEA,MAAM;AAAA,MACJ,OAAO;AAAA,IACT;AAAA,IAEA,UAAU;AAAA,MACR,OAAO;AAAA,IACT;AAAA,IAEA,OAAO;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IAEA,eAAe;AAAA,MACb,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA;AAAA;AAAA,IAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBzB;AAAA;AAAA,IAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2C7B;"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const THREE = require("three");
4
+ const constants = require("../_polyfill/constants.cjs");
4
5
  var GeometryCompressionUtils = {
5
6
  /**
6
7
  * Make the input mesh.geometry's normal attribute encoded and compressed by 3 different methods.
@@ -560,7 +561,7 @@ class PackedPhongMaterial extends THREE.MeshPhongMaterial {
560
561
  THREE.ShaderChunk.envmap_fragment,
561
562
  "gl_FragColor = vec4( outgoingLight, diffuseColor.a );",
562
563
  THREE.ShaderChunk.tonemapping_fragment,
563
- parseInt(THREE.REVISION.replace(/\D+/g, "")) >= 154 ? THREE.ShaderChunk.colorspace_fragment : THREE.ShaderChunk.encodings_fragment,
564
+ constants.version >= 154 ? THREE.ShaderChunk.colorspace_fragment : THREE.ShaderChunk.encodings_fragment,
564
565
  THREE.ShaderChunk.fog_fragment,
565
566
  THREE.ShaderChunk.premultiplied_alpha_fragment,
566
567
  THREE.ShaderChunk.dithering_fragment,
@@ -1 +1 @@
1
- {"version":3,"file":"GeometryCompressionUtils.cjs","sources":["../../src/utils/GeometryCompressionUtils.js"],"sourcesContent":["/**\n * Octahedron and Quantization encodings based on work by:\n *\n * @link https://github.com/tsherif/mesh-quantization-example\n *\n */\n\nimport {\n BufferAttribute,\n Matrix3,\n Matrix4,\n MeshPhongMaterial,\n ShaderChunk,\n ShaderLib,\n UniformsUtils,\n Vector3,\n REVISION,\n} from 'three'\n\nvar GeometryCompressionUtils = {\n /**\n * Make the input mesh.geometry's normal attribute encoded and compressed by 3 different methods.\n * Also will change the mesh.material to `PackedPhongMaterial` which let the vertex shader program decode the normal data.\n *\n * @param {THREE.Mesh} mesh\n * @param {String} encodeMethod\t\t\"DEFAULT\" || \"OCT1Byte\" || \"OCT2Byte\" || \"ANGLES\"\n *\n */\n compressNormals: function (mesh, encodeMethod) {\n if (!mesh.geometry) {\n console.error('Mesh must contain geometry. ')\n }\n\n const normal = mesh.geometry.attributes.normal\n\n if (!normal) {\n console.error('Geometry must contain normal attribute. ')\n }\n\n if (normal.isPacked) return\n\n if (normal.itemSize != 3) {\n console.error('normal.itemSize is not 3, which cannot be encoded. ')\n }\n\n const array = normal.array\n const count = normal.count\n\n let result\n if (encodeMethod == 'DEFAULT') {\n // TODO: Add 1 byte to the result, making the encoded length to be 4 bytes.\n result = new Uint8Array(count * 3)\n\n for (let idx = 0; idx < array.length; idx += 3) {\n const encoded = this.EncodingFuncs.defaultEncode(array[idx], array[idx + 1], array[idx + 2], 1)\n\n result[idx + 0] = encoded[0]\n result[idx + 1] = encoded[1]\n result[idx + 2] = encoded[2]\n }\n\n mesh.geometry.setAttribute('normal', new BufferAttribute(result, 3, true))\n mesh.geometry.attributes.normal.bytes = result.length * 1\n } else if (encodeMethod == 'OCT1Byte') {\n /**\n * It is not recommended to use 1-byte octahedron normals encoding unless you want to extremely reduce the memory usage\n * As it makes vertex data not aligned to a 4 byte boundary which may harm some WebGL implementations and sometimes the normal distortion is visible\n * Please refer to @zeux 's comments in https://github.com/mrdoob/three.js/pull/18208\n */\n\n result = new Int8Array(count * 2)\n\n for (let idx = 0; idx < array.length; idx += 3) {\n const encoded = this.EncodingFuncs.octEncodeBest(array[idx], array[idx + 1], array[idx + 2], 1)\n\n result[(idx / 3) * 2 + 0] = encoded[0]\n result[(idx / 3) * 2 + 1] = encoded[1]\n }\n\n mesh.geometry.setAttribute('normal', new BufferAttribute(result, 2, true))\n mesh.geometry.attributes.normal.bytes = result.length * 1\n } else if (encodeMethod == 'OCT2Byte') {\n result = new Int16Array(count * 2)\n\n for (let idx = 0; idx < array.length; idx += 3) {\n const encoded = this.EncodingFuncs.octEncodeBest(array[idx], array[idx + 1], array[idx + 2], 2)\n\n result[(idx / 3) * 2 + 0] = encoded[0]\n result[(idx / 3) * 2 + 1] = encoded[1]\n }\n\n mesh.geometry.setAttribute('normal', new BufferAttribute(result, 2, true))\n mesh.geometry.attributes.normal.bytes = result.length * 2\n } else if (encodeMethod == 'ANGLES') {\n result = new Uint16Array(count * 2)\n\n for (let idx = 0; idx < array.length; idx += 3) {\n const encoded = this.EncodingFuncs.anglesEncode(array[idx], array[idx + 1], array[idx + 2])\n\n result[(idx / 3) * 2 + 0] = encoded[0]\n result[(idx / 3) * 2 + 1] = encoded[1]\n }\n\n mesh.geometry.setAttribute('normal', new BufferAttribute(result, 2, true))\n mesh.geometry.attributes.normal.bytes = result.length * 2\n } else {\n console.error('Unrecognized encoding method, should be `DEFAULT` or `ANGLES` or `OCT`. ')\n }\n\n mesh.geometry.attributes.normal.needsUpdate = true\n mesh.geometry.attributes.normal.isPacked = true\n mesh.geometry.attributes.normal.packingMethod = encodeMethod\n\n // modify material\n if (!(mesh.material instanceof PackedPhongMaterial)) {\n mesh.material = new PackedPhongMaterial().copy(mesh.material)\n }\n\n if (encodeMethod == 'ANGLES') {\n mesh.material.defines.USE_PACKED_NORMAL = 0\n }\n\n if (encodeMethod == 'OCT1Byte') {\n mesh.material.defines.USE_PACKED_NORMAL = 1\n }\n\n if (encodeMethod == 'OCT2Byte') {\n mesh.material.defines.USE_PACKED_NORMAL = 1\n }\n\n if (encodeMethod == 'DEFAULT') {\n mesh.material.defines.USE_PACKED_NORMAL = 2\n }\n },\n\n /**\n * Make the input mesh.geometry's position attribute encoded and compressed.\n * Also will change the mesh.material to `PackedPhongMaterial` which let the vertex shader program decode the position data.\n *\n * @param {THREE.Mesh} mesh\n *\n */\n compressPositions: function (mesh) {\n if (!mesh.geometry) {\n console.error('Mesh must contain geometry. ')\n }\n\n const position = mesh.geometry.attributes.position\n\n if (!position) {\n console.error('Geometry must contain position attribute. ')\n }\n\n if (position.isPacked) return\n\n if (position.itemSize != 3) {\n console.error('position.itemSize is not 3, which cannot be packed. ')\n }\n\n const array = position.array\n const encodingBytes = 2\n\n const result = this.EncodingFuncs.quantizedEncode(array, encodingBytes)\n\n const quantized = result.quantized\n const decodeMat = result.decodeMat\n\n // IMPORTANT: calculate original geometry bounding info first, before updating packed positions\n if (mesh.geometry.boundingBox == null) mesh.geometry.computeBoundingBox()\n if (mesh.geometry.boundingSphere == null) mesh.geometry.computeBoundingSphere()\n\n mesh.geometry.setAttribute('position', new BufferAttribute(quantized, 3))\n mesh.geometry.attributes.position.isPacked = true\n mesh.geometry.attributes.position.needsUpdate = true\n mesh.geometry.attributes.position.bytes = quantized.length * encodingBytes\n\n // modify material\n if (!(mesh.material instanceof PackedPhongMaterial)) {\n mesh.material = new PackedPhongMaterial().copy(mesh.material)\n }\n\n mesh.material.defines.USE_PACKED_POSITION = 0\n\n mesh.material.uniforms.quantizeMatPos.value = decodeMat\n mesh.material.uniforms.quantizeMatPos.needsUpdate = true\n },\n\n /**\n * Make the input mesh.geometry's uv attribute encoded and compressed.\n * Also will change the mesh.material to `PackedPhongMaterial` which let the vertex shader program decode the uv data.\n *\n * @param {THREE.Mesh} mesh\n *\n */\n compressUvs: function (mesh) {\n if (!mesh.geometry) {\n console.error('Mesh must contain geometry property. ')\n }\n\n const uvs = mesh.geometry.attributes.uv\n\n if (!uvs) {\n console.error('Geometry must contain uv attribute. ')\n }\n\n if (uvs.isPacked) return\n\n const range = { min: Infinity, max: -Infinity }\n\n const array = uvs.array\n\n for (let i = 0; i < array.length; i++) {\n range.min = Math.min(range.min, array[i])\n range.max = Math.max(range.max, array[i])\n }\n\n let result\n\n if (range.min >= -1.0 && range.max <= 1.0) {\n // use default encoding method\n result = new Uint16Array(array.length)\n\n for (let i = 0; i < array.length; i += 2) {\n const encoded = this.EncodingFuncs.defaultEncode(array[i], array[i + 1], 0, 2)\n\n result[i] = encoded[0]\n result[i + 1] = encoded[1]\n }\n\n mesh.geometry.setAttribute('uv', new BufferAttribute(result, 2, true))\n mesh.geometry.attributes.uv.isPacked = true\n mesh.geometry.attributes.uv.needsUpdate = true\n mesh.geometry.attributes.uv.bytes = result.length * 2\n\n if (!(mesh.material instanceof PackedPhongMaterial)) {\n mesh.material = new PackedPhongMaterial().copy(mesh.material)\n }\n\n mesh.material.defines.USE_PACKED_UV = 0\n } else {\n // use quantized encoding method\n result = this.EncodingFuncs.quantizedEncodeUV(array, 2)\n\n mesh.geometry.setAttribute('uv', new BufferAttribute(result.quantized, 2))\n mesh.geometry.attributes.uv.isPacked = true\n mesh.geometry.attributes.uv.needsUpdate = true\n mesh.geometry.attributes.uv.bytes = result.quantized.length * 2\n\n if (!(mesh.material instanceof PackedPhongMaterial)) {\n mesh.material = new PackedPhongMaterial().copy(mesh.material)\n }\n\n mesh.material.defines.USE_PACKED_UV = 1\n\n mesh.material.uniforms.quantizeMatUV.value = result.decodeMat\n mesh.material.uniforms.quantizeMatUV.needsUpdate = true\n }\n },\n\n EncodingFuncs: {\n defaultEncode: function (x, y, z, bytes) {\n if (bytes == 1) {\n const tmpx = Math.round((x + 1) * 0.5 * 255)\n const tmpy = Math.round((y + 1) * 0.5 * 255)\n const tmpz = Math.round((z + 1) * 0.5 * 255)\n return new Uint8Array([tmpx, tmpy, tmpz])\n } else if (bytes == 2) {\n const tmpx = Math.round((x + 1) * 0.5 * 65535)\n const tmpy = Math.round((y + 1) * 0.5 * 65535)\n const tmpz = Math.round((z + 1) * 0.5 * 65535)\n return new Uint16Array([tmpx, tmpy, tmpz])\n } else {\n console.error('number of bytes must be 1 or 2')\n }\n },\n\n defaultDecode: function (array, bytes) {\n if (bytes == 1) {\n return [(array[0] / 255) * 2.0 - 1.0, (array[1] / 255) * 2.0 - 1.0, (array[2] / 255) * 2.0 - 1.0]\n } else if (bytes == 2) {\n return [(array[0] / 65535) * 2.0 - 1.0, (array[1] / 65535) * 2.0 - 1.0, (array[2] / 65535) * 2.0 - 1.0]\n } else {\n console.error('number of bytes must be 1 or 2')\n }\n },\n\n // for `Angles` encoding\n anglesEncode: function (x, y, z) {\n const normal0 = parseInt(0.5 * (1.0 + Math.atan2(y, x) / Math.PI) * 65535)\n const normal1 = parseInt(0.5 * (1.0 + z) * 65535)\n return new Uint16Array([normal0, normal1])\n },\n\n // for `Octahedron` encoding\n octEncodeBest: function (x, y, z, bytes) {\n var oct, dec, best, currentCos, bestCos\n\n // Test various combinations of ceil and floor\n // to minimize rounding errors\n best = oct = octEncodeVec3(x, y, z, 'floor', 'floor')\n dec = octDecodeVec2(oct)\n bestCos = dot(x, y, z, dec)\n\n oct = octEncodeVec3(x, y, z, 'ceil', 'floor')\n dec = octDecodeVec2(oct)\n currentCos = dot(x, y, z, dec)\n\n if (currentCos > bestCos) {\n best = oct\n bestCos = currentCos\n }\n\n oct = octEncodeVec3(x, y, z, 'floor', 'ceil')\n dec = octDecodeVec2(oct)\n currentCos = dot(x, y, z, dec)\n\n if (currentCos > bestCos) {\n best = oct\n bestCos = currentCos\n }\n\n oct = octEncodeVec3(x, y, z, 'ceil', 'ceil')\n dec = octDecodeVec2(oct)\n currentCos = dot(x, y, z, dec)\n\n if (currentCos > bestCos) {\n best = oct\n }\n\n return best\n\n function octEncodeVec3(x0, y0, z0, xfunc, yfunc) {\n var x = x0 / (Math.abs(x0) + Math.abs(y0) + Math.abs(z0))\n var y = y0 / (Math.abs(x0) + Math.abs(y0) + Math.abs(z0))\n\n if (z < 0) {\n var tempx = (1 - Math.abs(y)) * (x >= 0 ? 1 : -1)\n var tempy = (1 - Math.abs(x)) * (y >= 0 ? 1 : -1)\n\n x = tempx\n y = tempy\n\n var diff = 1 - Math.abs(x) - Math.abs(y)\n if (diff > 0) {\n diff += 0.001\n x += x > 0 ? diff / 2 : -diff / 2\n y += y > 0 ? diff / 2 : -diff / 2\n }\n }\n\n if (bytes == 1) {\n return new Int8Array([Math[xfunc](x * 127.5 + (x < 0 ? 1 : 0)), Math[yfunc](y * 127.5 + (y < 0 ? 1 : 0))])\n }\n\n if (bytes == 2) {\n return new Int16Array([\n Math[xfunc](x * 32767.5 + (x < 0 ? 1 : 0)),\n Math[yfunc](y * 32767.5 + (y < 0 ? 1 : 0)),\n ])\n }\n }\n\n function octDecodeVec2(oct) {\n var x = oct[0]\n var y = oct[1]\n\n if (bytes == 1) {\n x /= x < 0 ? 127 : 128\n y /= y < 0 ? 127 : 128\n } else if (bytes == 2) {\n x /= x < 0 ? 32767 : 32768\n y /= y < 0 ? 32767 : 32768\n }\n\n var z = 1 - Math.abs(x) - Math.abs(y)\n\n if (z < 0) {\n var tmpx = x\n x = (1 - Math.abs(y)) * (x >= 0 ? 1 : -1)\n y = (1 - Math.abs(tmpx)) * (y >= 0 ? 1 : -1)\n }\n\n var length = Math.sqrt(x * x + y * y + z * z)\n\n return [x / length, y / length, z / length]\n }\n\n function dot(x, y, z, vec3) {\n return x * vec3[0] + y * vec3[1] + z * vec3[2]\n }\n },\n\n quantizedEncode: function (array, bytes) {\n let quantized, segments\n\n if (bytes == 1) {\n quantized = new Uint8Array(array.length)\n segments = 255\n } else if (bytes == 2) {\n quantized = new Uint16Array(array.length)\n segments = 65535\n } else {\n console.error('number of bytes error! ')\n }\n\n const decodeMat = new Matrix4()\n\n const min = new Float32Array(3)\n const max = new Float32Array(3)\n\n min[0] = min[1] = min[2] = Number.MAX_VALUE\n max[0] = max[1] = max[2] = -Number.MAX_VALUE\n\n for (let i = 0; i < array.length; i += 3) {\n min[0] = Math.min(min[0], array[i + 0])\n min[1] = Math.min(min[1], array[i + 1])\n min[2] = Math.min(min[2], array[i + 2])\n max[0] = Math.max(max[0], array[i + 0])\n max[1] = Math.max(max[1], array[i + 1])\n max[2] = Math.max(max[2], array[i + 2])\n }\n\n decodeMat.scale(\n new Vector3((max[0] - min[0]) / segments, (max[1] - min[1]) / segments, (max[2] - min[2]) / segments),\n )\n\n decodeMat.elements[12] = min[0]\n decodeMat.elements[13] = min[1]\n decodeMat.elements[14] = min[2]\n\n decodeMat.transpose()\n\n const multiplier = new Float32Array([\n max[0] !== min[0] ? segments / (max[0] - min[0]) : 0,\n max[1] !== min[1] ? segments / (max[1] - min[1]) : 0,\n max[2] !== min[2] ? segments / (max[2] - min[2]) : 0,\n ])\n\n for (let i = 0; i < array.length; i += 3) {\n quantized[i + 0] = Math.floor((array[i + 0] - min[0]) * multiplier[0])\n quantized[i + 1] = Math.floor((array[i + 1] - min[1]) * multiplier[1])\n quantized[i + 2] = Math.floor((array[i + 2] - min[2]) * multiplier[2])\n }\n\n return {\n quantized: quantized,\n decodeMat: decodeMat,\n }\n },\n\n quantizedEncodeUV: function (array, bytes) {\n let quantized, segments\n\n if (bytes == 1) {\n quantized = new Uint8Array(array.length)\n segments = 255\n } else if (bytes == 2) {\n quantized = new Uint16Array(array.length)\n segments = 65535\n } else {\n console.error('number of bytes error! ')\n }\n\n const decodeMat = new Matrix3()\n\n const min = new Float32Array(2)\n const max = new Float32Array(2)\n\n min[0] = min[1] = Number.MAX_VALUE\n max[0] = max[1] = -Number.MAX_VALUE\n\n for (let i = 0; i < array.length; i += 2) {\n min[0] = Math.min(min[0], array[i + 0])\n min[1] = Math.min(min[1], array[i + 1])\n max[0] = Math.max(max[0], array[i + 0])\n max[1] = Math.max(max[1], array[i + 1])\n }\n\n decodeMat.scale((max[0] - min[0]) / segments, (max[1] - min[1]) / segments)\n\n decodeMat.elements[6] = min[0]\n decodeMat.elements[7] = min[1]\n\n decodeMat.transpose()\n\n const multiplier = new Float32Array([\n max[0] !== min[0] ? segments / (max[0] - min[0]) : 0,\n max[1] !== min[1] ? segments / (max[1] - min[1]) : 0,\n ])\n\n for (let i = 0; i < array.length; i += 2) {\n quantized[i + 0] = Math.floor((array[i + 0] - min[0]) * multiplier[0])\n quantized[i + 1] = Math.floor((array[i + 1] - min[1]) * multiplier[1])\n }\n\n return {\n quantized: quantized,\n decodeMat: decodeMat,\n }\n },\n },\n}\n\n/**\n * `PackedPhongMaterial` inherited from THREE.MeshPhongMaterial\n *\n * @param {Object} parameters\n */\nclass PackedPhongMaterial extends MeshPhongMaterial {\n constructor(parameters) {\n super()\n\n this.defines = {}\n this.type = 'PackedPhongMaterial'\n this.uniforms = UniformsUtils.merge([\n ShaderLib.phong.uniforms,\n\n {\n quantizeMatPos: { value: null },\n quantizeMatUV: { value: null },\n },\n ])\n\n this.vertexShader = [\n '#define PHONG',\n\n 'varying vec3 vViewPosition;',\n\n '#ifndef FLAT_SHADED',\n 'varying vec3 vNormal;',\n '#endif',\n\n ShaderChunk.common,\n ShaderChunk.uv_pars_vertex,\n ShaderChunk.uv2_pars_vertex,\n ShaderChunk.displacementmap_pars_vertex,\n ShaderChunk.envmap_pars_vertex,\n ShaderChunk.color_pars_vertex,\n ShaderChunk.fog_pars_vertex,\n ShaderChunk.morphtarget_pars_vertex,\n ShaderChunk.skinning_pars_vertex,\n ShaderChunk.shadowmap_pars_vertex,\n ShaderChunk.logdepthbuf_pars_vertex,\n ShaderChunk.clipping_planes_pars_vertex,\n\n `#ifdef USE_PACKED_NORMAL\n\t\t\t\t\t#if USE_PACKED_NORMAL == 0\n\t\t\t\t\t\tvec3 decodeNormal(vec3 packedNormal)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfloat x = packedNormal.x * 2.0 - 1.0;\n\t\t\t\t\t\t\tfloat y = packedNormal.y * 2.0 - 1.0;\n\t\t\t\t\t\t\tvec2 scth = vec2(sin(x * PI), cos(x * PI));\n\t\t\t\t\t\t\tvec2 scphi = vec2(sqrt(1.0 - y * y), y);\n\t\t\t\t\t\t\treturn normalize( vec3(scth.y * scphi.x, scth.x * scphi.x, scphi.y) );\n\t\t\t\t\t\t}\n\t\t\t\t\t#endif\n\n\t\t\t\t\t#if USE_PACKED_NORMAL == 1\n\t\t\t\t\t\tvec3 decodeNormal(vec3 packedNormal)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvec3 v = vec3(packedNormal.xy, 1.0 - abs(packedNormal.x) - abs(packedNormal.y));\n\t\t\t\t\t\t\tif (v.z < 0.0)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tv.xy = (1.0 - abs(v.yx)) * vec2((v.x >= 0.0) ? +1.0 : -1.0, (v.y >= 0.0) ? +1.0 : -1.0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn normalize(v);\n\t\t\t\t\t\t}\n\t\t\t\t\t#endif\n\n\t\t\t\t\t#if USE_PACKED_NORMAL == 2\n\t\t\t\t\t\tvec3 decodeNormal(vec3 packedNormal)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvec3 v = (packedNormal * 2.0) - 1.0;\n\t\t\t\t\t\t\treturn normalize(v);\n\t\t\t\t\t\t}\n\t\t\t\t\t#endif\n\t\t\t\t#endif`,\n\n `#ifdef USE_PACKED_POSITION\n\t\t\t\t\t#if USE_PACKED_POSITION == 0\n\t\t\t\t\t\tuniform mat4 quantizeMatPos;\n\t\t\t\t\t#endif\n\t\t\t\t#endif`,\n\n `#ifdef USE_PACKED_UV\n\t\t\t\t\t#if USE_PACKED_UV == 1\n\t\t\t\t\t\tuniform mat3 quantizeMatUV;\n\t\t\t\t\t#endif\n\t\t\t\t#endif`,\n\n `#ifdef USE_PACKED_UV\n\t\t\t\t\t#if USE_PACKED_UV == 0\n\t\t\t\t\t\tvec2 decodeUV(vec2 packedUV)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvec2 uv = (packedUV * 2.0) - 1.0;\n\t\t\t\t\t\t\treturn uv;\n\t\t\t\t\t\t}\n\t\t\t\t\t#endif\n\n\t\t\t\t\t#if USE_PACKED_UV == 1\n\t\t\t\t\t\tvec2 decodeUV(vec2 packedUV)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvec2 uv = ( vec3(packedUV, 1.0) * quantizeMatUV ).xy;\n\t\t\t\t\t\t\treturn uv;\n\t\t\t\t\t\t}\n\t\t\t\t\t#endif\n\t\t\t\t#endif`,\n\n 'void main() {',\n\n ShaderChunk.uv_vertex,\n\n `#ifdef USE_UV\n\t\t\t\t\t#ifdef USE_PACKED_UV\n\t\t\t\t\t\tvUv = decodeUV(vUv);\n\t\t\t\t\t#endif\n\t\t\t\t#endif`,\n\n ShaderChunk.uv2_vertex,\n ShaderChunk.color_vertex,\n ShaderChunk.beginnormal_vertex,\n\n `#ifdef USE_PACKED_NORMAL\n\t\t\t\t\tobjectNormal = decodeNormal(objectNormal);\n\t\t\t\t#endif\n\n\t\t\t\t#ifdef USE_TANGENT\n\t\t\t\t\tvec3 objectTangent = vec3( tangent.xyz );\n\t\t\t\t#endif\n\t\t\t\t`,\n\n ShaderChunk.morphnormal_vertex,\n ShaderChunk.skinbase_vertex,\n ShaderChunk.skinnormal_vertex,\n ShaderChunk.defaultnormal_vertex,\n\n '#ifndef FLAT_SHADED',\n '\tvNormal = normalize( transformedNormal );',\n '#endif',\n\n ShaderChunk.begin_vertex,\n\n `#ifdef USE_PACKED_POSITION\n\t\t\t\t\t#if USE_PACKED_POSITION == 0\n\t\t\t\t\t\ttransformed = ( vec4(transformed, 1.0) * quantizeMatPos ).xyz;\n\t\t\t\t\t#endif\n\t\t\t\t#endif`,\n\n ShaderChunk.morphtarget_vertex,\n ShaderChunk.skinning_vertex,\n ShaderChunk.displacementmap_vertex,\n ShaderChunk.project_vertex,\n ShaderChunk.logdepthbuf_vertex,\n ShaderChunk.clipping_planes_vertex,\n\n 'vViewPosition = - mvPosition.xyz;',\n\n ShaderChunk.worldpos_vertex,\n ShaderChunk.envmap_vertex,\n ShaderChunk.shadowmap_vertex,\n ShaderChunk.fog_vertex,\n\n '}',\n ].join('\\n')\n\n // Use the original MeshPhongMaterial's fragmentShader.\n this.fragmentShader = [\n '#define PHONG',\n\n 'uniform vec3 diffuse;',\n 'uniform vec3 emissive;',\n 'uniform vec3 specular;',\n 'uniform float shininess;',\n 'uniform float opacity;',\n\n ShaderChunk.common,\n ShaderChunk.packing,\n ShaderChunk.dithering_pars_fragment,\n ShaderChunk.color_pars_fragment,\n ShaderChunk.uv_pars_fragment,\n ShaderChunk.uv2_pars_fragment,\n ShaderChunk.map_pars_fragment,\n ShaderChunk.alphamap_pars_fragment,\n ShaderChunk.aomap_pars_fragment,\n ShaderChunk.lightmap_pars_fragment,\n ShaderChunk.emissivemap_pars_fragment,\n ShaderChunk.envmap_common_pars_fragment,\n ShaderChunk.envmap_pars_fragment,\n ShaderChunk.cube_uv_reflection_fragment,\n ShaderChunk.fog_pars_fragment,\n ShaderChunk.bsdfs,\n ShaderChunk.lights_pars_begin,\n ShaderChunk.lights_phong_pars_fragment,\n ShaderChunk.shadowmap_pars_fragment,\n ShaderChunk.bumpmap_pars_fragment,\n ShaderChunk.normalmap_pars_fragment,\n ShaderChunk.specularmap_pars_fragment,\n ShaderChunk.logdepthbuf_pars_fragment,\n ShaderChunk.clipping_planes_pars_fragment,\n\n 'void main() {',\n\n ShaderChunk.clipping_planes_fragment,\n\n 'vec4 diffuseColor = vec4( diffuse, opacity );',\n 'ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );',\n 'vec3 totalEmissiveRadiance = emissive;',\n\n ShaderChunk.logdepthbuf_fragment,\n ShaderChunk.map_fragment,\n ShaderChunk.color_fragment,\n ShaderChunk.alphamap_fragment,\n ShaderChunk.alphatest_fragment,\n ShaderChunk.specularmap_fragment,\n ShaderChunk.normal_fragment_begin,\n ShaderChunk.normal_fragment_maps,\n ShaderChunk.emissivemap_fragment,\n\n // accumulation\n ShaderChunk.lights_phong_fragment,\n ShaderChunk.lights_fragment_begin,\n ShaderChunk.lights_fragment_maps,\n ShaderChunk.lights_fragment_end,\n\n // modulation\n ShaderChunk.aomap_fragment,\n\n 'vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;',\n\n ShaderChunk.envmap_fragment,\n\n 'gl_FragColor = vec4( outgoingLight, diffuseColor.a );',\n\n ShaderChunk.tonemapping_fragment,\n parseInt(REVISION.replace(/\\D+/g, '')) >= 154 ? ShaderChunk.colorspace_fragment : ShaderChunk.encodings_fragment,\n ShaderChunk.fog_fragment,\n ShaderChunk.premultiplied_alpha_fragment,\n ShaderChunk.dithering_fragment,\n '}',\n ].join('\\n')\n\n this.setValues(parameters)\n }\n}\n\nexport { GeometryCompressionUtils, PackedPhongMaterial }\n"],"names":["BufferAttribute","x","y","oct","z","Matrix4","Vector3","Matrix3","MeshPhongMaterial","UniformsUtils","ShaderLib","ShaderChunk","REVISION"],"mappings":"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"}
1
+ {"version":3,"file":"GeometryCompressionUtils.cjs","sources":["../../src/utils/GeometryCompressionUtils.js"],"sourcesContent":["/**\n * Octahedron and Quantization encodings based on work by:\n *\n * @link https://github.com/tsherif/mesh-quantization-example\n *\n */\n\nimport {\n BufferAttribute,\n Matrix3,\n Matrix4,\n MeshPhongMaterial,\n ShaderChunk,\n ShaderLib,\n UniformsUtils,\n Vector3,\n} from 'three'\nimport { version } from '../_polyfill/constants'\n\nvar GeometryCompressionUtils = {\n /**\n * Make the input mesh.geometry's normal attribute encoded and compressed by 3 different methods.\n * Also will change the mesh.material to `PackedPhongMaterial` which let the vertex shader program decode the normal data.\n *\n * @param {THREE.Mesh} mesh\n * @param {String} encodeMethod\t\t\"DEFAULT\" || \"OCT1Byte\" || \"OCT2Byte\" || \"ANGLES\"\n *\n */\n compressNormals: function (mesh, encodeMethod) {\n if (!mesh.geometry) {\n console.error('Mesh must contain geometry. ')\n }\n\n const normal = mesh.geometry.attributes.normal\n\n if (!normal) {\n console.error('Geometry must contain normal attribute. ')\n }\n\n if (normal.isPacked) return\n\n if (normal.itemSize != 3) {\n console.error('normal.itemSize is not 3, which cannot be encoded. ')\n }\n\n const array = normal.array\n const count = normal.count\n\n let result\n if (encodeMethod == 'DEFAULT') {\n // TODO: Add 1 byte to the result, making the encoded length to be 4 bytes.\n result = new Uint8Array(count * 3)\n\n for (let idx = 0; idx < array.length; idx += 3) {\n const encoded = this.EncodingFuncs.defaultEncode(array[idx], array[idx + 1], array[idx + 2], 1)\n\n result[idx + 0] = encoded[0]\n result[idx + 1] = encoded[1]\n result[idx + 2] = encoded[2]\n }\n\n mesh.geometry.setAttribute('normal', new BufferAttribute(result, 3, true))\n mesh.geometry.attributes.normal.bytes = result.length * 1\n } else if (encodeMethod == 'OCT1Byte') {\n /**\n * It is not recommended to use 1-byte octahedron normals encoding unless you want to extremely reduce the memory usage\n * As it makes vertex data not aligned to a 4 byte boundary which may harm some WebGL implementations and sometimes the normal distortion is visible\n * Please refer to @zeux 's comments in https://github.com/mrdoob/three.js/pull/18208\n */\n\n result = new Int8Array(count * 2)\n\n for (let idx = 0; idx < array.length; idx += 3) {\n const encoded = this.EncodingFuncs.octEncodeBest(array[idx], array[idx + 1], array[idx + 2], 1)\n\n result[(idx / 3) * 2 + 0] = encoded[0]\n result[(idx / 3) * 2 + 1] = encoded[1]\n }\n\n mesh.geometry.setAttribute('normal', new BufferAttribute(result, 2, true))\n mesh.geometry.attributes.normal.bytes = result.length * 1\n } else if (encodeMethod == 'OCT2Byte') {\n result = new Int16Array(count * 2)\n\n for (let idx = 0; idx < array.length; idx += 3) {\n const encoded = this.EncodingFuncs.octEncodeBest(array[idx], array[idx + 1], array[idx + 2], 2)\n\n result[(idx / 3) * 2 + 0] = encoded[0]\n result[(idx / 3) * 2 + 1] = encoded[1]\n }\n\n mesh.geometry.setAttribute('normal', new BufferAttribute(result, 2, true))\n mesh.geometry.attributes.normal.bytes = result.length * 2\n } else if (encodeMethod == 'ANGLES') {\n result = new Uint16Array(count * 2)\n\n for (let idx = 0; idx < array.length; idx += 3) {\n const encoded = this.EncodingFuncs.anglesEncode(array[idx], array[idx + 1], array[idx + 2])\n\n result[(idx / 3) * 2 + 0] = encoded[0]\n result[(idx / 3) * 2 + 1] = encoded[1]\n }\n\n mesh.geometry.setAttribute('normal', new BufferAttribute(result, 2, true))\n mesh.geometry.attributes.normal.bytes = result.length * 2\n } else {\n console.error('Unrecognized encoding method, should be `DEFAULT` or `ANGLES` or `OCT`. ')\n }\n\n mesh.geometry.attributes.normal.needsUpdate = true\n mesh.geometry.attributes.normal.isPacked = true\n mesh.geometry.attributes.normal.packingMethod = encodeMethod\n\n // modify material\n if (!(mesh.material instanceof PackedPhongMaterial)) {\n mesh.material = new PackedPhongMaterial().copy(mesh.material)\n }\n\n if (encodeMethod == 'ANGLES') {\n mesh.material.defines.USE_PACKED_NORMAL = 0\n }\n\n if (encodeMethod == 'OCT1Byte') {\n mesh.material.defines.USE_PACKED_NORMAL = 1\n }\n\n if (encodeMethod == 'OCT2Byte') {\n mesh.material.defines.USE_PACKED_NORMAL = 1\n }\n\n if (encodeMethod == 'DEFAULT') {\n mesh.material.defines.USE_PACKED_NORMAL = 2\n }\n },\n\n /**\n * Make the input mesh.geometry's position attribute encoded and compressed.\n * Also will change the mesh.material to `PackedPhongMaterial` which let the vertex shader program decode the position data.\n *\n * @param {THREE.Mesh} mesh\n *\n */\n compressPositions: function (mesh) {\n if (!mesh.geometry) {\n console.error('Mesh must contain geometry. ')\n }\n\n const position = mesh.geometry.attributes.position\n\n if (!position) {\n console.error('Geometry must contain position attribute. ')\n }\n\n if (position.isPacked) return\n\n if (position.itemSize != 3) {\n console.error('position.itemSize is not 3, which cannot be packed. ')\n }\n\n const array = position.array\n const encodingBytes = 2\n\n const result = this.EncodingFuncs.quantizedEncode(array, encodingBytes)\n\n const quantized = result.quantized\n const decodeMat = result.decodeMat\n\n // IMPORTANT: calculate original geometry bounding info first, before updating packed positions\n if (mesh.geometry.boundingBox == null) mesh.geometry.computeBoundingBox()\n if (mesh.geometry.boundingSphere == null) mesh.geometry.computeBoundingSphere()\n\n mesh.geometry.setAttribute('position', new BufferAttribute(quantized, 3))\n mesh.geometry.attributes.position.isPacked = true\n mesh.geometry.attributes.position.needsUpdate = true\n mesh.geometry.attributes.position.bytes = quantized.length * encodingBytes\n\n // modify material\n if (!(mesh.material instanceof PackedPhongMaterial)) {\n mesh.material = new PackedPhongMaterial().copy(mesh.material)\n }\n\n mesh.material.defines.USE_PACKED_POSITION = 0\n\n mesh.material.uniforms.quantizeMatPos.value = decodeMat\n mesh.material.uniforms.quantizeMatPos.needsUpdate = true\n },\n\n /**\n * Make the input mesh.geometry's uv attribute encoded and compressed.\n * Also will change the mesh.material to `PackedPhongMaterial` which let the vertex shader program decode the uv data.\n *\n * @param {THREE.Mesh} mesh\n *\n */\n compressUvs: function (mesh) {\n if (!mesh.geometry) {\n console.error('Mesh must contain geometry property. ')\n }\n\n const uvs = mesh.geometry.attributes.uv\n\n if (!uvs) {\n console.error('Geometry must contain uv attribute. ')\n }\n\n if (uvs.isPacked) return\n\n const range = { min: Infinity, max: -Infinity }\n\n const array = uvs.array\n\n for (let i = 0; i < array.length; i++) {\n range.min = Math.min(range.min, array[i])\n range.max = Math.max(range.max, array[i])\n }\n\n let result\n\n if (range.min >= -1.0 && range.max <= 1.0) {\n // use default encoding method\n result = new Uint16Array(array.length)\n\n for (let i = 0; i < array.length; i += 2) {\n const encoded = this.EncodingFuncs.defaultEncode(array[i], array[i + 1], 0, 2)\n\n result[i] = encoded[0]\n result[i + 1] = encoded[1]\n }\n\n mesh.geometry.setAttribute('uv', new BufferAttribute(result, 2, true))\n mesh.geometry.attributes.uv.isPacked = true\n mesh.geometry.attributes.uv.needsUpdate = true\n mesh.geometry.attributes.uv.bytes = result.length * 2\n\n if (!(mesh.material instanceof PackedPhongMaterial)) {\n mesh.material = new PackedPhongMaterial().copy(mesh.material)\n }\n\n mesh.material.defines.USE_PACKED_UV = 0\n } else {\n // use quantized encoding method\n result = this.EncodingFuncs.quantizedEncodeUV(array, 2)\n\n mesh.geometry.setAttribute('uv', new BufferAttribute(result.quantized, 2))\n mesh.geometry.attributes.uv.isPacked = true\n mesh.geometry.attributes.uv.needsUpdate = true\n mesh.geometry.attributes.uv.bytes = result.quantized.length * 2\n\n if (!(mesh.material instanceof PackedPhongMaterial)) {\n mesh.material = new PackedPhongMaterial().copy(mesh.material)\n }\n\n mesh.material.defines.USE_PACKED_UV = 1\n\n mesh.material.uniforms.quantizeMatUV.value = result.decodeMat\n mesh.material.uniforms.quantizeMatUV.needsUpdate = true\n }\n },\n\n EncodingFuncs: {\n defaultEncode: function (x, y, z, bytes) {\n if (bytes == 1) {\n const tmpx = Math.round((x + 1) * 0.5 * 255)\n const tmpy = Math.round((y + 1) * 0.5 * 255)\n const tmpz = Math.round((z + 1) * 0.5 * 255)\n return new Uint8Array([tmpx, tmpy, tmpz])\n } else if (bytes == 2) {\n const tmpx = Math.round((x + 1) * 0.5 * 65535)\n const tmpy = Math.round((y + 1) * 0.5 * 65535)\n const tmpz = Math.round((z + 1) * 0.5 * 65535)\n return new Uint16Array([tmpx, tmpy, tmpz])\n } else {\n console.error('number of bytes must be 1 or 2')\n }\n },\n\n defaultDecode: function (array, bytes) {\n if (bytes == 1) {\n return [(array[0] / 255) * 2.0 - 1.0, (array[1] / 255) * 2.0 - 1.0, (array[2] / 255) * 2.0 - 1.0]\n } else if (bytes == 2) {\n return [(array[0] / 65535) * 2.0 - 1.0, (array[1] / 65535) * 2.0 - 1.0, (array[2] / 65535) * 2.0 - 1.0]\n } else {\n console.error('number of bytes must be 1 or 2')\n }\n },\n\n // for `Angles` encoding\n anglesEncode: function (x, y, z) {\n const normal0 = parseInt(0.5 * (1.0 + Math.atan2(y, x) / Math.PI) * 65535)\n const normal1 = parseInt(0.5 * (1.0 + z) * 65535)\n return new Uint16Array([normal0, normal1])\n },\n\n // for `Octahedron` encoding\n octEncodeBest: function (x, y, z, bytes) {\n var oct, dec, best, currentCos, bestCos\n\n // Test various combinations of ceil and floor\n // to minimize rounding errors\n best = oct = octEncodeVec3(x, y, z, 'floor', 'floor')\n dec = octDecodeVec2(oct)\n bestCos = dot(x, y, z, dec)\n\n oct = octEncodeVec3(x, y, z, 'ceil', 'floor')\n dec = octDecodeVec2(oct)\n currentCos = dot(x, y, z, dec)\n\n if (currentCos > bestCos) {\n best = oct\n bestCos = currentCos\n }\n\n oct = octEncodeVec3(x, y, z, 'floor', 'ceil')\n dec = octDecodeVec2(oct)\n currentCos = dot(x, y, z, dec)\n\n if (currentCos > bestCos) {\n best = oct\n bestCos = currentCos\n }\n\n oct = octEncodeVec3(x, y, z, 'ceil', 'ceil')\n dec = octDecodeVec2(oct)\n currentCos = dot(x, y, z, dec)\n\n if (currentCos > bestCos) {\n best = oct\n }\n\n return best\n\n function octEncodeVec3(x0, y0, z0, xfunc, yfunc) {\n var x = x0 / (Math.abs(x0) + Math.abs(y0) + Math.abs(z0))\n var y = y0 / (Math.abs(x0) + Math.abs(y0) + Math.abs(z0))\n\n if (z < 0) {\n var tempx = (1 - Math.abs(y)) * (x >= 0 ? 1 : -1)\n var tempy = (1 - Math.abs(x)) * (y >= 0 ? 1 : -1)\n\n x = tempx\n y = tempy\n\n var diff = 1 - Math.abs(x) - Math.abs(y)\n if (diff > 0) {\n diff += 0.001\n x += x > 0 ? diff / 2 : -diff / 2\n y += y > 0 ? diff / 2 : -diff / 2\n }\n }\n\n if (bytes == 1) {\n return new Int8Array([Math[xfunc](x * 127.5 + (x < 0 ? 1 : 0)), Math[yfunc](y * 127.5 + (y < 0 ? 1 : 0))])\n }\n\n if (bytes == 2) {\n return new Int16Array([\n Math[xfunc](x * 32767.5 + (x < 0 ? 1 : 0)),\n Math[yfunc](y * 32767.5 + (y < 0 ? 1 : 0)),\n ])\n }\n }\n\n function octDecodeVec2(oct) {\n var x = oct[0]\n var y = oct[1]\n\n if (bytes == 1) {\n x /= x < 0 ? 127 : 128\n y /= y < 0 ? 127 : 128\n } else if (bytes == 2) {\n x /= x < 0 ? 32767 : 32768\n y /= y < 0 ? 32767 : 32768\n }\n\n var z = 1 - Math.abs(x) - Math.abs(y)\n\n if (z < 0) {\n var tmpx = x\n x = (1 - Math.abs(y)) * (x >= 0 ? 1 : -1)\n y = (1 - Math.abs(tmpx)) * (y >= 0 ? 1 : -1)\n }\n\n var length = Math.sqrt(x * x + y * y + z * z)\n\n return [x / length, y / length, z / length]\n }\n\n function dot(x, y, z, vec3) {\n return x * vec3[0] + y * vec3[1] + z * vec3[2]\n }\n },\n\n quantizedEncode: function (array, bytes) {\n let quantized, segments\n\n if (bytes == 1) {\n quantized = new Uint8Array(array.length)\n segments = 255\n } else if (bytes == 2) {\n quantized = new Uint16Array(array.length)\n segments = 65535\n } else {\n console.error('number of bytes error! ')\n }\n\n const decodeMat = new Matrix4()\n\n const min = new Float32Array(3)\n const max = new Float32Array(3)\n\n min[0] = min[1] = min[2] = Number.MAX_VALUE\n max[0] = max[1] = max[2] = -Number.MAX_VALUE\n\n for (let i = 0; i < array.length; i += 3) {\n min[0] = Math.min(min[0], array[i + 0])\n min[1] = Math.min(min[1], array[i + 1])\n min[2] = Math.min(min[2], array[i + 2])\n max[0] = Math.max(max[0], array[i + 0])\n max[1] = Math.max(max[1], array[i + 1])\n max[2] = Math.max(max[2], array[i + 2])\n }\n\n decodeMat.scale(\n new Vector3((max[0] - min[0]) / segments, (max[1] - min[1]) / segments, (max[2] - min[2]) / segments),\n )\n\n decodeMat.elements[12] = min[0]\n decodeMat.elements[13] = min[1]\n decodeMat.elements[14] = min[2]\n\n decodeMat.transpose()\n\n const multiplier = new Float32Array([\n max[0] !== min[0] ? segments / (max[0] - min[0]) : 0,\n max[1] !== min[1] ? segments / (max[1] - min[1]) : 0,\n max[2] !== min[2] ? segments / (max[2] - min[2]) : 0,\n ])\n\n for (let i = 0; i < array.length; i += 3) {\n quantized[i + 0] = Math.floor((array[i + 0] - min[0]) * multiplier[0])\n quantized[i + 1] = Math.floor((array[i + 1] - min[1]) * multiplier[1])\n quantized[i + 2] = Math.floor((array[i + 2] - min[2]) * multiplier[2])\n }\n\n return {\n quantized: quantized,\n decodeMat: decodeMat,\n }\n },\n\n quantizedEncodeUV: function (array, bytes) {\n let quantized, segments\n\n if (bytes == 1) {\n quantized = new Uint8Array(array.length)\n segments = 255\n } else if (bytes == 2) {\n quantized = new Uint16Array(array.length)\n segments = 65535\n } else {\n console.error('number of bytes error! ')\n }\n\n const decodeMat = new Matrix3()\n\n const min = new Float32Array(2)\n const max = new Float32Array(2)\n\n min[0] = min[1] = Number.MAX_VALUE\n max[0] = max[1] = -Number.MAX_VALUE\n\n for (let i = 0; i < array.length; i += 2) {\n min[0] = Math.min(min[0], array[i + 0])\n min[1] = Math.min(min[1], array[i + 1])\n max[0] = Math.max(max[0], array[i + 0])\n max[1] = Math.max(max[1], array[i + 1])\n }\n\n decodeMat.scale((max[0] - min[0]) / segments, (max[1] - min[1]) / segments)\n\n decodeMat.elements[6] = min[0]\n decodeMat.elements[7] = min[1]\n\n decodeMat.transpose()\n\n const multiplier = new Float32Array([\n max[0] !== min[0] ? segments / (max[0] - min[0]) : 0,\n max[1] !== min[1] ? segments / (max[1] - min[1]) : 0,\n ])\n\n for (let i = 0; i < array.length; i += 2) {\n quantized[i + 0] = Math.floor((array[i + 0] - min[0]) * multiplier[0])\n quantized[i + 1] = Math.floor((array[i + 1] - min[1]) * multiplier[1])\n }\n\n return {\n quantized: quantized,\n decodeMat: decodeMat,\n }\n },\n },\n}\n\n/**\n * `PackedPhongMaterial` inherited from THREE.MeshPhongMaterial\n *\n * @param {Object} parameters\n */\nclass PackedPhongMaterial extends MeshPhongMaterial {\n constructor(parameters) {\n super()\n\n this.defines = {}\n this.type = 'PackedPhongMaterial'\n this.uniforms = UniformsUtils.merge([\n ShaderLib.phong.uniforms,\n\n {\n quantizeMatPos: { value: null },\n quantizeMatUV: { value: null },\n },\n ])\n\n this.vertexShader = [\n '#define PHONG',\n\n 'varying vec3 vViewPosition;',\n\n '#ifndef FLAT_SHADED',\n 'varying vec3 vNormal;',\n '#endif',\n\n ShaderChunk.common,\n ShaderChunk.uv_pars_vertex,\n ShaderChunk.uv2_pars_vertex,\n ShaderChunk.displacementmap_pars_vertex,\n ShaderChunk.envmap_pars_vertex,\n ShaderChunk.color_pars_vertex,\n ShaderChunk.fog_pars_vertex,\n ShaderChunk.morphtarget_pars_vertex,\n ShaderChunk.skinning_pars_vertex,\n ShaderChunk.shadowmap_pars_vertex,\n ShaderChunk.logdepthbuf_pars_vertex,\n ShaderChunk.clipping_planes_pars_vertex,\n\n `#ifdef USE_PACKED_NORMAL\n\t\t\t\t\t#if USE_PACKED_NORMAL == 0\n\t\t\t\t\t\tvec3 decodeNormal(vec3 packedNormal)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfloat x = packedNormal.x * 2.0 - 1.0;\n\t\t\t\t\t\t\tfloat y = packedNormal.y * 2.0 - 1.0;\n\t\t\t\t\t\t\tvec2 scth = vec2(sin(x * PI), cos(x * PI));\n\t\t\t\t\t\t\tvec2 scphi = vec2(sqrt(1.0 - y * y), y);\n\t\t\t\t\t\t\treturn normalize( vec3(scth.y * scphi.x, scth.x * scphi.x, scphi.y) );\n\t\t\t\t\t\t}\n\t\t\t\t\t#endif\n\n\t\t\t\t\t#if USE_PACKED_NORMAL == 1\n\t\t\t\t\t\tvec3 decodeNormal(vec3 packedNormal)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvec3 v = vec3(packedNormal.xy, 1.0 - abs(packedNormal.x) - abs(packedNormal.y));\n\t\t\t\t\t\t\tif (v.z < 0.0)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tv.xy = (1.0 - abs(v.yx)) * vec2((v.x >= 0.0) ? +1.0 : -1.0, (v.y >= 0.0) ? +1.0 : -1.0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn normalize(v);\n\t\t\t\t\t\t}\n\t\t\t\t\t#endif\n\n\t\t\t\t\t#if USE_PACKED_NORMAL == 2\n\t\t\t\t\t\tvec3 decodeNormal(vec3 packedNormal)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvec3 v = (packedNormal * 2.0) - 1.0;\n\t\t\t\t\t\t\treturn normalize(v);\n\t\t\t\t\t\t}\n\t\t\t\t\t#endif\n\t\t\t\t#endif`,\n\n `#ifdef USE_PACKED_POSITION\n\t\t\t\t\t#if USE_PACKED_POSITION == 0\n\t\t\t\t\t\tuniform mat4 quantizeMatPos;\n\t\t\t\t\t#endif\n\t\t\t\t#endif`,\n\n `#ifdef USE_PACKED_UV\n\t\t\t\t\t#if USE_PACKED_UV == 1\n\t\t\t\t\t\tuniform mat3 quantizeMatUV;\n\t\t\t\t\t#endif\n\t\t\t\t#endif`,\n\n `#ifdef USE_PACKED_UV\n\t\t\t\t\t#if USE_PACKED_UV == 0\n\t\t\t\t\t\tvec2 decodeUV(vec2 packedUV)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvec2 uv = (packedUV * 2.0) - 1.0;\n\t\t\t\t\t\t\treturn uv;\n\t\t\t\t\t\t}\n\t\t\t\t\t#endif\n\n\t\t\t\t\t#if USE_PACKED_UV == 1\n\t\t\t\t\t\tvec2 decodeUV(vec2 packedUV)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvec2 uv = ( vec3(packedUV, 1.0) * quantizeMatUV ).xy;\n\t\t\t\t\t\t\treturn uv;\n\t\t\t\t\t\t}\n\t\t\t\t\t#endif\n\t\t\t\t#endif`,\n\n 'void main() {',\n\n ShaderChunk.uv_vertex,\n\n `#ifdef USE_UV\n\t\t\t\t\t#ifdef USE_PACKED_UV\n\t\t\t\t\t\tvUv = decodeUV(vUv);\n\t\t\t\t\t#endif\n\t\t\t\t#endif`,\n\n ShaderChunk.uv2_vertex,\n ShaderChunk.color_vertex,\n ShaderChunk.beginnormal_vertex,\n\n `#ifdef USE_PACKED_NORMAL\n\t\t\t\t\tobjectNormal = decodeNormal(objectNormal);\n\t\t\t\t#endif\n\n\t\t\t\t#ifdef USE_TANGENT\n\t\t\t\t\tvec3 objectTangent = vec3( tangent.xyz );\n\t\t\t\t#endif\n\t\t\t\t`,\n\n ShaderChunk.morphnormal_vertex,\n ShaderChunk.skinbase_vertex,\n ShaderChunk.skinnormal_vertex,\n ShaderChunk.defaultnormal_vertex,\n\n '#ifndef FLAT_SHADED',\n '\tvNormal = normalize( transformedNormal );',\n '#endif',\n\n ShaderChunk.begin_vertex,\n\n `#ifdef USE_PACKED_POSITION\n\t\t\t\t\t#if USE_PACKED_POSITION == 0\n\t\t\t\t\t\ttransformed = ( vec4(transformed, 1.0) * quantizeMatPos ).xyz;\n\t\t\t\t\t#endif\n\t\t\t\t#endif`,\n\n ShaderChunk.morphtarget_vertex,\n ShaderChunk.skinning_vertex,\n ShaderChunk.displacementmap_vertex,\n ShaderChunk.project_vertex,\n ShaderChunk.logdepthbuf_vertex,\n ShaderChunk.clipping_planes_vertex,\n\n 'vViewPosition = - mvPosition.xyz;',\n\n ShaderChunk.worldpos_vertex,\n ShaderChunk.envmap_vertex,\n ShaderChunk.shadowmap_vertex,\n ShaderChunk.fog_vertex,\n\n '}',\n ].join('\\n')\n\n // Use the original MeshPhongMaterial's fragmentShader.\n this.fragmentShader = [\n '#define PHONG',\n\n 'uniform vec3 diffuse;',\n 'uniform vec3 emissive;',\n 'uniform vec3 specular;',\n 'uniform float shininess;',\n 'uniform float opacity;',\n\n ShaderChunk.common,\n ShaderChunk.packing,\n ShaderChunk.dithering_pars_fragment,\n ShaderChunk.color_pars_fragment,\n ShaderChunk.uv_pars_fragment,\n ShaderChunk.uv2_pars_fragment,\n ShaderChunk.map_pars_fragment,\n ShaderChunk.alphamap_pars_fragment,\n ShaderChunk.aomap_pars_fragment,\n ShaderChunk.lightmap_pars_fragment,\n ShaderChunk.emissivemap_pars_fragment,\n ShaderChunk.envmap_common_pars_fragment,\n ShaderChunk.envmap_pars_fragment,\n ShaderChunk.cube_uv_reflection_fragment,\n ShaderChunk.fog_pars_fragment,\n ShaderChunk.bsdfs,\n ShaderChunk.lights_pars_begin,\n ShaderChunk.lights_phong_pars_fragment,\n ShaderChunk.shadowmap_pars_fragment,\n ShaderChunk.bumpmap_pars_fragment,\n ShaderChunk.normalmap_pars_fragment,\n ShaderChunk.specularmap_pars_fragment,\n ShaderChunk.logdepthbuf_pars_fragment,\n ShaderChunk.clipping_planes_pars_fragment,\n\n 'void main() {',\n\n ShaderChunk.clipping_planes_fragment,\n\n 'vec4 diffuseColor = vec4( diffuse, opacity );',\n 'ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );',\n 'vec3 totalEmissiveRadiance = emissive;',\n\n ShaderChunk.logdepthbuf_fragment,\n ShaderChunk.map_fragment,\n ShaderChunk.color_fragment,\n ShaderChunk.alphamap_fragment,\n ShaderChunk.alphatest_fragment,\n ShaderChunk.specularmap_fragment,\n ShaderChunk.normal_fragment_begin,\n ShaderChunk.normal_fragment_maps,\n ShaderChunk.emissivemap_fragment,\n\n // accumulation\n ShaderChunk.lights_phong_fragment,\n ShaderChunk.lights_fragment_begin,\n ShaderChunk.lights_fragment_maps,\n ShaderChunk.lights_fragment_end,\n\n // modulation\n ShaderChunk.aomap_fragment,\n\n 'vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;',\n\n ShaderChunk.envmap_fragment,\n\n 'gl_FragColor = vec4( outgoingLight, diffuseColor.a );',\n\n ShaderChunk.tonemapping_fragment,\n version >= 154 ? ShaderChunk.colorspace_fragment : ShaderChunk.encodings_fragment,\n ShaderChunk.fog_fragment,\n ShaderChunk.premultiplied_alpha_fragment,\n ShaderChunk.dithering_fragment,\n '}',\n ].join('\\n')\n\n this.setValues(parameters)\n }\n}\n\nexport { GeometryCompressionUtils, PackedPhongMaterial }\n"],"names":["BufferAttribute","x","y","oct","z","Matrix4","Vector3","Matrix3","MeshPhongMaterial","UniformsUtils","ShaderLib","ShaderChunk","version"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { BufferAttribute, Matrix4, Vector3, Matrix3, MeshPhongMaterial, UniformsUtils, ShaderLib, ShaderChunk, REVISION } from "three";
1
+ import { BufferAttribute, Matrix4, Vector3, Matrix3, MeshPhongMaterial, UniformsUtils, ShaderLib, ShaderChunk } from "three";
2
+ import { version } from "../_polyfill/constants.js";
2
3
  var GeometryCompressionUtils = {
3
4
  /**
4
5
  * Make the input mesh.geometry's normal attribute encoded and compressed by 3 different methods.
@@ -558,7 +559,7 @@ class PackedPhongMaterial extends MeshPhongMaterial {
558
559
  ShaderChunk.envmap_fragment,
559
560
  "gl_FragColor = vec4( outgoingLight, diffuseColor.a );",
560
561
  ShaderChunk.tonemapping_fragment,
561
- parseInt(REVISION.replace(/\D+/g, "")) >= 154 ? ShaderChunk.colorspace_fragment : ShaderChunk.encodings_fragment,
562
+ version >= 154 ? ShaderChunk.colorspace_fragment : ShaderChunk.encodings_fragment,
562
563
  ShaderChunk.fog_fragment,
563
564
  ShaderChunk.premultiplied_alpha_fragment,
564
565
  ShaderChunk.dithering_fragment,