@basementstudio/shader-lab 0.1.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (399) hide show
  1. package/dist/src/easings.d.ts +3 -0
  2. package/dist/src/easings.js +3 -0
  3. package/dist/src/index.d.ts +5 -0
  4. package/dist/src/index.js +4 -0
  5. package/dist/src/lib/editor/custom-shader/shared.d.ts +1 -0
  6. package/dist/src/lib/editor/custom-shader/shared.js +1 -0
  7. package/dist/src/renderer/ascii-atlas.d.ts +5 -0
  8. package/dist/src/renderer/ascii-atlas.js +61 -0
  9. package/dist/src/renderer/ascii-pass.d.ts +50 -0
  10. package/dist/src/renderer/ascii-pass.js +271 -0
  11. package/dist/src/renderer/asset-url.d.ts +1 -0
  12. package/dist/src/renderer/asset-url.js +3 -0
  13. package/dist/src/renderer/blend-modes.d.ts +4 -0
  14. package/dist/src/renderer/blend-modes.js +157 -0
  15. package/dist/src/renderer/contracts.d.ts +26 -0
  16. package/dist/src/renderer/contracts.js +13 -0
  17. package/dist/src/renderer/create-webgpu-renderer.d.ts +3 -0
  18. package/dist/src/renderer/create-webgpu-renderer.js +37 -0
  19. package/dist/src/renderer/crt-pass.d.ts +72 -0
  20. package/dist/src/renderer/crt-pass.js +536 -0
  21. package/dist/src/renderer/custom-shader-pass.d.ts +17 -0
  22. package/dist/src/renderer/custom-shader-pass.js +79 -0
  23. package/dist/src/renderer/custom-shader-runtime.d.ts +16 -0
  24. package/dist/src/renderer/custom-shader-runtime.js +169 -0
  25. package/dist/src/renderer/dither-textures.d.ts +8 -0
  26. package/dist/src/renderer/dither-textures.js +66 -0
  27. package/dist/src/renderer/dithering-pass.d.ts +45 -0
  28. package/dist/src/renderer/dithering-pass.js +229 -0
  29. package/dist/src/renderer/gradient-pass.d.ts +39 -0
  30. package/dist/src/renderer/gradient-pass.js +358 -0
  31. package/dist/src/renderer/halftone-pass.d.ts +65 -0
  32. package/dist/src/renderer/halftone-pass.js +530 -0
  33. package/dist/src/renderer/ink-pass.d.ts +84 -0
  34. package/dist/src/renderer/ink-pass.js +526 -0
  35. package/dist/src/renderer/live-pass.d.ts +31 -0
  36. package/dist/src/renderer/live-pass.js +136 -0
  37. package/dist/src/renderer/media-pass.d.ts +32 -0
  38. package/dist/src/renderer/media-pass.js +130 -0
  39. package/dist/src/renderer/media-texture.d.ts +8 -0
  40. package/dist/src/renderer/media-texture.js +41 -0
  41. package/dist/src/renderer/particle-grid-pass.d.ts +48 -0
  42. package/dist/src/renderer/particle-grid-pass.js +269 -0
  43. package/dist/src/renderer/pass-node.d.ts +36 -0
  44. package/dist/src/renderer/pass-node.js +120 -0
  45. package/dist/src/renderer/pattern-atlas.d.ts +8 -0
  46. package/dist/src/renderer/pattern-atlas.js +79 -0
  47. package/dist/src/renderer/pattern-pass.d.ts +58 -0
  48. package/dist/src/renderer/pattern-pass.js +316 -0
  49. package/dist/src/renderer/pipeline-manager.d.ts +39 -0
  50. package/dist/src/renderer/pipeline-manager.js +287 -0
  51. package/dist/src/renderer/pixel-sorting-pass.d.ts +33 -0
  52. package/dist/src/renderer/pixel-sorting-pass.js +179 -0
  53. package/dist/src/renderer/shaders/tsl/color/tonemapping.d.ts +9 -0
  54. package/dist/src/renderer/shaders/tsl/color/tonemapping.js +59 -0
  55. package/dist/src/renderer/shaders/tsl/cosine-palette.d.ts +4 -0
  56. package/{packages/shader-lab-react/src/renderer/shaders/tsl/cosine-palette.ts → dist/src/renderer/shaders/tsl/cosine-palette.js} +3 -4
  57. package/dist/src/renderer/shaders/tsl/noise/common.d.ts +5 -0
  58. package/dist/src/renderer/shaders/tsl/noise/common.js +24 -0
  59. package/dist/src/renderer/shaders/tsl/noise/curl-noise-3d.d.ts +1 -0
  60. package/dist/src/renderer/shaders/tsl/noise/curl-noise-3d.js +27 -0
  61. package/dist/src/renderer/shaders/tsl/noise/curl-noise-4d.d.ts +1 -0
  62. package/dist/src/renderer/shaders/tsl/noise/curl-noise-4d.js +27 -0
  63. package/dist/src/renderer/shaders/tsl/noise/fbm.d.ts +1 -0
  64. package/dist/src/renderer/shaders/tsl/noise/fbm.js +11 -0
  65. package/dist/src/renderer/shaders/tsl/noise/perlin-noise-3d.d.ts +5 -0
  66. package/dist/src/renderer/shaders/tsl/noise/perlin-noise-3d.js +66 -0
  67. package/dist/src/renderer/shaders/tsl/noise/ridge-noise.d.ts +1 -0
  68. package/dist/src/renderer/shaders/tsl/noise/ridge-noise.js +19 -0
  69. package/dist/src/renderer/shaders/tsl/noise/simplex-noise-3d.d.ts +1 -0
  70. package/dist/src/renderer/shaders/tsl/noise/simplex-noise-3d.js +44 -0
  71. package/dist/src/renderer/shaders/tsl/noise/simplex-noise-4d.d.ts +1 -0
  72. package/dist/src/renderer/shaders/tsl/noise/simplex-noise-4d.js +51 -0
  73. package/dist/src/renderer/shaders/tsl/noise/turbulence.d.ts +7 -0
  74. package/dist/src/renderer/shaders/tsl/noise/turbulence.js +34 -0
  75. package/dist/src/renderer/shaders/tsl/noise/value-noise-3d.d.ts +1 -0
  76. package/dist/src/renderer/shaders/tsl/noise/value-noise-3d.js +27 -0
  77. package/dist/src/renderer/shaders/tsl/noise/voronoi-noise-3d.d.ts +1 -0
  78. package/dist/src/renderer/shaders/tsl/noise/voronoi-noise-3d.js +45 -0
  79. package/dist/src/renderer/shaders/tsl/patterns/bloom-edge-pattern.d.ts +4 -0
  80. package/dist/src/renderer/shaders/tsl/patterns/bloom-edge-pattern.js +13 -0
  81. package/dist/src/renderer/shaders/tsl/patterns/bloom.d.ts +4 -0
  82. package/{packages/shader-lab-react/src/renderer/shaders/tsl/patterns/bloom.ts → dist/src/renderer/shaders/tsl/patterns/bloom.js} +4 -6
  83. package/dist/src/renderer/shaders/tsl/patterns/canvas-weave-pattern.d.ts +4 -0
  84. package/dist/src/renderer/shaders/tsl/patterns/canvas-weave-pattern.js +16 -0
  85. package/dist/src/renderer/shaders/tsl/patterns/grain-texture-pattern.d.ts +4 -0
  86. package/{packages/shader-lab-react/src/renderer/shaders/tsl/patterns/grain-texture-pattern.ts → dist/src/renderer/shaders/tsl/patterns/grain-texture-pattern.js} +3 -4
  87. package/dist/src/renderer/shaders/tsl/patterns/repeating-pattern.d.ts +4 -0
  88. package/{packages/shader-lab-react/src/renderer/shaders/tsl/patterns/repeating-pattern.ts → dist/src/renderer/shaders/tsl/patterns/repeating-pattern.js} +4 -6
  89. package/dist/src/renderer/shaders/tsl/utils/atan2.d.ts +1 -0
  90. package/dist/src/renderer/shaders/tsl/utils/atan2.js +7 -0
  91. package/dist/src/renderer/shaders/tsl/utils/complex-conj.d.ts +4 -0
  92. package/{packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-conj.ts → dist/src/renderer/shaders/tsl/utils/complex-conj.js} +3 -4
  93. package/dist/src/renderer/shaders/tsl/utils/complex-cos.d.ts +4 -0
  94. package/dist/src/renderer/shaders/tsl/utils/complex-cos.js +9 -0
  95. package/dist/src/renderer/shaders/tsl/utils/complex-div.d.ts +1 -0
  96. package/dist/src/renderer/shaders/tsl/utils/complex-div.js +6 -0
  97. package/dist/src/renderer/shaders/tsl/utils/complex-log.d.ts +1 -0
  98. package/dist/src/renderer/shaders/tsl/utils/complex-log.js +6 -0
  99. package/dist/src/renderer/shaders/tsl/utils/complex-mobius.d.ts +4 -0
  100. package/dist/src/renderer/shaders/tsl/utils/complex-mobius.js +10 -0
  101. package/dist/src/renderer/shaders/tsl/utils/complex-mul.d.ts +4 -0
  102. package/{packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-mul.ts → dist/src/renderer/shaders/tsl/utils/complex-mul.js} +3 -4
  103. package/dist/src/renderer/shaders/tsl/utils/complex-pow.d.ts +5 -0
  104. package/dist/src/renderer/shaders/tsl/utils/complex-pow.js +14 -0
  105. package/dist/src/renderer/shaders/tsl/utils/complex-sin.d.ts +4 -0
  106. package/dist/src/renderer/shaders/tsl/utils/complex-sin.js +9 -0
  107. package/dist/src/renderer/shaders/tsl/utils/complex-sqrt.d.ts +5 -0
  108. package/dist/src/renderer/shaders/tsl/utils/complex-sqrt.js +12 -0
  109. package/dist/src/renderer/shaders/tsl/utils/complex-tan.d.ts +4 -0
  110. package/dist/src/renderer/shaders/tsl/utils/complex-tan.js +11 -0
  111. package/dist/src/renderer/shaders/tsl/utils/complex-to-polar.d.ts +4 -0
  112. package/dist/src/renderer/shaders/tsl/utils/complex-to-polar.js +9 -0
  113. package/dist/src/renderer/shaders/tsl/utils/hyperbolic.d.ts +8 -0
  114. package/{packages/shader-lab-react/src/renderer/shaders/tsl/utils/hyperbolic.ts → dist/src/renderer/shaders/tsl/utils/hyperbolic.js} +7 -11
  115. package/dist/src/renderer/shaders/tsl/utils/index.d.ts +38 -0
  116. package/dist/src/renderer/shaders/tsl/utils/index.js +39 -0
  117. package/dist/src/renderer/shaders/tsl/utils/rotate.d.ts +2 -0
  118. package/dist/src/renderer/shaders/tsl/utils/rotate.js +7 -0
  119. package/dist/src/renderer/shaders/tsl/utils/screen-aspect-uv.d.ts +2 -0
  120. package/dist/src/renderer/shaders/tsl/utils/screen-aspect-uv.js +6 -0
  121. package/dist/src/renderer/shaders/tsl/utils/sd-box-2d.d.ts +1 -0
  122. package/dist/src/renderer/shaders/tsl/utils/sd-box-2d.js +5 -0
  123. package/dist/src/renderer/shaders/tsl/utils/sd-diamond.d.ts +1 -0
  124. package/dist/src/renderer/shaders/tsl/utils/sd-diamond.js +5 -0
  125. package/dist/src/renderer/shaders/tsl/utils/sd-rhombus.d.ts +1 -0
  126. package/dist/src/renderer/shaders/tsl/utils/sd-rhombus.js +14 -0
  127. package/dist/src/renderer/shaders/tsl/utils/sd-sphere.d.ts +1 -0
  128. package/dist/src/renderer/shaders/tsl/utils/sd-sphere.js +5 -0
  129. package/dist/src/renderer/shaders/tsl/utils/smax.d.ts +1 -0
  130. package/dist/src/renderer/shaders/tsl/utils/smax.js +6 -0
  131. package/dist/src/renderer/shaders/tsl/utils/smin.d.ts +1 -0
  132. package/dist/src/renderer/shaders/tsl/utils/smin.js +6 -0
  133. package/dist/src/renderer/text-pass.d.ts +23 -0
  134. package/dist/src/renderer/text-pass.js +129 -0
  135. package/dist/src/runtime-clock.d.ts +9 -0
  136. package/dist/src/runtime-clock.js +20 -0
  137. package/dist/src/runtime-frame.d.ts +11 -0
  138. package/dist/src/runtime-frame.js +12 -0
  139. package/dist/src/shader-lab-composition.d.ts +9 -0
  140. package/dist/src/shader-lab-composition.js +96 -0
  141. package/dist/src/timeline.d.ts +8 -0
  142. package/dist/src/timeline.js +179 -0
  143. package/dist/src/types/editor.d.ts +3 -0
  144. package/dist/src/types/editor.js +1 -0
  145. package/dist/src/types.d.ts +81 -0
  146. package/dist/src/types.js +1 -0
  147. package/package.json +28 -65
  148. package/.biome/plugins/README.md +0 -21
  149. package/.biome/plugins/no-anchor-element.grit +0 -12
  150. package/.biome/plugins/no-relative-parent-imports.grit +0 -10
  151. package/.biome/plugins/no-unnecessary-forwardref.grit +0 -9
  152. package/.changeset/README.md +0 -17
  153. package/.changeset/config.json +0 -11
  154. package/.editorconfig +0 -40
  155. package/.env.example +0 -81
  156. package/.gitattributes +0 -19
  157. package/.github/workflows/canary.yml +0 -80
  158. package/.github/workflows/ci.yml +0 -37
  159. package/.github/workflows/release.yml +0 -56
  160. package/.tldrignore +0 -84
  161. package/.vscode/extensions.json +0 -20
  162. package/.vscode/settings.json +0 -105
  163. package/biome.json +0 -249
  164. package/bun.lock +0 -1224
  165. package/next.config.ts +0 -131
  166. package/packages/shader-lab-react/CHANGELOG.md +0 -9
  167. package/packages/shader-lab-react/README.md +0 -119
  168. package/packages/shader-lab-react/package.json +0 -36
  169. package/packages/shader-lab-react/scripts/fix-esm-specifiers.mjs +0 -57
  170. package/packages/shader-lab-react/scripts/prepare-dist.mjs +0 -4
  171. package/packages/shader-lab-react/src/ambient/three-tsl.d.ts +0 -146
  172. package/packages/shader-lab-react/src/ambient/three-webgpu.d.ts +0 -51
  173. package/packages/shader-lab-react/src/easings.ts +0 -4
  174. package/packages/shader-lab-react/src/index.ts +0 -35
  175. package/packages/shader-lab-react/src/lib/editor/custom-shader/shared.ts +0 -2
  176. package/packages/shader-lab-react/src/renderer/ascii-atlas.ts +0 -83
  177. package/packages/shader-lab-react/src/renderer/ascii-pass.ts +0 -416
  178. package/packages/shader-lab-react/src/renderer/asset-url.ts +0 -3
  179. package/packages/shader-lab-react/src/renderer/blend-modes.ts +0 -229
  180. package/packages/shader-lab-react/src/renderer/contracts.ts +0 -54
  181. package/packages/shader-lab-react/src/renderer/create-webgpu-renderer.ts +0 -48
  182. package/packages/shader-lab-react/src/renderer/crt-pass.ts +0 -1040
  183. package/packages/shader-lab-react/src/renderer/custom-shader-pass.ts +0 -108
  184. package/packages/shader-lab-react/src/renderer/custom-shader-runtime.ts +0 -309
  185. package/packages/shader-lab-react/src/renderer/dither-textures.ts +0 -99
  186. package/packages/shader-lab-react/src/renderer/dithering-pass.ts +0 -322
  187. package/packages/shader-lab-react/src/renderer/gradient-pass.ts +0 -521
  188. package/packages/shader-lab-react/src/renderer/halftone-pass.ts +0 -932
  189. package/packages/shader-lab-react/src/renderer/ink-pass.ts +0 -802
  190. package/packages/shader-lab-react/src/renderer/live-pass.ts +0 -194
  191. package/packages/shader-lab-react/src/renderer/media-pass.ts +0 -187
  192. package/packages/shader-lab-react/src/renderer/media-texture.ts +0 -66
  193. package/packages/shader-lab-react/src/renderer/particle-grid-pass.ts +0 -389
  194. package/packages/shader-lab-react/src/renderer/pass-node.ts +0 -209
  195. package/packages/shader-lab-react/src/renderer/pattern-atlas.ts +0 -133
  196. package/packages/shader-lab-react/src/renderer/pattern-pass.ts +0 -552
  197. package/packages/shader-lab-react/src/renderer/pipeline-manager.ts +0 -369
  198. package/packages/shader-lab-react/src/renderer/pixel-sorting-pass.ts +0 -277
  199. package/packages/shader-lab-react/src/renderer/shaders/tsl/color/tonemapping.ts +0 -87
  200. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/common.ts +0 -31
  201. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/curl-noise-3d.ts +0 -36
  202. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/curl-noise-4d.ts +0 -36
  203. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/fbm.ts +0 -13
  204. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/perlin-noise-3d.ts +0 -96
  205. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/ridge-noise.ts +0 -24
  206. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/simplex-noise-3d.ts +0 -79
  207. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/simplex-noise-4d.ts +0 -89
  208. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/turbulence.ts +0 -56
  209. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/value-noise-3d.ts +0 -32
  210. package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/voronoi-noise-3d.ts +0 -60
  211. package/packages/shader-lab-react/src/renderer/shaders/tsl/patterns/bloom-edge-pattern.ts +0 -15
  212. package/packages/shader-lab-react/src/renderer/shaders/tsl/patterns/canvas-weave-pattern.ts +0 -24
  213. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/atan2.ts +0 -9
  214. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-cos.ts +0 -10
  215. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-div.ts +0 -11
  216. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-log.ts +0 -7
  217. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-mobius.ts +0 -12
  218. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-pow.ts +0 -16
  219. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-sin.ts +0 -10
  220. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-sqrt.ts +0 -18
  221. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-tan.ts +0 -12
  222. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-to-polar.ts +0 -10
  223. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/index.ts +0 -48
  224. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/rotate.ts +0 -15
  225. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/screen-aspect-uv.ts +0 -15
  226. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/sd-box-2d.ts +0 -6
  227. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/sd-diamond.ts +0 -6
  228. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/sd-rhombus.ts +0 -27
  229. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/sd-sphere.ts +0 -6
  230. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/smax.ts +0 -7
  231. package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/smin.ts +0 -7
  232. package/packages/shader-lab-react/src/renderer/text-pass.ts +0 -176
  233. package/packages/shader-lab-react/src/runtime-clock.ts +0 -42
  234. package/packages/shader-lab-react/src/runtime-frame.ts +0 -29
  235. package/packages/shader-lab-react/src/shader-lab-composition.tsx +0 -163
  236. package/packages/shader-lab-react/src/timeline.ts +0 -283
  237. package/packages/shader-lab-react/src/types/editor.ts +0 -5
  238. package/packages/shader-lab-react/src/types.ts +0 -141
  239. package/packages/shader-lab-react/tsconfig.build.json +0 -8
  240. package/packages/shader-lab-react/tsconfig.json +0 -21
  241. package/postcss.config.mjs +0 -5
  242. package/public/assets/fonts/msdf/geist-mono/GeistMono-Regular-msdf-atlas.png +0 -0
  243. package/public/assets/fonts/msdf/geist-mono/GeistMono-Regular-msdf.json +0 -1412
  244. package/public/assets/patterns/bars/1.svg +0 -3
  245. package/public/assets/patterns/bars/2.svg +0 -3
  246. package/public/assets/patterns/bars/3.svg +0 -3
  247. package/public/assets/patterns/bars/4.svg +0 -3
  248. package/public/assets/patterns/bars/5.svg +0 -3
  249. package/public/assets/patterns/bars/6.svg +0 -3
  250. package/public/assets/patterns/candles/1.svg +0 -3
  251. package/public/assets/patterns/candles/2.svg +0 -3
  252. package/public/assets/patterns/candles/3.svg +0 -3
  253. package/public/assets/patterns/candles/4.svg +0 -3
  254. package/public/assets/patterns/shapes/1.svg +0 -3
  255. package/public/assets/patterns/shapes/2.svg +0 -3
  256. package/public/assets/patterns/shapes/3.svg +0 -3
  257. package/public/assets/patterns/shapes/4.svg +0 -4
  258. package/public/assets/patterns/shapes/5.svg +0 -3
  259. package/public/assets/patterns/shapes/6.svg +0 -4
  260. package/public/fonts/geist/Geist-Mono.woff2 +0 -0
  261. package/public/textures/blue-noise.png +0 -0
  262. package/public/textures/crt-mask.png +0 -0
  263. package/src/app/design/page.tsx +0 -398
  264. package/src/app/favicon.ico +0 -0
  265. package/src/app/globals.css +0 -280
  266. package/src/app/layout.tsx +0 -89
  267. package/src/app/page.tsx +0 -20
  268. package/src/app/robots.ts +0 -13
  269. package/src/app/sitemap.ts +0 -13
  270. package/src/components/editor/editor-canvas-viewport.tsx +0 -116
  271. package/src/components/editor/editor-export-dialog.tsx +0 -1177
  272. package/src/components/editor/editor-timeline-overlay.tsx +0 -983
  273. package/src/components/editor/editor-topbar.tsx +0 -287
  274. package/src/components/editor/layer-sidebar.tsx +0 -738
  275. package/src/components/editor/properties-sidebar-content.tsx +0 -574
  276. package/src/components/editor/properties-sidebar-fields.tsx +0 -389
  277. package/src/components/editor/properties-sidebar-utils.ts +0 -178
  278. package/src/components/editor/properties-sidebar.tsx +0 -421
  279. package/src/components/ui/button/index.tsx +0 -57
  280. package/src/components/ui/color-picker/index.tsx +0 -358
  281. package/src/components/ui/glass-panel/index.tsx +0 -45
  282. package/src/components/ui/icon-button/index.tsx +0 -46
  283. package/src/components/ui/select/index.tsx +0 -136
  284. package/src/components/ui/slider/index.tsx +0 -192
  285. package/src/components/ui/toggle/index.tsx +0 -34
  286. package/src/components/ui/typography/index.tsx +0 -61
  287. package/src/components/ui/xy-pad/index.tsx +0 -160
  288. package/src/features/editor/components/editor-export-dialog.module.css +0 -271
  289. package/src/hooks/use-editor-renderer.ts +0 -182
  290. package/src/lib/app.ts +0 -6
  291. package/src/lib/cn.ts +0 -7
  292. package/src/lib/easings.ts +0 -240
  293. package/src/lib/editor/config/layer-registry.ts +0 -2434
  294. package/src/lib/editor/custom-shader/shared.ts +0 -28
  295. package/src/lib/editor/export.ts +0 -420
  296. package/src/lib/editor/history.ts +0 -71
  297. package/src/lib/editor/layers.ts +0 -76
  298. package/src/lib/editor/parameter-schema.ts +0 -75
  299. package/src/lib/editor/project-file.ts +0 -145
  300. package/src/lib/editor/shader-export-snippet.ts +0 -37
  301. package/src/lib/editor/shader-export.ts +0 -315
  302. package/src/lib/editor/timeline/evaluate.ts +0 -252
  303. package/src/lib/editor/view-transform.ts +0 -58
  304. package/src/lib/fonts.ts +0 -28
  305. package/src/renderer/ascii-atlas.ts +0 -83
  306. package/src/renderer/ascii-pass.ts +0 -416
  307. package/src/renderer/blend-modes.ts +0 -229
  308. package/src/renderer/contracts.ts +0 -161
  309. package/src/renderer/create-webgpu-renderer.ts +0 -48
  310. package/src/renderer/crt-pass.ts +0 -1040
  311. package/src/renderer/custom-shader-pass.ts +0 -117
  312. package/src/renderer/custom-shader-runtime.ts +0 -309
  313. package/src/renderer/dither-textures.ts +0 -99
  314. package/src/renderer/dithering-pass.ts +0 -322
  315. package/src/renderer/gradient-pass.ts +0 -520
  316. package/src/renderer/halftone-pass.ts +0 -932
  317. package/src/renderer/ink-pass.ts +0 -683
  318. package/src/renderer/live-pass.ts +0 -194
  319. package/src/renderer/media-pass.ts +0 -187
  320. package/src/renderer/media-texture.ts +0 -66
  321. package/src/renderer/particle-grid-pass.ts +0 -389
  322. package/src/renderer/pass-node-factory.ts +0 -33
  323. package/src/renderer/pass-node.ts +0 -209
  324. package/src/renderer/pattern-atlas.ts +0 -97
  325. package/src/renderer/pattern-pass.ts +0 -552
  326. package/src/renderer/pipeline-manager.ts +0 -343
  327. package/src/renderer/pixel-sorting-pass.ts +0 -277
  328. package/src/renderer/project-clock.ts +0 -57
  329. package/src/renderer/shaders/tsl/color/tonemapping.ts +0 -86
  330. package/src/renderer/shaders/tsl/cosine-palette.ts +0 -8
  331. package/src/renderer/shaders/tsl/noise/common.ts +0 -30
  332. package/src/renderer/shaders/tsl/noise/curl-noise-3d.ts +0 -35
  333. package/src/renderer/shaders/tsl/noise/curl-noise-4d.ts +0 -35
  334. package/src/renderer/shaders/tsl/noise/fbm.ts +0 -12
  335. package/src/renderer/shaders/tsl/noise/perlin-noise-3d.ts +0 -97
  336. package/src/renderer/shaders/tsl/noise/ridge-noise.ts +0 -23
  337. package/src/renderer/shaders/tsl/noise/simplex-noise-3d.ts +0 -78
  338. package/src/renderer/shaders/tsl/noise/simplex-noise-4d.ts +0 -88
  339. package/src/renderer/shaders/tsl/noise/turbulence.ts +0 -55
  340. package/src/renderer/shaders/tsl/noise/value-noise-3d.ts +0 -31
  341. package/src/renderer/shaders/tsl/noise/voronoi-noise-3d.ts +0 -59
  342. package/src/renderer/shaders/tsl/patterns/bloom-edge-pattern.ts +0 -14
  343. package/src/renderer/shaders/tsl/patterns/bloom.ts +0 -10
  344. package/src/renderer/shaders/tsl/patterns/canvas-weave-pattern.ts +0 -23
  345. package/src/renderer/shaders/tsl/patterns/grain-texture-pattern.ts +0 -8
  346. package/src/renderer/shaders/tsl/patterns/repeating-pattern.ts +0 -10
  347. package/src/renderer/shaders/tsl/utils/atan2.ts +0 -8
  348. package/src/renderer/shaders/tsl/utils/complex-conj.ts +0 -8
  349. package/src/renderer/shaders/tsl/utils/complex-cos.ts +0 -9
  350. package/src/renderer/shaders/tsl/utils/complex-div.ts +0 -10
  351. package/src/renderer/shaders/tsl/utils/complex-log.ts +0 -6
  352. package/src/renderer/shaders/tsl/utils/complex-mobius.ts +0 -11
  353. package/src/renderer/shaders/tsl/utils/complex-mul.ts +0 -8
  354. package/src/renderer/shaders/tsl/utils/complex-pow.ts +0 -15
  355. package/src/renderer/shaders/tsl/utils/complex-sin.ts +0 -9
  356. package/src/renderer/shaders/tsl/utils/complex-sqrt.ts +0 -17
  357. package/src/renderer/shaders/tsl/utils/complex-tan.ts +0 -11
  358. package/src/renderer/shaders/tsl/utils/complex-to-polar.ts +0 -9
  359. package/src/renderer/shaders/tsl/utils/hyperbolic.ts +0 -19
  360. package/src/renderer/shaders/tsl/utils/index.ts +0 -47
  361. package/src/renderer/shaders/tsl/utils/rotate.ts +0 -14
  362. package/src/renderer/shaders/tsl/utils/screen-aspect-uv.ts +0 -14
  363. package/src/renderer/shaders/tsl/utils/sd-box-2d.ts +0 -5
  364. package/src/renderer/shaders/tsl/utils/sd-diamond.ts +0 -5
  365. package/src/renderer/shaders/tsl/utils/sd-rhombus.ts +0 -26
  366. package/src/renderer/shaders/tsl/utils/sd-sphere.ts +0 -5
  367. package/src/renderer/shaders/tsl/utils/smax.ts +0 -7
  368. package/src/renderer/shaders/tsl/utils/smin.ts +0 -6
  369. package/src/renderer/text-pass.ts +0 -176
  370. package/src/store/asset-store.ts +0 -193
  371. package/src/store/editor-store.ts +0 -223
  372. package/src/store/history-store.ts +0 -172
  373. package/src/store/index.ts +0 -31
  374. package/src/store/layer-store.ts +0 -675
  375. package/src/store/timeline-store.ts +0 -572
  376. package/src/types/assets.d.ts +0 -6
  377. package/src/types/css.d.ts +0 -21
  378. package/src/types/editor.ts +0 -357
  379. package/src/types/react.d.ts +0 -15
  380. package/src/types/three-tsl.d.ts +0 -146
  381. package/src/types/three-webgpu.d.ts +0 -51
  382. package/tsconfig.json +0 -49
  383. /package/{packages/shader-lab-react/assets → assets}/patterns/bars/1.svg +0 -0
  384. /package/{packages/shader-lab-react/assets → assets}/patterns/bars/2.svg +0 -0
  385. /package/{packages/shader-lab-react/assets → assets}/patterns/bars/3.svg +0 -0
  386. /package/{packages/shader-lab-react/assets → assets}/patterns/bars/4.svg +0 -0
  387. /package/{packages/shader-lab-react/assets → assets}/patterns/bars/5.svg +0 -0
  388. /package/{packages/shader-lab-react/assets → assets}/patterns/bars/6.svg +0 -0
  389. /package/{packages/shader-lab-react/assets → assets}/patterns/candles/1.svg +0 -0
  390. /package/{packages/shader-lab-react/assets → assets}/patterns/candles/2.svg +0 -0
  391. /package/{packages/shader-lab-react/assets → assets}/patterns/candles/3.svg +0 -0
  392. /package/{packages/shader-lab-react/assets → assets}/patterns/candles/4.svg +0 -0
  393. /package/{packages/shader-lab-react/assets → assets}/patterns/shapes/1.svg +0 -0
  394. /package/{packages/shader-lab-react/assets → assets}/patterns/shapes/2.svg +0 -0
  395. /package/{packages/shader-lab-react/assets → assets}/patterns/shapes/3.svg +0 -0
  396. /package/{packages/shader-lab-react/assets → assets}/patterns/shapes/4.svg +0 -0
  397. /package/{packages/shader-lab-react/assets → assets}/patterns/shapes/5.svg +0 -0
  398. /package/{packages/shader-lab-react/assets → assets}/patterns/shapes/6.svg +0 -0
  399. /package/{packages/shader-lab-react/assets → assets}/textures/blue-noise.png +0 -0
