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
@@ -16,292 +16,214 @@ const HalftoneShader = {
16
16
  greyscale: { value: false },
17
17
  disable: { value: false }
18
18
  },
19
- vertexShader: (
20
- /* glsl */
21
- `
22
- varying vec2 vUV;
23
-
24
- void main() {
25
-
26
- vUV = uv;
27
- gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
28
-
29
- }
30
- `
31
- ),
32
- fragmentShader: (
33
- /* glsl */
34
- `
35
- #define SQRT2_MINUS_ONE 0.41421356
36
- #define SQRT2_HALF_MINUS_ONE 0.20710678
37
- #define PI2 6.28318531
38
- #define SHAPE_DOT 1
39
- #define SHAPE_ELLIPSE 2
40
- #define SHAPE_LINE 3
41
- #define SHAPE_SQUARE 4
42
- #define BLENDING_LINEAR 1
43
- #define BLENDING_MULTIPLY 2
44
- #define BLENDING_ADD 3
45
- #define BLENDING_LIGHTER 4
46
- #define BLENDING_DARKER 5
47
- uniform sampler2D tDiffuse;
48
- uniform float radius;
49
- uniform float rotateR;
50
- uniform float rotateG;
51
- uniform float rotateB;
52
- uniform float scatter;
53
- uniform float width;
54
- uniform float height;
55
- uniform int shape;
56
- uniform bool disable;
57
- uniform float blending;
58
- uniform int blendingMode;
59
- varying vec2 vUV;
60
- uniform bool greyscale;
61
- const int samples = 8;
62
-
63
- float blend( float a, float b, float t ) {
64
-
19
+ vertexShader: [
20
+ "varying vec2 vUV;",
21
+ "void main() {",
22
+ " vUV = uv;",
23
+ " gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);",
24
+ "}"
25
+ ].join("\n"),
26
+ fragmentShader: [
27
+ "#define SQRT2_MINUS_ONE 0.41421356",
28
+ "#define SQRT2_HALF_MINUS_ONE 0.20710678",
29
+ "#define PI2 6.28318531",
30
+ "#define SHAPE_DOT 1",
31
+ "#define SHAPE_ELLIPSE 2",
32
+ "#define SHAPE_LINE 3",
33
+ "#define SHAPE_SQUARE 4",
34
+ "#define BLENDING_LINEAR 1",
35
+ "#define BLENDING_MULTIPLY 2",
36
+ "#define BLENDING_ADD 3",
37
+ "#define BLENDING_LIGHTER 4",
38
+ "#define BLENDING_DARKER 5",
39
+ "uniform sampler2D tDiffuse;",
40
+ "uniform float radius;",
41
+ "uniform float rotateR;",
42
+ "uniform float rotateG;",
43
+ "uniform float rotateB;",
44
+ "uniform float scatter;",
45
+ "uniform float width;",
46
+ "uniform float height;",
47
+ "uniform int shape;",
48
+ "uniform bool disable;",
49
+ "uniform float blending;",
50
+ "uniform int blendingMode;",
51
+ "varying vec2 vUV;",
52
+ "uniform bool greyscale;",
53
+ "const int samples = 8;",
54
+ "float blend( float a, float b, float t ) {",
65
55
  // linear blend
66
- return a * ( 1.0 - t ) + b * t;
67
-
68
- }
69
-
70
- float hypot( float x, float y ) {
71
-
56
+ " return a * ( 1.0 - t ) + b * t;",
57
+ "}",
58
+ "float hypot( float x, float y ) {",
72
59
  // vector magnitude
73
- return sqrt( x * x + y * y );
74
-
75
- }
76
-
77
- float rand( vec2 seed ){
78
-
60
+ " return sqrt( x * x + y * y );",
61
+ "}",
62
+ "float rand( vec2 seed ){",
79
63
  // get pseudo-random number
80
- return fract( sin( dot( seed.xy, vec2( 12.9898, 78.233 ) ) ) * 43758.5453 );
81
-
82
- }
83
-
84
- float distanceToDotRadius( float channel, vec2 coord, vec2 normal, vec2 p, float angle, float rad_max ) {
85
-
64
+ "return fract( sin( dot( seed.xy, vec2( 12.9898, 78.233 ) ) ) * 43758.5453 );",
65
+ "}",
66
+ "float distanceToDotRadius( float channel, vec2 coord, vec2 normal, vec2 p, float angle, float rad_max ) {",
86
67
  // apply shape-specific transforms
87
- float dist = hypot( coord.x - p.x, coord.y - p.y );
88
- float rad = channel;
89
-
90
- if ( shape == SHAPE_DOT ) {
91
-
92
- rad = pow( abs( rad ), 1.125 ) * rad_max;
93
-
94
- } else if ( shape == SHAPE_ELLIPSE ) {
95
-
96
- rad = pow( abs( rad ), 1.125 ) * rad_max;
97
-
98
- if ( dist != 0.0 ) {
99
- float dot_p = abs( ( p.x - coord.x ) / dist * normal.x + ( p.y - coord.y ) / dist * normal.y );
100
- dist = ( dist * ( 1.0 - SQRT2_HALF_MINUS_ONE ) ) + dot_p * dist * SQRT2_MINUS_ONE;
101
- }
102
-
103
- } else if ( shape == SHAPE_LINE ) {
104
-
105
- rad = pow( abs( rad ), 1.5) * rad_max;
106
- float dot_p = ( p.x - coord.x ) * normal.x + ( p.y - coord.y ) * normal.y;
107
- dist = hypot( normal.x * dot_p, normal.y * dot_p );
108
-
109
- } else if ( shape == SHAPE_SQUARE ) {
110
-
111
- float theta = atan( p.y - coord.y, p.x - coord.x ) - angle;
112
- float sin_t = abs( sin( theta ) );
113
- float cos_t = abs( cos( theta ) );
114
- rad = pow( abs( rad ), 1.4 );
115
- rad = rad_max * ( rad + ( ( sin_t > cos_t ) ? rad - sin_t * rad : rad - cos_t * rad ) );
116
-
117
- }
118
-
119
- return rad - dist;
120
-
121
- }
122
-
123
- struct Cell {
124
-
68
+ " float dist = hypot( coord.x - p.x, coord.y - p.y );",
69
+ " float rad = channel;",
70
+ " if ( shape == SHAPE_DOT ) {",
71
+ " rad = pow( abs( rad ), 1.125 ) * rad_max;",
72
+ " } else if ( shape == SHAPE_ELLIPSE ) {",
73
+ " rad = pow( abs( rad ), 1.125 ) * rad_max;",
74
+ " if ( dist != 0.0 ) {",
75
+ " float dot_p = abs( ( p.x - coord.x ) / dist * normal.x + ( p.y - coord.y ) / dist * normal.y );",
76
+ " dist = ( dist * ( 1.0 - SQRT2_HALF_MINUS_ONE ) ) + dot_p * dist * SQRT2_MINUS_ONE;",
77
+ " }",
78
+ " } else if ( shape == SHAPE_LINE ) {",
79
+ " rad = pow( abs( rad ), 1.5) * rad_max;",
80
+ " float dot_p = ( p.x - coord.x ) * normal.x + ( p.y - coord.y ) * normal.y;",
81
+ " dist = hypot( normal.x * dot_p, normal.y * dot_p );",
82
+ " } else if ( shape == SHAPE_SQUARE ) {",
83
+ " float theta = atan( p.y - coord.y, p.x - coord.x ) - angle;",
84
+ " float sin_t = abs( sin( theta ) );",
85
+ " float cos_t = abs( cos( theta ) );",
86
+ " rad = pow( abs( rad ), 1.4 );",
87
+ " rad = rad_max * ( rad + ( ( sin_t > cos_t ) ? rad - sin_t * rad : rad - cos_t * rad ) );",
88
+ " }",
89
+ " return rad - dist;",
90
+ "}",
91
+ "struct Cell {",
125
92
  // grid sample positions
126
- vec2 normal;
127
- vec2 p1;
128
- vec2 p2;
129
- vec2 p3;
130
- vec2 p4;
131
- float samp2;
132
- float samp1;
133
- float samp3;
134
- float samp4;
135
-
136
- };
137
-
138
- vec4 getSample( vec2 point ) {
139
-
93
+ " vec2 normal;",
94
+ " vec2 p1;",
95
+ " vec2 p2;",
96
+ " vec2 p3;",
97
+ " vec2 p4;",
98
+ " float samp2;",
99
+ " float samp1;",
100
+ " float samp3;",
101
+ " float samp4;",
102
+ "};",
103
+ "vec4 getSample( vec2 point ) {",
140
104
  // multi-sampled point
141
- vec4 tex = texture2D( tDiffuse, vec2( point.x / width, point.y / height ) );
142
- float base = rand( vec2( floor( point.x ), floor( point.y ) ) ) * PI2;
143
- float step = PI2 / float( samples );
144
- float dist = radius * 0.66;
145
-
146
- for ( int i = 0; i < samples; ++i ) {
147
-
148
- float r = base + step * float( i );
149
- vec2 coord = point + vec2( cos( r ) * dist, sin( r ) * dist );
150
- tex += texture2D( tDiffuse, vec2( coord.x / width, coord.y / height ) );
151
-
152
- }
153
-
154
- tex /= float( samples ) + 1.0;
155
- return tex;
156
-
157
- }
158
-
159
- float getDotColour( Cell c, vec2 p, int channel, float angle, float aa ) {
160
-
105
+ " vec4 tex = texture2D( tDiffuse, vec2( point.x / width, point.y / height ) );",
106
+ " float base = rand( vec2( floor( point.x ), floor( point.y ) ) ) * PI2;",
107
+ " float step = PI2 / float( samples );",
108
+ " float dist = radius * 0.66;",
109
+ " for ( int i = 0; i < samples; ++i ) {",
110
+ " float r = base + step * float( i );",
111
+ " vec2 coord = point + vec2( cos( r ) * dist, sin( r ) * dist );",
112
+ " tex += texture2D( tDiffuse, vec2( coord.x / width, coord.y / height ) );",
113
+ " }",
114
+ " tex /= float( samples ) + 1.0;",
115
+ " return tex;",
116
+ "}",
117
+ "float getDotColour( Cell c, vec2 p, int channel, float angle, float aa ) {",
161
118
  // get colour for given point
162
- float dist_c_1, dist_c_2, dist_c_3, dist_c_4, res;
163
-
164
- if ( channel == 0 ) {
165
-
166
- c.samp1 = getSample( c.p1 ).r;
167
- c.samp2 = getSample( c.p2 ).r;
168
- c.samp3 = getSample( c.p3 ).r;
169
- c.samp4 = getSample( c.p4 ).r;
170
-
171
- } else if (channel == 1) {
172
-
173
- c.samp1 = getSample( c.p1 ).g;
174
- c.samp2 = getSample( c.p2 ).g;
175
- c.samp3 = getSample( c.p3 ).g;
176
- c.samp4 = getSample( c.p4 ).g;
177
-
178
- } else {
179
-
180
- c.samp1 = getSample( c.p1 ).b;
181
- c.samp3 = getSample( c.p3 ).b;
182
- c.samp2 = getSample( c.p2 ).b;
183
- c.samp4 = getSample( c.p4 ).b;
184
-
185
- }
186
-
187
- dist_c_1 = distanceToDotRadius( c.samp1, c.p1, c.normal, p, angle, radius );
188
- dist_c_2 = distanceToDotRadius( c.samp2, c.p2, c.normal, p, angle, radius );
189
- dist_c_3 = distanceToDotRadius( c.samp3, c.p3, c.normal, p, angle, radius );
190
- dist_c_4 = distanceToDotRadius( c.samp4, c.p4, c.normal, p, angle, radius );
191
- res = ( dist_c_1 > 0.0 ) ? clamp( dist_c_1 / aa, 0.0, 1.0 ) : 0.0;
192
- res += ( dist_c_2 > 0.0 ) ? clamp( dist_c_2 / aa, 0.0, 1.0 ) : 0.0;
193
- res += ( dist_c_3 > 0.0 ) ? clamp( dist_c_3 / aa, 0.0, 1.0 ) : 0.0;
194
- res += ( dist_c_4 > 0.0 ) ? clamp( dist_c_4 / aa, 0.0, 1.0 ) : 0.0;
195
- res = clamp( res, 0.0, 1.0 );
196
-
197
- return res;
198
-
199
- }
200
-
201
- Cell getReferenceCell( vec2 p, vec2 origin, float grid_angle, float step ) {
202
-
119
+ " float dist_c_1, dist_c_2, dist_c_3, dist_c_4, res;",
120
+ " if ( channel == 0 ) {",
121
+ " c.samp1 = getSample( c.p1 ).r;",
122
+ " c.samp2 = getSample( c.p2 ).r;",
123
+ " c.samp3 = getSample( c.p3 ).r;",
124
+ " c.samp4 = getSample( c.p4 ).r;",
125
+ " } else if (channel == 1) {",
126
+ " c.samp1 = getSample( c.p1 ).g;",
127
+ " c.samp2 = getSample( c.p2 ).g;",
128
+ " c.samp3 = getSample( c.p3 ).g;",
129
+ " c.samp4 = getSample( c.p4 ).g;",
130
+ " } else {",
131
+ " c.samp1 = getSample( c.p1 ).b;",
132
+ " c.samp3 = getSample( c.p3 ).b;",
133
+ " c.samp2 = getSample( c.p2 ).b;",
134
+ " c.samp4 = getSample( c.p4 ).b;",
135
+ " }",
136
+ " dist_c_1 = distanceToDotRadius( c.samp1, c.p1, c.normal, p, angle, radius );",
137
+ " dist_c_2 = distanceToDotRadius( c.samp2, c.p2, c.normal, p, angle, radius );",
138
+ " dist_c_3 = distanceToDotRadius( c.samp3, c.p3, c.normal, p, angle, radius );",
139
+ " dist_c_4 = distanceToDotRadius( c.samp4, c.p4, c.normal, p, angle, radius );",
140
+ " res = ( dist_c_1 > 0.0 ) ? clamp( dist_c_1 / aa, 0.0, 1.0 ) : 0.0;",
141
+ " res += ( dist_c_2 > 0.0 ) ? clamp( dist_c_2 / aa, 0.0, 1.0 ) : 0.0;",
142
+ " res += ( dist_c_3 > 0.0 ) ? clamp( dist_c_3 / aa, 0.0, 1.0 ) : 0.0;",
143
+ " res += ( dist_c_4 > 0.0 ) ? clamp( dist_c_4 / aa, 0.0, 1.0 ) : 0.0;",
144
+ " res = clamp( res, 0.0, 1.0 );",
145
+ " return res;",
146
+ "}",
147
+ "Cell getReferenceCell( vec2 p, vec2 origin, float grid_angle, float step ) {",
203
148
  // get containing cell
204
- Cell c;
205
-
149
+ " Cell c;",
206
150
  // calc grid
207
- vec2 n = vec2( cos( grid_angle ), sin( grid_angle ) );
208
- float threshold = step * 0.5;
209
- float dot_normal = n.x * ( p.x - origin.x ) + n.y * ( p.y - origin.y );
210
- float dot_line = -n.y * ( p.x - origin.x ) + n.x * ( p.y - origin.y );
211
- vec2 offset = vec2( n.x * dot_normal, n.y * dot_normal );
212
- float offset_normal = mod( hypot( offset.x, offset.y ), step );
213
- float normal_dir = ( dot_normal < 0.0 ) ? 1.0 : -1.0;
214
- float normal_scale = ( ( offset_normal < threshold ) ? -offset_normal : step - offset_normal ) * normal_dir;
215
- float offset_line = mod( hypot( ( p.x - offset.x ) - origin.x, ( p.y - offset.y ) - origin.y ), step );
216
- float line_dir = ( dot_line < 0.0 ) ? 1.0 : -1.0;
217
- float line_scale = ( ( offset_line < threshold ) ? -offset_line : step - offset_line ) * line_dir;
218
-
151
+ " vec2 n = vec2( cos( grid_angle ), sin( grid_angle ) );",
152
+ " float threshold = step * 0.5;",
153
+ " float dot_normal = n.x * ( p.x - origin.x ) + n.y * ( p.y - origin.y );",
154
+ " float dot_line = -n.y * ( p.x - origin.x ) + n.x * ( p.y - origin.y );",
155
+ " vec2 offset = vec2( n.x * dot_normal, n.y * dot_normal );",
156
+ " float offset_normal = mod( hypot( offset.x, offset.y ), step );",
157
+ " float normal_dir = ( dot_normal < 0.0 ) ? 1.0 : -1.0;",
158
+ " float normal_scale = ( ( offset_normal < threshold ) ? -offset_normal : step - offset_normal ) * normal_dir;",
159
+ " float offset_line = mod( hypot( ( p.x - offset.x ) - origin.x, ( p.y - offset.y ) - origin.y ), step );",
160
+ " float line_dir = ( dot_line < 0.0 ) ? 1.0 : -1.0;",
161
+ " float line_scale = ( ( offset_line < threshold ) ? -offset_line : step - offset_line ) * line_dir;",
219
162
  // get closest corner
220
- c.normal = n;
221
- c.p1.x = p.x - n.x * normal_scale + n.y * line_scale;
222
- c.p1.y = p.y - n.y * normal_scale - n.x * line_scale;
223
-
163
+ " c.normal = n;",
164
+ " c.p1.x = p.x - n.x * normal_scale + n.y * line_scale;",
165
+ " c.p1.y = p.y - n.y * normal_scale - n.x * line_scale;",
224
166
  // scatter
225
- if ( scatter != 0.0 ) {
226
-
227
- float off_mag = scatter * threshold * 0.5;
228
- float off_angle = rand( vec2( floor( c.p1.x ), floor( c.p1.y ) ) ) * PI2;
229
- c.p1.x += cos( off_angle ) * off_mag;
230
- c.p1.y += sin( off_angle ) * off_mag;
231
-
232
- }
233
-
167
+ " if ( scatter != 0.0 ) {",
168
+ " float off_mag = scatter * threshold * 0.5;",
169
+ " float off_angle = rand( vec2( floor( c.p1.x ), floor( c.p1.y ) ) ) * PI2;",
170
+ " c.p1.x += cos( off_angle ) * off_mag;",
171
+ " c.p1.y += sin( off_angle ) * off_mag;",
172
+ " }",
234
173
  // find corners
235
- float normal_step = normal_dir * ( ( offset_normal < threshold ) ? step : -step );
236
- float line_step = line_dir * ( ( offset_line < threshold ) ? step : -step );
237
- c.p2.x = c.p1.x - n.x * normal_step;
238
- c.p2.y = c.p1.y - n.y * normal_step;
239
- c.p3.x = c.p1.x + n.y * line_step;
240
- c.p3.y = c.p1.y - n.x * line_step;
241
- c.p4.x = c.p1.x - n.x * normal_step + n.y * line_step;
242
- c.p4.y = c.p1.y - n.y * normal_step - n.x * line_step;
243
-
244
- return c;
245
-
246
- }
247
-
248
- float blendColour( float a, float b, float t ) {
249
-
174
+ " float normal_step = normal_dir * ( ( offset_normal < threshold ) ? step : -step );",
175
+ " float line_step = line_dir * ( ( offset_line < threshold ) ? step : -step );",
176
+ " c.p2.x = c.p1.x - n.x * normal_step;",
177
+ " c.p2.y = c.p1.y - n.y * normal_step;",
178
+ " c.p3.x = c.p1.x + n.y * line_step;",
179
+ " c.p3.y = c.p1.y - n.x * line_step;",
180
+ " c.p4.x = c.p1.x - n.x * normal_step + n.y * line_step;",
181
+ " c.p4.y = c.p1.y - n.y * normal_step - n.x * line_step;",
182
+ " return c;",
183
+ "}",
184
+ "float blendColour( float a, float b, float t ) {",
250
185
  // blend colours
251
- if ( blendingMode == BLENDING_LINEAR ) {
252
- return blend( a, b, 1.0 - t );
253
- } else if ( blendingMode == BLENDING_ADD ) {
254
- return blend( a, min( 1.0, a + b ), t );
255
- } else if ( blendingMode == BLENDING_MULTIPLY ) {
256
- return blend( a, max( 0.0, a * b ), t );
257
- } else if ( blendingMode == BLENDING_LIGHTER ) {
258
- return blend( a, max( a, b ), t );
259
- } else if ( blendingMode == BLENDING_DARKER ) {
260
- return blend( a, min( a, b ), t );
261
- } else {
262
- return blend( a, b, 1.0 - t );
263
- }
264
-
265
- }
266
-
267
- void main() {
268
-
269
- if ( ! disable ) {
270
-
186
+ " if ( blendingMode == BLENDING_LINEAR ) {",
187
+ " return blend( a, b, 1.0 - t );",
188
+ " } else if ( blendingMode == BLENDING_ADD ) {",
189
+ " return blend( a, min( 1.0, a + b ), t );",
190
+ " } else if ( blendingMode == BLENDING_MULTIPLY ) {",
191
+ " return blend( a, max( 0.0, a * b ), t );",
192
+ " } else if ( blendingMode == BLENDING_LIGHTER ) {",
193
+ " return blend( a, max( a, b ), t );",
194
+ " } else if ( blendingMode == BLENDING_DARKER ) {",
195
+ " return blend( a, min( a, b ), t );",
196
+ " } else {",
197
+ " return blend( a, b, 1.0 - t );",
198
+ " }",
199
+ "}",
200
+ "void main() {",
201
+ " if ( ! disable ) {",
271
202
  // setup
272
- vec2 p = vec2( vUV.x * width, vUV.y * height );
273
- vec2 origin = vec2( 0, 0 );
274
- float aa = ( radius < 2.5 ) ? radius * 0.5 : 1.25;
275
-
203
+ " vec2 p = vec2( vUV.x * width, vUV.y * height );",
204
+ " vec2 origin = vec2( 0, 0 );",
205
+ " float aa = ( radius < 2.5 ) ? radius * 0.5 : 1.25;",
276
206
  // get channel samples
277
- Cell cell_r = getReferenceCell( p, origin, rotateR, radius );
278
- Cell cell_g = getReferenceCell( p, origin, rotateG, radius );
279
- Cell cell_b = getReferenceCell( p, origin, rotateB, radius );
280
- float r = getDotColour( cell_r, p, 0, rotateR, aa );
281
- float g = getDotColour( cell_g, p, 1, rotateG, aa );
282
- float b = getDotColour( cell_b, p, 2, rotateB, aa );
283
-
207
+ " Cell cell_r = getReferenceCell( p, origin, rotateR, radius );",
208
+ " Cell cell_g = getReferenceCell( p, origin, rotateG, radius );",
209
+ " Cell cell_b = getReferenceCell( p, origin, rotateB, radius );",
210
+ " float r = getDotColour( cell_r, p, 0, rotateR, aa );",
211
+ " float g = getDotColour( cell_g, p, 1, rotateG, aa );",
212
+ " float b = getDotColour( cell_b, p, 2, rotateB, aa );",
284
213
  // blend with original
285
- vec4 colour = texture2D( tDiffuse, vUV );
286
- r = blendColour( r, colour.r, blending );
287
- g = blendColour( g, colour.g, blending );
288
- b = blendColour( b, colour.b, blending );
289
-
290
- if ( greyscale ) {
291
- r = g = b = (r + b + g) / 3.0;
292
- }
293
-
294
- gl_FragColor = vec4( r, g, b, 1.0 );
295
-
296
- } else {
297
-
298
- gl_FragColor = texture2D( tDiffuse, vUV );
299
-
300
- }
301
-
302
- }
303
- `
304
- )
214
+ " vec4 colour = texture2D( tDiffuse, vUV );",
215
+ " r = blendColour( r, colour.r, blending );",
216
+ " g = blendColour( g, colour.g, blending );",
217
+ " b = blendColour( b, colour.b, blending );",
218
+ " if ( greyscale ) {",
219
+ " r = g = b = (r + b + g) / 3.0;",
220
+ " }",
221
+ " gl_FragColor = vec4( r, g, b, 1.0 );",
222
+ " } else {",
223
+ " gl_FragColor = texture2D( tDiffuse, vUV );",
224
+ " }",
225
+ "}"
226
+ ].join("\n")
305
227
  };
