@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
@@ -1,86 +0,0 @@
1
- import { Fn, dot, exp, mix, pow, smoothstep, vec3 } from "three/tsl"
2
-
3
- export const reinhardTonemap = Fn(([color]) => {
4
- return color.div(color.add(1.0))
5
- })
6
-
7
- export const totosTonemap = Fn(([color]) => {
8
- const compressed = color
9
- .mul(vec3(1.18, 1.04, 0.94))
10
- .div(color.mul(vec3(0.82, 0.9, 0.98)).add(vec3(0.78, 0.68, 0.6)))
11
- const lum = dot(compressed, vec3(0.2126, 0.7152, 0.0722))
12
- const shadowLift = smoothstep(0.0, 0.38, lum)
13
- const highlightRoll = smoothstep(0.42, 1.0, lum)
14
- const toneMix = smoothstep(0.16, 0.82, lum)
15
- const cool = vec3(
16
- compressed.x.mul(0.82),
17
- compressed.y.mul(0.98).add(shadowLift.mul(0.04)),
18
- compressed.z.mul(1.24).add(shadowLift.mul(0.08)),
19
- )
20
- const warm = vec3(
21
- compressed.x.mul(1.14).add(highlightRoll.mul(0.08)),
22
- compressed.y.mul(1.03).add(highlightRoll.mul(0.03)),
23
- compressed.z.mul(0.84),
24
- )
25
- const splitToned = mix(cool, warm, toneMix)
26
- const curved = vec3(
27
- pow(splitToned.x, 0.86),
28
- pow(splitToned.y, 0.95),
29
- pow(splitToned.z, 1.12),
30
- )
31
- const bleach = mix(curved, vec3(lum), highlightRoll.mul(0.06))
32
-
33
- return bleach.clamp(0.0, 1.0)
34
- })
35
-
36
- export const acesTonemap = Fn(([color]) => {
37
- const a = 2.51
38
- const b = 0.03
39
- const c = 2.43
40
- const d = 0.59
41
- const e = 0.14
42
-
43
- return color
44
- .mul(color.mul(a).add(b))
45
- .div(color.mul(color.mul(c).add(d)).add(e))
46
- .clamp(0.0, 1.0)
47
- })
48
-
49
- export const crossProcessTonemap = Fn(([color]) => {
50
- const r = pow(color.x, 0.8)
51
- const g = pow(color.y, 1.2)
52
- const b = pow(color.z, 1.5)
53
-
54
- return vec3(r, g, b).clamp(0.0, 1.0)
55
- })
56
-
57
- export const bleachBypassTonemap = Fn(([color]) => {
58
- const lum = dot(color, vec3(0.2126, 0.7152, 0.0722))
59
- const mixAmount = 0.7
60
-
61
- return mix(vec3(lum), color, mixAmount).mul(1.2).clamp(0.0, 1.0)
62
- })
63
-
64
- export const technicolorTonemap = Fn(([color]) => {
65
- const r = color.x.mul(1.5)
66
- const g = color.y.mul(1.2)
67
- const b = color.z.mul(0.8).add(color.x.mul(0.2))
68
-
69
- return vec3(r, g, b).clamp(0.0, 1.0)
70
- })
71
-
72
- export const cinematicTonemap = Fn(([color]) => {
73
- const r = smoothstep(0.05, 0.95, color.x.mul(0.95).add(0.02))
74
- const g = smoothstep(0.05, 0.95, color.y.mul(1.05))
75
- const b = smoothstep(0.05, 0.95, color.z.mul(1.1))
76
-
77
- return vec3(r, g, b).clamp(0.0, 1.0)
78
- })
79
-
80
- export const tanh = Fn(([x]) => {
81
- const e2x = exp(x.mul(2.0))
82
-
83
- return e2x.sub(1.0).div(e2x.add(1.0))
84
- })
85
-
86
- export const uncharted2Tonemap = totosTonemap
@@ -1,8 +0,0 @@
1
- import { Fn, cos, float } from "three/tsl"
2
-
3
- /**
4
- * Generates a palette of colors using a cosine-based function.
5
- */
6
- export const cosinePalette = Fn(([t, a, b, c, d, e = float(6.28318)]) => {
7
- return a.add(b.mul(cos(e.mul(c.mul(t).add(d)))))
8
- })
@@ -1,30 +0,0 @@
1
- import { Fn, abs, add, dot, floor, fract, mod, mul, step, sub, vec3, vec4 } from "three/tsl"
2
-
3
- export const permute = Fn(([x]) => {
4
- return mod(mul(add(mul(x, 34.0), 10.0), x), 289.0)
5
- })
6
-
7
- export const taylorInvSqrt = Fn(([r]) => {
8
- return sub(1.79284291400159, mul(0.85373472095314, r))
9
- })
10
-
11
- export const mod289 = Fn(([x]) => {
12
- return mod(mul(add(mul(x, 34.0), 10.0), x), 289.0)
13
- })
14
-
15
- export const fade = Fn(([t]) => {
16
- return t.mul(t).mul(t).mul(t.mul(t).mul(6.0).sub(t.mul(15.0)).add(10.0))
17
- })
18
-
19
- export const grad4 = Fn(([j, ip]) => {
20
- const ones = vec4(1.0, 1.0, 1.0, -1.0)
21
- const p = vec4().toVar()
22
- const s = vec4().toVar()
23
-
24
- p.xyz.assign(floor(fract(vec3(j).mul(ip.xyz)).mul(7.0)).mul(ip.z).sub(1.0))
25
- p.w.assign(sub(1.5, dot(abs(p.xyz), ones.xyz)))
26
- s.assign(step(p, vec4(0.0)))
27
- p.xyz.assign(p.xyz.add(s.xyz.mul(2.0).sub(1.0).mul(s.www)))
28
-
29
- return p
30
- })
@@ -1,35 +0,0 @@
1
- import { EPSILON, Fn, cross, vec3 } from "three/tsl"
2
- import { simplexNoise3d } from "./simplex-noise-3d"
3
-
4
- export const curlNoise3d = Fn(([inputA]) => {
5
- const aXPos = simplexNoise3d(inputA.add(vec3(EPSILON, 0, 0)))
6
- const aXNeg = simplexNoise3d(inputA.sub(vec3(EPSILON, 0, 0)))
7
- const aXAverage = aXPos.sub(aXNeg).div(EPSILON.mul(2))
8
-
9
- const aYPos = simplexNoise3d(inputA.add(vec3(0, EPSILON, 0)))
10
- const aYNeg = simplexNoise3d(inputA.sub(vec3(0, EPSILON, 0)))
11
- const aYAverage = aYPos.sub(aYNeg).div(EPSILON.mul(2))
12
-
13
- const aZPos = simplexNoise3d(inputA.add(vec3(0, 0, EPSILON)))
14
- const aZNeg = simplexNoise3d(inputA.sub(vec3(0, 0, EPSILON)))
15
- const aZAverage = aZPos.sub(aZNeg).div(EPSILON.mul(2))
16
-
17
- const aGrabNoise = vec3(aXAverage, aYAverage, aZAverage).normalize()
18
- const inputB = inputA.add(3.5)
19
-
20
- const bXPos = simplexNoise3d(inputB.add(vec3(EPSILON, 0, 0)))
21
- const bXNeg = simplexNoise3d(inputB.sub(vec3(EPSILON, 0, 0)))
22
- const bXAverage = bXPos.sub(bXNeg).div(EPSILON.mul(2))
23
-
24
- const bYPos = simplexNoise3d(inputB.add(vec3(0, EPSILON, 0)))
25
- const bYNeg = simplexNoise3d(inputB.sub(vec3(0, EPSILON, 0)))
26
- const bYAverage = bYPos.sub(bYNeg).div(EPSILON.mul(2))
27
-
28
- const bZPos = simplexNoise3d(inputB.add(vec3(0, 0, EPSILON)))
29
- const bZNeg = simplexNoise3d(inputB.sub(vec3(0, 0, EPSILON)))
30
- const bZAverage = bZPos.sub(bZNeg).div(EPSILON.mul(2))
31
-
32
- const bGrabNoise = vec3(bXAverage, bYAverage, bZAverage).normalize()
33
-
34
- return cross(aGrabNoise, bGrabNoise).normalize()
35
- })
@@ -1,35 +0,0 @@
1
- import { EPSILON, Fn, cross, vec3, vec4 } from "three/tsl"
2
- import { simplexNoise4d } from "./simplex-noise-4d"
3
-
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
-
9
- const aYPos = simplexNoise4d(inputA.add(vec4(0, EPSILON, 0, 0)))
10
- const aYNeg = simplexNoise4d(inputA.sub(vec4(0, EPSILON, 0, 0)))
11
- const aYAverage = aYPos.sub(aYNeg).div(EPSILON.mul(2))
12
-
13
- const aZPos = simplexNoise4d(inputA.add(vec4(0, 0, EPSILON, 0)))
14
- const aZNeg = simplexNoise4d(inputA.sub(vec4(0, 0, EPSILON, 0)))
15
- const aZAverage = aZPos.sub(aZNeg).div(EPSILON.mul(2))
16
-
17
- const aGrabNoise = vec3(aXAverage, aYAverage, aZAverage).normalize()
18
- const inputB = inputA.add(3.5)
19
-
20
- const bXPos = simplexNoise4d(inputB.add(vec4(EPSILON, 0, 0, 0)))
21
- const bXNeg = simplexNoise4d(inputB.sub(vec4(EPSILON, 0, 0, 0)))
22
- const bXAverage = bXPos.sub(bXNeg).div(EPSILON.mul(2))
23
-
24
- const bYPos = simplexNoise4d(inputB.add(vec4(0, EPSILON, 0, 0)))
25
- const bYNeg = simplexNoise4d(inputB.sub(vec4(0, EPSILON, 0, 0)))
26
- const bYAverage = bYPos.sub(bYNeg).div(EPSILON.mul(2))
27
-
28
- const bZPos = simplexNoise4d(inputB.add(vec4(0, 0, EPSILON, 0)))
29
- const bZNeg = simplexNoise4d(inputB.sub(vec4(0, 0, EPSILON, 0)))
30
- const bZAverage = bZPos.sub(bZNeg).div(EPSILON.mul(2))
31
-
32
- const bGrabNoise = vec3(bXAverage, bYAverage, bZAverage).normalize()
33
-
34
- return cross(aGrabNoise, bGrabNoise).normalize()
35
- })
@@ -1,12 +0,0 @@
1
- import { Fn, vec3 } from "three/tsl"
2
- import { simplexNoise3d } from "./simplex-noise-3d"
3
-
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
-
11
- return n1.mul(0.7).add(n2.mul(0.3))
12
- })
@@ -1,97 +0,0 @@
1
- import {
2
- abs,
3
- dot,
4
- Fn,
5
- floor,
6
- fract,
7
- mix,
8
- mod,
9
- mul,
10
- step,
11
- sub,
12
- vec2,
13
- vec3,
14
- vec4,
15
- } from "three/tsl"
16
- import { fade, permute, taylorInvSqrt } from "./common"
17
-
18
- export const perlinNoise3d = Fn(([pImmutable]) => {
19
- const P = vec3(pImmutable).toVar()
20
-
21
- const Pi0 = vec3(mod(floor(P), 289.0)).toVar()
22
- const Pi1 = vec3(mod(Pi0.add(1.0), 289.0)).toVar()
23
- const Pf0 = vec3(fract(P)).toVar()
24
- const Pf1 = vec3(Pf0.sub(1.0)).toVar()
25
-
26
- const ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x)
27
- const iy = vec4(Pi0.y, Pi0.y, Pi1.y, Pi1.y)
28
- const iz0 = vec4(Pi0.z, Pi0.z, Pi0.z, Pi0.z)
29
- const iz1 = vec4(Pi1.z, Pi1.z, Pi1.z, Pi1.z)
30
-
31
- const ixy = vec4(permute(permute(ix).add(iy))).toVar()
32
- const ixy0 = vec4(permute(ixy.add(iz0))).toVar()
33
- const ixy1 = vec4(permute(ixy.add(iz1))).toVar()
34
-
35
- const gx0 = vec4(ixy0.div(7.0)).toVar()
36
- const gy0 = vec4(fract(floor(gx0).div(7.0)).sub(0.5)).toVar()
37
- gx0.assign(fract(gx0))
38
- const gz0 = vec4(sub(0.5, abs(gx0)).sub(abs(gy0))).toVar()
39
- const sz0 = vec4(step(gz0, vec4(0.0))).toVar()
40
- gx0.assign(gx0.sub(sz0.mul(step(0.0, gx0).sub(0.5))))
41
- gy0.assign(gy0.sub(sz0.mul(step(0.0, gy0).sub(0.5))))
42
-
43
- const gx1 = vec4(ixy1.div(7.0)).toVar()
44
- const gy1 = vec4(fract(floor(gx1).div(7.0)).sub(0.5)).toVar()
45
- gx1.assign(fract(gx1))
46
- const gz1 = vec4(sub(0.5, abs(gx1)).sub(abs(gy1))).toVar()
47
- const sz1 = vec4(step(gz1, vec4(0.0))).toVar()
48
- gx1.assign(gx1.sub(sz1.mul(step(0.0, gx1).sub(0.5))))
49
- gy1.assign(gy1.sub(sz1.mul(step(0.0, gy1).sub(0.5))))
50
-
51
- const g000 = vec3(gx0.x, gy0.x, gz0.x).toVar()
52
- const g100 = vec3(gx0.y, gy0.y, gz0.y).toVar()
53
- const g010 = vec3(gx0.z, gy0.z, gz0.z).toVar()
54
- const g110 = vec3(gx0.w, gy0.w, gz0.w).toVar()
55
- const g001 = vec3(gx1.x, gy1.x, gz1.x).toVar()
56
- const g101 = vec3(gx1.y, gy1.y, gz1.y).toVar()
57
- const g011 = vec3(gx1.z, gy1.z, gz1.z).toVar()
58
- const g111 = vec3(gx1.w, gy1.w, gz1.w).toVar()
59
-
60
- const norm0 = vec4(
61
- taylorInvSqrt(
62
- vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110))
63
- )
64
- ).toVar()
65
- g000.mulAssign(norm0.x)
66
- g010.mulAssign(norm0.y)
67
- g100.mulAssign(norm0.z)
68
- g110.mulAssign(norm0.w)
69
-
70
- const norm1 = vec4(
71
- taylorInvSqrt(
72
- vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111))
73
- )
74
- ).toVar()
75
- g001.mulAssign(norm1.x)
76
- g011.mulAssign(norm1.y)
77
- g101.mulAssign(norm1.z)
78
- g111.mulAssign(norm1.w)
79
-
80
- const n000 = dot(g000, Pf0)
81
- const n100 = dot(g100, vec3(Pf1.x, Pf0.y, Pf0.z))
82
- const n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z))
83
- const n110 = dot(g110, vec3(Pf1.x, Pf1.y, Pf0.z))
84
- const n001 = dot(g001, vec3(Pf0.x, Pf0.y, Pf1.z))
85
- const n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z))
86
- const n011 = dot(g011, vec3(Pf0.x, Pf1.y, Pf1.z))
87
- const n111 = dot(g111, Pf1)
88
-
89
- const fadeXyz = vec3(fade(Pf0)).toVar()
90
- const nZ = vec4(
91
- mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fadeXyz.z)
92
- )
93
- const nYz = vec2(mix(nZ.xy, nZ.zw, fadeXyz.y))
94
- const nXyz = mix(nYz.x, nYz.y, fadeXyz.x)
95
-
96
- return mul(2.2, nXyz)
97
- })
@@ -1,23 +0,0 @@
1
- import { abs, clamp, Fn, float, Loop } from "three/tsl"
2
- import { simplexNoise3d } from "./simplex-noise-3d"
3
-
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
-
11
- Loop({ end: 6, start: 0, type: "int" }, () => {
12
- const n = float(1).sub(abs(simplexNoise3d(p.mul(frequency)).mul(2)))
13
- const signal = n.mul(n).mul(weight)
14
-
15
- value.addAssign(signal.mul(amplitude))
16
- weight.assign(clamp(signal, 0, 1))
17
-
18
- frequency.mulAssign(2.0)
19
- amplitude.mulAssign(0.5)
20
- })
21
-
22
- return value
23
- })
@@ -1,78 +0,0 @@
1
- import {
2
- Fn,
3
- abs,
4
- dot,
5
- float,
6
- floor,
7
- max,
8
- min,
9
- mod,
10
- mul,
11
- step,
12
- sub,
13
- vec2,
14
- vec3,
15
- vec4,
16
- } from "three/tsl"
17
- import { permute, taylorInvSqrt } from "./common"
18
-
19
- export const simplexNoise3d = Fn(([vImmutable]) => {
20
- const v = vec3(vImmutable).toVar()
21
- const c = vec2(1.0 / 6.0, 1.0 / 3.0)
22
- const d = vec4(0.0, 0.5, 1.0, 2.0)
23
- const i = vec3(floor(v.add(dot(v, c.yyy)))).toVar()
24
- const x0 = vec3(v.sub(i).add(dot(i, c.xxx))).toVar()
25
- const g = vec3(step(x0.yzx, x0.xyz)).toVar()
26
- const l = vec3(sub(1.0, g)).toVar()
27
- const i1 = vec3(min(g.xyz, l.zxy)).toVar()
28
- const i2 = vec3(max(g.xyz, l.zxy)).toVar()
29
- const x1 = vec3(x0.sub(i1).add(mul(1.0, c.xxx))).toVar()
30
- const x2 = vec3(x0.sub(i2).add(mul(2.0, c.xxx))).toVar()
31
- const x3 = vec3(x0.sub(1).add(mul(3.0, c.xxx))).toVar()
32
-
33
- i.assign(mod(i, 289.0))
34
-
35
- const p = vec4(
36
- permute(
37
- permute(
38
- 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))),
39
- ).add(i.x.add(vec4(0.0, i1.x, i2.x, 1.0))),
40
- ),
41
- ).toVar()
42
-
43
- const n = float(1.0 / 7.0).toVar()
44
- const ns = vec3(n.mul(d.wyz).sub(d.xzx)).toVar()
45
- const j = vec4(p.sub(mul(49.0, floor(p.mul(ns.z.mul(ns.z)))))).toVar()
46
- const x = vec4(floor(j.mul(ns.z)).mul(ns.x).add(ns.yyyy)).toVar()
47
- const y = vec4(floor(j.sub(mul(7.0, floor(j.mul(ns.z))))).mul(ns.x).add(ns.yyyy)).toVar()
48
- const h = vec4(sub(1.0, abs(x).sub(abs(y)))).toVar()
49
- const b0 = vec4(x.xy, y.xy).toVar()
50
- const b1 = vec4(x.zw, y.zw).toVar()
51
- const s0 = vec4(floor(b0).mul(2.0).add(1.0)).toVar()
52
- const s1 = vec4(floor(b1).mul(2.0).add(1.0)).toVar()
53
- const sh = vec4(step(h, vec4(0.0)).negate()).toVar()
54
- const a0 = vec4(b0.xzyw.add(s0.xzyw.mul(sh.xxyy))).toVar()
55
- const a1 = vec4(b1.xzyw.add(s1.xzyw.mul(sh.zzww))).toVar()
56
- const p0 = vec3(a0.xy, h.x).toVar()
57
- const p1 = vec3(a0.zw, h.y).toVar()
58
- const p2 = vec3(a1.xy, h.z).toVar()
59
- const p3 = vec3(a1.zw, h.w).toVar()
60
- const norm = vec4(
61
- taylorInvSqrt(vec4(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3))),
62
- ).toVar()
63
-
64
- p0.mulAssign(norm.x)
65
- p1.mulAssign(norm.y)
66
- p2.mulAssign(norm.z)
67
- p3.mulAssign(norm.w)
68
-
69
- const m = vec4(
70
- max(sub(0.6, vec4(dot(x0, x0), dot(x1, x1), dot(x2, x2), dot(x3, x3))), 0.0),
71
- ).toVar()
72
- m.assign(m.mul(m))
73
-
74
- return mul(
75
- 42.0,
76
- dot(m.mul(m), vec4(dot(p0, x0), dot(p1, x1), dot(p2, x2), dot(p3, x3))),
77
- )
78
- })
@@ -1,88 +0,0 @@
1
- import {
2
- Fn,
3
- clamp,
4
- dot,
5
- float,
6
- floor,
7
- max,
8
- mod,
9
- mul,
10
- step,
11
- sub,
12
- vec2,
13
- vec3,
14
- vec4,
15
- } from "three/tsl"
16
- import { grad4, permute, taylorInvSqrt } from "./common"
17
-
18
- export const simplexNoise4d = Fn(([vImmutable]) => {
19
- const v = vec4(vImmutable).toVar()
20
- const c = vec2(0.1381966011250105, 0.30901699437494745)
21
- const i = vec4(floor(v.add(dot(v, c.yyyy)))).toVar()
22
- const x0 = vec4(v.sub(i).add(dot(i, c.xxxx))).toVar()
23
- const i0 = vec4().toVar()
24
- const isX = vec3(step(x0.yzw, x0.xxx)).toVar()
25
- const isYZ = vec3(step(x0.zww, x0.yyz)).toVar()
26
-
27
- i0.x.assign(isX.x.add(isX.y).add(isX.z))
28
- i0.yzw.assign(sub(1.0, isX))
29
- i0.y.addAssign(isYZ.x.add(isYZ.y))
30
- i0.zw.addAssign(sub(1.0, isYZ.xy))
31
- i0.z.addAssign(isYZ.z)
32
- i0.w.addAssign(sub(1.0, isYZ.z))
33
-
34
- const i3 = vec4(clamp(i0, 0.0, 1.0)).toVar()
35
- const i2 = vec4(clamp(i0.sub(1.0), 0.0, 1.0)).toVar()
36
- const i1 = vec4(clamp(i0.sub(2.0), 0.0, 1.0)).toVar()
37
- const x1 = vec4(x0.sub(i1).add(mul(1.0, c.xxxx))).toVar()
38
- const x2 = vec4(x0.sub(i2).add(mul(2.0, c.xxxx))).toVar()
39
- const x3 = vec4(x0.sub(i3).add(mul(3.0, c.xxxx))).toVar()
40
- const x4 = vec4(x0.sub(1.0).add(mul(4.0, c.xxxx))).toVar()
41
-
42
- i.assign(mod(i, 289.0))
43
-
44
- const j0 = float(permute(permute(permute(permute(i.w).add(i.z)).add(i.y)).add(i.x))).toVar()
45
- const j1 = vec4(
46
- permute(
47
- permute(
48
- permute(
49
- permute(i.w.add(vec4(i1.w, i2.w, i3.w, 1.0)))
50
- .add(i.z)
51
- .add(vec4(i1.z, i2.z, i3.z, 1.0)),
52
- )
53
- .add(i.y)
54
- .add(vec4(i1.y, i2.y, i3.y, 1.0)),
55
- )
56
- .add(i.x)
57
- .add(vec4(i1.x, i2.x, i3.x, 1.0)),
58
- ),
59
- ).toVar()
60
-
61
- const ip = vec4(1.0 / 294.0, 1.0 / 49.0, 1.0 / 7.0, 0.0).toVar()
62
- const p0 = vec4(grad4(j0, ip)).toVar()
63
- const p1 = vec4(grad4(j1.x, ip)).toVar()
64
- const p2 = vec4(grad4(j1.y, ip)).toVar()
65
- const p3 = vec4(grad4(j1.z, ip)).toVar()
66
- const p4 = vec4(grad4(j1.w, ip)).toVar()
67
- const norm = vec4(
68
- taylorInvSqrt(vec4(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3))),
69
- ).toVar()
70
-
71
- p0.mulAssign(norm.x)
72
- p1.mulAssign(norm.y)
73
- p2.mulAssign(norm.z)
74
- p3.mulAssign(norm.w)
75
- p4.mulAssign(taylorInvSqrt(dot(p4, p4)))
76
-
77
- const m0 = vec3(max(sub(0.6, vec3(dot(x0, x0), dot(x1, x1), dot(x2, x2))), 0.0)).toVar()
78
- const m1 = vec2(max(sub(0.6, vec2(dot(x3, x3), dot(x4, x4))), 0.0)).toVar()
79
- m0.assign(m0.mul(m0))
80
- m1.assign(m1.mul(m1))
81
-
82
- return mul(
83
- 49.0,
84
- dot(m0.mul(m0), vec3(dot(p0, x0), dot(p1, x1), dot(p2, x2))).add(
85
- dot(m1.mul(m1), vec2(dot(p3, x3), dot(p4, x4))),
86
- ),
87
- )
88
- })
@@ -1,55 +0,0 @@
1
- import { Fn, float, Loop, sin, vec2 } from "three/tsl"
2
-
3
- interface TurbulenceOptions {
4
- _amp?: number
5
- _exp?: number
6
- _freq?: number
7
- _num?: number
8
- _speed?: number
9
- }
10
-
11
- const HALF_PI = 1.5707963267948966
12
- const THETA = 0.9272952180016122
13
-
14
- /**
15
- * Turbulence based on XorDev's "Turbulent Dark" technique.
16
- * Displaces coordinates by layering rotated sine waves at increasing frequencies
17
- *
18
- * @see https://mini.gmshaders.com/p/turbulence
19
- */
20
- export const turbulence = Fn(([pInput, time, rawOptions]) => {
21
- const options = (rawOptions as TurbulenceOptions | undefined) ?? {}
22
- const {
23
- _num = 10,
24
- _amp = 0.7,
25
- _speed = 0.3,
26
- _freq = 2.0,
27
- _exp = 1.4,
28
- } = options
29
-
30
- const p = vec2(pInput.xy).toVar()
31
- const t = time.mul(float(_speed))
32
- const freq = float(_freq).toVar()
33
- const angle = float(0.0).toVar()
34
- const iter = float(0.0).toVar()
35
-
36
- Loop({ end: _num, start: 0, type: "int" }, () => {
37
- const c = sin(angle.add(HALF_PI))
38
- const s = sin(angle)
39
-
40
- const phase = freq
41
- .mul(p.x.mul(s).add(p.y.mul(c)))
42
- .add(t)
43
- .add(iter)
44
-
45
- const scale = float(_amp).mul(sin(phase)).div(freq)
46
- p.x.addAssign(scale.mul(c))
47
- p.y.addAssign(scale.mul(s.negate()))
48
-
49
- angle.addAssign(THETA)
50
- freq.mulAssign(float(_exp))
51
- iter.addAssign(1.0)
52
- })
53
-
54
- return p.sub(pInput.xy)
55
- })
@@ -1,31 +0,0 @@
1
- import { dot, Fn, floor, fract, mix, sin, vec3 } from "three/tsl"
2
- import { fade } from "./common"
3
-
4
- const hash31 = Fn(([p]) => {
5
- return fract(sin(dot(p, vec3(127.1, 311.7, 74.7))).mul(43758.5453123))
6
- })
7
-
8
- export const valueNoise3d = Fn(([pImmutable]) => {
9
- const p = vec3(pImmutable).toVar()
10
- const cell = vec3(floor(p)).toVar()
11
- const local = vec3(fract(p)).toVar()
12
- const eased = vec3(fade(local)).toVar()
13
-
14
- const n000 = hash31(cell)
15
- const n100 = hash31(cell.add(vec3(1, 0, 0)))
16
- const n010 = hash31(cell.add(vec3(0, 1, 0)))
17
- const n110 = hash31(cell.add(vec3(1, 1, 0)))
18
- const n001 = hash31(cell.add(vec3(0, 0, 1)))
19
- const n101 = hash31(cell.add(vec3(1, 0, 1)))
20
- const n011 = hash31(cell.add(vec3(0, 1, 1)))
21
- const n111 = hash31(cell.add(vec3(1, 1, 1)))
22
-
23
- const nx00 = mix(n000, n100, eased.x)
24
- const nx10 = mix(n010, n110, eased.x)
25
- const nx01 = mix(n001, n101, eased.x)
26
- const nx11 = mix(n011, n111, eased.x)
27
- const nxy0 = mix(nx00, nx10, eased.y)
28
- const nxy1 = mix(nx01, nx11, eased.y)
29
-
30
- return mix(nxy0, nxy1, eased.z).mul(2).sub(1)
31
- })
@@ -1,59 +0,0 @@
1
- import { dot, Fn, float, floor, fract, length, min, sin, vec3 } from "three/tsl"
2
-
3
- const random3 = Fn(([p]) => {
4
- return fract(
5
- sin(
6
- vec3(
7
- dot(p, vec3(127.1, 311.7, 74.7)),
8
- dot(p, vec3(269.5, 183.3, 246.1)),
9
- dot(p, vec3(113.5, 271.9, 124.6))
10
- )
11
- ).mul(43758.5453)
12
- )
13
- })
14
-
15
- const checkNeighbor = Fn(([i, f, neighbor, currentMin]) => {
16
- const point = random3(i.add(neighbor))
17
- const diff = neighbor.add(point).sub(f)
18
-
19
- return min(currentMin, length(diff))
20
- })
21
-
22
- export const voronoiNoise3d = Fn(([pImmutable]) => {
23
- const p = vec3(pImmutable).toVar()
24
- const i = vec3(floor(p)).toVar()
25
- const f = vec3(fract(p)).toVar()
26
-
27
- const d = float(1).toVar()
28
-
29
- // Unrolled 3x3x3 neighbor search
30
- d.assign(checkNeighbor(i, f, vec3(-1, -1, -1), d))
31
- d.assign(checkNeighbor(i, f, vec3(-1, -1, 0), d))
32
- d.assign(checkNeighbor(i, f, vec3(-1, -1, 1), d))
33
- d.assign(checkNeighbor(i, f, vec3(-1, 0, -1), d))
34
- d.assign(checkNeighbor(i, f, vec3(-1, 0, 0), d))
35
- d.assign(checkNeighbor(i, f, vec3(-1, 0, 1), d))
36
- d.assign(checkNeighbor(i, f, vec3(-1, 1, -1), d))
37
- d.assign(checkNeighbor(i, f, vec3(-1, 1, 0), d))
38
- d.assign(checkNeighbor(i, f, vec3(-1, 1, 1), d))
39
- d.assign(checkNeighbor(i, f, vec3(0, -1, -1), d))
40
- d.assign(checkNeighbor(i, f, vec3(0, -1, 0), d))
41
- d.assign(checkNeighbor(i, f, vec3(0, -1, 1), d))
42
- d.assign(checkNeighbor(i, f, vec3(0, 0, -1), d))
43
- d.assign(checkNeighbor(i, f, vec3(0, 0, 0), d))
44
- d.assign(checkNeighbor(i, f, vec3(0, 0, 1), d))
45
- d.assign(checkNeighbor(i, f, vec3(0, 1, -1), d))
46
- d.assign(checkNeighbor(i, f, vec3(0, 1, 0), d))
47
- d.assign(checkNeighbor(i, f, vec3(0, 1, 1), d))
48
- d.assign(checkNeighbor(i, f, vec3(1, -1, -1), d))
49
- d.assign(checkNeighbor(i, f, vec3(1, -1, 0), d))
50
- d.assign(checkNeighbor(i, f, vec3(1, -1, 1), d))
51
- d.assign(checkNeighbor(i, f, vec3(1, 0, -1), d))
52
- d.assign(checkNeighbor(i, f, vec3(1, 0, 0), d))
53
- d.assign(checkNeighbor(i, f, vec3(1, 0, 1), d))
54
- d.assign(checkNeighbor(i, f, vec3(1, 1, -1), d))
55
- d.assign(checkNeighbor(i, f, vec3(1, 1, 0), d))
56
- d.assign(checkNeighbor(i, f, vec3(1, 1, 1), d))
57
-
58
- return d
59
- })
@@ -1,14 +0,0 @@
1
- import { Fn, abs, float } from "three/tsl"
2
- import { bloom } from "./bloom"
3
- import { repeatingPattern } from "./repeating-pattern"
4
-
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
-
13
- return pattern
14
- })
@@ -1,10 +0,0 @@
1
- import { Fn, pow } from "three/tsl"
2
-
3
- /**
4
- * Returns a bloomed edge based on a given edge and pattern.
5
- */
6
- export const bloom = Fn(([pattern, edge, exponent]) => {
7
- pattern.assign(pow(edge.div(pattern), exponent))
8
-
9
- return pattern
10
- })