@@ -0,0 +1,27 @@
1
+ // @ts-nocheck
2
+ import { EPSILON, Fn, cross, vec3, vec4 } from "three/tsl";
3
+ import { simplexNoise4d } from "./simplex-noise-4d.js";
4
+ export const curlNoise4d = Fn(([inputA]) => {
5
+ const aXPos = simplexNoise4d(inputA.add(vec4(EPSILON, 0, 0, 0)));
6
+ const aXNeg = simplexNoise4d(inputA.sub(vec4(EPSILON, 0, 0, 0)));
7
+ const aXAverage = aXPos.sub(aXNeg).div(EPSILON.mul(2));
8
+ const aYPos = simplexNoise4d(inputA.add(vec4(0, EPSILON, 0, 0)));
9
+ const aYNeg = simplexNoise4d(inputA.sub(vec4(0, EPSILON, 0, 0)));
10
+ const aYAverage = aYPos.sub(aYNeg).div(EPSILON.mul(2));
11
+ const aZPos = simplexNoise4d(inputA.add(vec4(0, 0, EPSILON, 0)));
12
+ const aZNeg = simplexNoise4d(inputA.sub(vec4(0, 0, EPSILON, 0)));
13
+ const aZAverage = aZPos.sub(aZNeg).div(EPSILON.mul(2));
14
+ const aGrabNoise = vec3(aXAverage, aYAverage, aZAverage).normalize();
15
+ const inputB = inputA.add(3.5);
16
+ const bXPos = simplexNoise4d(inputB.add(vec4(EPSILON, 0, 0, 0)));
17
+ const bXNeg = simplexNoise4d(inputB.sub(vec4(EPSILON, 0, 0, 0)));
18
+ const bXAverage = bXPos.sub(bXNeg).div(EPSILON.mul(2));
19
+ const bYPos = simplexNoise4d(inputB.add(vec4(0, EPSILON, 0, 0)));
20
+ const bYNeg = simplexNoise4d(inputB.sub(vec4(0, EPSILON, 0, 0)));
21
+ const bYAverage = bYPos.sub(bYNeg).div(EPSILON.mul(2));
22
+ const bZPos = simplexNoise4d(inputB.add(vec4(0, 0, EPSILON, 0)));
23
+ const bZNeg = simplexNoise4d(inputB.sub(vec4(0, 0, EPSILON, 0)));
24
+ const bZAverage = bZPos.sub(bZNeg).div(EPSILON.mul(2));
25
+ const bGrabNoise = vec3(bXAverage, bYAverage, bZAverage).normalize();
26
+ return cross(aGrabNoise, bGrabNoise).normalize();
27
+ });
@@ -0,0 +1 @@
1
+ export declare const fbm: (...args: unknown[]) => import("three/tsl").TSLNode;
@@ -0,0 +1,11 @@
1
+ // @ts-nocheck
2
+ import { Fn, vec3 } from "three/tsl";
3
+ import { simplexNoise3d } from "./simplex-noise-3d.js";
4
+ export const fbm = Fn(([pImmutable]) => {
5
+ const p = vec3(pImmutable).toVar();
6
+ const n1 = simplexNoise3d(p).mul(0.5).add(0.5);
7
+ const n2 = simplexNoise3d(p.mul(2.02).add(vec3(19.1, 7.3, 13.7)))
8
+ .mul(0.5)
9
+ .add(0.5);
10
+ return n1.mul(0.7).add(n2.mul(0.3));
11
+ });
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Classic Perlin noise (3D) — Ashima Arts / Stefan Gustavson port.
3
+ * Uses permute + taylorInvSqrt (same as simplex noise) for gradient generation.
4
+ */
5
+ export declare const perlinNoise3d: (...args: unknown[]) => import("three/tsl").TSLNode;
@@ -0,0 +1,66 @@
1
+ // @ts-nocheck
2
+ import { Fn, abs, dot, floor, fract, mix, mod, mul, step, sub, vec2, vec3, vec4, } from "three/tsl";
3
+ import { fade, permute, taylorInvSqrt } from "./common.js";
4
+ /**
5
+ * Classic Perlin noise (3D) — Ashima Arts / Stefan Gustavson port.
6
+ * Uses permute + taylorInvSqrt (same as simplex noise) for gradient generation.
7
+ */
8
+ export const perlinNoise3d = Fn(([pImmutable]) => {
9
+ const P = vec3(pImmutable).toVar();
10
+ const Pi0 = vec3(mod(floor(P), 289.0)).toVar();
11
+ const Pi1 = vec3(mod(Pi0.add(1.0), 289.0)).toVar();
12
+ const Pf0 = vec3(fract(P)).toVar();
13
+ const Pf1 = vec3(Pf0.sub(1.0)).toVar();
14
+ const ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);
15
+ const iy = vec4(Pi0.y, Pi0.y, Pi1.y, Pi1.y);
16
+ const iz0 = vec4(Pi0.z, Pi0.z, Pi0.z, Pi0.z);
17
+ const iz1 = vec4(Pi1.z, Pi1.z, Pi1.z, Pi1.z);
18
+ const ixy = vec4(permute(permute(ix).add(iy))).toVar();
19
+ const ixy0 = vec4(permute(ixy.add(iz0))).toVar();
20
+ const ixy1 = vec4(permute(ixy.add(iz1))).toVar();
21
+ const gx0 = vec4(ixy0.div(7.0)).toVar();
22
+ const gy0 = vec4(fract(floor(gx0).div(7.0)).sub(0.5)).toVar();
23
+ gx0.assign(fract(gx0));
24
+ const gz0 = vec4(sub(0.5, abs(gx0)).sub(abs(gy0))).toVar();
25
+ const sz0 = vec4(step(gz0, vec4(0.0))).toVar();
26
+ gx0.assign(gx0.sub(sz0.mul(step(0.0, gx0).sub(0.5))));
27
+ gy0.assign(gy0.sub(sz0.mul(step(0.0, gy0).sub(0.5))));
28
+ const gx1 = vec4(ixy1.div(7.0)).toVar();
29
+ const gy1 = vec4(fract(floor(gx1).div(7.0)).sub(0.5)).toVar();
30
+ gx1.assign(fract(gx1));
31
+ const gz1 = vec4(sub(0.5, abs(gx1)).sub(abs(gy1))).toVar();
32
+ const sz1 = vec4(step(gz1, vec4(0.0))).toVar();
33
+ gx1.assign(gx1.sub(sz1.mul(step(0.0, gx1).sub(0.5))));
34
+ gy1.assign(gy1.sub(sz1.mul(step(0.0, gy1).sub(0.5))));
35
+ const g000 = vec3(gx0.x, gy0.x, gz0.x).toVar();
36
+ const g100 = vec3(gx0.y, gy0.y, gz0.y).toVar();
37
+ const g010 = vec3(gx0.z, gy0.z, gz0.z).toVar();
38
+ const g110 = vec3(gx0.w, gy0.w, gz0.w).toVar();
39
+ const g001 = vec3(gx1.x, gy1.x, gz1.x).toVar();
40
+ const g101 = vec3(gx1.y, gy1.y, gz1.y).toVar();
41
+ const g011 = vec3(gx1.z, gy1.z, gz1.z).toVar();
42
+ const g111 = vec3(gx1.w, gy1.w, gz1.w).toVar();
43
+ const norm0 = vec4(taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)))).toVar();
44
+ g000.mulAssign(norm0.x);
45
+ g010.mulAssign(norm0.y);
46
+ g100.mulAssign(norm0.z);
47
+ g110.mulAssign(norm0.w);
48
+ const norm1 = vec4(taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)))).toVar();
49
+ g001.mulAssign(norm1.x);
50
+ g011.mulAssign(norm1.y);
51
+ g101.mulAssign(norm1.z);
52
+ g111.mulAssign(norm1.w);
53
+ const n000 = dot(g000, Pf0);
54
+ const n100 = dot(g100, vec3(Pf1.x, Pf0.y, Pf0.z));
55
+ const n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));
56
+ const n110 = dot(g110, vec3(Pf1.x, Pf1.y, Pf0.z));
57
+ const n001 = dot(g001, vec3(Pf0.x, Pf0.y, Pf1.z));
58
+ const n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));
59
+ const n011 = dot(g011, vec3(Pf0.x, Pf1.y, Pf1.z));
60
+ const n111 = dot(g111, Pf1);
61
+ const fadeXyz = vec3(fade(Pf0)).toVar();
62
+ const nZ = vec4(mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fadeXyz.z));
63
+ const nYz = vec2(mix(nZ.xy, nZ.zw, fadeXyz.y));
64
+ const nXyz = mix(nYz.x, nYz.y, fadeXyz.x);
65
+ return mul(2.2, nXyz);
66
+ });
@@ -0,0 +1 @@
1
+ export declare const ridgeNoise: (...args: unknown[]) => import("three/tsl").TSLNode;
@@ -0,0 +1,19 @@
1
+ // @ts-nocheck
2
+ import { Fn, Loop, abs, clamp, float } from "three/tsl";
3
+ import { simplexNoise3d } from "./simplex-noise-3d.js";
4
+ export const ridgeNoise = Fn(([pImmutable]) => {
5
+ const p = pImmutable.toVar();
6
+ const value = float(0).toVar();
7
+ const amplitude = float(0.5).toVar();
8
+ const frequency = float(1).toVar();
9
+ const weight = float(1).toVar();
10
+ Loop({ end: 6, start: 0, type: "int" }, () => {
11
+ const n = float(1).sub(abs(simplexNoise3d(p.mul(frequency)).mul(2)));
12
+ const signal = n.mul(n).mul(weight);
13
+ value.addAssign(signal.mul(amplitude));
14
+ weight.assign(clamp(signal, 0, 1));
15
+ frequency.mulAssign(2.0);
16
+ amplitude.mulAssign(0.5);
17
+ });
18
+ return value;
19
+ });
@@ -0,0 +1 @@
1
+ export declare const simplexNoise3d: (...args: unknown[]) => import("three/tsl").TSLNode;
@@ -0,0 +1,44 @@
1
+ // @ts-nocheck
2
+ import { Fn, abs, dot, float, floor, max, min, mod, mul, step, sub, vec2, vec3, vec4, } from "three/tsl";
3
+ import { permute, taylorInvSqrt } from "./common.js";
4
+ export const simplexNoise3d = Fn(([vImmutable]) => {
5
+ const v = vec3(vImmutable).toVar();
6
+ const c = vec2(1.0 / 6.0, 1.0 / 3.0);
7
+ const d = vec4(0.0, 0.5, 1.0, 2.0);
8
+ const i = vec3(floor(v.add(dot(v, c.yyy)))).toVar();
9
+ const x0 = vec3(v.sub(i).add(dot(i, c.xxx))).toVar();
10
+ const g = vec3(step(x0.yzx, x0.xyz)).toVar();
11
+ const l = vec3(sub(1.0, g)).toVar();
12
+ const i1 = vec3(min(g.xyz, l.zxy)).toVar();
13
+ const i2 = vec3(max(g.xyz, l.zxy)).toVar();
14
+ const x1 = vec3(x0.sub(i1).add(mul(1.0, c.xxx))).toVar();
15
+ const x2 = vec3(x0.sub(i2).add(mul(2.0, c.xxx))).toVar();
16
+ const x3 = vec3(x0.sub(1).add(mul(3.0, c.xxx))).toVar();
17
+ i.assign(mod(i, 289.0));
18
+ const p = vec4(permute(permute(permute(i.z.add(vec4(0.0, i1.z, i2.z, 1.0))).add(i.y.add(vec4(0.0, i1.y, i2.y, 1.0)))).add(i.x.add(vec4(0.0, i1.x, i2.x, 1.0))))).toVar();
19
+ const n = float(1.0 / 7.0).toVar();
20
+ const ns = vec3(n.mul(d.wyz).sub(d.xzx)).toVar();
21
+ const j = vec4(p.sub(mul(49.0, floor(p.mul(ns.z.mul(ns.z)))))).toVar();
22
+ const x = vec4(floor(j.mul(ns.z)).mul(ns.x).add(ns.yyyy)).toVar();
23
+ const y = vec4(floor(j.sub(mul(7.0, floor(j.mul(ns.z))))).mul(ns.x).add(ns.yyyy)).toVar();
24
+ const h = vec4(sub(1.0, abs(x).sub(abs(y)))).toVar();
25
+ const b0 = vec4(x.xy, y.xy).toVar();
26
+ const b1 = vec4(x.zw, y.zw).toVar();
27
+ const s0 = vec4(floor(b0).mul(2.0).add(1.0)).toVar();
28
+ const s1 = vec4(floor(b1).mul(2.0).add(1.0)).toVar();
29
+ const sh = vec4(step(h, vec4(0.0)).negate()).toVar();
30
+ const a0 = vec4(b0.xzyw.add(s0.xzyw.mul(sh.xxyy))).toVar();
31
+ const a1 = vec4(b1.xzyw.add(s1.xzyw.mul(sh.zzww))).toVar();
32
+ const p0 = vec3(a0.xy, h.x).toVar();
33
+ const p1 = vec3(a0.zw, h.y).toVar();
34
+ const p2 = vec3(a1.xy, h.z).toVar();
35
+ const p3 = vec3(a1.zw, h.w).toVar();
36
+ const norm = vec4(taylorInvSqrt(vec4(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3)))).toVar();
37
+ p0.mulAssign(norm.x);
38
+ p1.mulAssign(norm.y);
39
+ p2.mulAssign(norm.z);
40
+ p3.mulAssign(norm.w);
41
+ const m = vec4(max(sub(0.6, vec4(dot(x0, x0), dot(x1, x1), dot(x2, x2), dot(x3, x3))), 0.0)).toVar();
42
+ m.assign(m.mul(m));
43
+ return mul(42.0, dot(m.mul(m), vec4(dot(p0, x0), dot(p1, x1), dot(p2, x2), dot(p3, x3))));
44
+ });
@@ -0,0 +1 @@
1
+ export declare const simplexNoise4d: (...args: unknown[]) => import("three/tsl").TSLNode;
@@ -0,0 +1,51 @@
1
+ // @ts-nocheck
2
+ import { Fn, clamp, dot, float, floor, max, mod, mul, step, sub, vec2, vec3, vec4, } from "three/tsl";
3
+ import { grad4, permute, taylorInvSqrt } from "./common.js";
4
+ export const simplexNoise4d = Fn(([vImmutable]) => {
5
+ const v = vec4(vImmutable).toVar();
6
+ const c = vec2(0.1381966011250105, 0.30901699437494745);
7
+ const i = vec4(floor(v.add(dot(v, c.yyyy)))).toVar();
8
+ const x0 = vec4(v.sub(i).add(dot(i, c.xxxx))).toVar();
9
+ const i0 = vec4().toVar();
10
+ const isX = vec3(step(x0.yzw, x0.xxx)).toVar();
11
+ const isYZ = vec3(step(x0.zww, x0.yyz)).toVar();
12
+ i0.x.assign(isX.x.add(isX.y).add(isX.z));
13
+ i0.yzw.assign(sub(1.0, isX));
14
+ i0.y.addAssign(isYZ.x.add(isYZ.y));
15
+ i0.zw.addAssign(sub(1.0, isYZ.xy));
16
+ i0.z.addAssign(isYZ.z);
17
+ i0.w.addAssign(sub(1.0, isYZ.z));
18
+ const i3 = vec4(clamp(i0, 0.0, 1.0)).toVar();
19
+ const i2 = vec4(clamp(i0.sub(1.0), 0.0, 1.0)).toVar();
20
+ const i1 = vec4(clamp(i0.sub(2.0), 0.0, 1.0)).toVar();
21
+ const x1 = vec4(x0.sub(i1).add(mul(1.0, c.xxxx))).toVar();
22
+ const x2 = vec4(x0.sub(i2).add(mul(2.0, c.xxxx))).toVar();
23
+ const x3 = vec4(x0.sub(i3).add(mul(3.0, c.xxxx))).toVar();
24
+ const x4 = vec4(x0.sub(1.0).add(mul(4.0, c.xxxx))).toVar();
25
+ i.assign(mod(i, 289.0));
26
+ const j0 = float(permute(permute(permute(permute(i.w).add(i.z)).add(i.y)).add(i.x))).toVar();
27
+ const j1 = vec4(permute(permute(permute(permute(i.w.add(vec4(i1.w, i2.w, i3.w, 1.0)))
28
+ .add(i.z)
29
+ .add(vec4(i1.z, i2.z, i3.z, 1.0)))
30
+ .add(i.y)
31
+ .add(vec4(i1.y, i2.y, i3.y, 1.0)))
32
+ .add(i.x)
33
+ .add(vec4(i1.x, i2.x, i3.x, 1.0)))).toVar();
34
+ const ip = vec4(1.0 / 294.0, 1.0 / 49.0, 1.0 / 7.0, 0.0).toVar();
35
+ const p0 = vec4(grad4(j0, ip)).toVar();
36
+ const p1 = vec4(grad4(j1.x, ip)).toVar();
37
+ const p2 = vec4(grad4(j1.y, ip)).toVar();
38
+ const p3 = vec4(grad4(j1.z, ip)).toVar();
39
+ const p4 = vec4(grad4(j1.w, ip)).toVar();
40
+ const norm = vec4(taylorInvSqrt(vec4(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3)))).toVar();
41
+ p0.mulAssign(norm.x);
42
+ p1.mulAssign(norm.y);
43
+ p2.mulAssign(norm.z);
44
+ p3.mulAssign(norm.w);
45
+ p4.mulAssign(taylorInvSqrt(dot(p4, p4)));
46
+ const m0 = vec3(max(sub(0.6, vec3(dot(x0, x0), dot(x1, x1), dot(x2, x2))), 0.0)).toVar();
47
+ const m1 = vec2(max(sub(0.6, vec2(dot(x3, x3), dot(x4, x4))), 0.0)).toVar();
48
+ m0.assign(m0.mul(m0));
49
+ m1.assign(m1.mul(m1));
50
+ return mul(49.0, dot(m0.mul(m0), vec3(dot(p0, x0), dot(p1, x1), dot(p2, x2))).add(dot(m1.mul(m1), vec2(dot(p3, x3), dot(p4, x4)))));
51
+ });
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Turbulence based on XorDev's "Turbulent Dark" technique.
3
+ * Displaces coordinates by layering rotated sine waves at increasing frequencies
4
+ *
5
+ * @see https://mini.gmshaders.com/p/turbulence
6
+ */
7
+ export declare const turbulence: (...args: unknown[]) => import("three/tsl").TSLNode;
@@ -0,0 +1,34 @@
1
+ // @ts-nocheck
2
+ import { Fn, float, Loop, sin, vec2 } from "three/tsl";
3
+ const HALF_PI = 1.5707963267948966;
4
+ const THETA = 0.9272952180016122;
5
+ /**
6
+ * Turbulence based on XorDev's "Turbulent Dark" technique.
7
+ * Displaces coordinates by layering rotated sine waves at increasing frequencies
8
+ *
9
+ * @see https://mini.gmshaders.com/p/turbulence
10
+ */
11
+ export const turbulence = Fn(([pInput, time, rawOptions]) => {
12
+ const options = rawOptions ?? {};
13
+ const { _num = 10, _amp = 0.7, _speed = 0.3, _freq = 2.0, _exp = 1.4, } = options;
14
+ const p = vec2(pInput.xy).toVar();
15
+ const t = time.mul(float(_speed));
16
+ const freq = float(_freq).toVar();
17
+ const angle = float(0.0).toVar();
18
+ const iter = float(0.0).toVar();
19
+ Loop({ end: _num, start: 0, type: "int" }, () => {
20
+ const c = sin(angle.add(HALF_PI));
21
+ const s = sin(angle);
22
+ const phase = freq
23
+ .mul(p.x.mul(s).add(p.y.mul(c)))
24
+ .add(t)
25
+ .add(iter);
26
+ const scale = float(_amp).mul(sin(phase)).div(freq);
27
+ p.x.addAssign(scale.mul(c));
28
+ p.y.addAssign(scale.mul(s.negate()));
29
+ angle.addAssign(THETA);
30
+ freq.mulAssign(float(_exp));
31
+ iter.addAssign(1.0);
32
+ });
33
+ return p.sub(pInput.xy);
34
+ });
@@ -0,0 +1 @@
1
+ export declare const valueNoise3d: (...args: unknown[]) => import("three/tsl").TSLNode;
@@ -0,0 +1,27 @@
1
+ // @ts-nocheck
2
+ import { Fn, dot, floor, fract, mix, sin, vec3 } from "three/tsl";
3
+ import { fade } from "./common.js";
4
+ const hash31 = Fn(([p]) => {
5
+ return fract(sin(dot(p, vec3(127.1, 311.7, 74.7))).mul(43758.5453123));
6
+ });
7
+ export const valueNoise3d = Fn(([pImmutable]) => {
8
+ const p = vec3(pImmutable).toVar();
9
+ const cell = vec3(floor(p)).toVar();
10
+ const local = vec3(fract(p)).toVar();
11
+ const eased = vec3(fade(local)).toVar();
12
+ const n000 = hash31(cell);
13
+ const n100 = hash31(cell.add(vec3(1, 0, 0)));
14
+ const n010 = hash31(cell.add(vec3(0, 1, 0)));
15
+ const n110 = hash31(cell.add(vec3(1, 1, 0)));
16
+ const n001 = hash31(cell.add(vec3(0, 0, 1)));
17
+ const n101 = hash31(cell.add(vec3(1, 0, 1)));
18
+ const n011 = hash31(cell.add(vec3(0, 1, 1)));
19
+ const n111 = hash31(cell.add(vec3(1, 1, 1)));
20
+ const nx00 = mix(n000, n100, eased.x);
21
+ const nx10 = mix(n010, n110, eased.x);
22
+ const nx01 = mix(n001, n101, eased.x);
23
+ const nx11 = mix(n011, n111, eased.x);
24
+ const nxy0 = mix(nx00, nx10, eased.y);
25
+ const nxy1 = mix(nx01, nx11, eased.y);
26
+ return mix(nxy0, nxy1, eased.z).mul(2).sub(1);
27
+ });
@@ -0,0 +1 @@
1
+ export declare const voronoiNoise3d: (...args: unknown[]) => import("three/tsl").TSLNode;
@@ -0,0 +1,45 @@
1
+ // @ts-nocheck
2
+ import { Fn, dot, float, floor, fract, length, min, sin, vec3 } from "three/tsl";
3
+ const random3 = Fn(([p]) => {
4
+ return fract(sin(vec3(dot(p, vec3(127.1, 311.7, 74.7)), dot(p, vec3(269.5, 183.3, 246.1)), dot(p, vec3(113.5, 271.9, 124.6)))).mul(43758.5453));
5
+ });
6
+ const checkNeighbor = Fn(([i, f, neighbor, currentMin]) => {
7
+ const point = random3(i.add(neighbor));
8
+ const diff = neighbor.add(point).sub(f);
9
+ return min(currentMin, length(diff));
10
+ });
11
+ export const voronoiNoise3d = Fn(([pImmutable]) => {
12
+ const p = vec3(pImmutable).toVar();
13
+ const i = vec3(floor(p)).toVar();
14
+ const f = vec3(fract(p)).toVar();
15
+ const d = float(1).toVar();
16
+ // Unrolled 3x3x3 neighbor search
17
+ d.assign(checkNeighbor(i, f, vec3(-1, -1, -1), d));
18
+ d.assign(checkNeighbor(i, f, vec3(-1, -1, 0), d));
19
+ d.assign(checkNeighbor(i, f, vec3(-1, -1, 1), d));
20
+ d.assign(checkNeighbor(i, f, vec3(-1, 0, -1), d));
21
+ d.assign(checkNeighbor(i, f, vec3(-1, 0, 0), d));
22
+ d.assign(checkNeighbor(i, f, vec3(-1, 0, 1), d));
23
+ d.assign(checkNeighbor(i, f, vec3(-1, 1, -1), d));
24
+ d.assign(checkNeighbor(i, f, vec3(-1, 1, 0), d));
25
+ d.assign(checkNeighbor(i, f, vec3(-1, 1, 1), d));
26
+ d.assign(checkNeighbor(i, f, vec3(0, -1, -1), d));
27
+ d.assign(checkNeighbor(i, f, vec3(0, -1, 0), d));
28
+ d.assign(checkNeighbor(i, f, vec3(0, -1, 1), d));
29
+ d.assign(checkNeighbor(i, f, vec3(0, 0, -1), d));
30
+ d.assign(checkNeighbor(i, f, vec3(0, 0, 0), d));
31
+ d.assign(checkNeighbor(i, f, vec3(0, 0, 1), d));
32
+ d.assign(checkNeighbor(i, f, vec3(0, 1, -1), d));
33
+ d.assign(checkNeighbor(i, f, vec3(0, 1, 0), d));
34
+ d.assign(checkNeighbor(i, f, vec3(0, 1, 1), d));
35
+ d.assign(checkNeighbor(i, f, vec3(1, -1, -1), d));
36
+ d.assign(checkNeighbor(i, f, vec3(1, -1, 0), d));
37
+ d.assign(checkNeighbor(i, f, vec3(1, -1, 1), d));
38
+ d.assign(checkNeighbor(i, f, vec3(1, 0, -1), d));
39
+ d.assign(checkNeighbor(i, f, vec3(1, 0, 0), d));
40
+ d.assign(checkNeighbor(i, f, vec3(1, 0, 1), d));
41
+ d.assign(checkNeighbor(i, f, vec3(1, 1, -1), d));
42
+ d.assign(checkNeighbor(i, f, vec3(1, 1, 0), d));
43
+ d.assign(checkNeighbor(i, f, vec3(1, 1, 1), d));
44
+ return d;
45
+ });
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Returns a repeating pattern of lines with a bloom effect.
3
+ */
4
+ export declare const bloomEdgePattern: (...args: unknown[]) => import("three/tsl").TSLNode;
@@ -0,0 +1,13 @@
1
+ // @ts-nocheck
2
+ import { Fn, abs, float } from "three/tsl";
3
+ import { bloom } from "./bloom.js";
4
+ import { repeatingPattern } from "./repeating-pattern.js";
5
+ /**
6
+ * Returns a repeating pattern of lines with a bloom effect.
7
+ */
8
+ export const bloomEdgePattern = Fn(([pattern, repeat, edge, exponent, time = float(0)]) => {
9
+ pattern.assign(repeatingPattern(pattern, repeat, time));
10
+ pattern.assign(abs(pattern));
11
+ pattern.assign(bloom(pattern, edge, exponent));
12
+ return pattern;
13
+ });
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Returns a bloomed edge based on a given edge and pattern.
3
+ */
4
+ export declare const bloom: (...args: unknown[]) => import("three/tsl").TSLNode;
@@ -1,11 +1,9 @@
1
1
  // @ts-nocheck