306
228
  exports.HalftoneShader = HalftoneShader;
307
229
  //# sourceMappingURL=HalftoneShader.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"HalftoneShader.cjs","sources":["../../src/shaders/HalftoneShader.ts"],"sourcesContent":["/**\n * RGB Halftone shader for three.js.\n *\tNOTE:\n * \t\tShape (1 = Dot, 2 = Ellipse, 3 = Line, 4 = Square)\n *\t\tBlending Mode (1 = Linear, 2 = Multiply, 3 = Add, 4 = Lighter, 5 = Darker)\n */\n\nexport const HalftoneShader = {\n uniforms: {\n tDiffuse: { value: null },\n shape: { value: 1 },\n radius: { value: 4 },\n rotateR: { value: (Math.PI / 12) * 1 },\n rotateG: { value: (Math.PI / 12) * 2 },\n rotateB: { value: (Math.PI / 12) * 3 },\n scatter: { value: 0 },\n width: { value: 1 },\n height: { value: 1 },\n blending: { value: 1 },\n blendingMode: { value: 1 },\n greyscale: { value: false },\n disable: { value: false },\n },\n\n vertexShader: /* glsl */ `\n varying vec2 vUV;\n\n void main() {\n\n \tvUV = uv;\n \tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n\n }\n `,\n\n fragmentShader: /* glsl */ `\n #define SQRT2_MINUS_ONE 0.41421356\n #define SQRT2_HALF_MINUS_ONE 0.20710678\n #define PI2 6.28318531\n #define SHAPE_DOT 1\n #define SHAPE_ELLIPSE 2\n #define SHAPE_LINE 3\n #define SHAPE_SQUARE 4\n #define BLENDING_LINEAR 1\n #define BLENDING_MULTIPLY 2\n #define BLENDING_ADD 3\n #define BLENDING_LIGHTER 4\n #define BLENDING_DARKER 5\n uniform sampler2D tDiffuse;\n uniform float radius;\n uniform float rotateR;\n uniform float rotateG;\n uniform float rotateB;\n uniform float scatter;\n uniform float width;\n uniform float height;\n uniform int shape;\n uniform bool disable;\n uniform float blending;\n uniform int blendingMode;\n varying vec2 vUV;\n uniform bool greyscale;\n const int samples = 8;\n\n float blend( float a, float b, float t ) {\n\n // linear blend\n \treturn a * ( 1.0 - t ) + b * t;\n\n }\n\n float hypot( float x, float y ) {\n\n // vector magnitude\n \treturn sqrt( x * x + y * y );\n\n }\n\n float rand( vec2 seed ){\n\n // get pseudo-random number\n return fract( sin( dot( seed.xy, vec2( 12.9898, 78.233 ) ) ) * 43758.5453 );\n\n }\n\n float distanceToDotRadius( float channel, vec2 coord, vec2 normal, vec2 p, float angle, float rad_max ) {\n\n // apply shape-specific transforms\n \tfloat dist = hypot( coord.x - p.x, coord.y - p.y );\n \tfloat rad = channel;\n\n \tif ( shape == SHAPE_DOT ) {\n\n \t\trad = pow( abs( rad ), 1.125 ) * rad_max;\n\n \t} else if ( shape == SHAPE_ELLIPSE ) {\n\n \t\trad = pow( abs( rad ), 1.125 ) * rad_max;\n\n \t\tif ( dist != 0.0 ) {\n \t\t\tfloat dot_p = abs( ( p.x - coord.x ) / dist * normal.x + ( p.y - coord.y ) / dist * normal.y );\n \t\t\tdist = ( dist * ( 1.0 - SQRT2_HALF_MINUS_ONE ) ) + dot_p * dist * SQRT2_MINUS_ONE;\n \t\t}\n\n \t} else if ( shape == SHAPE_LINE ) {\n\n \t\trad = pow( abs( rad ), 1.5) * rad_max;\n \t\tfloat dot_p = ( p.x - coord.x ) * normal.x + ( p.y - coord.y ) * normal.y;\n \t\tdist = hypot( normal.x * dot_p, normal.y * dot_p );\n\n \t} else if ( shape == SHAPE_SQUARE ) {\n\n \t\tfloat theta = atan( p.y - coord.y, p.x - coord.x ) - angle;\n \t\tfloat sin_t = abs( sin( theta ) );\n \t\tfloat cos_t = abs( cos( theta ) );\n \t\trad = pow( abs( rad ), 1.4 );\n \t\trad = rad_max * ( rad + ( ( sin_t > cos_t ) ? rad - sin_t * rad : rad - cos_t * rad ) );\n\n \t}\n\n \treturn rad - dist;\n\n }\n\n struct Cell {\n\n // grid sample positions\n \tvec2 normal;\n \tvec2 p1;\n \tvec2 p2;\n \tvec2 p3;\n \tvec2 p4;\n \tfloat samp2;\n \tfloat samp1;\n \tfloat samp3;\n \tfloat samp4;\n\n };\n\n vec4 getSample( vec2 point ) {\n\n // multi-sampled point\n \tvec4 tex = texture2D( tDiffuse, vec2( point.x / width, point.y / height ) );\n \tfloat base = rand( vec2( floor( point.x ), floor( point.y ) ) ) * PI2;\n \tfloat step = PI2 / float( samples );\n \tfloat dist = radius * 0.66;\n\n \tfor ( int i = 0; i < samples; ++i ) {\n\n \t\tfloat r = base + step * float( i );\n \t\tvec2 coord = point + vec2( cos( r ) * dist, sin( r ) * dist );\n \t\ttex += texture2D( tDiffuse, vec2( coord.x / width, coord.y / height ) );\n\n \t}\n\n \ttex /= float( samples ) + 1.0;\n \treturn tex;\n\n }\n\n float getDotColour( Cell c, vec2 p, int channel, float angle, float aa ) {\n\n // get colour for given point\n \tfloat dist_c_1, dist_c_2, dist_c_3, dist_c_4, res;\n\n \tif ( channel == 0 ) {\n\n \t\tc.samp1 = getSample( c.p1 ).r;\n \t\tc.samp2 = getSample( c.p2 ).r;\n \t\tc.samp3 = getSample( c.p3 ).r;\n \t\tc.samp4 = getSample( c.p4 ).r;\n\n \t} else if (channel == 1) {\n\n \t\tc.samp1 = getSample( c.p1 ).g;\n \t\tc.samp2 = getSample( c.p2 ).g;\n \t\tc.samp3 = getSample( c.p3 ).g;\n \t\tc.samp4 = getSample( c.p4 ).g;\n\n \t} else {\n\n \t\tc.samp1 = getSample( c.p1 ).b;\n \t\tc.samp3 = getSample( c.p3 ).b;\n \t\tc.samp2 = getSample( c.p2 ).b;\n \t\tc.samp4 = getSample( c.p4 ).b;\n\n \t}\n\n \tdist_c_1 = distanceToDotRadius( c.samp1, c.p1, c.normal, p, angle, radius );\n \tdist_c_2 = distanceToDotRadius( c.samp2, c.p2, c.normal, p, angle, radius );\n \tdist_c_3 = distanceToDotRadius( c.samp3, c.p3, c.normal, p, angle, radius );\n \tdist_c_4 = distanceToDotRadius( c.samp4, c.p4, c.normal, p, angle, radius );\n \tres = ( dist_c_1 > 0.0 ) ? clamp( dist_c_1 / aa, 0.0, 1.0 ) : 0.0;\n \tres += ( dist_c_2 > 0.0 ) ? clamp( dist_c_2 / aa, 0.0, 1.0 ) : 0.0;\n \tres += ( dist_c_3 > 0.0 ) ? clamp( dist_c_3 / aa, 0.0, 1.0 ) : 0.0;\n \tres += ( dist_c_4 > 0.0 ) ? clamp( dist_c_4 / aa, 0.0, 1.0 ) : 0.0;\n \tres = clamp( res, 0.0, 1.0 );\n\n \treturn res;\n\n }\n\n Cell getReferenceCell( vec2 p, vec2 origin, float grid_angle, float step ) {\n\n // get containing cell\n \tCell c;\n\n // calc grid\n \tvec2 n = vec2( cos( grid_angle ), sin( grid_angle ) );\n \tfloat threshold = step * 0.5;\n \tfloat dot_normal = n.x * ( p.x - origin.x ) + n.y * ( p.y - origin.y );\n \tfloat dot_line = -n.y * ( p.x - origin.x ) + n.x * ( p.y - origin.y );\n \tvec2 offset = vec2( n.x * dot_normal, n.y * dot_normal );\n \tfloat offset_normal = mod( hypot( offset.x, offset.y ), step );\n \tfloat normal_dir = ( dot_normal < 0.0 ) ? 1.0 : -1.0;\n \tfloat normal_scale = ( ( offset_normal < threshold ) ? -offset_normal : step - offset_normal ) * normal_dir;\n \tfloat offset_line = mod( hypot( ( p.x - offset.x ) - origin.x, ( p.y - offset.y ) - origin.y ), step );\n \tfloat line_dir = ( dot_line < 0.0 ) ? 1.0 : -1.0;\n \tfloat line_scale = ( ( offset_line < threshold ) ? -offset_line : step - offset_line ) * line_dir;\n\n // get closest corner\n \tc.normal = n;\n \tc.p1.x = p.x - n.x * normal_scale + n.y * line_scale;\n \tc.p1.y = p.y - n.y * normal_scale - n.x * line_scale;\n\n // scatter\n \tif ( scatter != 0.0 ) {\n\n \t\tfloat off_mag = scatter * threshold * 0.5;\n \t\tfloat off_angle = rand( vec2( floor( c.p1.x ), floor( c.p1.y ) ) ) * PI2;\n \t\tc.p1.x += cos( off_angle ) * off_mag;\n \t\tc.p1.y += sin( off_angle ) * off_mag;\n\n \t}\n\n // find corners\n \tfloat normal_step = normal_dir * ( ( offset_normal < threshold ) ? step : -step );\n \tfloat line_step = line_dir * ( ( offset_line < threshold ) ? step : -step );\n \tc.p2.x = c.p1.x - n.x * normal_step;\n \tc.p2.y = c.p1.y - n.y * normal_step;\n \tc.p3.x = c.p1.x + n.y * line_step;\n \tc.p3.y = c.p1.y - n.x * line_step;\n \tc.p4.x = c.p1.x - n.x * normal_step + n.y * line_step;\n \tc.p4.y = c.p1.y - n.y * normal_step - n.x * line_step;\n\n \treturn c;\n\n }\n\n float blendColour( float a, float b, float t ) {\n\n // blend colours\n \tif ( blendingMode == BLENDING_LINEAR ) {\n \t\treturn blend( a, b, 1.0 - t );\n \t} else if ( blendingMode == BLENDING_ADD ) {\n \t\treturn blend( a, min( 1.0, a + b ), t );\n \t} else if ( blendingMode == BLENDING_MULTIPLY ) {\n \t\treturn blend( a, max( 0.0, a * b ), t );\n \t} else if ( blendingMode == BLENDING_LIGHTER ) {\n \t\treturn blend( a, max( a, b ), t );\n \t} else if ( blendingMode == BLENDING_DARKER ) {\n \t\treturn blend( a, min( a, b ), t );\n \t} else {\n \t\treturn blend( a, b, 1.0 - t );\n \t}\n\n }\n\n void main() {\n\n \tif ( ! disable ) {\n\n // setup\n \t\tvec2 p = vec2( vUV.x * width, vUV.y * height );\n \t\tvec2 origin = vec2( 0, 0 );\n \t\tfloat aa = ( radius < 2.5 ) ? radius * 0.5 : 1.25;\n\n // get channel samples\n \t\tCell cell_r = getReferenceCell( p, origin, rotateR, radius );\n \t\tCell cell_g = getReferenceCell( p, origin, rotateG, radius );\n \t\tCell cell_b = getReferenceCell( p, origin, rotateB, radius );\n \t\tfloat r = getDotColour( cell_r, p, 0, rotateR, aa );\n \t\tfloat g = getDotColour( cell_g, p, 1, rotateG, aa );\n \t\tfloat b = getDotColour( cell_b, p, 2, rotateB, aa );\n\n // blend with original\n \t\tvec4 colour = texture2D( tDiffuse, vUV );\n \t\tr = blendColour( r, colour.r, blending );\n \t\tg = blendColour( g, colour.g, blending );\n \t\tb = blendColour( b, colour.b, blending );\n\n \t\tif ( greyscale ) {\n \t\t\tr = g = b = (r + b + g) / 3.0;\n \t\t}\n\n \t\tgl_FragColor = vec4( r, g, b, 1.0 );\n\n \t} else {\n\n \t\tgl_FragColor = texture2D( tDiffuse, vUV );\n\n \t}\n\n }\n `,\n}\n"],"names":[],"mappings":";;AAOO,MAAM,iBAAiB;AAAA,EAC5B,UAAU;AAAA,IACR,UAAU,EAAE,OAAO,KAAK;AAAA,IACxB,OAAO,EAAE,OAAO,EAAE;AAAA,IAClB,QAAQ,EAAE,OAAO,EAAE;AAAA,IACnB,SAAS,EAAE,OAAQ,KAAK,KAAK,KAAM,EAAE;AAAA,IACrC,SAAS,EAAE,OAAQ,KAAK,KAAK,KAAM,EAAE;AAAA,IACrC,SAAS,EAAE,OAAQ,KAAK,KAAK,KAAM,EAAE;AAAA,IACrC,SAAS,EAAE,OAAO,EAAE;AAAA,IACpB,OAAO,EAAE,OAAO,EAAE;AAAA,IAClB,QAAQ,EAAE,OAAO,EAAE;AAAA,IACnB,UAAU,EAAE,OAAO,EAAE;AAAA,IACrB,cAAc,EAAE,OAAO,EAAE;AAAA,IACzB,WAAW,EAAE,OAAO,MAAM;AAAA,IAC1B,SAAS,EAAE,OAAO,MAAM;AAAA,EAC1B;AAAA,EAEA;AAAA;AAAA,IAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWzB;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;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;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;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;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;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA8Q7B;;"}
