@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,521 +0,0 @@
1
- import {
2
- clamp,
3
- cos,
4
- dot,
5
- Fn,
6
- float,
7
- max,
8
- mix,
9
- pow,
10
- select,
11
- sin,
12
- smoothstep,
13
- type TSLNode,
14
- uniform,
15
- uv,
16
- vec2,
17
- vec3,
18
- vec4,
19
- } from "three/tsl"
20
- import type { LayerParameterValues } from "../types/editor"
21
- import { PassNode } from "./pass-node"
22
- import {
23
- acesTonemap,
24
- cinematicTonemap,
25
- reinhardTonemap,
26
- totosTonemap,
27
- } from "./shaders/tsl/color/tonemapping"
28
- import { perlinNoise3d } from "./shaders/tsl/noise/perlin-noise-3d"
29
- import { ridgeNoise } from "./shaders/tsl/noise/ridge-noise"
30
- import { simplexNoise3d } from "./shaders/tsl/noise/simplex-noise-3d"
31
- import { turbulence } from "./shaders/tsl/noise/turbulence"
32
- import { valueNoise3d } from "./shaders/tsl/noise/value-noise-3d"
33
- import { voronoiNoise3d } from "./shaders/tsl/noise/voronoi-noise-3d"
34
- import { grainTexturePattern } from "./shaders/tsl/patterns/grain-texture-pattern"
35
-
36
- type Node = TSLNode
37
- type NoiseMode =
38
- | "perlin"
39
- | "ridge"
40
- | "simplex"
41
- | "turbulence"
42
- | "value"
43
- | "voronoi"
44
- type TonemapMode = "aces" | "cinematic" | "none" | "reinhard" | "totos"
45
-
46
- function hexToRgb(hex: string): [number, number, number] {
47
- const normalized = hex.trim().replace("#", "")
48
- const value =
49
- normalized.length === 3
50
- ? normalized
51
- .split("")
52
- .map((entry) => `${entry}${entry}`)
53
- .join("")
54
- : normalized.padEnd(6, "0").slice(0, 6)
55
-
56
- return [
57
- Number.parseInt(value.slice(0, 2), 16) / 255,
58
- Number.parseInt(value.slice(2, 4), 16) / 255,
59
- Number.parseInt(value.slice(4, 6), 16) / 255,
60
- ]
61
- }
62
-
63
- export class GradientPass extends PassNode {
64
- private readonly activePointsUniform: Node
65
- private readonly animateUniform: Node
66
- private readonly aspectUniform: Node
67
- private readonly falloffUniform: Node
68
- private readonly glowStrengthUniform: Node
69
- private readonly glowThresholdUniform: Node
70
- private readonly grainAmountUniform: Node
71
- private readonly motionAmountUniform: Node
72
- private readonly motionSpeedUniform: Node
73
- private readonly pointColorUniforms: {
74
- blue: Node
75
- green: Node
76
- red: Node
77
- }[]
78
- private readonly pointPositionUniforms: {
79
- x: Node
80
- y: Node
81
- }[]
82
- private readonly pointWeightUniforms: Node[]
83
- private readonly timeUniform: Node
84
- private readonly vignetteRadiusUniform: Node
85
- private readonly vignetteSoftnessUniform: Node
86
- private readonly vignetteStrengthUniform: Node
87
- private noiseSeed = 0
88
- private readonly vortexAmountUniform: Node
89
- private readonly warpAmountUniform: Node
90
- private readonly warpBiasUniform: Node
91
- private readonly warpDecayUniform: Node
92
- private readonly warpScaleUniform: Node
93
-
94
- private isAnimated = true
95
- private noiseMode: NoiseMode = "simplex"
96
- private tonemapMode: TonemapMode = "aces"
97
- private warpIterations = 1
98
-
99
- constructor(layerId: string) {
100
- super(layerId)
101
- this.timeUniform = uniform(0)
102
- this.animateUniform = uniform(1)
103
- this.aspectUniform = uniform(1)
104
- this.activePointsUniform = uniform(5)
105
- this.warpAmountUniform = uniform(0.18)
106
- this.warpBiasUniform = uniform(0.5)
107
- this.warpDecayUniform = uniform(1)
108
- this.warpScaleUniform = uniform(1.4)
109
- this.vortexAmountUniform = uniform(0.12)
110
- this.motionAmountUniform = uniform(0.18)
111
- this.motionSpeedUniform = uniform(0.2)
112
- this.falloffUniform = uniform(1.85)
113
- this.glowStrengthUniform = uniform(0.18)
114
- this.glowThresholdUniform = uniform(0.62)
115
- this.grainAmountUniform = uniform(0.03)
116
- this.vignetteStrengthUniform = uniform(0.18)
117
- this.vignetteRadiusUniform = uniform(0.9)
118
- this.vignetteSoftnessUniform = uniform(0.32)
119
- this.pointColorUniforms = Array.from({ length: 5 }, () => ({
120
- blue: uniform(1),
121
- green: uniform(1),
122
- red: uniform(1),
123
- }))
124
- this.pointPositionUniforms = Array.from({ length: 5 }, () => ({
125
- x: uniform(0),
126
- y: uniform(0),
127
- }))
128
- this.pointWeightUniforms = Array.from({ length: 5 }, () => uniform(1))
129
- this.rebuildEffectNode()
130
- }
131
-
132
- override updateParams(params: LayerParameterValues): void {
133
- const activePoints =
134
- typeof params.activePoints === "number"
135
- ? Math.max(2, Math.min(5, Math.round(params.activePoints)))
136
- : 5
137
- const noiseSeed =
138
- typeof params.noiseSeed === "number" ? params.noiseSeed : 0
139
- const warpAmount =
140
- typeof params.warpAmount === "number"
141
- ? Math.max(0, params.warpAmount)
142
- : 0.18
143
- const warpScale =
144
- typeof params.warpScale === "number"
145
- ? Math.max(0.05, params.warpScale)
146
- : 1.4
147
- const warpIterations =
148
- typeof params.warpIterations === "number"
149
- ? Math.max(1, Math.min(5, Math.round(params.warpIterations)))
150
- : 1
151
- const warpDecay =
152
- typeof params.warpDecay === "number" ? Math.max(0.1, params.warpDecay) : 1
153
- const warpBias =
154
- typeof params.warpBias === "number"
155
- ? Math.max(0, Math.min(1, params.warpBias))
156
- : 0.5
157
- const vortexAmount =
158
- typeof params.vortexAmount === "number" ? params.vortexAmount : 0.12
159
- const motionAmount =
160
- typeof params.motionAmount === "number"
161
- ? Math.max(0, params.motionAmount)
162
- : 0.18
163
- const motionSpeed =
164
- typeof params.motionSpeed === "number"
165
- ? Math.max(0, params.motionSpeed)
166
- : 0.2
167
- const animateEnabled = params.animate !== false
168
- const falloff =
169
- typeof params.falloff === "number" ? Math.max(0.25, params.falloff) : 1.85
170
- const glowStrength =
171
- typeof params.glowStrength === "number"
172
- ? Math.max(0, params.glowStrength)
173
- : 0.18
174
- const glowThreshold =
175
- typeof params.glowThreshold === "number"
176
- ? Math.max(0, Math.min(1, params.glowThreshold))
177
- : 0.62
178
- const grainAmount =
179
- typeof params.grainAmount === "number"
180
- ? Math.max(0, params.grainAmount)
181
- : 0.03
182
- const vignetteStrength =
183
- typeof params.vignetteStrength === "number"
184
- ? Math.max(0, Math.min(1, params.vignetteStrength))
185
- : 0.18
186
- const vignetteRadius =
187
- typeof params.vignetteRadius === "number"
188
- ? Math.max(0.01, params.vignetteRadius)
189
- : 0.9
190
- const vignetteSoftness =
191
- typeof params.vignetteSoftness === "number"
192
- ? Math.max(0.01, params.vignetteSoftness)
193
- : 0.32
194
-
195
- this.activePointsUniform.value = activePoints
196
- this.animateUniform.value = animateEnabled ? 1 : 0
197
- this.warpAmountUniform.value = warpAmount
198
- this.warpBiasUniform.value = warpBias
199
- this.warpDecayUniform.value = warpDecay
200
- this.warpScaleUniform.value = warpScale
201
- this.vortexAmountUniform.value = vortexAmount
202
- this.motionAmountUniform.value = motionAmount
203
- this.motionSpeedUniform.value = motionSpeed
204
- this.falloffUniform.value = falloff
205
- this.glowStrengthUniform.value = glowStrength
206
- this.glowThresholdUniform.value = glowThreshold
207
- this.grainAmountUniform.value = grainAmount
208
- this.vignetteStrengthUniform.value = vignetteStrength
209
- this.vignetteRadiusUniform.value = vignetteRadius
210
- this.vignetteSoftnessUniform.value = vignetteSoftness
211
-
212
- for (let index = 0; index < 5; index += 1) {
213
- const point = index + 1
214
- const colorKey = `point${point}Color`
215
- const positionKey = `point${point}Position`
216
- const weightKey = `point${point}Weight`
217
- const rgb = hexToRgb(
218
- typeof params[colorKey] === "string" ? params[colorKey] : "#ffffff"
219
- )
220
- const position = Array.isArray(params[positionKey])
221
- ? params[positionKey]
222
- : [0, 0]
223
-
224
- this.pointColorUniforms[index]!.red.value = rgb[0]
225
- this.pointColorUniforms[index]!.green.value = rgb[1]
226
- this.pointColorUniforms[index]!.blue.value = rgb[2]
227
- this.pointPositionUniforms[index]!.x.value = position[0] ?? 0
228
- this.pointPositionUniforms[index]!.y.value = position[1] ?? 0
229
- this.pointWeightUniforms[index]!.value =
230
- typeof params[weightKey] === "number"
231
- ? Math.max(0, params[weightKey])
232
- : 1
233
- }
234
-
235
- let nextTonemapMode: TonemapMode = "aces"
236
- let nextNoiseMode: NoiseMode = "simplex"
237
-
238
- switch (params.noiseType) {
239
- case "perlin":
240
- case "ridge":
241
- case "turbulence":
242
- case "value":
243
- case "voronoi":
244
- nextNoiseMode = params.noiseType
245
- break
246
- default:
247
- nextNoiseMode = "simplex"
248
- break
249
- }
250
-
251
- switch (params.tonemapMode) {
252
- case "none":
253
- case "reinhard":
254
- case "totos":
255
- case "cinematic":
256
- nextTonemapMode = params.tonemapMode
257
- break
258
- case "uncharted2":
259
- nextTonemapMode = "totos"
260
- break
261
- default:
262
- nextTonemapMode = "aces"
263
- break
264
- }
265
-
266
- this.isAnimated =
267
- animateEnabled && motionSpeed > 0 && (motionAmount > 0 || warpAmount > 0)
268
-
269
- let needsRebuild = false
270
-
271
- if (nextNoiseMode !== this.noiseMode) {
272
- this.noiseMode = nextNoiseMode
273
- needsRebuild = true
274
- }
275
-
276
- if (nextTonemapMode !== this.tonemapMode) {
277
- this.tonemapMode = nextTonemapMode
278
- needsRebuild = true
279
- }
280
-
281
- if (warpIterations !== this.warpIterations) {
282
- this.warpIterations = warpIterations
283
- needsRebuild = true
284
- }
285
-
286
- if (noiseSeed !== this.noiseSeed) {
287
- this.noiseSeed = noiseSeed
288
- needsRebuild = true
289
- }
290
-
291
- if (needsRebuild) {
292
- this.rebuildEffectNode()
293
- }
294
- }
295
-
296
- override resize(width: number, height: number): void {
297
- this.aspectUniform.value = width / Math.max(height, 1)
298
- }
299
-
300
- override needsContinuousRender(): boolean {
301
- return this.isAnimated
302
- }
303
-
304
- protected override beforeRender(time: number): void {
305
- this.timeUniform.value = time
306
- }
307
-
308
- protected override buildEffectNode(): Node {
309
- const hasRequiredUniforms =
310
- this.timeUniform &&
311
- this.aspectUniform &&
312
- this.activePointsUniform &&
313
- this.warpAmountUniform &&
314
- this.warpBiasUniform &&
315
- this.warpDecayUniform &&
316
- this.warpScaleUniform &&
317
- this.vortexAmountUniform &&
318
- this.motionAmountUniform &&
319
- this.motionSpeedUniform &&
320
- this.falloffUniform &&
321
- this.glowStrengthUniform &&
322
- this.glowThresholdUniform &&
323
- this.grainAmountUniform &&
324
- this.vignetteStrengthUniform &&
325
- this.vignetteRadiusUniform &&
326
- this.vignetteSoftnessUniform
327
-
328
- if (
329
- !hasRequiredUniforms ||
330
- this.pointColorUniforms.length === 0 ||
331
- this.pointPositionUniforms.length === 0 ||
332
- this.pointWeightUniforms.length === 0
333
- ) {
334
- return this.inputNode
335
- }
336
-
337
- return Fn(() => {
338
- const baseUv = vec2(
339
- uv().x.mul(2).sub(1).mul(this.aspectUniform),
340
- float(1).sub(uv().y).mul(2).sub(1)
341
- )
342
- const vignetteUv = vec2(
343
- uv().x.mul(2).sub(1),
344
- float(1).sub(uv().y).mul(2).sub(1)
345
- )
346
- const time = this.timeUniform
347
- .mul(this.motionSpeedUniform)
348
- .mul(this.animateUniform)
349
- const warpedUv = baseUv.toVar()
350
- const biasX = this.warpBiasUniform.mul(2)
351
- const biasY = float(1).sub(this.warpBiasUniform).mul(2)
352
-
353
- for (let i = 1; i <= this.warpIterations; i += 1) {
354
- const strength = this.warpAmountUniform.div(
355
- pow(float(i), this.warpDecayUniform)
356
- )
357
- const warpInput = warpedUv
358
- .mul(this.warpScaleUniform)
359
- .add(float(this.noiseSeed).mul(73.7))
360
- const timeOffsetX = time.mul(0.1).add(float(i * 100))
361
- const timeOffsetY = time.mul(0.1).add(float(i * 200))
362
- let noiseX: Node
363
- let noiseY: Node
364
-
365
- switch (this.noiseMode) {
366
- case "perlin":
367
- noiseX = perlinNoise3d(vec3(warpInput, timeOffsetX))
368
- noiseY = perlinNoise3d(
369
- vec3(warpInput.add(vec2(13.7, 7.1)), timeOffsetY)
370
- )
371
- break
372
- case "value":
373
- noiseX = valueNoise3d(vec3(warpInput, timeOffsetX))
374
- noiseY = valueNoise3d(
375
- vec3(warpInput.add(vec2(13.7, 7.1)), timeOffsetY)
376
- )
377
- break
378
- case "voronoi":
379
- noiseX = voronoiNoise3d(vec3(warpInput, timeOffsetX)).mul(2).sub(1)
380
- noiseY = voronoiNoise3d(
381
- vec3(warpInput.add(vec2(13.7, 7.1)), timeOffsetY)
382
- )
383
- .mul(2)
384
- .sub(1)
385
- break
386
- case "ridge":
387
- noiseX = ridgeNoise(vec3(warpInput, timeOffsetX)).mul(2).sub(1)
388
- noiseY = ridgeNoise(
389
- vec3(warpInput.add(vec2(13.7, 7.1)), timeOffsetY)
390
- )
391
- .mul(2)
392
- .sub(1)
393
- break
394
- case "turbulence":
395
- {
396
- const disp = turbulence(warpInput, timeOffsetX.mul(20), {
397
- _amp: 0.7,
398
- _exp: 1.4,
399
- _freq: 2,
400
- _num: 10,
401
- _speed: 0.3,
402
- })
403
- noiseX = disp.x
404
- noiseY = disp.y
405
- }
406
- break
407
- default:
408
- noiseX = simplexNoise3d(vec3(warpInput, timeOffsetX))
409
- noiseY = simplexNoise3d(
410
- vec3(warpInput.add(vec2(13.7, 7.1)), timeOffsetY)
411
- )
412
- break
413
- }
414
-
415
- warpedUv.x.addAssign(strength.mul(noiseX).mul(biasX))
416
- warpedUv.y.addAssign(strength.mul(noiseY).mul(biasY))
417
- }
418
-
419
- const distanceFromCenter = max(
420
- dot(warpedUv, warpedUv),
421
- float(1e-4)
422
- ).sqrt()
423
- const vortexAngle = distanceFromCenter.mul(this.vortexAmountUniform)
424
- const rotatedUv = vec2(
425
- warpedUv.x.mul(cos(vortexAngle)).sub(warpedUv.y.mul(sin(vortexAngle))),
426
- warpedUv.x.mul(sin(vortexAngle)).add(warpedUv.y.mul(cos(vortexAngle)))
427
- )
428
-
429
- const finalColor = vec3(0).toVar()
430
- const totalWeight = float(0).toVar()
431
-
432
- for (let index = 0; index < 5; index += 1) {
433
- const pointIndex = float(index + 1)
434
- const active = select(
435
- this.activePointsUniform.greaterThanEqual(pointIndex),
436
- float(1),
437
- float(0)
438
- )
439
- const pointPosition = vec2(
440
- this.pointPositionUniforms[index]!.x.add(
441
- sin(time.mul(pointIndex.mul(0.73)).add(pointIndex)).mul(
442
- this.motionAmountUniform
443
- )
444
- ),
445
- this.pointPositionUniforms[index]!.y.add(
446
- cos(time.mul(pointIndex.mul(0.41)).add(pointIndex.mul(1.7))).mul(
447
- this.motionAmountUniform
448
- )
449
- )
450
- )
451
- const delta = rotatedUv.sub(pointPosition)
452
- const distance = max(dot(delta, delta), float(1e-4)).sqrt()
453
- const baseWeight = float(1).div(
454
- max(pow(distance, this.falloffUniform), float(1e-4))
455
- )
456
- const weighted = baseWeight
457
- .mul(this.pointWeightUniforms[index]!)
458
- .mul(active)
459
- const color = vec3(
460
- this.pointColorUniforms[index]!.red,
461
- this.pointColorUniforms[index]!.green,
462
- this.pointColorUniforms[index]!.blue
463
- )
464
-
465
- finalColor.addAssign(color.mul(weighted))
466
- totalWeight.addAssign(weighted)
467
- }
468
-
469
- finalColor.assign(finalColor.div(max(totalWeight, float(1e-4))))
470
-
471
- switch (this.tonemapMode) {
472
- case "reinhard":
473
- finalColor.assign(reinhardTonemap(finalColor))
474
- break
475
- case "totos":
476
- finalColor.assign(totosTonemap(finalColor))
477
- break
478
- case "cinematic":
479
- finalColor.assign(cinematicTonemap(finalColor))
480
- break
481
- case "none":
482
- break
483
- default:
484
- finalColor.assign(acesTonemap(finalColor))
485
- break
486
- }
487
-
488
- const luma = dot(finalColor, vec3(0.2126, 0.7152, 0.0722))
489
- const glow = smoothstep(this.glowThresholdUniform, float(1), luma).mul(
490
- this.glowStrengthUniform
491
- )
492
- finalColor.addAssign(vec3(glow, glow, glow))
493
-
494
- const grain = grainTexturePattern(uv())
495
- .sub(0.5)
496
- .mul(this.grainAmountUniform)
497
- finalColor.addAssign(vec3(grain, grain, grain))
498
-
499
- const vignetteDistance = max(
500
- dot(vignetteUv, vignetteUv),
501
- float(1e-4)
502
- ).sqrt()
503
- const vignette = smoothstep(
504
- this.vignetteRadiusUniform,
505
- this.vignetteRadiusUniform.sub(this.vignetteSoftnessUniform),
506
- vignetteDistance
507
- )
508
- const vignetteMix = mix(float(1), vignette, this.vignetteStrengthUniform)
509
- finalColor.mulAssign(vignetteMix)
510
-
511
- return vec4(
512
- clamp(
513
- finalColor,
514
- vec3(float(0), float(0), float(0)),
515
- vec3(float(1), float(1), float(1))
516
- ),
517
- float(1)
518
- )
519
- })()
520
- }
521
- }