@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,358 @@
1
+ import { clamp, cos, dot, Fn, float, max, mix, pow, select, sin, smoothstep, uniform, uv, vec2, vec3, vec4, } from "three/tsl";
2
+ import { PassNode } from "./pass-node.js";
3
+ import { acesTonemap, cinematicTonemap, reinhardTonemap, totosTonemap, } from "./shaders/tsl/color/tonemapping.js";
4
+ import { perlinNoise3d } from "./shaders/tsl/noise/perlin-noise-3d.js";
5
+ import { ridgeNoise } from "./shaders/tsl/noise/ridge-noise.js";
6
+ import { simplexNoise3d } from "./shaders/tsl/noise/simplex-noise-3d.js";
7
+ import { turbulence } from "./shaders/tsl/noise/turbulence.js";
8
+ import { valueNoise3d } from "./shaders/tsl/noise/value-noise-3d.js";
9
+ import { voronoiNoise3d } from "./shaders/tsl/noise/voronoi-noise-3d.js";
10
+ import { grainTexturePattern } from "./shaders/tsl/patterns/grain-texture-pattern.js";
11
+ function hexToRgb(hex) {
12
+ const normalized = hex.trim().replace("#", "");
13
+ const value = normalized.length === 3
14
+ ? normalized
15
+ .split("")
16
+ .map((entry) => `${entry}${entry}`)
17
+ .join("")
18
+ : normalized.padEnd(6, "0").slice(0, 6);
19
+ return [
20
+ Number.parseInt(value.slice(0, 2), 16) / 255,
21
+ Number.parseInt(value.slice(2, 4), 16) / 255,
22
+ Number.parseInt(value.slice(4, 6), 16) / 255,
23
+ ];
24
+ }
25
+ export class GradientPass extends PassNode {
26
+ activePointsUniform;
27
+ animateUniform;
28
+ aspectUniform;
29
+ falloffUniform;
30
+ glowStrengthUniform;
31
+ glowThresholdUniform;
32
+ grainAmountUniform;
33
+ motionAmountUniform;
34
+ motionSpeedUniform;
35
+ pointColorUniforms;
36
+ pointPositionUniforms;
37
+ pointWeightUniforms;
38
+ timeUniform;
39
+ vignetteRadiusUniform;
40
+ vignetteSoftnessUniform;
41
+ vignetteStrengthUniform;
42
+ noiseSeed = 0;
43
+ vortexAmountUniform;
44
+ warpAmountUniform;
45
+ warpBiasUniform;
46
+ warpDecayUniform;
47
+ warpScaleUniform;
48
+ isAnimated = true;
49
+ noiseMode = "simplex";
50
+ tonemapMode = "aces";
51
+ warpIterations = 1;
52
+ constructor(layerId) {
53
+ super(layerId);
54
+ this.timeUniform = uniform(0);
55
+ this.animateUniform = uniform(1);
56
+ this.aspectUniform = uniform(1);
57
+ this.activePointsUniform = uniform(5);
58
+ this.warpAmountUniform = uniform(0.18);
59
+ this.warpBiasUniform = uniform(0.5);
60
+ this.warpDecayUniform = uniform(1);
61
+ this.warpScaleUniform = uniform(1.4);
62
+ this.vortexAmountUniform = uniform(0.12);
63
+ this.motionAmountUniform = uniform(0.18);
64
+ this.motionSpeedUniform = uniform(0.2);
65
+ this.falloffUniform = uniform(1.85);
66
+ this.glowStrengthUniform = uniform(0.18);
67
+ this.glowThresholdUniform = uniform(0.62);
68
+ this.grainAmountUniform = uniform(0.03);
69
+ this.vignetteStrengthUniform = uniform(0.18);
70
+ this.vignetteRadiusUniform = uniform(0.9);
71
+ this.vignetteSoftnessUniform = uniform(0.32);
72
+ this.pointColorUniforms = Array.from({ length: 5 }, () => ({
73
+ blue: uniform(1),
74
+ green: uniform(1),
75
+ red: uniform(1),
76
+ }));
77
+ this.pointPositionUniforms = Array.from({ length: 5 }, () => ({
78
+ x: uniform(0),
79
+ y: uniform(0),
80
+ }));
81
+ this.pointWeightUniforms = Array.from({ length: 5 }, () => uniform(1));
82
+ this.rebuildEffectNode();
83
+ }
84
+ updateParams(params) {
85
+ const activePoints = typeof params.activePoints === "number"
86
+ ? Math.max(2, Math.min(5, Math.round(params.activePoints)))
87
+ : 5;
88
+ const noiseSeed = typeof params.noiseSeed === "number" ? params.noiseSeed : 0;
89
+ const warpAmount = typeof params.warpAmount === "number"
90
+ ? Math.max(0, params.warpAmount)
91
+ : 0.18;
92
+ const warpScale = typeof params.warpScale === "number"
93
+ ? Math.max(0.05, params.warpScale)
94
+ : 1.4;
95
+ const warpIterations = typeof params.warpIterations === "number"
96
+ ? Math.max(1, Math.min(5, Math.round(params.warpIterations)))
97
+ : 1;
98
+ const warpDecay = typeof params.warpDecay === "number" ? Math.max(0.1, params.warpDecay) : 1;
99
+ const warpBias = typeof params.warpBias === "number"
100
+ ? Math.max(0, Math.min(1, params.warpBias))
101
+ : 0.5;
102
+ const vortexAmount = typeof params.vortexAmount === "number" ? params.vortexAmount : 0.12;
103
+ const motionAmount = typeof params.motionAmount === "number"
104
+ ? Math.max(0, params.motionAmount)
105
+ : 0.18;
106
+ const motionSpeed = typeof params.motionSpeed === "number"
107
+ ? Math.max(0, params.motionSpeed)
108
+ : 0.2;
109
+ const animateEnabled = params.animate !== false;
110
+ const falloff = typeof params.falloff === "number" ? Math.max(0.25, params.falloff) : 1.85;
111
+ const glowStrength = typeof params.glowStrength === "number"
112
+ ? Math.max(0, params.glowStrength)
113
+ : 0.18;
114
+ const glowThreshold = typeof params.glowThreshold === "number"
115
+ ? Math.max(0, Math.min(1, params.glowThreshold))
116
+ : 0.62;
117
+ const grainAmount = typeof params.grainAmount === "number"
118
+ ? Math.max(0, params.grainAmount)
119
+ : 0.03;
120
+ const vignetteStrength = typeof params.vignetteStrength === "number"
121
+ ? Math.max(0, Math.min(1, params.vignetteStrength))
122
+ : 0.18;
123
+ const vignetteRadius = typeof params.vignetteRadius === "number"
124
+ ? Math.max(0.01, params.vignetteRadius)
125
+ : 0.9;
126
+ const vignetteSoftness = typeof params.vignetteSoftness === "number"
127
+ ? Math.max(0.01, params.vignetteSoftness)
128
+ : 0.32;
129
+ this.activePointsUniform.value = activePoints;
130
+ this.animateUniform.value = animateEnabled ? 1 : 0;
131
+ this.warpAmountUniform.value = warpAmount;
132
+ this.warpBiasUniform.value = warpBias;
133
+ this.warpDecayUniform.value = warpDecay;
134
+ this.warpScaleUniform.value = warpScale;
135
+ this.vortexAmountUniform.value = vortexAmount;
136
+ this.motionAmountUniform.value = motionAmount;
137
+ this.motionSpeedUniform.value = motionSpeed;
138
+ this.falloffUniform.value = falloff;
139
+ this.glowStrengthUniform.value = glowStrength;
140
+ this.glowThresholdUniform.value = glowThreshold;
141
+ this.grainAmountUniform.value = grainAmount;
142
+ this.vignetteStrengthUniform.value = vignetteStrength;
143
+ this.vignetteRadiusUniform.value = vignetteRadius;
144
+ this.vignetteSoftnessUniform.value = vignetteSoftness;
145
+ for (let index = 0; index < 5; index += 1) {
146
+ const point = index + 1;
147
+ const colorKey = `point${point}Color`;
148
+ const positionKey = `point${point}Position`;
149
+ const weightKey = `point${point}Weight`;
150
+ const rgb = hexToRgb(typeof params[colorKey] === "string" ? params[colorKey] : "#ffffff");
151
+ const position = Array.isArray(params[positionKey])
152
+ ? params[positionKey]
153
+ : [0, 0];
154
+ this.pointColorUniforms[index].red.value = rgb[0];
155
+ this.pointColorUniforms[index].green.value = rgb[1];
156
+ this.pointColorUniforms[index].blue.value = rgb[2];
157
+ this.pointPositionUniforms[index].x.value = position[0] ?? 0;
158
+ this.pointPositionUniforms[index].y.value = position[1] ?? 0;
159
+ this.pointWeightUniforms[index].value =
160
+ typeof params[weightKey] === "number"
161
+ ? Math.max(0, params[weightKey])
162
+ : 1;
163
+ }
164
+ let nextTonemapMode = "aces";
165
+ let nextNoiseMode = "simplex";
166
+ switch (params.noiseType) {
167
+ case "perlin":
168
+ case "ridge":
169
+ case "turbulence":
170
+ case "value":
171
+ case "voronoi":
172
+ nextNoiseMode = params.noiseType;
173
+ break;
174
+ default:
175
+ nextNoiseMode = "simplex";
176
+ break;
177
+ }
178
+ switch (params.tonemapMode) {
179
+ case "none":
180
+ case "reinhard":
181
+ case "totos":
182
+ case "cinematic":
183
+ nextTonemapMode = params.tonemapMode;
184
+ break;
185
+ case "uncharted2":
186
+ nextTonemapMode = "totos";
187
+ break;
188
+ default:
189
+ nextTonemapMode = "aces";
190
+ break;
191
+ }
192
+ this.isAnimated =
193
+ animateEnabled && motionSpeed > 0 && (motionAmount > 0 || warpAmount > 0);
194
+ let needsRebuild = false;
195
+ if (nextNoiseMode !== this.noiseMode) {
196
+ this.noiseMode = nextNoiseMode;
197
+ needsRebuild = true;
198
+ }
199
+ if (nextTonemapMode !== this.tonemapMode) {
200
+ this.tonemapMode = nextTonemapMode;
201
+ needsRebuild = true;
202
+ }
203
+ if (warpIterations !== this.warpIterations) {
204
+ this.warpIterations = warpIterations;
205
+ needsRebuild = true;
206
+ }
207
+ if (noiseSeed !== this.noiseSeed) {
208
+ this.noiseSeed = noiseSeed;
209
+ needsRebuild = true;
210
+ }
211
+ if (needsRebuild) {
212
+ this.rebuildEffectNode();
213
+ }
214
+ }
215
+ resize(width, height) {
216
+ this.aspectUniform.value = width / Math.max(height, 1);
217
+ }
218
+ needsContinuousRender() {
219
+ return this.isAnimated;
220
+ }
221
+ beforeRender(time) {
222
+ this.timeUniform.value = time;
223
+ }
224
+ buildEffectNode() {
225
+ const hasRequiredUniforms = this.timeUniform &&
226
+ this.aspectUniform &&
227
+ this.activePointsUniform &&
228
+ this.warpAmountUniform &&
229
+ this.warpBiasUniform &&
230
+ this.warpDecayUniform &&
231
+ this.warpScaleUniform &&
232
+ this.vortexAmountUniform &&
233
+ this.motionAmountUniform &&
234
+ this.motionSpeedUniform &&
235
+ this.falloffUniform &&
236
+ this.glowStrengthUniform &&
237
+ this.glowThresholdUniform &&
238
+ this.grainAmountUniform &&
239
+ this.vignetteStrengthUniform &&
240
+ this.vignetteRadiusUniform &&
241
+ this.vignetteSoftnessUniform;
242
+ if (!hasRequiredUniforms ||
243
+ this.pointColorUniforms.length === 0 ||
244
+ this.pointPositionUniforms.length === 0 ||
245
+ this.pointWeightUniforms.length === 0) {
246
+ return this.inputNode;
247
+ }
248
+ return Fn(() => {
249
+ const baseUv = vec2(uv().x.mul(2).sub(1).mul(this.aspectUniform), float(1).sub(uv().y).mul(2).sub(1));
250
+ const vignetteUv = vec2(uv().x.mul(2).sub(1), float(1).sub(uv().y).mul(2).sub(1));
251
+ const time = this.timeUniform
252
+ .mul(this.motionSpeedUniform)
253
+ .mul(this.animateUniform);
254
+ const warpedUv = baseUv.toVar();
255
+ const biasX = this.warpBiasUniform.mul(2);
256
+ const biasY = float(1).sub(this.warpBiasUniform).mul(2);
257
+ for (let i = 1; i <= this.warpIterations; i += 1) {
258
+ const strength = this.warpAmountUniform.div(pow(float(i), this.warpDecayUniform));
259
+ const warpInput = warpedUv
260
+ .mul(this.warpScaleUniform)
261
+ .add(float(this.noiseSeed).mul(73.7));
262
+ const timeOffsetX = time.mul(0.1).add(float(i * 100));
263
+ const timeOffsetY = time.mul(0.1).add(float(i * 200));
264
+ let noiseX;
265
+ let noiseY;
266
+ switch (this.noiseMode) {
267
+ case "perlin":
268
+ noiseX = perlinNoise3d(vec3(warpInput, timeOffsetX));
269
+ noiseY = perlinNoise3d(vec3(warpInput.add(vec2(13.7, 7.1)), timeOffsetY));
270
+ break;
271
+ case "value":
272
+ noiseX = valueNoise3d(vec3(warpInput, timeOffsetX));
273
+ noiseY = valueNoise3d(vec3(warpInput.add(vec2(13.7, 7.1)), timeOffsetY));
274
+ break;
275
+ case "voronoi":
276
+ noiseX = voronoiNoise3d(vec3(warpInput, timeOffsetX)).mul(2).sub(1);
277
+ noiseY = voronoiNoise3d(vec3(warpInput.add(vec2(13.7, 7.1)), timeOffsetY))
278
+ .mul(2)
279
+ .sub(1);
280
+ break;
281
+ case "ridge":
282
+ noiseX = ridgeNoise(vec3(warpInput, timeOffsetX)).mul(2).sub(1);
283
+ noiseY = ridgeNoise(vec3(warpInput.add(vec2(13.7, 7.1)), timeOffsetY))
284
+ .mul(2)
285
+ .sub(1);
286
+ break;
287
+ case "turbulence":
288
+ {
289
+ const disp = turbulence(warpInput, timeOffsetX.mul(20), {
290
+ _amp: 0.7,
291
+ _exp: 1.4,
292
+ _freq: 2,
293
+ _num: 10,
294
+ _speed: 0.3,
295
+ });
296
+ noiseX = disp.x;
297
+ noiseY = disp.y;
298
+ }
299
+ break;
300
+ default:
301
+ noiseX = simplexNoise3d(vec3(warpInput, timeOffsetX));
302
+ noiseY = simplexNoise3d(vec3(warpInput.add(vec2(13.7, 7.1)), timeOffsetY));
303
+ break;
304
+ }
305
+ warpedUv.x.addAssign(strength.mul(noiseX).mul(biasX));
306
+ warpedUv.y.addAssign(strength.mul(noiseY).mul(biasY));
307
+ }
308
+ const distanceFromCenter = max(dot(warpedUv, warpedUv), float(1e-4)).sqrt();
309
+ const vortexAngle = distanceFromCenter.mul(this.vortexAmountUniform);
310
+ const rotatedUv = vec2(warpedUv.x.mul(cos(vortexAngle)).sub(warpedUv.y.mul(sin(vortexAngle))), warpedUv.x.mul(sin(vortexAngle)).add(warpedUv.y.mul(cos(vortexAngle))));
311
+ const finalColor = vec3(0).toVar();
312
+ const totalWeight = float(0).toVar();
313
+ for (let index = 0; index < 5; index += 1) {
314
+ const pointIndex = float(index + 1);
315
+ const active = select(this.activePointsUniform.greaterThanEqual(pointIndex), float(1), float(0));
316
+ const pointPosition = vec2(this.pointPositionUniforms[index].x.add(sin(time.mul(pointIndex.mul(0.73)).add(pointIndex)).mul(this.motionAmountUniform)), this.pointPositionUniforms[index].y.add(cos(time.mul(pointIndex.mul(0.41)).add(pointIndex.mul(1.7))).mul(this.motionAmountUniform)));
317
+ const delta = rotatedUv.sub(pointPosition);
318
+ const distance = max(dot(delta, delta), float(1e-4)).sqrt();
319
+ const baseWeight = float(1).div(max(pow(distance, this.falloffUniform), float(1e-4)));
320
+ const weighted = baseWeight
321
+ .mul(this.pointWeightUniforms[index])
322
+ .mul(active);
323
+ const color = vec3(this.pointColorUniforms[index].red, this.pointColorUniforms[index].green, this.pointColorUniforms[index].blue);
324
+ finalColor.addAssign(color.mul(weighted));
325
+ totalWeight.addAssign(weighted);
326
+ }
327
+ finalColor.assign(finalColor.div(max(totalWeight, float(1e-4))));
328
+ switch (this.tonemapMode) {
329
+ case "reinhard":
330
+ finalColor.assign(reinhardTonemap(finalColor));
331
+ break;
332
+ case "totos":
333
+ finalColor.assign(totosTonemap(finalColor));
334
+ break;
335
+ case "cinematic":
336
+ finalColor.assign(cinematicTonemap(finalColor));
337
+ break;
338
+ case "none":
339
+ break;
340
+ default:
341
+ finalColor.assign(acesTonemap(finalColor));
342
+ break;
343
+ }
344
+ const luma = dot(finalColor, vec3(0.2126, 0.7152, 0.0722));
345
+ const glow = smoothstep(this.glowThresholdUniform, float(1), luma).mul(this.glowStrengthUniform);
346
+ finalColor.addAssign(vec3(glow, glow, glow));
347
+ const grain = grainTexturePattern(uv())
348
+ .sub(0.5)
349
+ .mul(this.grainAmountUniform);
350
+ finalColor.addAssign(vec3(grain, grain, grain));
351
+ const vignetteDistance = max(dot(vignetteUv, vignetteUv), float(1e-4)).sqrt();
352
+ const vignette = smoothstep(this.vignetteRadiusUniform, this.vignetteRadiusUniform.sub(this.vignetteSoftnessUniform), vignetteDistance);
353
+ const vignetteMix = mix(float(1), vignette, this.vignetteStrengthUniform);
354
+ finalColor.mulAssign(vignetteMix);
355
+ return vec4(clamp(finalColor, vec3(float(0), float(0), float(0)), vec3(float(1), float(1), float(1))), float(1));
356
+ })();
357
+ }
358
+ }
@@ -0,0 +1,65 @@
1
+ import { type TSLNode } from "three/tsl";
2
+ import * as THREE from "three/webgpu";
3
+ import { PassNode } from "./pass-node";
4
+ import type { LayerParameterValues } from "../types/editor";
5
+ type Node = TSLNode;
6
+ export declare class HalftonePass extends PassNode {
7
+ private bloomEnabled;
8
+ private bloomNode;
9
+ private colorMode;
10
+ private cmykBlendMode;
11
+ private readonly spacingUniform;
12
+ private readonly dotSizeUniform;
13
+ private readonly dotMinUniform;
14
+ private readonly shapeUniform;
15
+ private readonly angleUniform;
16
+ private readonly contrastUniform;
17
+ private readonly softnessUniform;
18
+ private readonly invertUniform;
19
+ private readonly inkRedUniform;
20
+ private readonly inkGreenUniform;
21
+ private readonly inkBlueUniform;
22
+ private readonly duotoneLightUniform;
23
+ private readonly duotoneDarkUniform;
24
+ private readonly customBgColorUniform;
25
+ private readonly customColorCountUniform;
26
+ private readonly customLuminanceBiasUniform;
27
+ private readonly customColor1Uniform;
28
+ private readonly customColor2Uniform;
29
+ private readonly customColor3Uniform;
30
+ private readonly customColor4Uniform;
31
+ private readonly bloomIntensityUniform;
32
+ private readonly bloomRadiusUniform;
33
+ private readonly bloomSoftnessUniform;
34
+ private readonly bloomThresholdUniform;
35
+ private readonly cyanAngleUniform;
36
+ private readonly magentaAngleUniform;
37
+ private readonly yellowAngleUniform;
38
+ private readonly keyAngleUniform;
39
+ private readonly paperRedUniform;
40
+ private readonly paperGreenUniform;
41
+ private readonly paperBlueUniform;
42
+ private readonly paperGrainUniform;
43
+ private readonly gcrUniform;
44
+ private readonly registrationUniform;
45
+ private readonly inkCyanUniform;
46
+ private readonly inkMagentaUniform;
47
+ private readonly inkYellowUniform;
48
+ private readonly inkKeyUniform;
49
+ private readonly dotGainUniform;
50
+ private readonly dotMorphUniform;
51
+ private sampleNodes;
52
+ constructor(layerId: string);
53
+ render(renderer: THREE.WebGPURenderer, inputTexture: THREE.Texture, outputTarget: THREE.WebGLRenderTarget, time: number, delta: number): void;
54
+ updateParams(params: LayerParameterValues): void;
55
+ dispose(): void;
56
+ protected buildEffectNode(): Node;
57
+ private buildSingleChannelNode;
58
+ private buildCmykNode;
59
+ private buildHalftoneGrid;
60
+ private normalizeBloomRadius;
61
+ private normalizeBloomSoftness;
62
+ private disposeBloomNode;
63
+ private getBloomTextureNode;
64
+ }
65
+ export {};