@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,117 +0,0 @@
1
- import { clamp, float, type TSLNode, uniform, vec3, vec4 } from "three/tsl"
2
- import { CUSTOM_SHADER_ENTRY_EXPORT } from "@/lib/editor/custom-shader/shared"
3
- import { compileCustomShaderModule } from "@/renderer/custom-shader-runtime"
4
- import { PassNode } from "@/renderer/pass-node"
5
- import type { LayerParameterValues } from "@/types/editor"
6
- import { useLayerStore } from "@/store/layer-store"
7
-
8
- type Node = TSLNode
9
-
10
- export class CustomShaderPass extends PassNode {
11
- private compiledSketch: (() => Node) | null = null
12
- private compileRequestId = 0
13
- private lastCompileSignature = ""
14
- private readonly timeUniform: Node
15
-
16
- constructor(layerId: string) {
17
- super(layerId)
18
- this.timeUniform = uniform(0)
19
- this.rebuildEffectNode()
20
- }
21
-
22
- override needsContinuousRender(): boolean {
23
- return true
24
- }
25
-
26
- override updateParams(params: LayerParameterValues): void {
27
- const sourceCode =
28
- typeof params.sourceCode === "string" ? params.sourceCode : ""
29
- const entryExport =
30
- typeof params.entryExport === "string" && params.entryExport.trim()
31
- ? params.entryExport.trim()
32
- : CUSTOM_SHADER_ENTRY_EXPORT
33
- const sourceFileName =
34
- typeof params.sourceFileName === "string" ? params.sourceFileName : ""
35
- const sourceRevision =
36
- typeof params.sourceRevision === "number" ? params.sourceRevision : 0
37
- const compileSignature = [
38
- entryExport,
39
- sourceCode,
40
- sourceFileName,
41
- sourceRevision,
42
- ].join("\n")
43
-
44
- if (compileSignature === this.lastCompileSignature) {
45
- return
46
- }
47
-
48
- this.lastCompileSignature = compileSignature
49
- this.compileRequestId += 1
50
- const requestId = this.compileRequestId
51
-
52
- void compileCustomShaderModule({
53
- entryExport,
54
- extraScope: {
55
- time: this.timeUniform,
56
- },
57
- fileName: sourceFileName || "custom-shader.ts",
58
- sourceCode,
59
- })
60
- .then((compiled) => {
61
- if (requestId !== this.compileRequestId) {
62
- return
63
- }
64
-
65
- this.compiledSketch = compiled.buildNode
66
- useLayerStore.getState().setLayerRuntimeError(this.layerId, null)
67
- this.rebuildEffectNode()
68
- })
69
- .catch((error) => {
70
- if (requestId !== this.compileRequestId) {
71
- return
72
- }
73
-
74
- this.compiledSketch = null
75
- useLayerStore
76
- .getState()
77
- .setLayerRuntimeError(
78
- this.layerId,
79
- error instanceof Error
80
- ? error.message
81
- : "Custom shader compilation failed."
82
- )
83
- this.rebuildEffectNode()
84
- })
85
- }
86
-
87
- protected override beforeRender(time: number): void {
88
- this.timeUniform.value = time
89
- }
90
-
91
- protected override buildEffectNode(): Node {
92
- if (!this.compiledSketch) {
93
- return vec4(vec3(float(0), float(0), float(0)), float(1))
94
- }
95
-
96
- try {
97
- return vec4(
98
- clamp(
99
- this.compiledSketch(),
100
- vec3(float(0), float(0), float(0)),
101
- vec3(float(1), float(1), float(1))
102
- ),
103
- float(1)
104
- )
105
- } catch (error) {
106
- useLayerStore
107
- .getState()
108
- .setLayerRuntimeError(
109
- this.layerId,
110
- error instanceof Error
111
- ? error.message
112
- : "Custom shader execution failed."
113
- )
114
- return vec4(vec3(float(0), float(0), float(0)), float(1))
115
- }
116
- }
117
- }
@@ -1,309 +0,0 @@
1
- import type { TSLNode } from "three/tsl"
2
- import * as tsl from "three/tsl"
3
- import * as shaderUtils from "@/renderer/shaders/tsl/utils"
4
-
5
- type CompiledShaderModule = {
6
- buildNode: () => TSLNode
7
- }
8
-
9
- const PRELUDE = {
10
- ...tsl,
11
- ...shaderUtils,
12
- }
13
-
14
- const TRANSPILED_CACHE = new Map<string, string>()
15
- let typescriptPromise: Promise<typeof import("typescript")> | null = null
16
-
17
- function isNodeLike(value: unknown): value is TSLNode {
18
- return Boolean(
19
- value &&
20
- typeof value === "object" &&
21
- "mul" in value &&
22
- "add" in value &&
23
- "sub" in value
24
- )
25
- }
26
-
27
- function formatDiagnostics(
28
- compiler: typeof import("typescript"),
29
- diagnostics: readonly import("typescript").Diagnostic[] | undefined
30
- ): string | null {
31
- if (!(diagnostics && diagnostics.length > 0)) {
32
- return null
33
- }
34
-
35
- return diagnostics
36
- .map((diagnostic) =>
37
- compiler.flattenDiagnosticMessageText(diagnostic.messageText, "\n")
38
- )
39
- .join("\n\n")
40
- }
41
-
42
- function createSourceFile(
43
- compiler: typeof import("typescript"),
44
- fileName: string,
45
- sourceCode: string
46
- ) {
47
- return compiler.createSourceFile(
48
- fileName,
49
- sourceCode,
50
- compiler.ScriptTarget.ES2020,
51
- true,
52
- getScriptKind(compiler, fileName)
53
- )
54
- }
55
-
56
- function getSourceFileDiagnostics(sourceFile: import("typescript").SourceFile) {
57
- return (
58
- sourceFile as import("typescript").SourceFile & {
59
- parseDiagnostics?: readonly import("typescript").Diagnostic[]
60
- }
61
- ).parseDiagnostics
62
- }
63
-
64
- function isDirectiveStatement(
65
- compiler: typeof import("typescript"),
66
- statement: import("typescript").Statement
67
- ) {
68
- return (
69
- compiler.isExpressionStatement(statement) &&
70
- compiler.isStringLiteral(statement.expression) &&
71
- (statement.expression.text === "use client" ||
72
- statement.expression.text === "use server")
73
- )
74
- }
75
-
76
- function statementContainsJsx(
77
- compiler: typeof import("typescript"),
78
- statement: import("typescript").Statement
79
- ): boolean {
80
- let containsJsx = false
81
-
82
- const visit = (node: import("typescript").Node) => {
83
- if (
84
- compiler.isJsxElement(node) ||
85
- compiler.isJsxSelfClosingElement(node) ||
86
- compiler.isJsxFragment(node)
87
- ) {
88
- containsJsx = true
89
- return
90
- }
91
-
92
- compiler.forEachChild(node, visit)
93
- }
94
-
95
- compiler.forEachChild(statement, visit)
96
-
97
- return containsJsx
98
- }
99
-
100
- async function sanitizeCustomShaderSource({
101
- fileName,
102
- sourceCode,
103
- }: {
104
- fileName: string
105
- sourceCode: string
106
- }) {
107
- const compiler = await getTypeScript()
108
- const sourceFile = createSourceFile(compiler, fileName, sourceCode)
109
- const diagnosticsMessage = formatDiagnostics(
110
- compiler,
111
- getSourceFileDiagnostics(sourceFile)
112
- )
113
-
114
- if (diagnosticsMessage) {
115
- throw new Error(diagnosticsMessage)
116
- }
117
-
118
- const statements = sourceFile.statements.filter((statement) => {
119
- if (isDirectiveStatement(compiler, statement)) {
120
- return false
121
- }
122
-
123
- if (
124
- compiler.isImportDeclaration(statement) ||
125
- compiler.isImportEqualsDeclaration(statement) ||
126
- compiler.isExportAssignment(statement)
127
- ) {
128
- return false
129
- }
130
-
131
- if (
132
- compiler.isExportDeclaration(statement) &&
133
- statement.moduleSpecifier !== undefined
134
- ) {
135
- return false
136
- }
137
-
138
- if (statementContainsJsx(compiler, statement)) {
139
- return false
140
- }
141
-
142
- return true
143
- })
144
-
145
- const sanitizedFile = compiler.factory.updateSourceFile(
146
- sourceFile,
147
- statements
148
- )
149
- const printer = compiler.createPrinter({
150
- newLine: compiler.NewLineKind.LineFeed,
151
- })
152
-
153
- return `${printer.printFile(sanitizedFile).trim()}\n`
154
- }
155
-
156
- function assertNoExplicitImports(sourceCode: string) {
157
- if (/^\s*import[\s{*]/m.test(sourceCode)) {
158
- throw new Error(
159
- "Custom shader imports are resolved through the injected prelude. Remove the imports or paste the whole sketch file and let the custom shader layer strip them."
160
- )
161
- }
162
- }
163
-
164
- async function getTypeScript() {
165
- if (!typescriptPromise) {
166
- typescriptPromise = import("typescript")
167
- }
168
-
169
- return typescriptPromise
170
- }
171
-
172
- function getScriptKind(
173
- compiler: typeof import("typescript"),
174
- fileName: string
175
- ): import("typescript").ScriptKind {
176
- return fileName.endsWith(".tsx")
177
- ? compiler.ScriptKind.TSX
178
- : compiler.ScriptKind.TS
179
- }
180
-
181
- export async function formatCustomShaderSource({
182
- fileName,
183
- sourceCode,
184
- }: {
185
- fileName?: string
186
- sourceCode: string
187
- }): Promise<string> {
188
- const compiler = await getTypeScript()
189
- const resolvedFileName = fileName ?? "custom-shader.ts"
190
- const sourceFile = createSourceFile(compiler, resolvedFileName, sourceCode)
191
- const diagnosticsMessage = formatDiagnostics(
192
- compiler,
193
- getSourceFileDiagnostics(sourceFile)
194
- )
195
-
196
- if (diagnosticsMessage) {
197
- throw new Error(diagnosticsMessage)
198
- }
199
-
200
- const printer = compiler.createPrinter({
201
- newLine: compiler.NewLineKind.LineFeed,
202
- })
203
-
204
- return `${printer.printFile(sourceFile).trim()}\n`
205
- }
206
-
207
- export async function compileCustomShaderModule({
208
- entryExport,
209
- extraScope,
210
- fileName,
211
- force = false,
212
- sourceCode,
213
- }: {
214
- entryExport: string
215
- extraScope?: Record<string, unknown>
216
- fileName?: string
217
- force?: boolean
218
- sourceCode: string
219
- }): Promise<CompiledShaderModule> {
220
- const resolvedFileName = fileName ?? "custom-shader.ts"
221
- const sanitizedSourceCode = await sanitizeCustomShaderSource({
222
- fileName: resolvedFileName,
223
- sourceCode,
224
- })
225
- assertNoExplicitImports(sanitizedSourceCode)
226
-
227
- const cacheKey = `${entryExport}\n${resolvedFileName}\n${sanitizedSourceCode}`
228
- let outputText = !force ? (TRANSPILED_CACHE.get(cacheKey) ?? null) : null
229
-
230
- const compiler = await getTypeScript()
231
- if (!outputText) {
232
- const transpiled = compiler.transpileModule(sanitizedSourceCode, {
233
- compilerOptions: {
234
- esModuleInterop: true,
235
- jsx: compiler.JsxEmit.ReactJSX,
236
- module: compiler.ModuleKind.CommonJS,
237
- target: compiler.ScriptTarget.ES2020,
238
- },
239
- fileName: resolvedFileName,
240
- reportDiagnostics: true,
241
- })
242
- const diagnosticsMessage = formatDiagnostics(
243
- compiler,
244
- transpiled.diagnostics
245
- )
246
-
247
- if (diagnosticsMessage) {
248
- throw new Error(diagnosticsMessage)
249
- }
250
-
251
- outputText = transpiled.outputText
252
- TRANSPILED_CACHE.set(cacheKey, outputText)
253
- }
254
-
255
- const runtimeScope = {
256
- ...PRELUDE,
257
- ...(extraScope ?? {}),
258
- }
259
- const scopeNames = Object.keys(runtimeScope)
260
- const scopeValues = scopeNames.map(
261
- (key) => runtimeScope[key as keyof typeof runtimeScope]
262
- )
263
- const module = { exports: {} as Record<string, unknown> }
264
- const exportsObject = module.exports
265
- const evaluator = new Function(
266
- "exports",
267
- "module",
268
- ...scopeNames,
269
- `${outputText}\nreturn module.exports;`
270
- )
271
-
272
- let resolvedExports: Record<string, unknown>
273
-
274
- try {
275
- resolvedExports = evaluator(
276
- exportsObject,
277
- module,
278
- ...scopeValues
279
- ) as Record<string, unknown>
280
- } catch (error) {
281
- throw new Error(
282
- error instanceof Error
283
- ? error.message
284
- : "Custom shader evaluation failed."
285
- )
286
- }
287
-
288
- const exported = resolvedExports[entryExport] ?? module.exports[entryExport]
289
-
290
- if (typeof exported !== "function") {
291
- throw new Error(
292
- `Expected a named export \`${entryExport}\` that resolves to a TSL sketch function.`
293
- )
294
- }
295
-
296
- return {
297
- buildNode: () => {
298
- const result = (exported as () => unknown)()
299
-
300
- if (!isNodeLike(result)) {
301
- throw new Error(
302
- `The export \`${entryExport}\` did not return a valid TSL node.`
303
- )
304
- }
305
-
306
- return result
307
- },
308
- }
309
- }
@@ -1,99 +0,0 @@
1
- import * as THREE from "three/webgpu"
2
-
3
- const BAYER_2X2 = [0, 2, 3, 1] as const
4
-
5
- const BAYER_4X4 = [
6
- 0, 8, 2, 10,
7
- 12, 4, 14, 6,
8
- 3, 11, 1, 9,
9
- 15, 7, 13, 5,
10
- ] as const
11
-
12
- const BAYER_8X8 = [
13
- 0, 32, 8, 40, 2, 34, 10, 42,
14
- 48, 16, 56, 24, 50, 18, 58, 26,
15
- 12, 44, 4, 36, 14, 46, 6, 38,
16
- 60, 28, 52, 20, 62, 30, 54, 22,
17
- 3, 35, 11, 43, 1, 33, 9, 41,
18
- 51, 19, 59, 27, 49, 17, 57, 25,
19
- 15, 47, 7, 39, 13, 45, 5, 37,
20
- 63, 31, 55, 23, 61, 29, 53, 21,
21
- ] as const
22
-
23
- function buildBayerTexture(values: readonly number[], size: number): THREE.DataTexture {
24
- const normalizer = size * size
25
- const data = new Uint8Array(size * size * 4)
26
-
27
- for (let index = 0; index < size * size; index += 1) {
28
- const channel = Math.round(((values[index] ?? 0) / normalizer) * 255)
29
- const offset = index * 4
30
- data[offset] = channel
31
- data[offset + 1] = channel
32
- data[offset + 2] = channel
33
- data[offset + 3] = 255
34
- }
35
-
36
- const texture = new THREE.DataTexture(
37
- data,
38
- size,
39
- size,
40
- THREE.RGBAFormat,
41
- THREE.UnsignedByteType,
42
- )
43
- texture.magFilter = THREE.NearestFilter
44
- texture.minFilter = THREE.NearestFilter
45
- texture.wrapS = THREE.RepeatWrapping
46
- texture.wrapT = THREE.RepeatWrapping
47
- texture.needsUpdate = true
48
-
49
- return texture
50
- }
51
-
52
- function buildBlueNoiseTexture(size = 64): THREE.DataTexture {
53
- const data = new Uint8Array(size * size * 4)
54
- const fract = (value: number) => value - Math.floor(value)
55
-
56
- for (let y = 0; y < size; y += 1) {
57
- for (let x = 0; x < size; x += 1) {
58
- const noise = Math.round(
59
- fract(52.9829189 * fract(0.06711056 * x + 0.00583715 * y)) * 255,
60
- )
61
- const offset = (y * size + x) * 4
62
- data[offset] = noise
63
- data[offset + 1] = noise
64
- data[offset + 2] = noise
65
- data[offset + 3] = 255
66
- }
67
- }
68
-
69
- const texture = new THREE.DataTexture(
70
- data,
71
- size,
72
- size,
73
- THREE.RGBAFormat,
74
- THREE.UnsignedByteType,
75
- )
76
- texture.magFilter = THREE.NearestFilter
77
- texture.minFilter = THREE.NearestFilter
78
- texture.wrapS = THREE.RepeatWrapping
79
- texture.wrapT = THREE.RepeatWrapping
80
- texture.needsUpdate = true
81
-
82
- return texture
83
- }
84
-
85
- export interface DitherTextures {
86
- bayer2: THREE.DataTexture
87
- bayer4: THREE.DataTexture
88
- bayer8: THREE.DataTexture
89
- noise: THREE.DataTexture
90
- }
91
-
92
- export function buildDitherTextures(): DitherTextures {
93
- return {
94
- bayer2: buildBayerTexture(BAYER_2X2, 2),
95
- bayer4: buildBayerTexture(BAYER_4X4, 4),
96
- bayer8: buildBayerTexture(BAYER_8X8, 8),
97
- noise: buildBlueNoiseTexture(),
98
- }
99
- }