shaders 2.5.85 → 2.5.87
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/README.md +1 -1
- package/dist/core/Crystal-z-2qqfhQ.js +394 -0
- package/dist/core/{Glass-BioLeiH6.js → Glass-BDHs6Enu.js} +40 -19
- package/dist/core/{VideoTexture-Dbsbgb1Y.js → VideoTexture-ChFw0jKS.js} +1 -1
- package/dist/core/{WebcamTexture-xvb8MuFz.js → WebcamTexture-CF1nwkNG.js} +1 -1
- package/dist/core/effects/glass.d.ts.map +1 -1
- package/dist/core/index.js +105 -77
- package/dist/core/registry.js +76 -75
- package/dist/core/renderer.d.ts.map +1 -1
- package/dist/core/shaderRegistry-O96t1zA9.js +222 -0
- package/dist/core/shaderRegistry.d.ts.map +1 -1
- package/dist/core/shaders/Crystal/index.d.ts +152 -0
- package/dist/core/shaders/Crystal/index.d.ts.map +1 -0
- package/dist/core/shaders/Crystal/index.js +4 -0
- package/dist/core/shaders/CursorRipples/index.js +1 -1
- package/dist/core/shaders/CursorTrail/index.js +1 -1
- package/dist/core/shaders/DiffuseBlur/index.js +1 -1
- package/dist/core/shaders/Dither/index.js +1 -1
- package/dist/core/shaders/DotGrid/index.js +1 -1
- package/dist/core/shaders/Duotone/index.js +1 -1
- package/dist/core/shaders/Ellipse/index.js +1 -1
- package/dist/core/shaders/Emboss/index.js +1 -1
- package/dist/core/shaders/FallingLines/index.js +1 -1
- package/dist/core/shaders/FilmGrain/index.js +1 -1
- package/dist/core/shaders/FloatingParticles/index.js +1 -1
- package/dist/core/shaders/FlowField/index.js +1 -1
- package/dist/core/shaders/Flower/index.js +1 -1
- package/dist/core/shaders/FlowingGradient/index.js +1 -1
- package/dist/core/shaders/Form3D/index.js +1 -1
- package/dist/core/shaders/Glass/index.d.ts.map +1 -1
- package/dist/core/shaders/Glass/index.js +1 -1
- package/dist/core/shaders/GlassTiles/index.js +1 -1
- package/dist/core/shaders/Glitch/index.js +1 -1
- package/dist/core/shaders/Glow/index.js +1 -1
- package/dist/core/shaders/Godrays/index.js +1 -1
- package/dist/core/shaders/Grayscale/index.js +1 -1
- package/dist/core/shaders/Grid/index.js +1 -1
- package/dist/core/shaders/GridDistortion/index.js +1 -1
- package/dist/core/shaders/Group/index.js +1 -1
- package/dist/core/shaders/Halftone/index.js +1 -1
- package/dist/core/shaders/HueShift/index.js +1 -1
- package/dist/core/shaders/ImageTexture/index.js +1 -1
- package/dist/core/shaders/Invert/index.js +1 -1
- package/dist/core/shaders/Kaleidoscope/index.js +1 -1
- package/dist/core/shaders/LensFlare/index.js +1 -1
- package/dist/core/shaders/LinearBlur/index.js +1 -1
- package/dist/core/shaders/LinearGradient/index.js +1 -1
- package/dist/core/shaders/Liquify/index.js +1 -1
- package/dist/core/shaders/Mirror/index.js +1 -1
- package/dist/core/shaders/Neon/index.js +1 -1
- package/dist/core/shaders/Paper/index.js +1 -1
- package/dist/core/shaders/Perspective/index.js +1 -1
- package/dist/core/shaders/Pixelate/index.js +1 -1
- package/dist/core/shaders/Plasma/index.js +1 -1
- package/dist/core/shaders/PolarCoordinates/index.js +1 -1
- package/dist/core/shaders/Polygon/index.js +1 -1
- package/dist/core/shaders/Posterize/index.js +1 -1
- package/dist/core/shaders/ProgressiveBlur/index.js +1 -1
- package/dist/core/shaders/RadialGradient/index.js +1 -1
- package/dist/core/shaders/RectangularCoordinates/index.js +1 -1
- package/dist/core/shaders/Ring/index.js +1 -1
- package/dist/core/shaders/Ripples/index.js +1 -1
- package/dist/core/shaders/RoundedRect/index.js +1 -1
- package/dist/core/shaders/Saturation/index.js +1 -1
- package/dist/core/shaders/Sharpness/index.js +1 -1
- package/dist/core/shaders/Shatter/index.js +1 -1
- package/dist/core/shaders/SimplexNoise/index.js +1 -1
- package/dist/core/shaders/SineWave/index.js +1 -1
- package/dist/core/shaders/SolidColor/index.js +1 -1
- package/dist/core/shaders/Spherize/index.js +1 -1
- package/dist/core/shaders/Spiral/index.js +1 -1
- package/dist/core/shaders/Star/index.js +1 -1
- package/dist/core/shaders/Strands/index.js +1 -1
- package/dist/core/shaders/Stretch/index.js +1 -1
- package/dist/core/shaders/Stripes/index.js +1 -1
- package/dist/core/shaders/StudioBackground/index.js +1 -1
- package/dist/core/shaders/Swirl/index.js +1 -1
- package/dist/core/shaders/TiltShift/index.js +1 -1
- package/dist/core/shaders/Tint/index.js +1 -1
- package/dist/core/shaders/Trapezoid/index.js +1 -1
- package/dist/core/shaders/Tritone/index.js +1 -1
- package/dist/core/shaders/Twirl/index.js +1 -1
- package/dist/core/shaders/Vesica/index.js +1 -1
- package/dist/core/shaders/Vibrance/index.js +1 -1
- package/dist/core/shaders/VideoTexture/index.js +2 -2
- package/dist/core/shaders/WaveDistortion/index.js +1 -1
- package/dist/core/shaders/WebcamTexture/index.js +2 -2
- package/dist/core/shaders/ZoomBlur/index.js +1 -1
- package/dist/core/types.d.ts +3 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/utilities/uniforms.d.ts.map +1 -1
- package/dist/js/createShader.js +1 -1
- package/dist/js/utils/generatePresetCode.d.ts.map +1 -1
- package/dist/js/utils/generatePresetCode.js +27 -0
- package/dist/react/Crystal.js +181 -0
- package/dist/react/Preview.js +1 -0
- package/dist/react/Shader.js +1 -1
- package/dist/react/components/Crystal.d.ts +33 -0
- package/dist/react/components/Crystal.d.ts.map +1 -0
- package/dist/react/engine/Preview.d.ts.map +1 -1
- package/dist/react/index.d.ts +1 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +2 -1
- package/dist/react/utils/generatePresetCode.d.ts.map +1 -1
- package/dist/react/utils/generatePresetCode.js +27 -0
- package/dist/registry.js +454 -0
- package/dist/solid/components/Crystal.d.ts +30 -0
- package/dist/solid/components/Crystal.d.ts.map +1 -0
- package/dist/solid/components/Crystal.js +183 -0
- package/dist/solid/engine/Preview.d.ts.map +1 -1
- package/dist/solid/engine/Preview.js +38 -36
- package/dist/solid/engine/Shader.js +1 -1
- package/dist/solid/index.d.ts +1 -0
- package/dist/solid/index.d.ts.map +1 -1
- package/dist/solid/index.js +152 -150
- package/dist/solid/utils/generatePresetCode.d.ts.map +1 -1
- package/dist/solid/utils/generatePresetCode.js +27 -0
- package/dist/svelte/components/Crystal.svelte.d.ts +20 -0
- package/dist/svelte/{generatePresetCode-B9QYLcji.js → generatePresetCode-BzFhasGi.js} +27 -0
- package/dist/svelte/index.d.ts +1 -0
- package/dist/svelte/index.js +477 -330
- package/dist/svelte/source/components/Crystal.svelte +287 -0
- package/dist/svelte/source/engine/Preview.svelte +2 -0
- package/dist/svelte/source/index.js +1 -0
- package/dist/svelte/utils/generatePresetCode.js +1 -1
- package/dist/vue/Crystal.js +3 -0
- package/dist/vue/Crystal.vue_vue_type_script_setup_true_lang.js +186 -0
- package/dist/vue/Preview.vue_vue_type_script_setup_true_lang.js +2 -0
- package/dist/vue/Shader.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/vue/components/Crystal.vue.d.ts +55 -0
- package/dist/vue/components/Crystal.vue.d.ts.map +1 -0
- package/dist/vue/index.d.ts +1 -0
- package/dist/vue/index.d.ts.map +1 -1
- package/dist/vue/index.js +2 -1
- package/dist/vue/utils/generatePresetCode.d.ts.map +1 -1
- package/dist/vue/utils/generatePresetCode.js +27 -0
- package/package.json +9 -1
- package/dist/core/shaderRegistry-ClxU5BC7.js +0 -220
- /package/dist/core/{CursorRipples-BY1iu4MX.js → CursorRipples-CkVMs3DF.js} +0 -0
- /package/dist/core/{CursorTrail-BzrL2WMh.js → CursorTrail-1D7ymT9O.js} +0 -0
- /package/dist/core/{DiffuseBlur-Dyd42LXw.js → DiffuseBlur-BAq1jHVB.js} +0 -0
- /package/dist/core/{Dither-CTInG_SB.js → Dither-U_UFB8oZ.js} +0 -0
- /package/dist/core/{DotGrid-CsL0dnYB.js → DotGrid-BzAsAVrt.js} +0 -0
- /package/dist/core/{Duotone-BbCFLFMK.js → Duotone-CuIRHH_k.js} +0 -0
- /package/dist/core/{Ellipse-CZWtvB3q.js → Ellipse-CJFK20Xl.js} +0 -0
- /package/dist/core/{Emboss-DCKgs4_G.js → Emboss-DWXpvlZO.js} +0 -0
- /package/dist/core/{FallingLines-DBNJVWio.js → FallingLines-BQzBwOy0.js} +0 -0
- /package/dist/core/{FilmGrain-CSuerGc6.js → FilmGrain-Birzz05_.js} +0 -0
- /package/dist/core/{FloatingParticles-CoBM_CJ8.js → FloatingParticles-shoqY6fm.js} +0 -0
- /package/dist/core/{FlowField-Bh3-dX6I.js → FlowField-CJdtd3Za.js} +0 -0
- /package/dist/core/{Flower-fYEx6ZSB.js → Flower-BST3LQVi.js} +0 -0
- /package/dist/core/{FlowingGradient-DVproCI1.js → FlowingGradient-Dsuqf7Yn.js} +0 -0
- /package/dist/core/{Form3D-DhezVuyN.js → Form3D-Czd8VBcU.js} +0 -0
- /package/dist/core/{GlassTiles-ClrOIpCg.js → GlassTiles-CQFngHS9.js} +0 -0
- /package/dist/core/{Glitch-DmWytiRl.js → Glitch-q3H4XH_K.js} +0 -0
- /package/dist/core/{Glow-Dm4dfZ_m.js → Glow-BltxRvyM.js} +0 -0
- /package/dist/core/{Godrays-CYILZUHg.js → Godrays-YxezlRHu.js} +0 -0
- /package/dist/core/{Grayscale-CPR_l4G2.js → Grayscale-D_RwmAV3.js} +0 -0
- /package/dist/core/{Grid-CCQZ3GhD.js → Grid-CV2iJqlk.js} +0 -0
- /package/dist/core/{GridDistortion-oGT8NaWa.js → GridDistortion-JCuvWcoV.js} +0 -0
- /package/dist/core/{Group-CC317vlL.js → Group-CeA8FtS3.js} +0 -0
- /package/dist/core/{Halftone-BZk1Hjz_.js → Halftone-4oL_AA-D.js} +0 -0
- /package/dist/core/{HueShift-CuE3YTBE.js → HueShift-7Gv8BV4v.js} +0 -0
- /package/dist/core/{ImageTexture-DWUSKXX0.js → ImageTexture-BaVcRld1.js} +0 -0
- /package/dist/core/{Invert-C9RiDYP_.js → Invert-D_jzp4D9.js} +0 -0
- /package/dist/core/{Kaleidoscope-DtVlQWKG.js → Kaleidoscope-Baz9Fu8k.js} +0 -0
- /package/dist/core/{LensFlare-AVpiDD1O.js → LensFlare-Dyv84bAb.js} +0 -0
- /package/dist/core/{LinearBlur-AR65FcZh.js → LinearBlur-ZGWbzIt4.js} +0 -0
- /package/dist/core/{LinearGradient-DXCXjS-K.js → LinearGradient-CZGPiyHq.js} +0 -0
- /package/dist/core/{Liquify-mhzPd19o.js → Liquify-DrWLq2Kz.js} +0 -0
- /package/dist/core/{Mirror-CSc5mJi1.js → Mirror-C5LuGm-w.js} +0 -0
- /package/dist/core/{Neon-uXetpVop.js → Neon-gsfaMvGq.js} +0 -0
- /package/dist/core/{Paper-DfUka0dt.js → Paper-BVuYd7u4.js} +0 -0
- /package/dist/core/{Perspective-uPiPmWy_.js → Perspective-CqV-lhEE.js} +0 -0
- /package/dist/core/{Pixelate-DRkAW4Lo.js → Pixelate-DrG7QsBR.js} +0 -0
- /package/dist/core/{Plasma-ELzbK-Us.js → Plasma-LpGeN0eG.js} +0 -0
- /package/dist/core/{PolarCoordinates-CalS_TB6.js → PolarCoordinates-CiNUC56M.js} +0 -0
- /package/dist/core/{Polygon-7mzxbJeF.js → Polygon-BeqB8MSz.js} +0 -0
- /package/dist/core/{Posterize-C4vtRmtA.js → Posterize-CGEUVRt_.js} +0 -0
- /package/dist/core/{ProgressiveBlur-CLYhfOvQ.js → ProgressiveBlur-jEam9zrU.js} +0 -0
- /package/dist/core/{RadialGradient-DtD8HWdM.js → RadialGradient-BMmhr2qB.js} +0 -0
- /package/dist/core/{RectangularCoordinates-B96mflF5.js → RectangularCoordinates-Cj-d2ol3.js} +0 -0
- /package/dist/core/{Ring-H6B01ZMz.js → Ring-DJl9JUMR.js} +0 -0
- /package/dist/core/{Ripples-Cevf-Hvg.js → Ripples-r12S7WG7.js} +0 -0
- /package/dist/core/{RoundedRect-OszKdYVD.js → RoundedRect--rHP7xW4.js} +0 -0
- /package/dist/core/{Saturation-CcDwPh2v.js → Saturation-BAORnZso.js} +0 -0
- /package/dist/core/{Sharpness-D_dXfDEo.js → Sharpness-CFzYBYlL.js} +0 -0
- /package/dist/core/{Shatter-NfZzVt54.js → Shatter-avsezFDy.js} +0 -0
- /package/dist/core/{SimplexNoise-aipzNV5j.js → SimplexNoise-BjoeAe6H.js} +0 -0
- /package/dist/core/{SineWave-CVeYx3n-.js → SineWave-B-2YxAht.js} +0 -0
- /package/dist/core/{SolidColor-BdbBnLxX.js → SolidColor-2o0vQu86.js} +0 -0
- /package/dist/core/{Spherize-BRGwLGeu.js → Spherize-DKJKva6y.js} +0 -0
- /package/dist/core/{Spiral-BkTBXb7z.js → Spiral-Dzsm_AJG.js} +0 -0
- /package/dist/core/{Star-CyjNgJVp.js → Star-CxI_taxd.js} +0 -0
- /package/dist/core/{Strands-Cjsw-cPu.js → Strands-42wUIQMv.js} +0 -0
- /package/dist/core/{Stretch-9cta3Z1W.js → Stretch-BVPICFxU.js} +0 -0
- /package/dist/core/{Stripes-C0sCGCz_.js → Stripes-DpWPzhd5.js} +0 -0
- /package/dist/core/{StudioBackground-BYv_-8df.js → StudioBackground-CxOYZ28g.js} +0 -0
- /package/dist/core/{Swirl-DXjIXfy7.js → Swirl-CaQpQWY2.js} +0 -0
- /package/dist/core/{TiltShift-56lcZ4cJ.js → TiltShift-yJYvxA1V.js} +0 -0
- /package/dist/core/{Tint-8_WIy9_e.js → Tint-BR2yMhfB.js} +0 -0
- /package/dist/core/{Trapezoid-SuI0dRgI.js → Trapezoid-D7qg9Gc5.js} +0 -0
- /package/dist/core/{Tritone-nyJyybHI.js → Tritone-PTTYWr_w.js} +0 -0
- /package/dist/core/{Twirl-BzSEz4xK.js → Twirl-CE2yzv3_.js} +0 -0
- /package/dist/core/{Vesica-Cj--pgNW.js → Vesica-p8oNtcOH.js} +0 -0
- /package/dist/core/{Vibrance-BETLN3Ie.js → Vibrance-CljpZu_J.js} +0 -0
- /package/dist/core/{WaveDistortion-C-j597Jm.js → WaveDistortion-BSt0JJbk.js} +0 -0
- /package/dist/core/{ZoomBlur-DFw0J9x3.js → ZoomBlur-CAeswzf5.js} +0 -0
- /package/dist/core/{browser-CqdrcD5J.js → browser-CWKHEzb9.js} +0 -0
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
## Shader Magic for Modern Frontends
|
|
13
13
|
|
|
14
|
-
Shaders is the component system for creative WebGPU effects in the browser. It's available as component libraries for Vue / Nuxt, React / Next, Svelte
|
|
14
|
+
Shaders is the component system for creative WebGPU effects in the browser. It's available as component libraries for Vue / Nuxt, React / Next, Svelte, Solid and vanilla JS.
|
|
15
15
|
|
|
16
16
|
**Learn more and try the Design Editor at https://shaders.com**
|
|
17
17
|
|
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
import { a as transformColor, l as transformPosition } from "./transformations-B5lM6fYX.js";
|
|
2
|
+
import { n as createAnalyticSdfSampler, r as createSvgSdfSampler } from "./sdf-CZRX0uur.js";
|
|
3
|
+
import { Fn, atan, clamp, convertToTexture, cos, dot, float, fract, max, min, mix, mx_worley_noise_float, pow, screenUV, sin, smoothstep, sqrt, vec2, vec3, vec4, viewportSize } from "three/tsl";
|
|
4
|
+
var transformBoolean = (value) => value ? 1 : 0;
|
|
5
|
+
var DEFAULT_SHAPE_CONFIG = JSON.stringify({
|
|
6
|
+
type: "polygonSDF",
|
|
7
|
+
radius: .35,
|
|
8
|
+
sides: 10
|
|
9
|
+
});
|
|
10
|
+
var kaleidoFold = (uvX, uvY, sectorAngle) => {
|
|
11
|
+
const dx = uvX.sub(float(.5));
|
|
12
|
+
const dy = uvY.sub(float(.5));
|
|
13
|
+
const r = sqrt(dx.mul(dx).add(dy.mul(dy)));
|
|
14
|
+
const inSector = fract(atan(dy, dx).add(float(Math.PI)).div(sectorAngle)).mul(sectorAngle);
|
|
15
|
+
const folded = min(inSector, sectorAngle.sub(inSector));
|
|
16
|
+
return vec2(r.mul(cos(folded)), r.mul(sin(folded)));
|
|
17
|
+
};
|
|
18
|
+
const componentDefinition = {
|
|
19
|
+
name: "Crystal",
|
|
20
|
+
category: "Shape Effects",
|
|
21
|
+
description: "Diamond-like crystal lens with faceted refraction.",
|
|
22
|
+
requiresRTT: true,
|
|
23
|
+
requiresChild: true,
|
|
24
|
+
props: {
|
|
25
|
+
center: {
|
|
26
|
+
default: {
|
|
27
|
+
x: .5,
|
|
28
|
+
y: .5
|
|
29
|
+
},
|
|
30
|
+
transform: transformPosition,
|
|
31
|
+
description: "Center position of the crystal shape",
|
|
32
|
+
ui: {
|
|
33
|
+
type: "position",
|
|
34
|
+
label: "Center",
|
|
35
|
+
group: "Position"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
scale: {
|
|
39
|
+
default: 1,
|
|
40
|
+
description: "Scale of the crystal shape (1 = default size)",
|
|
41
|
+
ui: {
|
|
42
|
+
type: "range",
|
|
43
|
+
min: .1,
|
|
44
|
+
max: 3,
|
|
45
|
+
step: .05,
|
|
46
|
+
label: "Scale",
|
|
47
|
+
group: "Position"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
cutout: {
|
|
51
|
+
default: false,
|
|
52
|
+
transform: transformBoolean,
|
|
53
|
+
description: "Cut out alpha outside the crystal shape",
|
|
54
|
+
ui: {
|
|
55
|
+
type: "checkbox",
|
|
56
|
+
label: "Cutout",
|
|
57
|
+
group: "Crystal"
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
refraction: {
|
|
61
|
+
default: .5,
|
|
62
|
+
description: "How strongly the crystal refracts content beneath",
|
|
63
|
+
ui: {
|
|
64
|
+
type: "range",
|
|
65
|
+
min: 0,
|
|
66
|
+
max: 3,
|
|
67
|
+
step: .01,
|
|
68
|
+
label: "Refraction",
|
|
69
|
+
group: "Crystal"
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
dispersion: {
|
|
73
|
+
default: .5,
|
|
74
|
+
description: "Prismatic rainbow dispersion — splits light into spectral colors",
|
|
75
|
+
ui: {
|
|
76
|
+
type: "range",
|
|
77
|
+
min: 0,
|
|
78
|
+
max: 2,
|
|
79
|
+
step: .01,
|
|
80
|
+
label: "Dispersion",
|
|
81
|
+
group: "Crystal"
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
facets: {
|
|
85
|
+
default: 5,
|
|
86
|
+
description: "Symmetry order — how many times the facet pattern repeats around the center",
|
|
87
|
+
ui: {
|
|
88
|
+
type: "range",
|
|
89
|
+
min: 3,
|
|
90
|
+
max: 24,
|
|
91
|
+
step: 1,
|
|
92
|
+
label: "Facets",
|
|
93
|
+
group: "Crystal"
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
fresnel: {
|
|
97
|
+
default: .05,
|
|
98
|
+
description: "Fresnel rim glow intensity around the crystal boundary",
|
|
99
|
+
ui: {
|
|
100
|
+
type: "range",
|
|
101
|
+
min: 0,
|
|
102
|
+
max: 1,
|
|
103
|
+
step: .01,
|
|
104
|
+
label: "Fresnel",
|
|
105
|
+
group: "Fresnel"
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
fresnelSoftness: {
|
|
109
|
+
default: 1,
|
|
110
|
+
description: "Fresnel rim width — higher values spread the glow further inward",
|
|
111
|
+
ui: {
|
|
112
|
+
type: "range",
|
|
113
|
+
min: 0,
|
|
114
|
+
max: 2,
|
|
115
|
+
step: .01,
|
|
116
|
+
label: "Fresnel Softness",
|
|
117
|
+
group: "Fresnel"
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
fresnelColor: {
|
|
121
|
+
default: "#ffffff",
|
|
122
|
+
transform: transformColor,
|
|
123
|
+
description: "Color of the fresnel rim glow",
|
|
124
|
+
ui: {
|
|
125
|
+
type: "color",
|
|
126
|
+
label: "Fresnel Color",
|
|
127
|
+
group: "Fresnel"
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
edgeSoftness: {
|
|
131
|
+
default: 0,
|
|
132
|
+
description: "Softness of the crystal boundary edge",
|
|
133
|
+
ui: {
|
|
134
|
+
type: "range",
|
|
135
|
+
min: 0,
|
|
136
|
+
max: 1,
|
|
137
|
+
step: .05,
|
|
138
|
+
label: "Edge Softness",
|
|
139
|
+
group: "Crystal"
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
innerZoom: {
|
|
143
|
+
default: 1.5,
|
|
144
|
+
description: "Magnification of content seen through the crystal",
|
|
145
|
+
ui: {
|
|
146
|
+
type: "range",
|
|
147
|
+
min: .5,
|
|
148
|
+
max: 3,
|
|
149
|
+
step: .05,
|
|
150
|
+
label: "Inner Zoom",
|
|
151
|
+
group: "Crystal"
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
lightAngle: {
|
|
155
|
+
default: 270,
|
|
156
|
+
description: "Light direction angle in degrees",
|
|
157
|
+
ui: {
|
|
158
|
+
type: "range",
|
|
159
|
+
min: 0,
|
|
160
|
+
max: 360,
|
|
161
|
+
step: 1,
|
|
162
|
+
label: "Light Angle",
|
|
163
|
+
group: "Lighting"
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
highlights: {
|
|
167
|
+
default: .5,
|
|
168
|
+
description: "Additive brightness on light-facing facets — never darkens",
|
|
169
|
+
ui: {
|
|
170
|
+
type: "range",
|
|
171
|
+
min: 0,
|
|
172
|
+
max: 2,
|
|
173
|
+
step: .05,
|
|
174
|
+
label: "Highlights",
|
|
175
|
+
group: "Lighting"
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
shadows: {
|
|
179
|
+
default: .3,
|
|
180
|
+
description: "Darkening on shadow-facing facets — never brightens",
|
|
181
|
+
ui: {
|
|
182
|
+
type: "range",
|
|
183
|
+
min: 0,
|
|
184
|
+
max: 1,
|
|
185
|
+
step: .05,
|
|
186
|
+
label: "Shadows",
|
|
187
|
+
group: "Lighting"
|
|
188
|
+
}
|
|
189
|
+
},
|
|
190
|
+
brightness: {
|
|
191
|
+
default: 1.2,
|
|
192
|
+
description: "Overall crystal brightness — higher values push facets toward brilliant white",
|
|
193
|
+
ui: {
|
|
194
|
+
type: "range",
|
|
195
|
+
min: .5,
|
|
196
|
+
max: 3,
|
|
197
|
+
step: .05,
|
|
198
|
+
label: "Brightness",
|
|
199
|
+
group: "Lighting"
|
|
200
|
+
}
|
|
201
|
+
},
|
|
202
|
+
tintColor: {
|
|
203
|
+
default: "#e8e0ff",
|
|
204
|
+
transform: transformColor,
|
|
205
|
+
description: "Crystal body tint color",
|
|
206
|
+
ui: {
|
|
207
|
+
type: "color",
|
|
208
|
+
label: "Tint Color",
|
|
209
|
+
group: "Tint"
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
tintIntensity: {
|
|
213
|
+
default: 0,
|
|
214
|
+
description: "How much tint color is applied to the crystal interior",
|
|
215
|
+
ui: {
|
|
216
|
+
type: "range",
|
|
217
|
+
min: 0,
|
|
218
|
+
max: 1,
|
|
219
|
+
step: .01,
|
|
220
|
+
label: "Tint Intensity",
|
|
221
|
+
group: "Tint"
|
|
222
|
+
}
|
|
223
|
+
},
|
|
224
|
+
tintPreserveLuminosity: {
|
|
225
|
+
default: true,
|
|
226
|
+
transform: transformBoolean,
|
|
227
|
+
description: "Preserve original brightness when tinting",
|
|
228
|
+
ui: {
|
|
229
|
+
type: "checkbox",
|
|
230
|
+
label: "Preserve Luminosity",
|
|
231
|
+
group: "Tint"
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
shape: {
|
|
235
|
+
default: DEFAULT_SHAPE_CONFIG,
|
|
236
|
+
description: "Serialized shape configuration (JSON)",
|
|
237
|
+
ui: {
|
|
238
|
+
type: "shape",
|
|
239
|
+
label: "Shape",
|
|
240
|
+
group: "Shape"
|
|
241
|
+
}
|
|
242
|
+
},
|
|
243
|
+
shapeSdfUrl: {
|
|
244
|
+
default: "",
|
|
245
|
+
compileTime: true,
|
|
246
|
+
description: "URL to a pre-generated SDF .bin file"
|
|
247
|
+
},
|
|
248
|
+
shapeType: {
|
|
249
|
+
default: "",
|
|
250
|
+
compileTime: true,
|
|
251
|
+
description: "Active SDF shape type"
|
|
252
|
+
}
|
|
253
|
+
},
|
|
254
|
+
fragmentNode: ({ uniforms, childNode, onCleanup, onBeforeRender }) => {
|
|
255
|
+
if (!childNode) return vec4(0);
|
|
256
|
+
const childTexture = convertToTexture(childNode);
|
|
257
|
+
onCleanup(() => {
|
|
258
|
+
if (childTexture?.renderTarget?.dispose) childTexture.renderTarget.dispose();
|
|
259
|
+
});
|
|
260
|
+
const shapeSdfUrl = uniforms.shapeSdfUrl.uniform.value;
|
|
261
|
+
const initialConfig = (() => {
|
|
262
|
+
const val = uniforms.shape.uniform.value;
|
|
263
|
+
if (typeof val === "object" && val !== null) return val;
|
|
264
|
+
try {
|
|
265
|
+
return JSON.parse(val);
|
|
266
|
+
} catch {
|
|
267
|
+
return {
|
|
268
|
+
type: "circleSDF",
|
|
269
|
+
radius: .35,
|
|
270
|
+
centerX: .5,
|
|
271
|
+
centerY: .5
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
})();
|
|
275
|
+
let sdfSampler;
|
|
276
|
+
if (shapeSdfUrl) sdfSampler = createSvgSdfSampler(shapeSdfUrl, onBeforeRender, onCleanup);
|
|
277
|
+
else sdfSampler = createAnalyticSdfSampler(uniforms.shapeType.uniform.value || initialConfig.type || "circleSDF", initialConfig, uniforms.shape, onBeforeRender);
|
|
278
|
+
return Fn(() => {
|
|
279
|
+
const uv$1 = screenUV;
|
|
280
|
+
const aspect = viewportSize.x.div(viewportSize.y);
|
|
281
|
+
const sharp = uniforms.edgeSoftness.uniform.mul(float(.5)).max(float(.001));
|
|
282
|
+
const pxH = float(1).div(viewportSize.y);
|
|
283
|
+
const centerPos = vec2(uniforms.center.uniform.x, uniforms.center.uniform.y.oneMinus());
|
|
284
|
+
const scale = uniforms.scale.uniform;
|
|
285
|
+
const sdfUV = vec2(uv$1.x.sub(centerPos.x).mul(aspect).div(scale).add(float(.5)), uv$1.y.sub(centerPos.y).div(scale).add(float(.5)));
|
|
286
|
+
const sdfRaw = sdfSampler(sdfUV).r;
|
|
287
|
+
const sdf = sdfRaw.div(scale);
|
|
288
|
+
const EPS = float(.01);
|
|
289
|
+
const gradX = sdfSampler(sdfUV.add(vec2(EPS, float(0)))).r.sub(sdfRaw).div(EPS);
|
|
290
|
+
const gradY = sdfSampler(sdfUV.add(vec2(float(0), EPS))).r.sub(sdfRaw).div(EPS);
|
|
291
|
+
const rb1 = clamp(sdf.negate().div(sharp).mul(float(32)), float(0), float(1));
|
|
292
|
+
const lightRad = uniforms.lightAngle.uniform.mul(float(Math.PI / 180));
|
|
293
|
+
const lx = cos(lightRad).add(centerPos.x.sub(float(.5)).mul(float(3)));
|
|
294
|
+
const ly = sin(lightRad).add(centerPos.y.sub(float(.5)).mul(float(3)));
|
|
295
|
+
const depthNorm = clamp(sdf.negate().div(float(.15)), float(0), float(1));
|
|
296
|
+
const edgeRefrStrength = float(1).sub(depthNorm).mul(float(1).sub(depthNorm));
|
|
297
|
+
const outerWarp = float(1).sub(smoothstep(float(0), float(.03), sdf)).mul(float(.4));
|
|
298
|
+
const refrScale = uniforms.refraction.uniform.mul(float(.15));
|
|
299
|
+
const sdfOffX = gradX.negate().mul(refrScale).mul(edgeRefrStrength.add(outerWarp)).div(aspect);
|
|
300
|
+
const sdfOffY = gradY.negate().mul(refrScale).mul(edgeRefrStrength.add(outerWarp));
|
|
301
|
+
const highlights = uniforms.highlights.uniform;
|
|
302
|
+
const shadows = uniforms.shadows.uniform;
|
|
303
|
+
const sAngle = float(2 * Math.PI).div(uniforms.facets.uniform);
|
|
304
|
+
const fUv = kaleidoFold(sdfUV.x, sdfUV.y, sAngle);
|
|
305
|
+
const pdx = sdfUV.x.sub(float(.5));
|
|
306
|
+
const pdy = sdfUV.y.sub(float(.5));
|
|
307
|
+
const posBias1 = clamp(pdx.mul(lx).add(pdy.mul(ly)).mul(float(2.5)).add(float(.5)), float(0), float(1));
|
|
308
|
+
const posBias2 = clamp(pdx.mul(ly.negate()).add(pdy.mul(lx)).mul(float(2.5)).add(float(.5)), float(0), float(1));
|
|
309
|
+
const crystalRNorm = sqrt(pdx.mul(pdx).add(pdy.mul(pdy))).div(float(.35));
|
|
310
|
+
const tableMask = float(1).sub(smoothstep(float(.22), float(.32), crystalRNorm));
|
|
311
|
+
const radialDensity = float(1).add(crystalRNorm.clamp(float(0), float(1)).mul(float(.6)));
|
|
312
|
+
const vScale1 = uniforms.facets.uniform.mul(float(1.2)).mul(radialDensity);
|
|
313
|
+
const fUvS1 = fUv.mul(vScale1);
|
|
314
|
+
const feps = float(.02);
|
|
315
|
+
const f1center = mx_worley_noise_float(fUvS1, 1);
|
|
316
|
+
const gx1 = mx_worley_noise_float(fUvS1.add(vec2(feps, float(0))), 1).sub(f1center).div(feps);
|
|
317
|
+
const gy1 = mx_worley_noise_float(fUvS1.add(vec2(float(0), feps)), 1).sub(f1center).div(feps);
|
|
318
|
+
const gLen1 = sqrt(gx1.mul(gx1).add(gy1.mul(gy1))).max(float(.001));
|
|
319
|
+
const nx1 = gx1.div(gLen1);
|
|
320
|
+
const ny1 = gy1.div(gLen1);
|
|
321
|
+
const facetVar1 = clamp(nx1.mul(lx).add(ny1.mul(ly)).mul(float(.5)).add(float(.5)), float(0), float(1));
|
|
322
|
+
const raw1 = pow(posBias1.mul(float(.6)).add(facetVar1.mul(float(.4))), float(2.5));
|
|
323
|
+
const f1s = uniforms.refraction.uniform.mul(float(.12));
|
|
324
|
+
const tableSuppress = float(1).sub(tableMask.mul(float(.9)));
|
|
325
|
+
const f1offX = gx1.mul(f1s).mul(rb1).mul(tableSuppress).div(aspect);
|
|
326
|
+
const f1offY = gy1.mul(f1s).mul(rb1).mul(tableSuppress);
|
|
327
|
+
const fUvS2 = fUv.mul(vScale1.mul(float(1.7))).add(vec2(float(3.7), float(1.2)));
|
|
328
|
+
const c2 = mx_worley_noise_float(fUvS2, 1);
|
|
329
|
+
const gx2 = mx_worley_noise_float(fUvS2.add(vec2(feps, float(0))), 1).sub(c2).div(feps);
|
|
330
|
+
const gy2 = mx_worley_noise_float(fUvS2.add(vec2(float(0), feps)), 1).sub(c2).div(feps);
|
|
331
|
+
const gLen2 = sqrt(gx2.mul(gx2).add(gy2.mul(gy2))).max(float(.001));
|
|
332
|
+
const nx2 = gx2.div(gLen2);
|
|
333
|
+
const ny2 = gy2.div(gLen2);
|
|
334
|
+
const facetVar2 = clamp(nx2.mul(ly.negate()).add(ny2.mul(lx)).mul(float(.5)).add(float(.5)), float(0), float(1));
|
|
335
|
+
const raw2 = pow(posBias2.mul(float(.5)).add(facetVar2.mul(float(.5))), float(2));
|
|
336
|
+
const f2s = uniforms.refraction.uniform.mul(float(.07));
|
|
337
|
+
const f2offX = gx2.mul(f2s).mul(rb1).div(aspect);
|
|
338
|
+
const f2offY = gy2.mul(f2s).mul(rb1);
|
|
339
|
+
const totalOffX = sdfOffX.add(f1offX).add(f2offX);
|
|
340
|
+
const totalOffY = sdfOffY.add(f1offY).add(f2offY);
|
|
341
|
+
const lensUV = centerPos.add(uv$1.sub(centerPos).div(uniforms.innerZoom.uniform)).add(vec2(totalOffX, totalOffY));
|
|
342
|
+
const lit1 = clamp(raw1.sub(float(.5)).mul(float(2)), float(0), float(1));
|
|
343
|
+
const shadow1 = clamp(float(.5).sub(raw1).mul(float(2)), float(0), float(1));
|
|
344
|
+
const bright1 = float(1).add(lit1.mul(highlights)).sub(shadow1.mul(shadows)).max(float(.02));
|
|
345
|
+
const lit2 = clamp(raw2.sub(float(.5)).mul(float(2)), float(0), float(1));
|
|
346
|
+
const shadow2 = clamp(float(.5).sub(raw2).mul(float(2)), float(0), float(1));
|
|
347
|
+
const bright2 = float(1).add(lit2.mul(highlights.mul(float(.5)))).sub(shadow2.mul(shadows.mul(float(.5))));
|
|
348
|
+
const combinedBright = bright1.mul(bright2);
|
|
349
|
+
const chrScale = uniforms.dispersion.uniform.mul(float(.12));
|
|
350
|
+
const chrOffX = totalOffX.mul(chrScale);
|
|
351
|
+
const chrOffY = totalOffY.mul(chrScale);
|
|
352
|
+
const rUV = lensUV.add(vec2(chrOffX, chrOffY));
|
|
353
|
+
const bUV = lensUV.sub(vec2(chrOffX, chrOffY));
|
|
354
|
+
const sampledR = childTexture.sample(rUV);
|
|
355
|
+
const sampledG = childTexture.sample(lensUV);
|
|
356
|
+
const sampledB = childTexture.sample(bUV);
|
|
357
|
+
const refracted = vec4(sampledR.r, sampledG.g, sampledB.b, sampledG.a);
|
|
358
|
+
const refractedRgb = vec3(refracted.r, refracted.g, refracted.b);
|
|
359
|
+
const brightness = uniforms.brightness.uniform;
|
|
360
|
+
const edgeDarken = mix(smoothstep(float(.2), float(.8), gLen1), float(1), tableMask).mul(float(.4)).add(float(.6));
|
|
361
|
+
const tableBoost = tableMask.mul(float(.25));
|
|
362
|
+
const facetMul = combinedBright.add(tableBoost).mul(edgeDarken).mul(brightness);
|
|
363
|
+
const litRgb = refractedRgb.mul(facetMul);
|
|
364
|
+
const flash1 = smoothstep(float(.65), float(1), raw1).mul(brightness);
|
|
365
|
+
const flash2 = smoothstep(float(.6), float(1), raw2).mul(brightness).mul(float(.4));
|
|
366
|
+
const flashContrib = flash1.add(flash2).mul(highlights);
|
|
367
|
+
const tintCol = vec3(uniforms.tintColor.uniform.x, uniforms.tintColor.uniform.y, uniforms.tintColor.uniform.z);
|
|
368
|
+
const tintAmt = uniforms.tintIntensity.uniform;
|
|
369
|
+
const lumWeights = vec3(.299, .587, .114);
|
|
370
|
+
const origLum = dot(litRgb, lumWeights);
|
|
371
|
+
const tinted = mix(litRgb, tintCol, tintAmt);
|
|
372
|
+
const tintedLum = dot(tinted, lumWeights);
|
|
373
|
+
const lumPreserved = tinted.mul(origLum.div(max(tintedLum, float(1e-4))));
|
|
374
|
+
const crystalRgb = uniforms.tintPreserveLuminosity.uniform.equal(float(1)).select(lumPreserved, tinted).add(vec3(flashContrib));
|
|
375
|
+
const fresnelWidth = uniforms.fresnelSoftness.uniform.mul(float(.06)).max(float(.001));
|
|
376
|
+
const fresnelDepth = clamp(sdf.negate().div(fresnelWidth), float(0), float(1));
|
|
377
|
+
const fresnelRim = float(1).sub(fresnelDepth).mul(float(1).sub(fresnelDepth)).mul(uniforms.fresnel.uniform).mul(rb1);
|
|
378
|
+
const frCol = uniforms.fresnelColor.uniform;
|
|
379
|
+
const fresnelContrib = vec3(frCol.x, frCol.y, frCol.z).mul(fresnelRim);
|
|
380
|
+
const lightFacing = gradX.mul(lx).add(gradY.mul(ly)).mul(float(.5)).add(float(.5));
|
|
381
|
+
const rb2 = clamp(sdf.sub(pxH).negate().div(sharp).mul(float(16)), float(0), float(1)).sub(clamp(sdf.negate().div(sharp).mul(float(16)), float(0), float(1))).mul(lightFacing).mul(float(.35));
|
|
382
|
+
const finalRgb = crystalRgb.add(fresnelContrib).add(rb2);
|
|
383
|
+
const transition = smoothstep(float(0), float(1), rb1);
|
|
384
|
+
const isCutout = uniforms.cutout.uniform.equal(float(1));
|
|
385
|
+
const outerUV = uv$1.add(vec2(gradX.negate().mul(refrScale).mul(outerWarp).div(aspect), gradY.negate().mul(refrScale).mul(outerWarp)));
|
|
386
|
+
const baseColor = childTexture.sample(isCutout.select(uv$1, outerUV));
|
|
387
|
+
const composited = vec4(mix(baseColor.r, finalRgb.x, transition), mix(baseColor.g, finalRgb.y, transition), mix(baseColor.b, finalRgb.z, transition), mix(baseColor.a, refracted.a, transition));
|
|
388
|
+
const cutoutAlpha = isCutout.select(transition, float(1));
|
|
389
|
+
return vec4(composited.r, composited.g, composited.b, composited.a.mul(cutoutAlpha));
|
|
390
|
+
})();
|
|
391
|
+
}
|
|
392
|
+
};
|
|
393
|
+
var Crystal_default = componentDefinition;
|
|
394
|
+
export { componentDefinition as n, Crystal_default as t };
|
|
@@ -39,26 +39,45 @@ function applyGlassEffect(childTexture, sdfSampler, uniforms) {
|
|
|
39
39
|
const offsetX = gradX.negate().mul(refrScale).mul(refrStrength).div(aspect);
|
|
40
40
|
const offsetY = gradY.negate().mul(refrScale).mul(refrStrength);
|
|
41
41
|
const lensUV = centerPos.add(uv$1.sub(centerPos).div(uniforms.innerZoom.uniform)).add(vec2(offsetX, offsetY));
|
|
42
|
-
const
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
42
|
+
const blurEnabled = typeof uniforms.blur.uniform.value === "number" ? uniforms.blur.uniform.value > 0 : true;
|
|
43
|
+
const aberrationEnabled = typeof uniforms.aberration.uniform.value === "number" ? uniforms.aberration.uniform.value > 0 : true;
|
|
44
|
+
let blurred;
|
|
45
|
+
if (!blurEnabled && !aberrationEnabled) blurred = childTexture.sample(lensUV);
|
|
46
|
+
else if (!blurEnabled && aberrationEnabled) {
|
|
47
|
+
const chrScale = uniforms.aberration.uniform.mul(float(.06));
|
|
48
|
+
const chrOffX = offsetX.mul(chrScale);
|
|
49
|
+
const chrOffY = offsetY.mul(chrScale);
|
|
50
|
+
const rUV = lensUV.add(vec2(chrOffX, chrOffY));
|
|
51
|
+
const bUV = lensUV.sub(vec2(chrOffX, chrOffY));
|
|
52
|
+
const rSample = childTexture.sample(rUV);
|
|
53
|
+
const gSample = childTexture.sample(lensUV);
|
|
54
|
+
const bSample = childTexture.sample(bUV);
|
|
55
|
+
blurred = vec4(rSample.r, gSample.g, bSample.b, gSample.a);
|
|
56
|
+
} else if (blurEnabled && !aberrationEnabled) {
|
|
57
|
+
const acc = vec4(0).toVar();
|
|
58
|
+
for (const [ox, oy] of BLUR_DISK) {
|
|
59
|
+
const blurOff = pixelSize.mul(vec2(float(ox), float(oy))).mul(uniforms.blur.uniform.mul(2));
|
|
60
|
+
acc.assign(acc.add(childTexture.sample(lensUV.add(blurOff))));
|
|
61
|
+
}
|
|
62
|
+
blurred = acc.mul(float(1 / BLUR_SAMPLE_COUNT));
|
|
63
|
+
} else {
|
|
64
|
+
const chrScale = uniforms.aberration.uniform.mul(float(.06));
|
|
65
|
+
const chrOffX = offsetX.mul(chrScale);
|
|
66
|
+
const chrOffY = offsetY.mul(chrScale);
|
|
67
|
+
const rUV = lensUV.add(vec2(chrOffX, chrOffY));
|
|
68
|
+
const bUV = lensUV.sub(vec2(chrOffX, chrOffY));
|
|
69
|
+
const accR = vec4(0).toVar();
|
|
70
|
+
const accG = vec4(0).toVar();
|
|
71
|
+
const accB = vec4(0).toVar();
|
|
72
|
+
for (const [ox, oy] of BLUR_DISK) {
|
|
73
|
+
const blurOff = pixelSize.mul(vec2(float(ox), float(oy))).mul(uniforms.blur.uniform.mul(2));
|
|
74
|
+
accR.assign(accR.add(childTexture.sample(rUV.add(blurOff))));
|
|
75
|
+
accG.assign(accG.add(childTexture.sample(lensUV.add(blurOff))));
|
|
76
|
+
accB.assign(accB.add(childTexture.sample(bUV.add(blurOff))));
|
|
77
|
+
}
|
|
78
|
+
const samplesInv = float(1 / BLUR_SAMPLE_COUNT);
|
|
79
|
+
blurred = vec4(accR.mul(samplesInv).r, accG.mul(samplesInv).g, accB.mul(samplesInv).b, accG.mul(samplesInv).a);
|
|
55
80
|
}
|
|
56
|
-
const samplesInv = float(1 / BLUR_SAMPLE_COUNT);
|
|
57
|
-
const rVal = accR.mul(samplesInv).r;
|
|
58
|
-
const gVal = accG.mul(samplesInv).g;
|
|
59
|
-
const bVal = accB.mul(samplesInv).b;
|
|
60
|
-
const aVal = accG.mul(samplesInv).a;
|
|
61
|
-
const blurred = vec4(rVal, gVal, bVal, aVal);
|
|
62
81
|
const tintCol = vec3(uniforms.tintColor.uniform.x, uniforms.tintColor.uniform.y, uniforms.tintColor.uniform.z);
|
|
63
82
|
const tintAmt = uniforms.tintIntensity.uniform;
|
|
64
83
|
const blurredRgb = vec3(blurred.r, blurred.g, blurred.b);
|
|
@@ -162,6 +181,7 @@ const componentDefinition = {
|
|
|
162
181
|
},
|
|
163
182
|
blur: {
|
|
164
183
|
default: 0,
|
|
184
|
+
compileTimeWhen: (prev, next) => prev > 0 !== next > 0,
|
|
165
185
|
description: "Frosted blur amount — 0 = clear glass, higher = frosted/diffuse",
|
|
166
186
|
ui: {
|
|
167
187
|
type: "range",
|
|
@@ -187,6 +207,7 @@ const componentDefinition = {
|
|
|
187
207
|
},
|
|
188
208
|
aberration: {
|
|
189
209
|
default: .5,
|
|
210
|
+
compileTimeWhen: (prev, next) => prev > 0 !== next > 0,
|
|
190
211
|
description: "Chromatic aberration — splits RGB channels along the refraction vector",
|
|
191
212
|
ui: {
|
|
192
213
|
type: "range",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as needsVideoCanvasWorkaround } from "./browser-
|
|
1
|
+
import { t as needsVideoCanvasWorkaround } from "./browser-CWKHEzb9.js";
|
|
2
2
|
import { CanvasTexture, SRGBColorSpace, VideoTexture } from "three/webgpu";
|
|
3
3
|
import { float, max, min, or, screenUV, select, step, texture, uniform, vec2, vec4, viewportSize } from "three/tsl";
|
|
4
4
|
const componentDefinition = {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as needsVideoCanvasWorkaround } from "./browser-
|
|
1
|
+
import { t as needsVideoCanvasWorkaround } from "./browser-CWKHEzb9.js";
|
|
2
2
|
import { CanvasTexture, SRGBColorSpace, VideoTexture } from "three/webgpu";
|
|
3
3
|
import { float, max, min, or, screenUV, select, step, texture, uniform, vec2, vec4, viewportSize } from "three/tsl";
|
|
4
4
|
const componentDefinition = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glass.d.ts","sourceRoot":"","sources":["../../src/effects/glass.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,UAAU,CAAA;AAMzC,eAAO,MAAM,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAO,CAAA;AAO/C,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IACxB,KAAK,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IACvB,YAAY,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IAC9B,UAAU,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IAC5B,SAAS,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IAC3B,UAAU,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IAC5B,IAAI,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IACtB,SAAS,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IAC3B,aAAa,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IAC/B,sBAAsB,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IACxC,UAAU,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IAC5B,SAAS,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IAC3B,cAAc,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IAChC,iBAAiB,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IACnC,OAAO,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IACzB,YAAY,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IAC9B,eAAe,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IACjC,MAAM,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IACxB,SAAS,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;CAC9B;AAgBD,wBAAgB,gBAAgB,CAC5B,YAAY,EAAE,GAAG,EACjB,UAAU,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,GAAG,EAC5B,QAAQ,EAAE,mBAAmB,GAAG,WAAW,GAC5C,IAAI,
|
|
1
|
+
{"version":3,"file":"glass.d.ts","sourceRoot":"","sources":["../../src/effects/glass.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,UAAU,CAAA;AAMzC,eAAO,MAAM,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAO,CAAA;AAO/C,MAAM,WAAW,mBAAmB;IAChC,MAAM,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IACxB,KAAK,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IACvB,YAAY,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IAC9B,UAAU,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IAC5B,SAAS,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IAC3B,UAAU,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IAC5B,IAAI,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IACtB,SAAS,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IAC3B,aAAa,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IAC/B,sBAAsB,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IACxC,UAAU,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IAC5B,SAAS,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IAC3B,cAAc,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IAChC,iBAAiB,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IACnC,OAAO,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IACzB,YAAY,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IAC9B,eAAe,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IACjC,MAAM,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;IACxB,SAAS,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE,CAAA;CAC9B;AAgBD,wBAAgB,gBAAgB,CAC5B,YAAY,EAAE,GAAG,EACjB,UAAU,EAAE,CAAC,EAAE,EAAE,GAAG,KAAK,GAAG,EAC5B,QAAQ,EAAE,mBAAmB,GAAG,WAAW,GAC5C,IAAI,CAyKN"}
|