2
- import { Fn, pow } from "three/tsl"
3
-
2
+ import { Fn, pow } from "three/tsl";
4
3
  /**
5
4
  * Returns a bloomed edge based on a given edge and pattern.
6
5
  */
7
6
  export const bloom = Fn(([pattern, edge, exponent]) => {
8
- pattern.assign(pow(edge.div(pattern), exponent))
9
-
10
- return pattern
11
- })
7
+ pattern.assign(pow(edge.div(pattern), exponent));
8
+ return pattern;
9
+ });
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Returns a canvas weave pattern value for a given UV coordinate.
3
+ */
4
+ export declare const canvasWeavePattern: (...args: unknown[]) => import("three/tsl").TSLNode;
@@ -0,0 +1,16 @@
1
+ // @ts-nocheck
2
+ import { Fn, PI, mix, sin, smoothstep, vec3 } from "three/tsl";
3
+ import { fbm } from "../noise/fbm.js";
4
+ /**
5
+ * Returns a canvas weave pattern value for a given UV coordinate.
6
+ */
7
+ export const canvasWeavePattern = Fn(([uv]) => {
8
+ const grid = uv.mul(200.0).fract();
9
+ const noiseOffset = fbm(vec3(uv.mul(30.0), 0.0), { octaves: 3 }).mul(0.1);
10
+ const warpedGrid = grid.add(noiseOffset);
11
+ const weaveX = sin(warpedGrid.x.mul(PI).add(fbm(vec3(uv.mul(100.0), 0.0), { octaves: 2 }).mul(0.5)));
12
+ const weaveY = sin(warpedGrid.y.mul(PI).add(fbm(vec3(uv.mul(100.0).add(0.5), 0.0), { octaves: 2 }).mul(0.5)));
13
+ const weave = weaveX.mul(weaveY);
14
+ const smoothedWeave = smoothstep(-0.3, 0.3, weave);
15
+ return mix(0.9, 1.0, smoothedWeave);
16
+ });
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Returns a grain texture pattern value for a given UV coordinate.
3
+ */
4
+ export declare const grainTexturePattern: (...args: unknown[]) => import("three/tsl").TSLNode;
@@ -1,9 +1,8 @@
1
1
  // @ts-nocheck
