three-stdlib 2.35.5 → 2.35.7

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