@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.
- package/dist/src/easings.d.ts +3 -0
- package/dist/src/easings.js +3 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.js +4 -0
- package/dist/src/lib/editor/custom-shader/shared.d.ts +1 -0
- package/dist/src/lib/editor/custom-shader/shared.js +1 -0
- package/dist/src/renderer/ascii-atlas.d.ts +5 -0
- package/dist/src/renderer/ascii-atlas.js +61 -0
- package/dist/src/renderer/ascii-pass.d.ts +50 -0
- package/dist/src/renderer/ascii-pass.js +271 -0
- package/dist/src/renderer/asset-url.d.ts +1 -0
- package/dist/src/renderer/asset-url.js +3 -0
- package/dist/src/renderer/blend-modes.d.ts +4 -0
- package/dist/src/renderer/blend-modes.js +157 -0
- package/dist/src/renderer/contracts.d.ts +26 -0
- package/dist/src/renderer/contracts.js +13 -0
- package/dist/src/renderer/create-webgpu-renderer.d.ts +3 -0
- package/dist/src/renderer/create-webgpu-renderer.js +37 -0
- package/dist/src/renderer/crt-pass.d.ts +72 -0
- package/dist/src/renderer/crt-pass.js +536 -0
- package/dist/src/renderer/custom-shader-pass.d.ts +17 -0
- package/dist/src/renderer/custom-shader-pass.js +79 -0
- package/dist/src/renderer/custom-shader-runtime.d.ts +16 -0
- package/dist/src/renderer/custom-shader-runtime.js +169 -0
- package/dist/src/renderer/dither-textures.d.ts +8 -0
- package/dist/src/renderer/dither-textures.js +66 -0
- package/dist/src/renderer/dithering-pass.d.ts +45 -0
- package/dist/src/renderer/dithering-pass.js +229 -0
- package/dist/src/renderer/gradient-pass.d.ts +39 -0
- package/dist/src/renderer/gradient-pass.js +358 -0
- package/dist/src/renderer/halftone-pass.d.ts +65 -0
- package/dist/src/renderer/halftone-pass.js +530 -0
- package/dist/src/renderer/ink-pass.d.ts +84 -0
- package/dist/src/renderer/ink-pass.js +526 -0
- package/dist/src/renderer/live-pass.d.ts +31 -0
- package/dist/src/renderer/live-pass.js +136 -0
- package/dist/src/renderer/media-pass.d.ts +32 -0
- package/dist/src/renderer/media-pass.js +130 -0
- package/dist/src/renderer/media-texture.d.ts +8 -0
- package/dist/src/renderer/media-texture.js +41 -0
- package/dist/src/renderer/particle-grid-pass.d.ts +48 -0
- package/dist/src/renderer/particle-grid-pass.js +269 -0
- package/dist/src/renderer/pass-node.d.ts +36 -0
- package/dist/src/renderer/pass-node.js +120 -0
- package/dist/src/renderer/pattern-atlas.d.ts +8 -0
- package/dist/src/renderer/pattern-atlas.js +79 -0
- package/dist/src/renderer/pattern-pass.d.ts +58 -0
- package/dist/src/renderer/pattern-pass.js +316 -0
- package/dist/src/renderer/pipeline-manager.d.ts +39 -0
- package/dist/src/renderer/pipeline-manager.js +287 -0
- package/dist/src/renderer/pixel-sorting-pass.d.ts +33 -0
- package/dist/src/renderer/pixel-sorting-pass.js +179 -0
- package/dist/src/renderer/shaders/tsl/color/tonemapping.d.ts +9 -0
- package/dist/src/renderer/shaders/tsl/color/tonemapping.js +59 -0
- package/dist/src/renderer/shaders/tsl/cosine-palette.d.ts +4 -0
- package/{packages/shader-lab-react/src/renderer/shaders/tsl/cosine-palette.ts → dist/src/renderer/shaders/tsl/cosine-palette.js} +3 -4
- package/dist/src/renderer/shaders/tsl/noise/common.d.ts +5 -0
- package/dist/src/renderer/shaders/tsl/noise/common.js +24 -0
- package/dist/src/renderer/shaders/tsl/noise/curl-noise-3d.d.ts +1 -0
- package/dist/src/renderer/shaders/tsl/noise/curl-noise-3d.js +27 -0
- package/dist/src/renderer/shaders/tsl/noise/curl-noise-4d.d.ts +1 -0
- package/dist/src/renderer/shaders/tsl/noise/curl-noise-4d.js +27 -0
- package/dist/src/renderer/shaders/tsl/noise/fbm.d.ts +1 -0
- package/dist/src/renderer/shaders/tsl/noise/fbm.js +11 -0
- package/dist/src/renderer/shaders/tsl/noise/perlin-noise-3d.d.ts +5 -0
- package/dist/src/renderer/shaders/tsl/noise/perlin-noise-3d.js +66 -0
- package/dist/src/renderer/shaders/tsl/noise/ridge-noise.d.ts +1 -0
- package/dist/src/renderer/shaders/tsl/noise/ridge-noise.js +19 -0
- package/dist/src/renderer/shaders/tsl/noise/simplex-noise-3d.d.ts +1 -0
- package/dist/src/renderer/shaders/tsl/noise/simplex-noise-3d.js +44 -0
- package/dist/src/renderer/shaders/tsl/noise/simplex-noise-4d.d.ts +1 -0
- package/dist/src/renderer/shaders/tsl/noise/simplex-noise-4d.js +51 -0
- package/dist/src/renderer/shaders/tsl/noise/turbulence.d.ts +7 -0
- package/dist/src/renderer/shaders/tsl/noise/turbulence.js +34 -0
- package/dist/src/renderer/shaders/tsl/noise/value-noise-3d.d.ts +1 -0
- package/dist/src/renderer/shaders/tsl/noise/value-noise-3d.js +27 -0
- package/dist/src/renderer/shaders/tsl/noise/voronoi-noise-3d.d.ts +1 -0
- package/dist/src/renderer/shaders/tsl/noise/voronoi-noise-3d.js +45 -0
- package/dist/src/renderer/shaders/tsl/patterns/bloom-edge-pattern.d.ts +4 -0
- package/dist/src/renderer/shaders/tsl/patterns/bloom-edge-pattern.js +13 -0
- package/dist/src/renderer/shaders/tsl/patterns/bloom.d.ts +4 -0
- package/{packages/shader-lab-react/src/renderer/shaders/tsl/patterns/bloom.ts → dist/src/renderer/shaders/tsl/patterns/bloom.js} +4 -6
- package/dist/src/renderer/shaders/tsl/patterns/canvas-weave-pattern.d.ts +4 -0
- package/dist/src/renderer/shaders/tsl/patterns/canvas-weave-pattern.js +16 -0
- package/dist/src/renderer/shaders/tsl/patterns/grain-texture-pattern.d.ts +4 -0
- 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
- package/dist/src/renderer/shaders/tsl/patterns/repeating-pattern.d.ts +4 -0
- package/{packages/shader-lab-react/src/renderer/shaders/tsl/patterns/repeating-pattern.ts → dist/src/renderer/shaders/tsl/patterns/repeating-pattern.js} +4 -6
- package/dist/src/renderer/shaders/tsl/utils/atan2.d.ts +1 -0
- package/dist/src/renderer/shaders/tsl/utils/atan2.js +7 -0
- package/dist/src/renderer/shaders/tsl/utils/complex-conj.d.ts +4 -0
- package/{packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-conj.ts → dist/src/renderer/shaders/tsl/utils/complex-conj.js} +3 -4
- package/dist/src/renderer/shaders/tsl/utils/complex-cos.d.ts +4 -0
- package/dist/src/renderer/shaders/tsl/utils/complex-cos.js +9 -0
- package/dist/src/renderer/shaders/tsl/utils/complex-div.d.ts +1 -0
- package/dist/src/renderer/shaders/tsl/utils/complex-div.js +6 -0
- package/dist/src/renderer/shaders/tsl/utils/complex-log.d.ts +1 -0
- package/dist/src/renderer/shaders/tsl/utils/complex-log.js +6 -0
- package/dist/src/renderer/shaders/tsl/utils/complex-mobius.d.ts +4 -0
- package/dist/src/renderer/shaders/tsl/utils/complex-mobius.js +10 -0
- package/dist/src/renderer/shaders/tsl/utils/complex-mul.d.ts +4 -0
- package/{packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-mul.ts → dist/src/renderer/shaders/tsl/utils/complex-mul.js} +3 -4
- package/dist/src/renderer/shaders/tsl/utils/complex-pow.d.ts +5 -0
- package/dist/src/renderer/shaders/tsl/utils/complex-pow.js +14 -0
- package/dist/src/renderer/shaders/tsl/utils/complex-sin.d.ts +4 -0
- package/dist/src/renderer/shaders/tsl/utils/complex-sin.js +9 -0
- package/dist/src/renderer/shaders/tsl/utils/complex-sqrt.d.ts +5 -0
- package/dist/src/renderer/shaders/tsl/utils/complex-sqrt.js +12 -0
- package/dist/src/renderer/shaders/tsl/utils/complex-tan.d.ts +4 -0
- package/dist/src/renderer/shaders/tsl/utils/complex-tan.js +11 -0
- package/dist/src/renderer/shaders/tsl/utils/complex-to-polar.d.ts +4 -0
- package/dist/src/renderer/shaders/tsl/utils/complex-to-polar.js +9 -0
- package/dist/src/renderer/shaders/tsl/utils/hyperbolic.d.ts +8 -0
- package/{packages/shader-lab-react/src/renderer/shaders/tsl/utils/hyperbolic.ts → dist/src/renderer/shaders/tsl/utils/hyperbolic.js} +7 -11
- package/dist/src/renderer/shaders/tsl/utils/index.d.ts +38 -0
- package/dist/src/renderer/shaders/tsl/utils/index.js +39 -0
- package/dist/src/renderer/shaders/tsl/utils/rotate.d.ts +2 -0
- package/dist/src/renderer/shaders/tsl/utils/rotate.js +7 -0
- package/dist/src/renderer/shaders/tsl/utils/screen-aspect-uv.d.ts +2 -0
- package/dist/src/renderer/shaders/tsl/utils/screen-aspect-uv.js +6 -0
- package/dist/src/renderer/shaders/tsl/utils/sd-box-2d.d.ts +1 -0
- package/dist/src/renderer/shaders/tsl/utils/sd-box-2d.js +5 -0
- package/dist/src/renderer/shaders/tsl/utils/sd-diamond.d.ts +1 -0
- package/dist/src/renderer/shaders/tsl/utils/sd-diamond.js +5 -0
- package/dist/src/renderer/shaders/tsl/utils/sd-rhombus.d.ts +1 -0
- package/dist/src/renderer/shaders/tsl/utils/sd-rhombus.js +14 -0
- package/dist/src/renderer/shaders/tsl/utils/sd-sphere.d.ts +1 -0
- package/dist/src/renderer/shaders/tsl/utils/sd-sphere.js +5 -0
- package/dist/src/renderer/shaders/tsl/utils/smax.d.ts +1 -0
- package/dist/src/renderer/shaders/tsl/utils/smax.js +6 -0
- package/dist/src/renderer/shaders/tsl/utils/smin.d.ts +1 -0
- package/dist/src/renderer/shaders/tsl/utils/smin.js +6 -0
- package/dist/src/renderer/text-pass.d.ts +23 -0
- package/dist/src/renderer/text-pass.js +129 -0
- package/dist/src/runtime-clock.d.ts +9 -0
- package/dist/src/runtime-clock.js +20 -0
- package/dist/src/runtime-frame.d.ts +11 -0
- package/dist/src/runtime-frame.js +12 -0
- package/dist/src/shader-lab-composition.d.ts +9 -0
- package/dist/src/shader-lab-composition.js +96 -0
- package/dist/src/timeline.d.ts +8 -0
- package/dist/src/timeline.js +179 -0
- package/dist/src/types/editor.d.ts +3 -0
- package/dist/src/types/editor.js +1 -0
- package/dist/src/types.d.ts +81 -0
- package/dist/src/types.js +1 -0
- package/package.json +28 -65
- package/.biome/plugins/README.md +0 -21
- package/.biome/plugins/no-anchor-element.grit +0 -12
- package/.biome/plugins/no-relative-parent-imports.grit +0 -10
- package/.biome/plugins/no-unnecessary-forwardref.grit +0 -9
- package/.changeset/README.md +0 -17
- package/.changeset/config.json +0 -11
- package/.editorconfig +0 -40
- package/.env.example +0 -81
- package/.gitattributes +0 -19
- package/.github/workflows/canary.yml +0 -80
- package/.github/workflows/ci.yml +0 -37
- package/.github/workflows/release.yml +0 -56
- package/.tldrignore +0 -84
- package/.vscode/extensions.json +0 -20
- package/.vscode/settings.json +0 -105
- package/biome.json +0 -249
- package/bun.lock +0 -1224
- package/next.config.ts +0 -131
- package/packages/shader-lab-react/CHANGELOG.md +0 -9
- package/packages/shader-lab-react/README.md +0 -119
- package/packages/shader-lab-react/package.json +0 -36
- package/packages/shader-lab-react/scripts/fix-esm-specifiers.mjs +0 -57
- package/packages/shader-lab-react/scripts/prepare-dist.mjs +0 -4
- package/packages/shader-lab-react/src/ambient/three-tsl.d.ts +0 -146
- package/packages/shader-lab-react/src/ambient/three-webgpu.d.ts +0 -51
- package/packages/shader-lab-react/src/easings.ts +0 -4
- package/packages/shader-lab-react/src/index.ts +0 -35
- package/packages/shader-lab-react/src/lib/editor/custom-shader/shared.ts +0 -2
- package/packages/shader-lab-react/src/renderer/ascii-atlas.ts +0 -83
- package/packages/shader-lab-react/src/renderer/ascii-pass.ts +0 -416
- package/packages/shader-lab-react/src/renderer/asset-url.ts +0 -3
- package/packages/shader-lab-react/src/renderer/blend-modes.ts +0 -229
- package/packages/shader-lab-react/src/renderer/contracts.ts +0 -54
- package/packages/shader-lab-react/src/renderer/create-webgpu-renderer.ts +0 -48
- package/packages/shader-lab-react/src/renderer/crt-pass.ts +0 -1040
- package/packages/shader-lab-react/src/renderer/custom-shader-pass.ts +0 -108
- package/packages/shader-lab-react/src/renderer/custom-shader-runtime.ts +0 -309
- package/packages/shader-lab-react/src/renderer/dither-textures.ts +0 -99
- package/packages/shader-lab-react/src/renderer/dithering-pass.ts +0 -322
- package/packages/shader-lab-react/src/renderer/gradient-pass.ts +0 -521
- package/packages/shader-lab-react/src/renderer/halftone-pass.ts +0 -932
- package/packages/shader-lab-react/src/renderer/ink-pass.ts +0 -802
- package/packages/shader-lab-react/src/renderer/live-pass.ts +0 -194
- package/packages/shader-lab-react/src/renderer/media-pass.ts +0 -187
- package/packages/shader-lab-react/src/renderer/media-texture.ts +0 -66
- package/packages/shader-lab-react/src/renderer/particle-grid-pass.ts +0 -389
- package/packages/shader-lab-react/src/renderer/pass-node.ts +0 -209
- package/packages/shader-lab-react/src/renderer/pattern-atlas.ts +0 -133
- package/packages/shader-lab-react/src/renderer/pattern-pass.ts +0 -552
- package/packages/shader-lab-react/src/renderer/pipeline-manager.ts +0 -369
- package/packages/shader-lab-react/src/renderer/pixel-sorting-pass.ts +0 -277
- package/packages/shader-lab-react/src/renderer/shaders/tsl/color/tonemapping.ts +0 -87
- package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/common.ts +0 -31
- package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/curl-noise-3d.ts +0 -36
- package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/curl-noise-4d.ts +0 -36
- package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/fbm.ts +0 -13
- package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/perlin-noise-3d.ts +0 -96
- package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/ridge-noise.ts +0 -24
- package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/simplex-noise-3d.ts +0 -79
- package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/simplex-noise-4d.ts +0 -89
- package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/turbulence.ts +0 -56
- package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/value-noise-3d.ts +0 -32
- package/packages/shader-lab-react/src/renderer/shaders/tsl/noise/voronoi-noise-3d.ts +0 -60
- package/packages/shader-lab-react/src/renderer/shaders/tsl/patterns/bloom-edge-pattern.ts +0 -15
- package/packages/shader-lab-react/src/renderer/shaders/tsl/patterns/canvas-weave-pattern.ts +0 -24
- package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/atan2.ts +0 -9
- package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-cos.ts +0 -10
- package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-div.ts +0 -11
- package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-log.ts +0 -7
- package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-mobius.ts +0 -12
- package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-pow.ts +0 -16
- package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-sin.ts +0 -10
- package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-sqrt.ts +0 -18
- package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-tan.ts +0 -12
- package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/complex-to-polar.ts +0 -10
- package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/index.ts +0 -48
- package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/rotate.ts +0 -15
- package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/screen-aspect-uv.ts +0 -15
- package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/sd-box-2d.ts +0 -6
- package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/sd-diamond.ts +0 -6
- package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/sd-rhombus.ts +0 -27
- package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/sd-sphere.ts +0 -6
- package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/smax.ts +0 -7
- package/packages/shader-lab-react/src/renderer/shaders/tsl/utils/smin.ts +0 -7
- package/packages/shader-lab-react/src/renderer/text-pass.ts +0 -176
- package/packages/shader-lab-react/src/runtime-clock.ts +0 -42
- package/packages/shader-lab-react/src/runtime-frame.ts +0 -29
- package/packages/shader-lab-react/src/shader-lab-composition.tsx +0 -163
- package/packages/shader-lab-react/src/timeline.ts +0 -283
- package/packages/shader-lab-react/src/types/editor.ts +0 -5
- package/packages/shader-lab-react/src/types.ts +0 -141
- package/packages/shader-lab-react/tsconfig.build.json +0 -8
- package/packages/shader-lab-react/tsconfig.json +0 -21
- package/postcss.config.mjs +0 -5
- package/public/assets/fonts/msdf/geist-mono/GeistMono-Regular-msdf-atlas.png +0 -0
- package/public/assets/fonts/msdf/geist-mono/GeistMono-Regular-msdf.json +0 -1412
- package/public/assets/patterns/bars/1.svg +0 -3
- package/public/assets/patterns/bars/2.svg +0 -3
- package/public/assets/patterns/bars/3.svg +0 -3
- package/public/assets/patterns/bars/4.svg +0 -3
- package/public/assets/patterns/bars/5.svg +0 -3
- package/public/assets/patterns/bars/6.svg +0 -3
- package/public/assets/patterns/candles/1.svg +0 -3
- package/public/assets/patterns/candles/2.svg +0 -3
- package/public/assets/patterns/candles/3.svg +0 -3
- package/public/assets/patterns/candles/4.svg +0 -3
- package/public/assets/patterns/shapes/1.svg +0 -3
- package/public/assets/patterns/shapes/2.svg +0 -3
- package/public/assets/patterns/shapes/3.svg +0 -3
- package/public/assets/patterns/shapes/4.svg +0 -4
- package/public/assets/patterns/shapes/5.svg +0 -3
- package/public/assets/patterns/shapes/6.svg +0 -4
- package/public/fonts/geist/Geist-Mono.woff2 +0 -0
- package/public/textures/blue-noise.png +0 -0
- package/public/textures/crt-mask.png +0 -0
- package/src/app/design/page.tsx +0 -398
- package/src/app/favicon.ico +0 -0
- package/src/app/globals.css +0 -280
- package/src/app/layout.tsx +0 -89
- package/src/app/page.tsx +0 -20
- package/src/app/robots.ts +0 -13
- package/src/app/sitemap.ts +0 -13
- package/src/components/editor/editor-canvas-viewport.tsx +0 -116
- package/src/components/editor/editor-export-dialog.tsx +0 -1177
- package/src/components/editor/editor-timeline-overlay.tsx +0 -983
- package/src/components/editor/editor-topbar.tsx +0 -287
- package/src/components/editor/layer-sidebar.tsx +0 -738
- package/src/components/editor/properties-sidebar-content.tsx +0 -574
- package/src/components/editor/properties-sidebar-fields.tsx +0 -389
- package/src/components/editor/properties-sidebar-utils.ts +0 -178
- package/src/components/editor/properties-sidebar.tsx +0 -421
- package/src/components/ui/button/index.tsx +0 -57
- package/src/components/ui/color-picker/index.tsx +0 -358
- package/src/components/ui/glass-panel/index.tsx +0 -45
- package/src/components/ui/icon-button/index.tsx +0 -46
- package/src/components/ui/select/index.tsx +0 -136
- package/src/components/ui/slider/index.tsx +0 -192
- package/src/components/ui/toggle/index.tsx +0 -34
- package/src/components/ui/typography/index.tsx +0 -61
- package/src/components/ui/xy-pad/index.tsx +0 -160
- package/src/features/editor/components/editor-export-dialog.module.css +0 -271
- package/src/hooks/use-editor-renderer.ts +0 -182
- package/src/lib/app.ts +0 -6
- package/src/lib/cn.ts +0 -7
- package/src/lib/easings.ts +0 -240
- package/src/lib/editor/config/layer-registry.ts +0 -2434
- package/src/lib/editor/custom-shader/shared.ts +0 -28
- package/src/lib/editor/export.ts +0 -420
- package/src/lib/editor/history.ts +0 -71
- package/src/lib/editor/layers.ts +0 -76
- package/src/lib/editor/parameter-schema.ts +0 -75
- package/src/lib/editor/project-file.ts +0 -145
- package/src/lib/editor/shader-export-snippet.ts +0 -37
- package/src/lib/editor/shader-export.ts +0 -315
- package/src/lib/editor/timeline/evaluate.ts +0 -252
- package/src/lib/editor/view-transform.ts +0 -58
- package/src/lib/fonts.ts +0 -28
- package/src/renderer/ascii-atlas.ts +0 -83
- package/src/renderer/ascii-pass.ts +0 -416
- package/src/renderer/blend-modes.ts +0 -229
- package/src/renderer/contracts.ts +0 -161
- package/src/renderer/create-webgpu-renderer.ts +0 -48
- package/src/renderer/crt-pass.ts +0 -1040
- package/src/renderer/custom-shader-pass.ts +0 -117
- package/src/renderer/custom-shader-runtime.ts +0 -309
- package/src/renderer/dither-textures.ts +0 -99
- package/src/renderer/dithering-pass.ts +0 -322
- package/src/renderer/gradient-pass.ts +0 -520
- package/src/renderer/halftone-pass.ts +0 -932
- package/src/renderer/ink-pass.ts +0 -683
- package/src/renderer/live-pass.ts +0 -194
- package/src/renderer/media-pass.ts +0 -187
- package/src/renderer/media-texture.ts +0 -66
- package/src/renderer/particle-grid-pass.ts +0 -389
- package/src/renderer/pass-node-factory.ts +0 -33
- package/src/renderer/pass-node.ts +0 -209
- package/src/renderer/pattern-atlas.ts +0 -97
- package/src/renderer/pattern-pass.ts +0 -552
- package/src/renderer/pipeline-manager.ts +0 -343
- package/src/renderer/pixel-sorting-pass.ts +0 -277
- package/src/renderer/project-clock.ts +0 -57
- package/src/renderer/shaders/tsl/color/tonemapping.ts +0 -86
- package/src/renderer/shaders/tsl/cosine-palette.ts +0 -8
- package/src/renderer/shaders/tsl/noise/common.ts +0 -30
- package/src/renderer/shaders/tsl/noise/curl-noise-3d.ts +0 -35
- package/src/renderer/shaders/tsl/noise/curl-noise-4d.ts +0 -35
- package/src/renderer/shaders/tsl/noise/fbm.ts +0 -12
- package/src/renderer/shaders/tsl/noise/perlin-noise-3d.ts +0 -97
- package/src/renderer/shaders/tsl/noise/ridge-noise.ts +0 -23
- package/src/renderer/shaders/tsl/noise/simplex-noise-3d.ts +0 -78
- package/src/renderer/shaders/tsl/noise/simplex-noise-4d.ts +0 -88
- package/src/renderer/shaders/tsl/noise/turbulence.ts +0 -55
- package/src/renderer/shaders/tsl/noise/value-noise-3d.ts +0 -31
- package/src/renderer/shaders/tsl/noise/voronoi-noise-3d.ts +0 -59
- package/src/renderer/shaders/tsl/patterns/bloom-edge-pattern.ts +0 -14
- package/src/renderer/shaders/tsl/patterns/bloom.ts +0 -10
- package/src/renderer/shaders/tsl/patterns/canvas-weave-pattern.ts +0 -23
- package/src/renderer/shaders/tsl/patterns/grain-texture-pattern.ts +0 -8
- package/src/renderer/shaders/tsl/patterns/repeating-pattern.ts +0 -10
- package/src/renderer/shaders/tsl/utils/atan2.ts +0 -8
- package/src/renderer/shaders/tsl/utils/complex-conj.ts +0 -8
- package/src/renderer/shaders/tsl/utils/complex-cos.ts +0 -9
- package/src/renderer/shaders/tsl/utils/complex-div.ts +0 -10
- package/src/renderer/shaders/tsl/utils/complex-log.ts +0 -6
- package/src/renderer/shaders/tsl/utils/complex-mobius.ts +0 -11
- package/src/renderer/shaders/tsl/utils/complex-mul.ts +0 -8
- package/src/renderer/shaders/tsl/utils/complex-pow.ts +0 -15
- package/src/renderer/shaders/tsl/utils/complex-sin.ts +0 -9
- package/src/renderer/shaders/tsl/utils/complex-sqrt.ts +0 -17
- package/src/renderer/shaders/tsl/utils/complex-tan.ts +0 -11
- package/src/renderer/shaders/tsl/utils/complex-to-polar.ts +0 -9
- package/src/renderer/shaders/tsl/utils/hyperbolic.ts +0 -19
- package/src/renderer/shaders/tsl/utils/index.ts +0 -47
- package/src/renderer/shaders/tsl/utils/rotate.ts +0 -14
- package/src/renderer/shaders/tsl/utils/screen-aspect-uv.ts +0 -14
- package/src/renderer/shaders/tsl/utils/sd-box-2d.ts +0 -5
- package/src/renderer/shaders/tsl/utils/sd-diamond.ts +0 -5
- package/src/renderer/shaders/tsl/utils/sd-rhombus.ts +0 -26
- package/src/renderer/shaders/tsl/utils/sd-sphere.ts +0 -5
- package/src/renderer/shaders/tsl/utils/smax.ts +0 -7
- package/src/renderer/shaders/tsl/utils/smin.ts +0 -6
- package/src/renderer/text-pass.ts +0 -176
- package/src/store/asset-store.ts +0 -193
- package/src/store/editor-store.ts +0 -223
- package/src/store/history-store.ts +0 -172
- package/src/store/index.ts +0 -31
- package/src/store/layer-store.ts +0 -675
- package/src/store/timeline-store.ts +0 -572
- package/src/types/assets.d.ts +0 -6
- package/src/types/css.d.ts +0 -21
- package/src/types/editor.ts +0 -357
- package/src/types/react.d.ts +0 -15
- package/src/types/three-tsl.d.ts +0 -146
- package/src/types/three-webgpu.d.ts +0 -51
- package/tsconfig.json +0 -49
- /package/{packages/shader-lab-react/assets → assets}/patterns/bars/1.svg +0 -0
- /package/{packages/shader-lab-react/assets → assets}/patterns/bars/2.svg +0 -0
- /package/{packages/shader-lab-react/assets → assets}/patterns/bars/3.svg +0 -0
- /package/{packages/shader-lab-react/assets → assets}/patterns/bars/4.svg +0 -0
- /package/{packages/shader-lab-react/assets → assets}/patterns/bars/5.svg +0 -0
- /package/{packages/shader-lab-react/assets → assets}/patterns/bars/6.svg +0 -0
- /package/{packages/shader-lab-react/assets → assets}/patterns/candles/1.svg +0 -0
- /package/{packages/shader-lab-react/assets → assets}/patterns/candles/2.svg +0 -0
- /package/{packages/shader-lab-react/assets → assets}/patterns/candles/3.svg +0 -0
- /package/{packages/shader-lab-react/assets → assets}/patterns/candles/4.svg +0 -0
- /package/{packages/shader-lab-react/assets → assets}/patterns/shapes/1.svg +0 -0
- /package/{packages/shader-lab-react/assets → assets}/patterns/shapes/2.svg +0 -0
- /package/{packages/shader-lab-react/assets → assets}/patterns/shapes/3.svg +0 -0
- /package/{packages/shader-lab-react/assets → assets}/patterns/shapes/4.svg +0 -0
- /package/{packages/shader-lab-react/assets → assets}/patterns/shapes/5.svg +0 -0
- /package/{packages/shader-lab-react/assets → assets}/patterns/shapes/6.svg +0 -0
- /package/{packages/shader-lab-react/assets → assets}/textures/blue-noise.png +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { EPSILON, Fn, cross, vec3, vec4 } from "three/tsl";
|
|
3
|
+
import { simplexNoise4d } from "./simplex-noise-4d.js";
|
|
4
|
+
export const curlNoise4d = Fn(([inputA]) => {
|
|
5
|
+
const aXPos = simplexNoise4d(inputA.add(vec4(EPSILON, 0, 0, 0)));
|
|
6
|
+
const aXNeg = simplexNoise4d(inputA.sub(vec4(EPSILON, 0, 0, 0)));
|
|
7
|
+
const aXAverage = aXPos.sub(aXNeg).div(EPSILON.mul(2));
|
|
8
|
+
const aYPos = simplexNoise4d(inputA.add(vec4(0, EPSILON, 0, 0)));
|
|
9
|
+
const aYNeg = simplexNoise4d(inputA.sub(vec4(0, EPSILON, 0, 0)));
|
|
10
|
+
const aYAverage = aYPos.sub(aYNeg).div(EPSILON.mul(2));
|
|
11
|
+
const aZPos = simplexNoise4d(inputA.add(vec4(0, 0, EPSILON, 0)));
|
|
12
|
+
const aZNeg = simplexNoise4d(inputA.sub(vec4(0, 0, EPSILON, 0)));
|
|
13
|
+
const aZAverage = aZPos.sub(aZNeg).div(EPSILON.mul(2));
|
|
14
|
+
const aGrabNoise = vec3(aXAverage, aYAverage, aZAverage).normalize();
|
|
15
|
+
const inputB = inputA.add(3.5);
|
|
16
|
+
const bXPos = simplexNoise4d(inputB.add(vec4(EPSILON, 0, 0, 0)));
|
|
17
|
+
const bXNeg = simplexNoise4d(inputB.sub(vec4(EPSILON, 0, 0, 0)));
|
|
18
|
+
const bXAverage = bXPos.sub(bXNeg).div(EPSILON.mul(2));
|
|
19
|
+
const bYPos = simplexNoise4d(inputB.add(vec4(0, EPSILON, 0, 0)));
|
|
20
|
+
const bYNeg = simplexNoise4d(inputB.sub(vec4(0, EPSILON, 0, 0)));
|
|
21
|
+
const bYAverage = bYPos.sub(bYNeg).div(EPSILON.mul(2));
|
|
22
|
+
const bZPos = simplexNoise4d(inputB.add(vec4(0, 0, EPSILON, 0)));
|
|
23
|
+
const bZNeg = simplexNoise4d(inputB.sub(vec4(0, 0, EPSILON, 0)));
|
|
24
|
+
const bZAverage = bZPos.sub(bZNeg).div(EPSILON.mul(2));
|
|
25
|
+
const bGrabNoise = vec3(bXAverage, bYAverage, bZAverage).normalize();
|
|
26
|
+
return cross(aGrabNoise, bGrabNoise).normalize();
|
|
27
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const fbm: (...args: unknown[]) => import("three/tsl").TSLNode;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { Fn, vec3 } from "three/tsl";
|
|
3
|
+
import { simplexNoise3d } from "./simplex-noise-3d.js";
|
|
4
|
+
export const fbm = Fn(([pImmutable]) => {
|
|
5
|
+
const p = vec3(pImmutable).toVar();
|
|
6
|
+
const n1 = simplexNoise3d(p).mul(0.5).add(0.5);
|
|
7
|
+
const n2 = simplexNoise3d(p.mul(2.02).add(vec3(19.1, 7.3, 13.7)))
|
|
8
|
+
.mul(0.5)
|
|
9
|
+
.add(0.5);
|
|
10
|
+
return n1.mul(0.7).add(n2.mul(0.3));
|
|
11
|
+
});
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { Fn, abs, dot, floor, fract, mix, mod, mul, step, sub, vec2, vec3, vec4, } from "three/tsl";
|
|
3
|
+
import { fade, permute, taylorInvSqrt } from "./common.js";
|
|
4
|
+
/**
|
|
5
|
+
* Classic Perlin noise (3D) — Ashima Arts / Stefan Gustavson port.
|
|
6
|
+
* Uses permute + taylorInvSqrt (same as simplex noise) for gradient generation.
|
|
7
|
+
*/
|
|
8
|
+
export const perlinNoise3d = Fn(([pImmutable]) => {
|
|
9
|
+
const P = vec3(pImmutable).toVar();
|
|
10
|
+
const Pi0 = vec3(mod(floor(P), 289.0)).toVar();
|
|
11
|
+
const Pi1 = vec3(mod(Pi0.add(1.0), 289.0)).toVar();
|
|
12
|
+
const Pf0 = vec3(fract(P)).toVar();
|
|
13
|
+
const Pf1 = vec3(Pf0.sub(1.0)).toVar();
|
|
14
|
+
const ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);
|
|
15
|
+
const iy = vec4(Pi0.y, Pi0.y, Pi1.y, Pi1.y);
|
|
16
|
+
const iz0 = vec4(Pi0.z, Pi0.z, Pi0.z, Pi0.z);
|
|
17
|
+
const iz1 = vec4(Pi1.z, Pi1.z, Pi1.z, Pi1.z);
|
|
18
|
+
const ixy = vec4(permute(permute(ix).add(iy))).toVar();
|
|
19
|
+
const ixy0 = vec4(permute(ixy.add(iz0))).toVar();
|
|
20
|
+
const ixy1 = vec4(permute(ixy.add(iz1))).toVar();
|
|
21
|
+
const gx0 = vec4(ixy0.div(7.0)).toVar();
|
|
22
|
+
const gy0 = vec4(fract(floor(gx0).div(7.0)).sub(0.5)).toVar();
|
|
23
|
+
gx0.assign(fract(gx0));
|
|
24
|
+
const gz0 = vec4(sub(0.5, abs(gx0)).sub(abs(gy0))).toVar();
|
|
25
|
+
const sz0 = vec4(step(gz0, vec4(0.0))).toVar();
|
|
26
|
+
gx0.assign(gx0.sub(sz0.mul(step(0.0, gx0).sub(0.5))));
|
|
27
|
+
gy0.assign(gy0.sub(sz0.mul(step(0.0, gy0).sub(0.5))));
|
|
28
|
+
const gx1 = vec4(ixy1.div(7.0)).toVar();
|
|
29
|
+
const gy1 = vec4(fract(floor(gx1).div(7.0)).sub(0.5)).toVar();
|
|
30
|
+
gx1.assign(fract(gx1));
|
|
31
|
+
const gz1 = vec4(sub(0.5, abs(gx1)).sub(abs(gy1))).toVar();
|
|
32
|
+
const sz1 = vec4(step(gz1, vec4(0.0))).toVar();
|
|
33
|
+
gx1.assign(gx1.sub(sz1.mul(step(0.0, gx1).sub(0.5))));
|
|
34
|
+
gy1.assign(gy1.sub(sz1.mul(step(0.0, gy1).sub(0.5))));
|
|
35
|
+
const g000 = vec3(gx0.x, gy0.x, gz0.x).toVar();
|
|
36
|
+
const g100 = vec3(gx0.y, gy0.y, gz0.y).toVar();
|
|
37
|
+
const g010 = vec3(gx0.z, gy0.z, gz0.z).toVar();
|
|
38
|
+
const g110 = vec3(gx0.w, gy0.w, gz0.w).toVar();
|
|
39
|
+
const g001 = vec3(gx1.x, gy1.x, gz1.x).toVar();
|
|
40
|
+
const g101 = vec3(gx1.y, gy1.y, gz1.y).toVar();
|
|
41
|
+
const g011 = vec3(gx1.z, gy1.z, gz1.z).toVar();
|
|
42
|
+
const g111 = vec3(gx1.w, gy1.w, gz1.w).toVar();
|
|
43
|
+
const norm0 = vec4(taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)))).toVar();
|
|
44
|
+
g000.mulAssign(norm0.x);
|
|
45
|
+
g010.mulAssign(norm0.y);
|
|
46
|
+
g100.mulAssign(norm0.z);
|
|
47
|
+
g110.mulAssign(norm0.w);
|
|
48
|
+
const norm1 = vec4(taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)))).toVar();
|
|
49
|
+
g001.mulAssign(norm1.x);
|
|
50
|
+
g011.mulAssign(norm1.y);
|
|
51
|
+
g101.mulAssign(norm1.z);
|
|
52
|
+
g111.mulAssign(norm1.w);
|
|
53
|
+
const n000 = dot(g000, Pf0);
|
|
54
|
+
const n100 = dot(g100, vec3(Pf1.x, Pf0.y, Pf0.z));
|
|
55
|
+
const n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));
|
|
56
|
+
const n110 = dot(g110, vec3(Pf1.x, Pf1.y, Pf0.z));
|
|
57
|
+
const n001 = dot(g001, vec3(Pf0.x, Pf0.y, Pf1.z));
|
|
58
|
+
const n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));
|
|
59
|
+
const n011 = dot(g011, vec3(Pf0.x, Pf1.y, Pf1.z));
|
|
60
|
+
const n111 = dot(g111, Pf1);
|
|
61
|
+
const fadeXyz = vec3(fade(Pf0)).toVar();
|
|
62
|
+
const nZ = vec4(mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fadeXyz.z));
|
|
63
|
+
const nYz = vec2(mix(nZ.xy, nZ.zw, fadeXyz.y));
|
|
64
|
+
const nXyz = mix(nYz.x, nYz.y, fadeXyz.x);
|
|
65
|
+
return mul(2.2, nXyz);
|
|
66
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ridgeNoise: (...args: unknown[]) => import("three/tsl").TSLNode;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { Fn, Loop, abs, clamp, float } from "three/tsl";
|
|
3
|
+
import { simplexNoise3d } from "./simplex-noise-3d.js";
|
|
4
|
+
export const ridgeNoise = Fn(([pImmutable]) => {
|
|
5
|
+
const p = pImmutable.toVar();
|
|
6
|
+
const value = float(0).toVar();
|
|
7
|
+
const amplitude = float(0.5).toVar();
|
|
8
|
+
const frequency = float(1).toVar();
|
|
9
|
+
const weight = float(1).toVar();
|
|
10
|
+
Loop({ end: 6, start: 0, type: "int" }, () => {
|
|
11
|
+
const n = float(1).sub(abs(simplexNoise3d(p.mul(frequency)).mul(2)));
|
|
12
|
+
const signal = n.mul(n).mul(weight);
|
|
13
|
+
value.addAssign(signal.mul(amplitude));
|
|
14
|
+
weight.assign(clamp(signal, 0, 1));
|
|
15
|
+
frequency.mulAssign(2.0);
|
|
16
|
+
amplitude.mulAssign(0.5);
|
|
17
|
+
});
|
|
18
|
+
return value;
|
|
19
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const simplexNoise3d: (...args: unknown[]) => import("three/tsl").TSLNode;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { Fn, abs, dot, float, floor, max, min, mod, mul, step, sub, vec2, vec3, vec4, } from "three/tsl";
|
|
3
|
+
import { permute, taylorInvSqrt } from "./common.js";
|
|
4
|
+
export const simplexNoise3d = Fn(([vImmutable]) => {
|
|
5
|
+
const v = vec3(vImmutable).toVar();
|
|
6
|
+
const c = vec2(1.0 / 6.0, 1.0 / 3.0);
|
|
7
|
+
const d = vec4(0.0, 0.5, 1.0, 2.0);
|
|
8
|
+
const i = vec3(floor(v.add(dot(v, c.yyy)))).toVar();
|
|
9
|
+
const x0 = vec3(v.sub(i).add(dot(i, c.xxx))).toVar();
|
|
10
|
+
const g = vec3(step(x0.yzx, x0.xyz)).toVar();
|
|
11
|
+
const l = vec3(sub(1.0, g)).toVar();
|
|
12
|
+
const i1 = vec3(min(g.xyz, l.zxy)).toVar();
|
|
13
|
+
const i2 = vec3(max(g.xyz, l.zxy)).toVar();
|
|
14
|
+
const x1 = vec3(x0.sub(i1).add(mul(1.0, c.xxx))).toVar();
|
|
15
|
+
const x2 = vec3(x0.sub(i2).add(mul(2.0, c.xxx))).toVar();
|
|
16
|
+
const x3 = vec3(x0.sub(1).add(mul(3.0, c.xxx))).toVar();
|
|
17
|
+
i.assign(mod(i, 289.0));
|
|
18
|
+
const p = vec4(permute(permute(permute(i.z.add(vec4(0.0, i1.z, i2.z, 1.0))).add(i.y.add(vec4(0.0, i1.y, i2.y, 1.0)))).add(i.x.add(vec4(0.0, i1.x, i2.x, 1.0))))).toVar();
|
|
19
|
+
const n = float(1.0 / 7.0).toVar();
|
|
20
|
+
const ns = vec3(n.mul(d.wyz).sub(d.xzx)).toVar();
|
|
21
|
+
const j = vec4(p.sub(mul(49.0, floor(p.mul(ns.z.mul(ns.z)))))).toVar();
|
|
22
|
+
const x = vec4(floor(j.mul(ns.z)).mul(ns.x).add(ns.yyyy)).toVar();
|
|
23
|
+
const y = vec4(floor(j.sub(mul(7.0, floor(j.mul(ns.z))))).mul(ns.x).add(ns.yyyy)).toVar();
|
|
24
|
+
const h = vec4(sub(1.0, abs(x).sub(abs(y)))).toVar();
|
|
25
|
+
const b0 = vec4(x.xy, y.xy).toVar();
|
|
26
|
+
const b1 = vec4(x.zw, y.zw).toVar();
|
|
27
|
+
const s0 = vec4(floor(b0).mul(2.0).add(1.0)).toVar();
|
|
28
|
+
const s1 = vec4(floor(b1).mul(2.0).add(1.0)).toVar();
|
|
29
|
+
const sh = vec4(step(h, vec4(0.0)).negate()).toVar();
|
|
30
|
+
const a0 = vec4(b0.xzyw.add(s0.xzyw.mul(sh.xxyy))).toVar();
|
|
31
|
+
const a1 = vec4(b1.xzyw.add(s1.xzyw.mul(sh.zzww))).toVar();
|
|
32
|
+
const p0 = vec3(a0.xy, h.x).toVar();
|
|
33
|
+
const p1 = vec3(a0.zw, h.y).toVar();
|
|
34
|
+
const p2 = vec3(a1.xy, h.z).toVar();
|
|
35
|
+
const p3 = vec3(a1.zw, h.w).toVar();
|
|
36
|
+
const norm = vec4(taylorInvSqrt(vec4(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3)))).toVar();
|
|
37
|
+
p0.mulAssign(norm.x);
|
|
38
|
+
p1.mulAssign(norm.y);
|
|
39
|
+
p2.mulAssign(norm.z);
|
|
40
|
+
p3.mulAssign(norm.w);
|
|
41
|
+
const m = vec4(max(sub(0.6, vec4(dot(x0, x0), dot(x1, x1), dot(x2, x2), dot(x3, x3))), 0.0)).toVar();
|
|
42
|
+
m.assign(m.mul(m));
|
|
43
|
+
return mul(42.0, dot(m.mul(m), vec4(dot(p0, x0), dot(p1, x1), dot(p2, x2), dot(p3, x3))));
|
|
44
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const simplexNoise4d: (...args: unknown[]) => import("three/tsl").TSLNode;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { Fn, clamp, dot, float, floor, max, mod, mul, step, sub, vec2, vec3, vec4, } from "three/tsl";
|
|
3
|
+
import { grad4, permute, taylorInvSqrt } from "./common.js";
|
|
4
|
+
export const simplexNoise4d = Fn(([vImmutable]) => {
|
|
5
|
+
const v = vec4(vImmutable).toVar();
|
|
6
|
+
const c = vec2(0.1381966011250105, 0.30901699437494745);
|
|
7
|
+
const i = vec4(floor(v.add(dot(v, c.yyyy)))).toVar();
|
|
8
|
+
const x0 = vec4(v.sub(i).add(dot(i, c.xxxx))).toVar();
|
|
9
|
+
const i0 = vec4().toVar();
|
|
10
|
+
const isX = vec3(step(x0.yzw, x0.xxx)).toVar();
|
|
11
|
+
const isYZ = vec3(step(x0.zww, x0.yyz)).toVar();
|
|
12
|
+
i0.x.assign(isX.x.add(isX.y).add(isX.z));
|
|
13
|
+
i0.yzw.assign(sub(1.0, isX));
|
|
14
|
+
i0.y.addAssign(isYZ.x.add(isYZ.y));
|
|
15
|
+
i0.zw.addAssign(sub(1.0, isYZ.xy));
|
|
16
|
+
i0.z.addAssign(isYZ.z);
|
|
17
|
+
i0.w.addAssign(sub(1.0, isYZ.z));
|
|
18
|
+
const i3 = vec4(clamp(i0, 0.0, 1.0)).toVar();
|
|
19
|
+
const i2 = vec4(clamp(i0.sub(1.0), 0.0, 1.0)).toVar();
|
|
20
|
+
const i1 = vec4(clamp(i0.sub(2.0), 0.0, 1.0)).toVar();
|
|
21
|
+
const x1 = vec4(x0.sub(i1).add(mul(1.0, c.xxxx))).toVar();
|
|
22
|
+
const x2 = vec4(x0.sub(i2).add(mul(2.0, c.xxxx))).toVar();
|
|
23
|
+
const x3 = vec4(x0.sub(i3).add(mul(3.0, c.xxxx))).toVar();
|
|
24
|
+
const x4 = vec4(x0.sub(1.0).add(mul(4.0, c.xxxx))).toVar();
|
|
25
|
+
i.assign(mod(i, 289.0));
|
|
26
|
+
const j0 = float(permute(permute(permute(permute(i.w).add(i.z)).add(i.y)).add(i.x))).toVar();
|
|
27
|
+
const j1 = vec4(permute(permute(permute(permute(i.w.add(vec4(i1.w, i2.w, i3.w, 1.0)))
|
|
28
|
+
.add(i.z)
|
|
29
|
+
.add(vec4(i1.z, i2.z, i3.z, 1.0)))
|
|
30
|
+
.add(i.y)
|
|
31
|
+
.add(vec4(i1.y, i2.y, i3.y, 1.0)))
|
|
32
|
+
.add(i.x)
|
|
33
|
+
.add(vec4(i1.x, i2.x, i3.x, 1.0)))).toVar();
|
|
34
|
+
const ip = vec4(1.0 / 294.0, 1.0 / 49.0, 1.0 / 7.0, 0.0).toVar();
|
|
35
|
+
const p0 = vec4(grad4(j0, ip)).toVar();
|
|
36
|
+
const p1 = vec4(grad4(j1.x, ip)).toVar();
|
|
37
|
+
const p2 = vec4(grad4(j1.y, ip)).toVar();
|
|
38
|
+
const p3 = vec4(grad4(j1.z, ip)).toVar();
|
|
39
|
+
const p4 = vec4(grad4(j1.w, ip)).toVar();
|
|
40
|
+
const norm = vec4(taylorInvSqrt(vec4(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3)))).toVar();
|
|
41
|
+
p0.mulAssign(norm.x);
|
|
42
|
+
p1.mulAssign(norm.y);
|
|
43
|
+
p2.mulAssign(norm.z);
|
|
44
|
+
p3.mulAssign(norm.w);
|
|
45
|
+
p4.mulAssign(taylorInvSqrt(dot(p4, p4)));
|
|
46
|
+
const m0 = vec3(max(sub(0.6, vec3(dot(x0, x0), dot(x1, x1), dot(x2, x2))), 0.0)).toVar();
|
|
47
|
+
const m1 = vec2(max(sub(0.6, vec2(dot(x3, x3), dot(x4, x4))), 0.0)).toVar();
|
|
48
|
+
m0.assign(m0.mul(m0));
|
|
49
|
+
m1.assign(m1.mul(m1));
|
|
50
|
+
return mul(49.0, dot(m0.mul(m0), vec3(dot(p0, x0), dot(p1, x1), dot(p2, x2))).add(dot(m1.mul(m1), vec2(dot(p3, x3), dot(p4, x4)))));
|
|
51
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turbulence based on XorDev's "Turbulent Dark" technique.
|
|
3
|
+
* Displaces coordinates by layering rotated sine waves at increasing frequencies
|
|
4
|
+
*
|
|
5
|
+
* @see https://mini.gmshaders.com/p/turbulence
|
|
6
|
+
*/
|
|
7
|
+
export declare const turbulence: (...args: unknown[]) => import("three/tsl").TSLNode;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { Fn, float, Loop, sin, vec2 } from "three/tsl";
|
|
3
|
+
const HALF_PI = 1.5707963267948966;
|
|
4
|
+
const THETA = 0.9272952180016122;
|
|
5
|
+
/**
|
|
6
|
+
* Turbulence based on XorDev's "Turbulent Dark" technique.
|
|
7
|
+
* Displaces coordinates by layering rotated sine waves at increasing frequencies
|
|
8
|
+
*
|
|
9
|
+
* @see https://mini.gmshaders.com/p/turbulence
|
|
10
|
+
*/
|
|
11
|
+
export const turbulence = Fn(([pInput, time, rawOptions]) => {
|
|
12
|
+
const options = rawOptions ?? {};
|
|
13
|
+
const { _num = 10, _amp = 0.7, _speed = 0.3, _freq = 2.0, _exp = 1.4, } = options;
|
|
14
|
+
const p = vec2(pInput.xy).toVar();
|
|
15
|
+
const t = time.mul(float(_speed));
|
|
16
|
+
const freq = float(_freq).toVar();
|
|
17
|
+
const angle = float(0.0).toVar();
|
|
18
|
+
const iter = float(0.0).toVar();
|
|
19
|
+
Loop({ end: _num, start: 0, type: "int" }, () => {
|
|
20
|
+
const c = sin(angle.add(HALF_PI));
|
|
21
|
+
const s = sin(angle);
|
|
22
|
+
const phase = freq
|
|
23
|
+
.mul(p.x.mul(s).add(p.y.mul(c)))
|
|
24
|
+
.add(t)
|
|
25
|
+
.add(iter);
|
|
26
|
+
const scale = float(_amp).mul(sin(phase)).div(freq);
|
|
27
|
+
p.x.addAssign(scale.mul(c));
|
|
28
|
+
p.y.addAssign(scale.mul(s.negate()));
|
|
29
|
+
angle.addAssign(THETA);
|
|
30
|
+
freq.mulAssign(float(_exp));
|
|
31
|
+
iter.addAssign(1.0);
|
|
32
|
+
});
|
|
33
|
+
return p.sub(pInput.xy);
|
|
34
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const valueNoise3d: (...args: unknown[]) => import("three/tsl").TSLNode;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { Fn, dot, floor, fract, mix, sin, vec3 } from "three/tsl";
|
|
3
|
+
import { fade } from "./common.js";
|
|
4
|
+
const hash31 = Fn(([p]) => {
|
|
5
|
+
return fract(sin(dot(p, vec3(127.1, 311.7, 74.7))).mul(43758.5453123));
|
|
6
|
+
});
|
|
7
|
+
export const valueNoise3d = Fn(([pImmutable]) => {
|
|
8
|
+
const p = vec3(pImmutable).toVar();
|
|
9
|
+
const cell = vec3(floor(p)).toVar();
|
|
10
|
+
const local = vec3(fract(p)).toVar();
|
|
11
|
+
const eased = vec3(fade(local)).toVar();
|
|
12
|
+
const n000 = hash31(cell);
|
|
13
|
+
const n100 = hash31(cell.add(vec3(1, 0, 0)));
|
|
14
|
+
const n010 = hash31(cell.add(vec3(0, 1, 0)));
|
|
15
|
+
const n110 = hash31(cell.add(vec3(1, 1, 0)));
|
|
16
|
+
const n001 = hash31(cell.add(vec3(0, 0, 1)));
|
|
17
|
+
const n101 = hash31(cell.add(vec3(1, 0, 1)));
|
|
18
|
+
const n011 = hash31(cell.add(vec3(0, 1, 1)));
|
|
19
|
+
const n111 = hash31(cell.add(vec3(1, 1, 1)));
|
|
20
|
+
const nx00 = mix(n000, n100, eased.x);
|
|
21
|
+
const nx10 = mix(n010, n110, eased.x);
|
|
22
|
+
const nx01 = mix(n001, n101, eased.x);
|
|
23
|
+
const nx11 = mix(n011, n111, eased.x);
|
|
24
|
+
const nxy0 = mix(nx00, nx10, eased.y);
|
|
25
|
+
const nxy1 = mix(nx01, nx11, eased.y);
|
|
26
|
+
return mix(nxy0, nxy1, eased.z).mul(2).sub(1);
|
|
27
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const voronoiNoise3d: (...args: unknown[]) => import("three/tsl").TSLNode;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { Fn, dot, float, floor, fract, length, min, sin, vec3 } from "three/tsl";
|
|
3
|
+
const random3 = Fn(([p]) => {
|
|
4
|
+
return fract(sin(vec3(dot(p, vec3(127.1, 311.7, 74.7)), dot(p, vec3(269.5, 183.3, 246.1)), dot(p, vec3(113.5, 271.9, 124.6)))).mul(43758.5453));
|
|
5
|
+
});
|
|
6
|
+
const checkNeighbor = Fn(([i, f, neighbor, currentMin]) => {
|
|
7
|
+
const point = random3(i.add(neighbor));
|
|
8
|
+
const diff = neighbor.add(point).sub(f);
|
|
9
|
+
return min(currentMin, length(diff));
|
|
10
|
+
});
|
|
11
|
+
export const voronoiNoise3d = Fn(([pImmutable]) => {
|
|
12
|
+
const p = vec3(pImmutable).toVar();
|
|
13
|
+
const i = vec3(floor(p)).toVar();
|
|
14
|
+
const f = vec3(fract(p)).toVar();
|
|
15
|
+
const d = float(1).toVar();
|
|
16
|
+
// Unrolled 3x3x3 neighbor search
|
|
17
|
+
d.assign(checkNeighbor(i, f, vec3(-1, -1, -1), d));
|
|
18
|
+
d.assign(checkNeighbor(i, f, vec3(-1, -1, 0), d));
|
|
19
|
+
d.assign(checkNeighbor(i, f, vec3(-1, -1, 1), d));
|
|
20
|
+
d.assign(checkNeighbor(i, f, vec3(-1, 0, -1), d));
|
|
21
|
+
d.assign(checkNeighbor(i, f, vec3(-1, 0, 0), d));
|
|
22
|
+
d.assign(checkNeighbor(i, f, vec3(-1, 0, 1), d));
|
|
23
|
+
d.assign(checkNeighbor(i, f, vec3(-1, 1, -1), d));
|
|
24
|
+
d.assign(checkNeighbor(i, f, vec3(-1, 1, 0), d));
|
|
25
|
+
d.assign(checkNeighbor(i, f, vec3(-1, 1, 1), d));
|
|
26
|
+
d.assign(checkNeighbor(i, f, vec3(0, -1, -1), d));
|
|
27
|
+
d.assign(checkNeighbor(i, f, vec3(0, -1, 0), d));
|
|
28
|
+
d.assign(checkNeighbor(i, f, vec3(0, -1, 1), d));
|
|
29
|
+
d.assign(checkNeighbor(i, f, vec3(0, 0, -1), d));
|
|
30
|
+
d.assign(checkNeighbor(i, f, vec3(0, 0, 0), d));
|
|
31
|
+
d.assign(checkNeighbor(i, f, vec3(0, 0, 1), d));
|
|
32
|
+
d.assign(checkNeighbor(i, f, vec3(0, 1, -1), d));
|
|
33
|
+
d.assign(checkNeighbor(i, f, vec3(0, 1, 0), d));
|
|
34
|
+
d.assign(checkNeighbor(i, f, vec3(0, 1, 1), d));
|
|
35
|
+
d.assign(checkNeighbor(i, f, vec3(1, -1, -1), d));
|
|
36
|
+
d.assign(checkNeighbor(i, f, vec3(1, -1, 0), d));
|
|
37
|
+
d.assign(checkNeighbor(i, f, vec3(1, -1, 1), d));
|
|
38
|
+
d.assign(checkNeighbor(i, f, vec3(1, 0, -1), d));
|
|
39
|
+
d.assign(checkNeighbor(i, f, vec3(1, 0, 0), d));
|
|
40
|
+
d.assign(checkNeighbor(i, f, vec3(1, 0, 1), d));
|
|
41
|
+
d.assign(checkNeighbor(i, f, vec3(1, 1, -1), d));
|
|
42
|
+
d.assign(checkNeighbor(i, f, vec3(1, 1, 0), d));
|
|
43
|
+
d.assign(checkNeighbor(i, f, vec3(1, 1, 1), d));
|
|
44
|
+
return d;
|
|
45
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { Fn, abs, float } from "three/tsl";
|
|
3
|
+
import { bloom } from "./bloom.js";
|
|
4
|
+
import { repeatingPattern } from "./repeating-pattern.js";
|
|
5
|
+
/**
|
|
6
|
+
* Returns a repeating pattern of lines with a bloom effect.
|
|
7
|
+
*/
|
|
8
|
+
export const bloomEdgePattern = Fn(([pattern, repeat, edge, exponent, time = float(0)]) => {
|
|
9
|
+
pattern.assign(repeatingPattern(pattern, repeat, time));
|
|
10
|
+
pattern.assign(abs(pattern));
|
|
11
|
+
pattern.assign(bloom(pattern, edge, exponent));
|
|
12
|
+
return pattern;
|
|
13
|
+
});
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
|
-
import { Fn, pow } from "three/tsl"
|
|
3
|
-
|
|
2
|
+
import { Fn, pow } from "three/tsl";
|
|
4
3
|
/**
|
|
5
4
|
* Returns a bloomed edge based on a given edge and pattern.
|
|
6
5
|
*/
|
|
7
6
|
export const bloom = Fn(([pattern, edge, exponent]) => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
})
|
|
7
|
+
pattern.assign(pow(edge.div(pattern), exponent));
|
|
8
|
+
return pattern;
|
|
9
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { Fn, PI, mix, sin, smoothstep, vec3 } from "three/tsl";
|
|
3
|
+
import { fbm } from "../noise/fbm.js";
|
|
4
|
+
/**
|
|
5
|
+
* Returns a canvas weave pattern value for a given UV coordinate.
|
|
6
|
+
*/
|
|
7
|
+
export const canvasWeavePattern = Fn(([uv]) => {
|
|
8
|
+
const grid = uv.mul(200.0).fract();
|
|
9
|
+
const noiseOffset = fbm(vec3(uv.mul(30.0), 0.0), { octaves: 3 }).mul(0.1);
|
|
10
|
+
const warpedGrid = grid.add(noiseOffset);
|
|
11
|
+
const weaveX = sin(warpedGrid.x.mul(PI).add(fbm(vec3(uv.mul(100.0), 0.0), { octaves: 2 }).mul(0.5)));
|
|
12
|
+
const weaveY = sin(warpedGrid.y.mul(PI).add(fbm(vec3(uv.mul(100.0).add(0.5), 0.0), { octaves: 2 }).mul(0.5)));
|
|
13
|
+
const weave = weaveX.mul(weaveY);
|
|
14
|
+
const smoothedWeave = smoothstep(-0.3, 0.3, weave);
|
|
15
|
+
return mix(0.9, 1.0, smoothedWeave);
|
|
16
|
+
});
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
|
-
import { Fn, dot, fract, sin, vec2 } from "three/tsl"
|
|
3
|
-
|
|
2
|
+
import { Fn, dot, fract, sin, vec2 } from "three/tsl";
|
|
4
3
|
/**
|
|
5
4
|
* Returns a grain texture pattern value for a given UV coordinate.
|
|
6
5
|
*/
|
|
7
6
|
export const grainTexturePattern = Fn(([uv]) => {
|
|
8
|
-
|
|
9
|
-
})
|
|
7
|
+
return fract(sin(dot(uv, vec2(12.9898, 78.233))).mul(43758.5453123));
|
|
8
|
+
});
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
|
-
import { Fn, float, sin } from "three/tsl"
|
|
3
|
-
|
|
2
|
+
import { Fn, float, sin } from "three/tsl";
|
|
4
3
|
/**
|
|
5
4
|
* Returns a repeating pattern of a sine function.
|
|
6
5
|
*/
|
|
7
6
|
export const repeatingPattern = Fn(([pattern, repeat, time = float(0)]) => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
})
|
|
7
|
+
pattern.assign(sin(pattern.mul(repeat).add(time)).div(repeat));
|
|
8
|
+
return pattern;
|
|
9
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const atan2: (...args: unknown[]) => import("three/tsl").TSLNode;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
|
-
import { Fn, vec2 } from "three/tsl"
|
|
3
|
-
|
|
2
|
+
import { Fn, vec2 } from "three/tsl";
|
|
4
3
|
/**
|
|
5
4
|
* Complex conjugate: conj(a + bi) = a - bi
|
|
6
5
|
*/
|
|
7
6
|
export const complexConj = Fn(([z]) => {
|
|
8
|
-
|
|
9
|
-
})
|
|
7
|
+
return vec2(z.x, z.y.negate());
|
|
8
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { cos, Fn, sin, vec2 } from "three/tsl";
|
|
3
|
+
import { cosh, sinh } from "./hyperbolic.js";
|
|
4
|
+
/**
|
|
5
|
+
* Complex cosine: cos(a + bi) = cos(a)cosh(b) - i sin(a)sinh(b)
|
|
6
|
+
*/
|
|
7
|
+
export const complexCos = Fn(([z]) => {
|
|
8
|
+
return vec2(cos(z.x).mul(cosh(z.y)), sin(z.x).mul(sinh(z.y)).negate());
|
|
9
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const complexDiv: (...args: unknown[]) => import("three/tsl").TSLNode;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const complexLog: (...args: unknown[]) => import("three/tsl").TSLNode;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { Fn, vec2 } from "three/tsl";
|
|
3
|
+
import { complexDiv } from "./complex-div.js";
|
|
4
|
+
/**
|
|
5
|
+
* Möbius transformation: (z - 1) / (z + 1)
|
|
6
|
+
*/
|
|
7
|
+
export const complexMobius = Fn(([z]) => {
|
|
8
|
+
const one = vec2(1.0, 0.0);
|
|
9
|
+
return complexDiv(z.sub(one), z.add(one));
|
|
10
|
+
});
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
|
-
import { Fn, vec2 } from "three/tsl"
|
|
3
|
-
|
|
2
|
+
import { Fn, vec2 } from "three/tsl";
|
|
4
3
|
/**
|
|
5
4
|
* Complex multiplication: (a + bi)(c + di) = (ac - bd) + (ad + bc)i
|
|
6
5
|
*/
|
|
7
6
|
export const complexMul = Fn(([a, b]) => {
|
|
8
|
-
|
|
9
|
-
})
|
|
7
|
+
return vec2(a.x.mul(b.x).sub(a.y.mul(b.y)), a.x.mul(b.y).add(a.y.mul(b.x)));
|
|
8
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { cos, Fn, length, pow, sin, vec2 } from "three/tsl";
|
|
3
|
+
import { atan2 } from "./atan2.js";
|
|
4
|
+
/**
|
|
5
|
+
* Complex power: z^n
|
|
6
|
+
* Let z = r(cos θ + i sin θ), then z^n = r^n (cos nθ + i sin nθ)
|
|
7
|
+
*/
|
|
8
|
+
export const complexPow = Fn(([z, n]) => {
|
|
9
|
+
const angle = atan2(z.y, z.x);
|
|
10
|
+
const r = length(z);
|
|
11
|
+
const rn = pow(r, n);
|
|
12
|
+
const nAngle = n.mul(angle);
|
|
13
|
+
return vec2(rn.mul(cos(nAngle)), rn.mul(sin(nAngle)));
|
|
14
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { cos, Fn, sin, vec2 } from "three/tsl";
|
|
3
|
+
import { cosh, sinh } from "./hyperbolic.js";
|
|
4
|
+
/**
|
|
5
|
+
* Complex sine: sin(a + bi) = sin(a)cosh(b) + i cos(a)sinh(b)
|
|
6
|
+
*/
|
|
7
|
+
export const complexSin = Fn(([z]) => {
|
|
8
|
+
return vec2(sin(z.x).mul(cosh(z.y)), cos(z.x).mul(sinh(z.y)));
|
|
9
|
+
});
|