@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,194 +0,0 @@
1
- import * as THREE from "three/webgpu"
2
- import {
3
- clamp,
4
- float,
5
- max,
6
- mix,
7
- select,
8
- texture as tslTexture,
9
- type TSLNode,
10
- uniform,
11
- uv,
12
- vec2,
13
- vec4,
14
- } from "three/tsl"
15
- import { PassNode } from "@/renderer/pass-node"
16
- import type { LayerParameterValues } from "@/types/editor"
17
-
18
- type Node = TSLNode
19
-
20
- export class LivePass extends PassNode {
21
- private readonly canvasAspectUniform: Node
22
- private readonly fitModeUniform: Node
23
- private readonly mirrorUniform: Node
24
- private readonly offsetXUniform: Node
25
- private readonly offsetYUniform: Node
26
- private readonly scaleUniform: Node
27
- private readonly textureAspectUniform: Node
28
- private mediaTextureNode: Node
29
- private readonly placeholder: THREE.Texture
30
-
31
- private videoElement: HTMLVideoElement | null = null
32
- private videoTexture: THREE.VideoTexture | null = null
33
- private stream: MediaStream | null = null
34
- private activeFacingMode: string | null = null
35
-
36
- constructor(layerId: string) {
37
- super(layerId)
38
- this.placeholder = new THREE.Texture()
39
- this.canvasAspectUniform = uniform(1)
40
- this.fitModeUniform = uniform(0)
41
- this.mirrorUniform = uniform(1)
42
- this.offsetXUniform = uniform(0)
43
- this.offsetYUniform = uniform(0)
44
- this.scaleUniform = uniform(1)
45
- this.textureAspectUniform = uniform(1)
46
- this.mediaTextureNode = tslTexture(this.placeholder, uv())
47
- this.rebuildEffectNode()
48
- }
49
-
50
- async startCamera(facingMode: string): Promise<void> {
51
- if (this.activeFacingMode === facingMode && this.videoTexture) {
52
- return
53
- }
54
-
55
- this.stopCamera()
56
- this.activeFacingMode = facingMode
57
-
58
- const stream = await navigator.mediaDevices.getUserMedia({
59
- video: {
60
- facingMode,
61
- width: { ideal: 1920 },
62
- height: { ideal: 1080 },
63
- },
64
- audio: false,
65
- })
66
-
67
- this.stream = stream
68
- const video = document.createElement("video")
69
- video.srcObject = stream
70
- video.muted = true
71
- video.playsInline = true
72
-
73
- await new Promise<void>((resolve, reject) => {
74
- video.addEventListener(
75
- "playing",
76
- () => resolve(),
77
- { once: true },
78
- )
79
- video.addEventListener(
80
- "error",
81
- () => reject(new Error("Failed to start camera")),
82
- { once: true },
83
- )
84
- video.play().catch(reject)
85
- })
86
-
87
- this.videoElement = video
88
- const texture = new THREE.VideoTexture(video)
89
- texture.colorSpace = THREE.SRGBColorSpace
90
- this.videoTexture = texture
91
-
92
- const width = video.videoWidth || 1
93
- const height = video.videoHeight || 1
94
- this.textureAspectUniform.value = width / Math.max(height, 1)
95
- }
96
-
97
- getFacingMode(): string {
98
- return this.activeFacingMode ?? "user"
99
- }
100
-
101
- private stopCamera(): void {
102
- this.videoTexture?.dispose()
103
- this.videoTexture = null
104
-
105
- if (this.videoElement) {
106
- this.videoElement.pause()
107
- this.videoElement.srcObject = null
108
- this.videoElement = null
109
- }
110
-
111
- if (this.stream) {
112
- for (const track of this.stream.getTracks()) {
113
- track.stop()
114
- }
115
- this.stream = null
116
- }
117
-
118
- this.activeFacingMode = null
119
- }
120
-
121
- override updateParams(params: LayerParameterValues): void {
122
- this.fitModeUniform.value = params.fitMode === "contain" ? 1 : 0
123
- this.mirrorUniform.value = params.mirror === false ? 0 : 1
124
- this.scaleUniform.value =
125
- typeof params.scale === "number" ? 1 / Math.max(params.scale, 0.01) : 1
126
-
127
- if (Array.isArray(params.offset) && params.offset.length === 2) {
128
- this.offsetXUniform.value = params.offset[0] ?? 0
129
- this.offsetYUniform.value = params.offset[1] ?? 0
130
- }
131
- }
132
-
133
- override render(
134
- renderer: THREE.WebGPURenderer,
135
- inputTexture: THREE.Texture,
136
- outputTarget: THREE.WebGLRenderTarget,
137
- time: number,
138
- delta: number,
139
- ): void {
140
- if (this.videoTexture) {
141
- this.videoTexture.needsUpdate = true
142
- this.mediaTextureNode.value = this.videoTexture
143
- }
144
-
145
- super.render(renderer, inputTexture, outputTarget, time, delta)
146
- }
147
-
148
- override resize(width: number, height: number): void {
149
- this.canvasAspectUniform.value = width / Math.max(height, 1)
150
- }
151
-
152
- override needsContinuousRender(): boolean {
153
- return this.videoTexture !== null
154
- }
155
-
156
- override dispose(): void {
157
- this.stopCamera()
158
- this.placeholder.dispose()
159
- super.dispose()
160
- }
161
-
162
- protected override buildEffectNode(): Node {
163
- if (!this.canvasAspectUniform) {
164
- return this.inputNode
165
- }
166
-
167
- const aspectRatio = this.textureAspectUniform.div(this.canvasAspectUniform)
168
- const rawUv = uv().sub(0.5).mul(this.scaleUniform)
169
- const mirroredX = mix(rawUv.x, rawUv.x.negate(), this.mirrorUniform)
170
- const centeredUv = vec2(mirroredX, rawUv.y)
171
-
172
- const coverScaleX = max(aspectRatio, float(1))
173
- const coverScaleY = max(float(1).div(aspectRatio), float(1))
174
- const containScaleX = float(1).div(coverScaleX)
175
- const containScaleY = float(1).div(coverScaleY)
176
- const useContain = this.fitModeUniform
177
- const scaleX = mix(coverScaleX, containScaleX, useContain)
178
- const scaleY = mix(coverScaleY, containScaleY, useContain)
179
- const sampledUv = vec2(
180
- centeredUv.x.div(scaleX).add(this.offsetXUniform).add(0.5),
181
- centeredUv.y.div(scaleY).add(this.offsetYUniform).add(0.5),
182
- )
183
- const safeUv = clamp(sampledUv, vec2(0, 0), vec2(1, 1))
184
- this.mediaTextureNode = tslTexture(this.placeholder, safeUv)
185
- const inBounds = sampledUv.x
186
- .greaterThanEqual(0)
187
- .and(sampledUv.x.lessThanEqual(1))
188
- .and(sampledUv.y.greaterThanEqual(0))
189
- .and(sampledUv.y.lessThanEqual(1))
190
- const contained = select(inBounds, this.mediaTextureNode, vec4(0, 0, 0, 1))
191
-
192
- return mix(this.mediaTextureNode, contained, useContain)
193
- }
194
- }
@@ -1,187 +0,0 @@
1
- import * as THREE from "three/webgpu"
2
- import {
3
- clamp,
4
- float,
5
- max,
6
- mix,
7
- select,
8
- texture as tslTexture,
9
- type TSLNode,
10
- uniform,
11
- uv,
12
- vec2,
13
- vec4,
14
- } from "three/tsl"
15
- import { loadImageTexture, createVideoTexture, type VideoHandle } from "@/renderer/media-texture"
16
- import { PassNode } from "@/renderer/pass-node"
17
- import type { LayerParameterValues } from "@/types/editor"
18
-
19
- type MediaKind = "image" | "video"
20
- type Node = TSLNode
21
-
22
- export class MediaPass extends PassNode {
23
- private readonly canvasAspectUniform: Node
24
- private readonly fitModeUniform: Node
25
- private readonly offsetXUniform: Node
26
- private readonly offsetYUniform: Node
27
- private readonly scaleUniform: Node
28
- private readonly textureAspectUniform: Node
29
- private mediaTextureNode: Node
30
- private readonly placeholder: THREE.Texture
31
-
32
- private currentTexture: THREE.Texture | null = null
33
- private loadedUrl: string | null = null
34
- private videoHandle: VideoHandle | null = null
35
- private videoTexture: THREE.VideoTexture | null = null
36
-
37
- constructor(layerId: string) {
38
- super(layerId)
39
- this.placeholder = new THREE.Texture()
40
- this.canvasAspectUniform = uniform(1)
41
- this.fitModeUniform = uniform(0)
42
- this.offsetXUniform = uniform(0)
43
- this.offsetYUniform = uniform(0)
44
- this.scaleUniform = uniform(1)
45
- this.textureAspectUniform = uniform(1)
46
- this.mediaTextureNode = tslTexture(this.placeholder, uv())
47
- this.rebuildEffectNode()
48
- }
49
-
50
- async setMedia(url: string, kind: MediaKind): Promise<void> {
51
- if (this.loadedUrl === url) {
52
- return
53
- }
54
-
55
- this.releaseCurrentMedia()
56
- this.loadedUrl = url
57
-
58
- if (kind === "image") {
59
- const texture = await loadImageTexture(url)
60
- this.currentTexture = texture
61
- this.setTextureAspect(texture)
62
- return
63
- }
64
-
65
- const handle = await createVideoTexture(url)
66
- this.currentTexture = handle.texture
67
- this.videoHandle = handle
68
- this.videoTexture = handle.texture
69
- this.setTextureAspect(handle.texture)
70
- }
71
-
72
- clearMedia(): void {
73
- this.releaseCurrentMedia()
74
- }
75
-
76
- override updateParams(params: LayerParameterValues): void {
77
- this.fitModeUniform.value = params.fitMode === "contain" ? 1 : 0
78
- this.scaleUniform.value =
79
- typeof params.scale === "number" ? 1 / Math.max(params.scale, 0.01) : 1
80
-
81
- if (Array.isArray(params.offset) && params.offset.length === 2) {
82
- this.offsetXUniform.value = params.offset[0] ?? 0
83
- this.offsetYUniform.value = params.offset[1] ?? 0
84
- }
85
-
86
- if (
87
- this.videoHandle &&
88
- typeof params.playbackRate === "number" &&
89
- Number.isFinite(params.playbackRate)
90
- ) {
91
- this.videoHandle.video.playbackRate = Math.max(0.1, params.playbackRate)
92
- }
93
-
94
- if (this.videoHandle) {
95
- this.videoHandle.video.loop = true
96
- }
97
- }
98
-
99
- override render(
100
- renderer: THREE.WebGPURenderer,
101
- inputTexture: THREE.Texture,
102
- outputTarget: THREE.WebGLRenderTarget,
103
- time: number,
104
- delta: number,
105
- ): void {
106
- if (this.videoTexture) {
107
- this.videoTexture.needsUpdate = true
108
- }
109
-
110
- if (this.currentTexture && this.mediaTextureNode) {
111
- this.mediaTextureNode.value = this.currentTexture
112
- }
113
-
114
- super.render(renderer, inputTexture, outputTarget, time, delta)
115
- }
116
-
117
- override resize(width: number, height: number): void {
118
- this.canvasAspectUniform.value = width / Math.max(height, 1)
119
- }
120
-
121
- override needsContinuousRender(): boolean {
122
- return this.videoTexture !== null
123
- }
124
-
125
- override dispose(): void {
126
- this.releaseCurrentMedia()
127
- this.placeholder.dispose()
128
- super.dispose()
129
- }
130
-
131
- protected override buildEffectNode(): Node {
132
- if (!this.canvasAspectUniform) {
133
- return this.inputNode
134
- }
135
-
136
- const aspectRatio = this.textureAspectUniform.div(this.canvasAspectUniform)
137
- const centeredUv = uv().sub(0.5).mul(this.scaleUniform)
138
- const coverScaleX = max(aspectRatio, float(1))
139
- const coverScaleY = max(float(1).div(aspectRatio), float(1))
140
- const containScaleX = float(1).div(coverScaleX)
141
- const containScaleY = float(1).div(coverScaleY)
142
- const useContain = this.fitModeUniform
143
- const scaleX = mix(coverScaleX, containScaleX, useContain)
144
- const scaleY = mix(coverScaleY, containScaleY, useContain)
145
- const sampledUv = vec2(
146
- centeredUv.x.div(scaleX).add(this.offsetXUniform).add(0.5),
147
- centeredUv.y.div(scaleY).add(this.offsetYUniform).add(0.5),
148
- )
149
- const safeUv = clamp(sampledUv, vec2(0, 0), vec2(1, 1))
150
- this.mediaTextureNode = tslTexture(this.placeholder, safeUv)
151
- const inBounds = sampledUv.x
152
- .greaterThanEqual(0)
153
- .and(sampledUv.x.lessThanEqual(1))
154
- .and(sampledUv.y.greaterThanEqual(0))
155
- .and(sampledUv.y.lessThanEqual(1))
156
- const contained = select(inBounds, this.mediaTextureNode, vec4(0, 0, 0, 1))
157
-
158
- return mix(this.mediaTextureNode, contained, useContain)
159
- }
160
-
161
- private releaseCurrentMedia(): void {
162
- this.currentTexture?.dispose()
163
- this.currentTexture = null
164
- this.videoTexture = null
165
- this.videoHandle?.dispose()
166
- this.videoHandle = null
167
- this.loadedUrl = null
168
- }
169
-
170
- private setTextureAspect(texture: THREE.Texture): void {
171
- const image = texture.image as
172
- | HTMLImageElement
173
- | HTMLVideoElement
174
- | null
175
- | undefined
176
- const width =
177
- image instanceof HTMLVideoElement
178
- ? image.videoWidth
179
- : image?.naturalWidth ?? 1
180
- const height =
181
- image instanceof HTMLVideoElement
182
- ? image.videoHeight
183
- : image?.naturalHeight ?? 1
184
-
185
- this.textureAspectUniform.value = width / Math.max(height, 1)
186
- }
187
- }
@@ -1,66 +0,0 @@
1
- import * as THREE from "three/webgpu"
2
-
3
- export interface VideoHandle {
4
- dispose: () => void
5
- texture: THREE.VideoTexture
6
- video: HTMLVideoElement
7
- }
8
-
9
- export function loadImageTexture(url: string): Promise<THREE.Texture> {
10
- return new Promise((resolve, reject) => {
11
- const loader = new THREE.TextureLoader()
12
- loader.load(
13
- url,
14
- (texture) => {
15
- texture.colorSpace = THREE.SRGBColorSpace
16
- resolve(texture)
17
- },
18
- undefined,
19
- () => {
20
- reject(new Error(`Failed to load image texture: ${url}`))
21
- },
22
- )
23
- })
24
- }
25
-
26
- export function createVideoTexture(url: string): Promise<VideoHandle> {
27
- return new Promise((resolve, reject) => {
28
- const video = document.createElement("video")
29
- video.loop = true
30
- video.muted = true
31
- video.playsInline = true
32
-
33
- video.addEventListener(
34
- "playing",
35
- () => {
36
- const texture = new THREE.VideoTexture(video)
37
- texture.colorSpace = THREE.SRGBColorSpace
38
- resolve({
39
- dispose: () => {
40
- texture.dispose()
41
- video.pause()
42
- video.src = ""
43
- },
44
- texture,
45
- video,
46
- })
47
- },
48
- { once: true },
49
- )
50
-
51
- video.addEventListener(
52
- "loadedmetadata",
53
- () => {
54
- video.play().catch(reject)
55
- },
56
- { once: true },
57
- )
58
-
59
- video.onerror = () => {
60
- reject(new Error(`Failed to load video texture: ${url}`))
61
- }
62
-
63
- video.src = url
64
- video.load()
65
- })
66
- }