2
- import { Fn, dot, fract, sin, vec2 } from "three/tsl"
3
-
2
+ import { Fn, dot, fract, sin, vec2 } from "three/tsl";
4
3
  /**
5
4
  * Returns a grain texture pattern value for a given UV coordinate.
6
5
  */
7
6
  export const grainTexturePattern = Fn(([uv]) => {
8
- return fract(sin(dot(uv, vec2(12.9898, 78.233))).mul(43758.5453123))
9
- })
7
+ return fract(sin(dot(uv, vec2(12.9898, 78.233))).mul(43758.5453123));
8
+ });
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Returns a repeating pattern of a sine function.
3
+ */
4
+ export declare const repeatingPattern: (...args: unknown[]) => import("three/tsl").TSLNode;
@@ -1,11 +1,9 @@
1
1
  // @ts-nocheck
2
- import { Fn, float, sin } from "three/tsl"
3
-
2
+ import { Fn, float, sin } from "three/tsl";
4
3
  /**
5
4
  * Returns a repeating pattern of a sine function.
6
5
  */
7
6
  export const repeatingPattern = Fn(([pattern, repeat, time = float(0)]) => {
8
- pattern.assign(sin(pattern.mul(repeat).add(time)).div(repeat))
9
-
10
- return pattern
11
- })
7
+ pattern.assign(sin(pattern.mul(repeat).add(time)).div(repeat));
8
+ return pattern;
9
+ });
@@ -0,0 +1 @@
1
+ export declare const atan2: (...args: unknown[]) => import("three/tsl").TSLNode;
@@ -0,0 +1,7 @@
1
+ // @ts-nocheck
2
+ import { atan, Fn, PI, select, sign } from "three/tsl";
3
+ export const atan2 = Fn(([y, x]) => {
4
+ const base = atan(y.div(x));
5
+ const offset = sign(y).mul(PI);
6
+ return select(x.greaterThanEqual(0), base, base.add(offset));
7
+ });
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Complex conjugate: conj(a + bi) = a - bi
3
+ */
4
+ export declare const complexConj: (...args: unknown[]) => import("three/tsl").TSLNode;
@@ -1,9 +1,8 @@
1
1
  // @ts-nocheck