1
+ {"version":3,"file":"HalftoneShader.cjs","sources":["../../src/shaders/HalftoneShader.ts"],"sourcesContent":["/**\n * RGB Halftone shader for three.js.\n *\tNOTE:\n * \t\tShape (1 = Dot, 2 = Ellipse, 3 = Line, 4 = Square)\n *\t\tBlending Mode (1 = Linear, 2 = Multiply, 3 = Add, 4 = Lighter, 5 = Darker)\n */\n\nexport const HalftoneShader = {\n uniforms: {\n tDiffuse: { value: null },\n shape: { value: 1 },\n radius: { value: 4 },\n rotateR: { value: (Math.PI / 12) * 1 },\n rotateG: { value: (Math.PI / 12) * 2 },\n rotateB: { value: (Math.PI / 12) * 3 },\n scatter: { value: 0 },\n width: { value: 1 },\n height: { value: 1 },\n blending: { value: 1 },\n blendingMode: { value: 1 },\n greyscale: { value: false },\n disable: { value: false },\n },\n\n vertexShader: [\n 'varying vec2 vUV;',\n\n 'void main() {',\n\n '\tvUV = uv;',\n '\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);',\n\n '}',\n ].join('\\n'),\n\n fragmentShader: [\n '#define SQRT2_MINUS_ONE 0.41421356',\n '#define SQRT2_HALF_MINUS_ONE 0.20710678',\n '#define PI2 6.28318531',\n '#define SHAPE_DOT 1',\n '#define SHAPE_ELLIPSE 2',\n '#define SHAPE_LINE 3',\n '#define SHAPE_SQUARE 4',\n '#define BLENDING_LINEAR 1',\n '#define BLENDING_MULTIPLY 2',\n '#define BLENDING_ADD 3',\n '#define BLENDING_LIGHTER 4',\n '#define BLENDING_DARKER 5',\n 'uniform sampler2D tDiffuse;',\n 'uniform float radius;',\n 'uniform float rotateR;',\n 'uniform float rotateG;',\n 'uniform float rotateB;',\n 'uniform float scatter;',\n 'uniform float width;',\n 'uniform float height;',\n 'uniform int shape;',\n 'uniform bool disable;',\n 'uniform float blending;',\n 'uniform int blendingMode;',\n 'varying vec2 vUV;',\n 'uniform bool greyscale;',\n 'const int samples = 8;',\n\n 'float blend( float a, float b, float t ) {',\n\n // linear blend\n '\treturn a * ( 1.0 - t ) + b * t;',\n\n '}',\n\n 'float hypot( float x, float y ) {',\n\n // vector magnitude\n '\treturn sqrt( x * x + y * y );',\n\n '}',\n\n 'float rand( vec2 seed ){',\n\n // get pseudo-random number\n 'return fract( sin( dot( seed.xy, vec2( 12.9898, 78.233 ) ) ) * 43758.5453 );',\n\n '}',\n\n 'float distanceToDotRadius( float channel, vec2 coord, vec2 normal, vec2 p, float angle, float rad_max ) {',\n\n // apply shape-specific transforms\n '\tfloat dist = hypot( coord.x - p.x, coord.y - p.y );',\n '\tfloat rad = channel;',\n\n '\tif ( shape == SHAPE_DOT ) {',\n\n '\t\trad = pow( abs( rad ), 1.125 ) * rad_max;',\n\n '\t} else if ( shape == SHAPE_ELLIPSE ) {',\n\n '\t\trad = pow( abs( rad ), 1.125 ) * rad_max;',\n\n '\t\tif ( dist != 0.0 ) {',\n '\t\t\tfloat dot_p = abs( ( p.x - coord.x ) / dist * normal.x + ( p.y - coord.y ) / dist * normal.y );',\n '\t\t\tdist = ( dist * ( 1.0 - SQRT2_HALF_MINUS_ONE ) ) + dot_p * dist * SQRT2_MINUS_ONE;',\n '\t\t}',\n\n '\t} else if ( shape == SHAPE_LINE ) {',\n\n '\t\trad = pow( abs( rad ), 1.5) * rad_max;',\n '\t\tfloat dot_p = ( p.x - coord.x ) * normal.x + ( p.y - coord.y ) * normal.y;',\n '\t\tdist = hypot( normal.x * dot_p, normal.y * dot_p );',\n\n '\t} else if ( shape == SHAPE_SQUARE ) {',\n\n '\t\tfloat theta = atan( p.y - coord.y, p.x - coord.x ) - angle;',\n '\t\tfloat sin_t = abs( sin( theta ) );',\n '\t\tfloat cos_t = abs( cos( theta ) );',\n '\t\trad = pow( abs( rad ), 1.4 );',\n '\t\trad = rad_max * ( rad + ( ( sin_t > cos_t ) ? rad - sin_t * rad : rad - cos_t * rad ) );',\n\n '\t}',\n\n '\treturn rad - dist;',\n\n '}',\n\n 'struct Cell {',\n\n // grid sample positions\n '\tvec2 normal;',\n '\tvec2 p1;',\n '\tvec2 p2;',\n '\tvec2 p3;',\n '\tvec2 p4;',\n '\tfloat samp2;',\n '\tfloat samp1;',\n '\tfloat samp3;',\n '\tfloat samp4;',\n\n '};',\n\n 'vec4 getSample( vec2 point ) {',\n\n // multi-sampled point\n '\tvec4 tex = texture2D( tDiffuse, vec2( point.x / width, point.y / height ) );',\n '\tfloat base = rand( vec2( floor( point.x ), floor( point.y ) ) ) * PI2;',\n '\tfloat step = PI2 / float( samples );',\n '\tfloat dist = radius * 0.66;',\n\n '\tfor ( int i = 0; i < samples; ++i ) {',\n\n '\t\tfloat r = base + step * float( i );',\n '\t\tvec2 coord = point + vec2( cos( r ) * dist, sin( r ) * dist );',\n '\t\ttex += texture2D( tDiffuse, vec2( coord.x / width, coord.y / height ) );',\n\n '\t}',\n\n '\ttex /= float( samples ) + 1.0;',\n '\treturn tex;',\n\n '}',\n\n 'float getDotColour( Cell c, vec2 p, int channel, float angle, float aa ) {',\n\n // get colour for given point\n '\tfloat dist_c_1, dist_c_2, dist_c_3, dist_c_4, res;',\n\n '\tif ( channel == 0 ) {',\n\n '\t\tc.samp1 = getSample( c.p1 ).r;',\n '\t\tc.samp2 = getSample( c.p2 ).r;',\n '\t\tc.samp3 = getSample( c.p3 ).r;',\n '\t\tc.samp4 = getSample( c.p4 ).r;',\n\n '\t} else if (channel == 1) {',\n\n '\t\tc.samp1 = getSample( c.p1 ).g;',\n '\t\tc.samp2 = getSample( c.p2 ).g;',\n '\t\tc.samp3 = getSample( c.p3 ).g;',\n '\t\tc.samp4 = getSample( c.p4 ).g;',\n\n '\t} else {',\n\n '\t\tc.samp1 = getSample( c.p1 ).b;',\n '\t\tc.samp3 = getSample( c.p3 ).b;',\n '\t\tc.samp2 = getSample( c.p2 ).b;',\n '\t\tc.samp4 = getSample( c.p4 ).b;',\n\n '\t}',\n\n '\tdist_c_1 = distanceToDotRadius( c.samp1, c.p1, c.normal, p, angle, radius );',\n '\tdist_c_2 = distanceToDotRadius( c.samp2, c.p2, c.normal, p, angle, radius );',\n '\tdist_c_3 = distanceToDotRadius( c.samp3, c.p3, c.normal, p, angle, radius );',\n '\tdist_c_4 = distanceToDotRadius( c.samp4, c.p4, c.normal, p, angle, radius );',\n '\tres = ( dist_c_1 > 0.0 ) ? clamp( dist_c_1 / aa, 0.0, 1.0 ) : 0.0;',\n '\tres += ( dist_c_2 > 0.0 ) ? clamp( dist_c_2 / aa, 0.0, 1.0 ) : 0.0;',\n '\tres += ( dist_c_3 > 0.0 ) ? clamp( dist_c_3 / aa, 0.0, 1.0 ) : 0.0;',\n '\tres += ( dist_c_4 > 0.0 ) ? clamp( dist_c_4 / aa, 0.0, 1.0 ) : 0.0;',\n '\tres = clamp( res, 0.0, 1.0 );',\n\n '\treturn res;',\n\n '}',\n\n 'Cell getReferenceCell( vec2 p, vec2 origin, float grid_angle, float step ) {',\n\n // get containing cell\n '\tCell c;',\n\n // calc grid\n '\tvec2 n = vec2( cos( grid_angle ), sin( grid_angle ) );',\n '\tfloat threshold = step * 0.5;',\n '\tfloat dot_normal = n.x * ( p.x - origin.x ) + n.y * ( p.y - origin.y );',\n '\tfloat dot_line = -n.y * ( p.x - origin.x ) + n.x * ( p.y - origin.y );',\n '\tvec2 offset = vec2( n.x * dot_normal, n.y * dot_normal );',\n '\tfloat offset_normal = mod( hypot( offset.x, offset.y ), step );',\n '\tfloat normal_dir = ( dot_normal < 0.0 ) ? 1.0 : -1.0;',\n '\tfloat normal_scale = ( ( offset_normal < threshold ) ? -offset_normal : step - offset_normal ) * normal_dir;',\n '\tfloat offset_line = mod( hypot( ( p.x - offset.x ) - origin.x, ( p.y - offset.y ) - origin.y ), step );',\n '\tfloat line_dir = ( dot_line < 0.0 ) ? 1.0 : -1.0;',\n '\tfloat line_scale = ( ( offset_line < threshold ) ? -offset_line : step - offset_line ) * line_dir;',\n\n // get closest corner\n '\tc.normal = n;',\n '\tc.p1.x = p.x - n.x * normal_scale + n.y * line_scale;',\n '\tc.p1.y = p.y - n.y * normal_scale - n.x * line_scale;',\n\n // scatter\n '\tif ( scatter != 0.0 ) {',\n\n '\t\tfloat off_mag = scatter * threshold * 0.5;',\n '\t\tfloat off_angle = rand( vec2( floor( c.p1.x ), floor( c.p1.y ) ) ) * PI2;',\n '\t\tc.p1.x += cos( off_angle ) * off_mag;',\n '\t\tc.p1.y += sin( off_angle ) * off_mag;',\n\n '\t}',\n\n // find corners\n '\tfloat normal_step = normal_dir * ( ( offset_normal < threshold ) ? step : -step );',\n '\tfloat line_step = line_dir * ( ( offset_line < threshold ) ? step : -step );',\n '\tc.p2.x = c.p1.x - n.x * normal_step;',\n '\tc.p2.y = c.p1.y - n.y * normal_step;',\n '\tc.p3.x = c.p1.x + n.y * line_step;',\n '\tc.p3.y = c.p1.y - n.x * line_step;',\n '\tc.p4.x = c.p1.x - n.x * normal_step + n.y * line_step;',\n '\tc.p4.y = c.p1.y - n.y * normal_step - n.x * line_step;',\n\n '\treturn c;',\n\n '}',\n\n 'float blendColour( float a, float b, float t ) {',\n\n // blend colours\n '\tif ( blendingMode == BLENDING_LINEAR ) {',\n '\t\treturn blend( a, b, 1.0 - t );',\n '\t} else if ( blendingMode == BLENDING_ADD ) {',\n '\t\treturn blend( a, min( 1.0, a + b ), t );',\n '\t} else if ( blendingMode == BLENDING_MULTIPLY ) {',\n '\t\treturn blend( a, max( 0.0, a * b ), t );',\n '\t} else if ( blendingMode == BLENDING_LIGHTER ) {',\n '\t\treturn blend( a, max( a, b ), t );',\n '\t} else if ( blendingMode == BLENDING_DARKER ) {',\n '\t\treturn blend( a, min( a, b ), t );',\n '\t} else {',\n '\t\treturn blend( a, b, 1.0 - t );',\n '\t}',\n\n '}',\n\n 'void main() {',\n\n '\tif ( ! disable ) {',\n\n // setup\n '\t\tvec2 p = vec2( vUV.x * width, vUV.y * height );',\n '\t\tvec2 origin = vec2( 0, 0 );',\n '\t\tfloat aa = ( radius < 2.5 ) ? radius * 0.5 : 1.25;',\n\n // get channel samples\n '\t\tCell cell_r = getReferenceCell( p, origin, rotateR, radius );',\n '\t\tCell cell_g = getReferenceCell( p, origin, rotateG, radius );',\n '\t\tCell cell_b = getReferenceCell( p, origin, rotateB, radius );',\n '\t\tfloat r = getDotColour( cell_r, p, 0, rotateR, aa );',\n '\t\tfloat g = getDotColour( cell_g, p, 1, rotateG, aa );',\n '\t\tfloat b = getDotColour( cell_b, p, 2, rotateB, aa );',\n\n // blend with original\n '\t\tvec4 colour = texture2D( tDiffuse, vUV );',\n '\t\tr = blendColour( r, colour.r, blending );',\n '\t\tg = blendColour( g, colour.g, blending );',\n '\t\tb = blendColour( b, colour.b, blending );',\n\n '\t\tif ( greyscale ) {',\n '\t\t\tr = g = b = (r + b + g) / 3.0;',\n '\t\t}',\n\n '\t\tgl_FragColor = vec4( r, g, b, 1.0 );',\n\n '\t} else {',\n\n '\t\tgl_FragColor = texture2D( tDiffuse, vUV );',\n\n '\t}',\n\n '}',\n ].join('\\n'),\n}\n"],"names":[],"mappings":";;AAOO,MAAM,iBAAiB;AAAA,EAC5B,UAAU;AAAA,IACR,UAAU,EAAE,OAAO,KAAK;AAAA,IACxB,OAAO,EAAE,OAAO,EAAE;AAAA,IAClB,QAAQ,EAAE,OAAO,EAAE;AAAA,IACnB,SAAS,EAAE,OAAQ,KAAK,KAAK,KAAM,EAAE;AAAA,IACrC,SAAS,EAAE,OAAQ,KAAK,KAAK,KAAM,EAAE;AAAA,IACrC,SAAS,EAAE,OAAQ,KAAK,KAAK,KAAM,EAAE;AAAA,IACrC,SAAS,EAAE,OAAO,EAAE;AAAA,IACpB,OAAO,EAAE,OAAO,EAAE;AAAA,IAClB,QAAQ,EAAE,OAAO,EAAE;AAAA,IACnB,UAAU,EAAE,OAAO,EAAE;AAAA,IACrB,cAAc,EAAE,OAAO,EAAE;AAAA,IACzB,WAAW,EAAE,OAAO,MAAM;AAAA,IAC1B,SAAS,EAAE,OAAO,MAAM;AAAA,EAC1B;AAAA,EAEA,cAAc;AAAA,IACZ;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA,EAAA,EACA,KAAK,IAAI;AAAA,EAEX,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA;AAAA,IAGA;AAAA,IAEA;AAAA,IAEA;AAAA;AAAA,IAGA;AAAA,IAEA;AAAA,IAEA;AAAA;AAAA,IAGA;AAAA,IAEA;AAAA,IAEA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA;AAAA,IAGA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA;AAAA,IAGA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAGA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,IAEA;AAAA,EAAA,EACA,KAAK,IAAI;AACb;;"}