2
- import { Fn, vec2 } from "three/tsl"
3
-
2
+ import { Fn, vec2 } from "three/tsl";
4
3
  /**
5
4
  * Complex conjugate: conj(a + bi) = a - bi
6
5
  */
7
6
  export const complexConj = Fn(([z]) => {
8
- return vec2(z.x, z.y.negate())
9
- })
7
+ return vec2(z.x, z.y.negate());
8
+ });
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Complex cosine: cos(a + bi) = cos(a)cosh(b) - i sin(a)sinh(b)
3
+ */
4
+ export declare const complexCos: (...args: unknown[]) => import("three/tsl").TSLNode;
@@ -0,0 +1,9 @@
1
+ // @ts-nocheck
2
+ import { cos, Fn, sin, vec2 } from "three/tsl";
3
+ import { cosh, sinh } from "./hyperbolic.js";
4
+ /**
5
+ * Complex cosine: cos(a + bi) = cos(a)cosh(b) - i sin(a)sinh(b)
6
+ */
7
+ export const complexCos = Fn(([z]) => {
8
+ return vec2(cos(z.x).mul(cosh(z.y)), sin(z.x).mul(sinh(z.y)).negate());
9
+ });
@@ -0,0 +1 @@
1
+ export declare const complexDiv: (...args: unknown[]) => import("three/tsl").TSLNode;
@@ -0,0 +1,6 @@
1
+ // @ts-nocheck
2
+ import { div, dot, Fn, vec2 } from "three/tsl";
3
+ export const complexDiv = Fn(([a, b]) => {
4
+ const denominator = dot(b, b);
5
+ return vec2(div(a.x.mul(b.x).add(a.y.mul(b.y)), denominator), div(a.y.mul(b.x).sub(a.x.mul(b.y)), denominator));
6
+ });
@@ -0,0 +1 @@
1
+ export declare const complexLog: (...args: unknown[]) => import("three/tsl").TSLNode;
@@ -0,0 +1,6 @@
1
+ // @ts-nocheck
2
+ import { Fn, length, log, vec2 } from "three/tsl";
3
+ import { atan2 } from "./atan2.js";
4
+ export const complexLog = Fn(([z]) => {
5
+ return vec2(log(length(z)), atan2(z.y, z.x));
6
+ });
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Möbius transformation: (z - 1) / (z + 1)
3
+ */
4
+ export declare const complexMobius: (...args: unknown[]) => import("three/tsl").TSLNode;
@@ -0,0 +1,10 @@
1
+ // @ts-nocheck
2
+ import { Fn, vec2 } from "three/tsl";
3
+ import { complexDiv } from "./complex-div.js";
4
+ /**
5
+ * Möbius transformation: (z - 1) / (z + 1)
6
+ */
7
+ export const complexMobius = Fn(([z]) => {
8
+ const one = vec2(1.0, 0.0);
9
+ return complexDiv(z.sub(one), z.add(one));
10
+ });
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Complex multiplication: (a + bi)(c + di) = (ac - bd) + (ad + bc)i
3
+ */
4
+ export declare const complexMul: (...args: unknown[]) => import("three/tsl").TSLNode;
@@ -1,9 +1,8 @@
1
1
  // @ts-nocheck
2
- import { Fn, vec2 } from "three/tsl"
3
-
2
+ import { Fn, vec2 } from "three/tsl";
4
3
  /**
5
4
  * Complex multiplication: (a + bi)(c + di) = (ac - bd) + (ad + bc)i
6
5
  */
7
6
  export const complexMul = Fn(([a, b]) => {
8
- return vec2(a.x.mul(b.x).sub(a.y.mul(b.y)), a.x.mul(b.y).add(a.y.mul(b.x)))
9
- })
7
+ return vec2(a.x.mul(b.x).sub(a.y.mul(b.y)), a.x.mul(b.y).add(a.y.mul(b.x)));
8
+ });
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Complex power: z^n
3
+ * Let z = r(cos θ + i sin θ), then z^n = r^n (cos nθ + i sin nθ)
4
+ */
5
+ export declare const complexPow: (...args: unknown[]) => import("three/tsl").TSLNode;
@@ -0,0 +1,14 @@
1
+ // @ts-nocheck
2
+ import { cos, Fn, length, pow, sin, vec2 } from "three/tsl";
3
+ import { atan2 } from "./atan2.js";
4
+ /**
5
+ * Complex power: z^n
6
+ * Let z = r(cos θ + i sin θ), then z^n = r^n (cos nθ + i sin nθ)
7
+ */
8
+ export const complexPow = Fn(([z, n]) => {
9
+ const angle = atan2(z.y, z.x);
10
+ const r = length(z);
11
+ const rn = pow(r, n);
12
+ const nAngle = n.mul(angle);
13
+ return vec2(rn.mul(cos(nAngle)), rn.mul(sin(nAngle)));
14
+ });
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Complex sine: sin(a + bi) = sin(a)cosh(b) + i cos(a)sinh(b)
3
+ */
4
+ export declare const complexSin: (...args: unknown[]) => import("three/tsl").TSLNode;
@@ -0,0 +1,9 @@
1
+ // @ts-nocheck
2
+ import { cos, Fn, sin, vec2 } from "three/tsl";
3
+ import { cosh, sinh } from "./hyperbolic.js";
4
+ /**
5
+ * Complex sine: sin(a + bi) = sin(a)cosh(b) + i cos(a)sinh(b)
6
+ */
7
+ export const complexSin = Fn(([z]) => {
8
+ return vec2(sin(z.x).mul(cosh(z.y)), cos(z.x).mul(sinh(z.y)));
9
+ });
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Complex square root.
3
+ * sqrt(a + bi) = (sqrt((r+a)/2), sign(b) * sqrt((r-a)/2))
4
+ */
5
+ export declare const complexSqrt: (...args: unknown[]) => import("three/tsl").TSLNode;