shaders 2.2.26 → 2.2.27
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/core/{AngularBlur-Dl2gwk68.js → AngularBlur-DKFExWUF.js} +15 -16
- package/dist/core/{Ascii-DsuNLJKv.js → Ascii-BRApYlD4.js} +21 -22
- package/dist/core/{Beam-CTN9Ni43.js → Beam-DU7wxmIh.js} +23 -24
- package/dist/core/{Blob-CxFDZovO.js → Blob-nssNzEgN.js} +37 -38
- package/dist/core/{Blur-Y2FsmFk_.js → Blur-k37gOaRA.js} +16 -17
- package/dist/core/{Bulge-Cb-t0xqI.js → Bulge-Dm02_fG6.js} +23 -25
- package/dist/core/{CRTScreen-CtERsenz.js → CRTScreen-DLy8Rig6.js} +19 -20
- package/dist/core/ChannelBlur-BPOGOQXl.js +117 -0
- package/dist/core/{Checkerboard-BIFNsUYG.js → Checkerboard-SKsXoUXE.js} +10 -11
- package/dist/core/{ChromaFlow-vRCwhQpN.js → ChromaFlow-VpfgLFbs.js} +31 -32
- package/dist/core/{ChromaticAberration-FTquTQIL.js → ChromaticAberration-CaCyXMyE.js} +10 -11
- package/dist/core/{Circle-Daziv5d7.js → Circle-BHnAmzVb.js} +7 -8
- package/dist/core/{CursorTrail-Bsz9e6Fn.js → CursorTrail-CfVWIKok.js} +16 -17
- package/dist/core/{DiffuseBlur-Cj2PtRNd.js → DiffuseBlur-GWPb8Zht.js} +19 -21
- package/dist/core/{Dither-Cq8j0QIU.js → Dither-BNEeyo0u.js} +7 -8
- package/dist/core/{DotGrid-BHfQ3hcI.js → DotGrid-CRRS6nbt.js} +12 -13
- package/dist/core/{Duotone-XuTN9tI7.js → Duotone-5gKND3an.js} +8 -9
- package/dist/core/{FilmGrain-D3-nbi12.js → FilmGrain-osBGk_b9.js} +4 -5
- package/dist/core/{FloatingParticles-CP6GqC3k.js → FloatingParticles-CULOurGT.js} +41 -42
- package/dist/core/GlassTiles-CA90XrNT.js +67 -0
- package/dist/core/{Glow-BluFc9be.js → Glow-D0boDIAW.js} +12 -13
- package/dist/core/{Godrays-ChLh_vGl.js → Godrays-BQsDwU26.js} +27 -28
- package/dist/core/{Grid-DgyDa4H1.js → Grid-CWHxwO7R.js} +7 -8
- package/dist/core/{GridDistortion-BAspCYvp.js → GridDistortion-CZB9w-rv.js} +21 -22
- package/dist/core/{Group-Dul7PUBl.js → Group-C0AknFDS.js} +2 -3
- package/dist/core/{Halftone-Ifv5F_FT.js → Halftone-MMcLMRpL.js} +11 -12
- package/dist/core/{ImageTexture-DvYcQgJB.js → ImageTexture-D9OMwqAs.js} +26 -27
- package/dist/core/{Invert-Fz0NtIJc.js → Invert-Bmjbp6g6.js} +5 -6
- package/dist/core/{LinearBlur-LmhnQoA4.js → LinearBlur-B-Ikurxt.js} +12 -13
- package/dist/core/{LinearGradient-xbloQjzt.js → LinearGradient-DV6UkhZk.js} +21 -22
- package/dist/core/{Liquify-DMe1V5-O.js → Liquify-W8UQNeEM.js} +24 -26
- package/dist/core/{Pixelate-JF72DGuK.js → Pixelate-_pyYeLRP.js} +6 -8
- package/dist/core/{PolarCoordinates-DDvDhBE-.js → PolarCoordinates-D63xm0oJ.js} +15 -17
- package/dist/core/{ProgressiveBlur-EGkevObV.js → ProgressiveBlur-G-s-o9ic.js} +23 -24
- package/dist/core/{RadialGradient-B7ZZB_VJ.js → RadialGradient-BGVqSwh0.js} +6 -7
- package/dist/core/{RectangularCoordinates-muWR8mZS.js → RectangularCoordinates-DyHBo456.js} +19 -21
- package/dist/core/{Ripples-8XaZaXQF.js → Ripples-2FGWCZlp.js} +9 -10
- package/dist/core/{SimplexNoise-DJUe0wz_.js → SimplexNoise-B6dtUCmn.js} +4 -4
- package/dist/core/{SineWave-Dl3nFO1W.js → SineWave-BtPf6-2H.js} +11 -12
- package/dist/core/{SolidColor-CWGq_Bjq.js → SolidColor-CETl1cEr.js} +1 -1
- package/dist/core/{Spherize-C-jZEUsN.js → Spherize-BwvUcorJ.js} +24 -25
- package/dist/core/{Spiral-BSB_R39p.js → Spiral-DmJWmUmr.js} +16 -17
- package/dist/core/{Strands-0stO5BMy.js → Strands-CV1oCmHx.js} +31 -32
- package/dist/core/{Stretch-B645paha.js → Stretch-pl-Cn2F8.js} +23 -25
- package/dist/core/{Swirl-CVnbawit.js → Swirl-D65vXLDw.js} +15 -16
- package/dist/core/{TiltShift-0CxNRI6L.js → TiltShift-CFcK6Hzg.js} +22 -23
- package/dist/core/{Tritone-Daa-I5UD.js → Tritone-EmnjV2rX.js} +8 -9
- package/dist/core/{Twirl-2CJVZEtk.js → Twirl-HSMyRx5I.js} +18 -20
- package/dist/core/{WaveDistortion-BscXN2rs.js → WaveDistortion-DG8GO_l8.js} +31 -33
- package/dist/core/{ZoomBlur-CAqK0Kju.js → ZoomBlur-C01oGwwG.js} +12 -13
- package/dist/core/colorMixing-CZPFmiT4.js +68 -0
- package/dist/core/edges-Djr_12SL.js +25 -0
- package/dist/core/helpers/distort.d.ts.map +1 -1
- package/dist/core/helpers/edgeMask.d.ts.map +1 -1
- package/dist/core/helpers/glow.d.ts +3 -2
- package/dist/core/helpers/glow.d.ts.map +1 -1
- package/dist/core/helpers/grain.d.ts.map +1 -1
- package/dist/core/index.js +94 -102
- package/dist/core/shaders/AngularBlur/index.d.ts.map +1 -1
- package/dist/core/shaders/AngularBlur/index.js +2 -2
- package/dist/core/shaders/Ascii/index.d.ts.map +1 -1
- package/dist/core/shaders/Ascii/index.js +1 -1
- package/dist/core/shaders/Beam/index.d.ts.map +1 -1
- package/dist/core/shaders/Beam/index.js +3 -3
- package/dist/core/shaders/Blob/index.d.ts.map +1 -1
- package/dist/core/shaders/Blob/index.js +3 -3
- package/dist/core/shaders/Blur/index.d.ts.map +1 -1
- package/dist/core/shaders/Blur/index.js +1 -1
- package/dist/core/shaders/Bulge/index.d.ts.map +1 -1
- package/dist/core/shaders/Bulge/index.js +3 -3
- package/dist/core/shaders/CRTScreen/index.d.ts.map +1 -1
- package/dist/core/shaders/CRTScreen/index.js +1 -1
- package/dist/core/shaders/ChannelBlur/index.d.ts.map +1 -1
- package/dist/core/shaders/ChannelBlur/index.js +1 -1
- package/dist/core/shaders/Checkerboard/index.d.ts.map +1 -1
- package/dist/core/shaders/Checkerboard/index.js +3 -3
- package/dist/core/shaders/ChromaFlow/index.d.ts.map +1 -1
- package/dist/core/shaders/ChromaFlow/index.js +2 -2
- package/dist/core/shaders/ChromaticAberration/index.d.ts.map +1 -1
- package/dist/core/shaders/ChromaticAberration/index.js +2 -2
- package/dist/core/shaders/Circle/index.d.ts.map +1 -1
- package/dist/core/shaders/Circle/index.js +2 -2
- package/dist/core/shaders/CursorTrail/index.d.ts.map +1 -1
- package/dist/core/shaders/CursorTrail/index.js +3 -3
- package/dist/core/shaders/DiffuseBlur/index.d.ts.map +1 -1
- package/dist/core/shaders/DiffuseBlur/index.js +3 -3
- package/dist/core/shaders/Dither/index.d.ts.map +1 -1
- package/dist/core/shaders/Dither/index.js +2 -2
- package/dist/core/shaders/DotGrid/index.d.ts.map +1 -1
- package/dist/core/shaders/DotGrid/index.js +2 -2
- package/dist/core/shaders/Duotone/index.d.ts.map +1 -1
- package/dist/core/shaders/Duotone/index.js +3 -3
- package/dist/core/shaders/FilmGrain/index.d.ts.map +1 -1
- package/dist/core/shaders/FilmGrain/index.js +1 -1
- package/dist/core/shaders/FloatingParticles/index.d.ts.map +1 -1
- package/dist/core/shaders/FloatingParticles/index.js +2 -2
- package/dist/core/shaders/GlassTiles/index.d.ts.map +1 -1
- package/dist/core/shaders/GlassTiles/index.js +1 -1
- package/dist/core/shaders/Glow/index.d.ts.map +1 -1
- package/dist/core/shaders/Glow/index.js +1 -1
- package/dist/core/shaders/Godrays/index.d.ts.map +1 -1
- package/dist/core/shaders/Godrays/index.js +2 -2
- package/dist/core/shaders/Grid/index.d.ts.map +1 -1
- package/dist/core/shaders/Grid/index.js +2 -2
- package/dist/core/shaders/GridDistortion/index.d.ts.map +1 -1
- package/dist/core/shaders/GridDistortion/index.js +3 -3
- package/dist/core/shaders/Group/index.d.ts.map +1 -1
- package/dist/core/shaders/Group/index.js +1 -1
- package/dist/core/shaders/Halftone/index.d.ts.map +1 -1
- package/dist/core/shaders/Halftone/index.js +2 -2
- package/dist/core/shaders/ImageTexture/index.d.ts.map +1 -1
- package/dist/core/shaders/ImageTexture/index.js +1 -1
- package/dist/core/shaders/Invert/index.d.ts.map +1 -1
- package/dist/core/shaders/Invert/index.js +1 -1
- package/dist/core/shaders/LinearBlur/index.d.ts.map +1 -1
- package/dist/core/shaders/LinearBlur/index.js +2 -2
- package/dist/core/shaders/LinearGradient/index.d.ts.map +1 -1
- package/dist/core/shaders/LinearGradient/index.js +3 -3
- package/dist/core/shaders/Liquify/index.d.ts.map +1 -1
- package/dist/core/shaders/Liquify/index.js +3 -3
- package/dist/core/shaders/Pixelate/index.d.ts.map +1 -1
- package/dist/core/shaders/Pixelate/index.js +1 -1
- package/dist/core/shaders/PolarCoordinates/index.d.ts.map +1 -1
- package/dist/core/shaders/PolarCoordinates/index.js +3 -3
- package/dist/core/shaders/ProgressiveBlur/index.d.ts.map +1 -1
- package/dist/core/shaders/ProgressiveBlur/index.js +2 -2
- package/dist/core/shaders/RadialGradient/index.d.ts.map +1 -1
- package/dist/core/shaders/RadialGradient/index.js +3 -3
- package/dist/core/shaders/RectangularCoordinates/index.d.ts.map +1 -1
- package/dist/core/shaders/RectangularCoordinates/index.js +3 -3
- package/dist/core/shaders/Ripples/index.d.ts.map +1 -1
- package/dist/core/shaders/Ripples/index.js +3 -3
- package/dist/core/shaders/SimplexNoise/index.js +3 -3
- package/dist/core/shaders/SineWave/index.d.ts.map +1 -1
- package/dist/core/shaders/SineWave/index.js +2 -2
- package/dist/core/shaders/SolidColor/index.js +2 -2
- package/dist/core/shaders/Spherize/index.d.ts.map +1 -1
- package/dist/core/shaders/Spherize/index.js +2 -2
- package/dist/core/shaders/Spiral/index.d.ts.map +1 -1
- package/dist/core/shaders/Spiral/index.js +3 -3
- package/dist/core/shaders/Strands/index.d.ts.map +1 -1
- package/dist/core/shaders/Strands/index.js +2 -2
- package/dist/core/shaders/Stretch/index.d.ts.map +1 -1
- package/dist/core/shaders/Stretch/index.js +3 -3
- package/dist/core/shaders/Swirl/index.d.ts.map +1 -1
- package/dist/core/shaders/Swirl/index.js +3 -3
- package/dist/core/shaders/TiltShift/index.d.ts.map +1 -1
- package/dist/core/shaders/TiltShift/index.js +2 -2
- package/dist/core/shaders/Tritone/index.d.ts.map +1 -1
- package/dist/core/shaders/Tritone/index.js +3 -3
- package/dist/core/shaders/Twirl/index.d.ts.map +1 -1
- package/dist/core/shaders/Twirl/index.js +3 -3
- package/dist/core/shaders/WaveDistortion/index.d.ts.map +1 -1
- package/dist/core/shaders/WaveDistortion/index.js +3 -3
- package/dist/core/shaders/ZoomBlur/index.d.ts.map +1 -1
- package/dist/core/shaders/ZoomBlur/index.js +2 -2
- package/dist/core/{transformations-DxfQXZWi.js → transformations-Dv5JW9ck.js} +11 -12
- package/dist/core/utilities/colorMixing.d.ts.map +1 -1
- package/dist/core/utilities/edges.d.ts.map +1 -1
- package/dist/core/utilities/transformations.d.ts.map +1 -1
- package/dist/core/utilities/uniforms.d.ts.map +1 -1
- package/dist/core/utilities/uv.d.ts.map +1 -1
- package/dist/core/utilities/uvTransform.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/core/ChannelBlur-CvM6GJgZ.js +0 -118
- package/dist/core/GlassTiles-CXChgYaL.js +0 -69
- package/dist/core/colorMixing-BXiTAqJU.js +0 -69
- package/dist/core/edges-Bn_OIa_h.js +0 -26
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { add, convertToTexture, div, floor, mul, screenUV, select, sub, uniform, vec2, vec4 } from "three/tsl";
|
|
2
|
+
const componentDefinition = {
|
|
3
|
+
name: "GlassTiles",
|
|
4
|
+
category: "Distortions",
|
|
5
|
+
description: "Refraction-like distortion in a tile grid pattern",
|
|
6
|
+
requiresRTT: true,
|
|
7
|
+
requiresChild: true,
|
|
8
|
+
props: {
|
|
9
|
+
intensity: {
|
|
10
|
+
default: 1,
|
|
11
|
+
description: "The intensity of the glass tiles effect",
|
|
12
|
+
ui: {
|
|
13
|
+
type: "range",
|
|
14
|
+
min: 0,
|
|
15
|
+
max: 5,
|
|
16
|
+
step: .1,
|
|
17
|
+
label: "Intensity"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
tileCount: {
|
|
21
|
+
default: 100,
|
|
22
|
+
description: "Number of tiles across the shortest dimension",
|
|
23
|
+
ui: {
|
|
24
|
+
type: "range",
|
|
25
|
+
min: 1,
|
|
26
|
+
max: 200,
|
|
27
|
+
step: 1,
|
|
28
|
+
label: "Tile Count"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
uvTransformNode: ({ uv: uv$1, uniforms, viewportSize: viewportSize$1 }) => {
|
|
33
|
+
const intensity = uniforms.intensity.uniform;
|
|
34
|
+
const baseTileCount = uniforms.tileCount.uniform;
|
|
35
|
+
const aspectRatio = viewportSize$1.x.div(viewportSize$1.y);
|
|
36
|
+
const tileCount = vec2(select(aspectRatio.greaterThanEqual(1), baseTileCount.mul(aspectRatio), baseTileCount), select(aspectRatio.lessThan(1), baseTileCount.div(aspectRatio), baseTileCount));
|
|
37
|
+
const cellCoord = floor(uv$1.mul(tileCount)).div(tileCount);
|
|
38
|
+
const localUV = uv$1.sub(cellCoord);
|
|
39
|
+
const distortionCenter = vec2(.5, .5);
|
|
40
|
+
const distortionFactor = intensity.mul(.025);
|
|
41
|
+
const distortion = localUV.div(vec2(1, 1).div(tileCount)).sub(distortionCenter).mul(distortionFactor);
|
|
42
|
+
return localUV.add(distortion).add(cellCoord);
|
|
43
|
+
},
|
|
44
|
+
fragmentNode: ({ uniforms, childNode, dimensions, onCleanup }) => {
|
|
45
|
+
if (!childNode) {
|
|
46
|
+
console.error("You must pass a child component into the Glass Tiles shader.");
|
|
47
|
+
return vec4(0);
|
|
48
|
+
}
|
|
49
|
+
const texture$1 = convertToTexture(childNode);
|
|
50
|
+
onCleanup(() => {
|
|
51
|
+
if (texture$1?.renderTarget?.dispose) texture$1.renderTarget.dispose();
|
|
52
|
+
});
|
|
53
|
+
const aspectRatioUniform = uniform(dimensions.width / dimensions.height);
|
|
54
|
+
const uvNode = screenUV;
|
|
55
|
+
const intensity = uniforms.intensity.uniform;
|
|
56
|
+
const baseTileCount = uniforms.tileCount.uniform;
|
|
57
|
+
const tileCount = vec2(aspectRatioUniform.greaterThanEqual(1).select(mul(baseTileCount, aspectRatioUniform), baseTileCount), aspectRatioUniform.lessThan(1).select(div(baseTileCount, aspectRatioUniform), baseTileCount));
|
|
58
|
+
const cellCoord = div(floor(mul(uvNode, tileCount)), tileCount);
|
|
59
|
+
const localUV = sub(uvNode, cellCoord);
|
|
60
|
+
const distortionCenter = vec2(.5, .5);
|
|
61
|
+
const distortionFactor = mul(intensity, .025);
|
|
62
|
+
const finalUV = add(add(localUV, mul(sub(div(localUV, div(vec2(1), tileCount)), distortionCenter), distortionFactor)), cellCoord);
|
|
63
|
+
return vec4(texture$1.sample(finalUV));
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
var GlassTiles_default = componentDefinition;
|
|
67
|
+
export { componentDefinition as n, GlassTiles_default as t };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Fn, convertToTexture, dot, float, max, screenUV, vec2, vec3, vec4, viewportSize } from "three/tsl";
|
|
2
2
|
const componentDefinition = {
|
|
3
3
|
name: "Glow",
|
|
4
4
|
category: "Stylize",
|
|
@@ -41,34 +41,33 @@ const componentDefinition = {
|
|
|
41
41
|
}
|
|
42
42
|
},
|
|
43
43
|
fragmentNode: ({ uniforms, childNode, onCleanup }) => {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
const childTexture = convertToTexture$1(childNode);
|
|
44
|
+
if (!childNode) return vec4(0, 0, 0, 0);
|
|
45
|
+
const childTexture = convertToTexture(childNode);
|
|
47
46
|
onCleanup(() => {
|
|
48
47
|
if (childTexture?.renderTarget?.dispose) childTexture.renderTarget.dispose();
|
|
49
48
|
});
|
|
50
|
-
const originalColor = childTexture.sample(screenUV
|
|
49
|
+
const originalColor = childTexture.sample(screenUV);
|
|
51
50
|
const glowEffect = Fn(() => {
|
|
52
51
|
const blurRadius = uniforms.size.uniform;
|
|
53
52
|
const threshold = uniforms.threshold.uniform;
|
|
54
|
-
const pixelSize = vec2
|
|
55
|
-
const blurredGlow = vec4
|
|
53
|
+
const pixelSize = vec2(1).div(viewportSize);
|
|
54
|
+
const blurredGlow = vec4(0, 0, 0, 0).toVar();
|
|
56
55
|
const radius = 5;
|
|
57
56
|
for (let dx = -radius; dx <= radius; dx++) for (let dy = -radius; dy <= radius; dy++) {
|
|
58
|
-
const offset = vec2
|
|
59
|
-
const sampleUV = screenUV
|
|
57
|
+
const offset = vec2(float(dx), float(dy)).mul(pixelSize).mul(blurRadius);
|
|
58
|
+
const sampleUV = screenUV.add(offset);
|
|
60
59
|
const sampleColor = childTexture.sample(sampleUV);
|
|
61
|
-
const luminance = dot
|
|
62
|
-
const brightnessMask = max
|
|
60
|
+
const luminance = dot(sampleColor.rgb, vec3(.299, .587, .114));
|
|
61
|
+
const brightnessMask = max(float(0), luminance.sub(threshold));
|
|
63
62
|
const brightColor = sampleColor.mul(brightnessMask);
|
|
64
63
|
blurredGlow.assign(blurredGlow.add(brightColor));
|
|
65
64
|
}
|
|
66
|
-
const totalSamples = float
|
|
65
|
+
const totalSamples = float((radius * 2 + 1) * (radius * 2 + 1));
|
|
67
66
|
return blurredGlow.div(totalSamples);
|
|
68
67
|
})();
|
|
69
68
|
const intensity = uniforms.intensity.uniform;
|
|
70
69
|
const intensifiedGlow = glowEffect.mul(intensity);
|
|
71
|
-
return vec4
|
|
70
|
+
return vec4(originalColor.rgb.add(intensifiedGlow.rgb), max(originalColor.a, intensifiedGlow.a));
|
|
72
71
|
}
|
|
73
72
|
};
|
|
74
73
|
var Glow_default = componentDefinition;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { o as transformPosition, r as transformColor } from "./transformations-
|
|
2
|
-
import
|
|
1
|
+
import { o as transformPosition, r as transformColor } from "./transformations-Dv5JW9ck.js";
|
|
2
|
+
import { Fn, PI, abs, atan, clamp, float, length, mix, pow, screenUV, sin, smoothstep, time, vec2, vec4 } from "three/tsl";
|
|
3
3
|
const componentDefinition = {
|
|
4
4
|
name: "Godrays",
|
|
5
5
|
category: "Base Layers",
|
|
@@ -83,61 +83,60 @@ const componentDefinition = {
|
|
|
83
83
|
}
|
|
84
84
|
},
|
|
85
85
|
fragmentNode: ({ uniforms, uvContext }) => {
|
|
86
|
-
const
|
|
87
|
-
const
|
|
88
|
-
const
|
|
89
|
-
const shapeUV = uv.sub(centerPos);
|
|
86
|
+
const uv$1 = uvContext ?? screenUV;
|
|
87
|
+
const centerPos = vec2(uniforms.center.uniform.x, uniforms.center.uniform.y.oneMinus());
|
|
88
|
+
const shapeUV = uv$1.sub(centerPos);
|
|
90
89
|
const valueNoise = Fn(([st]) => {
|
|
91
90
|
const i = st.floor();
|
|
92
91
|
const f = st.fract();
|
|
93
92
|
const hash = (p) => {
|
|
94
|
-
return sin
|
|
93
|
+
return sin(p.x.mul(127.1).add(p.y.mul(311.7))).mul(43758.5453).fract();
|
|
95
94
|
};
|
|
96
95
|
const a = hash(i);
|
|
97
|
-
const b = hash(i.add(vec2
|
|
98
|
-
const c = hash(i.add(vec2
|
|
99
|
-
const d = hash(i.add(vec2
|
|
96
|
+
const b = hash(i.add(vec2(1, 0)));
|
|
97
|
+
const c = hash(i.add(vec2(0, 1)));
|
|
98
|
+
const d = hash(i.add(vec2(1, 1)));
|
|
100
99
|
const u = f.mul(f).mul(f.mul(-2).add(3));
|
|
101
|
-
return mix
|
|
100
|
+
return mix(mix(a, b, u.x), mix(c, d, u.x), u.y);
|
|
102
101
|
});
|
|
103
|
-
const raysShape = Fn(([uv$
|
|
104
|
-
const a = atan
|
|
105
|
-
const left = vec2
|
|
106
|
-
const right = vec2
|
|
107
|
-
const nLeft = pow
|
|
108
|
-
return mix
|
|
102
|
+
const raysShape = Fn(([uv$2, r, freq, intensity]) => {
|
|
103
|
+
const a = atan(uv$2.y, uv$2.x);
|
|
104
|
+
const left = vec2(a.mul(freq), r);
|
|
105
|
+
const right = vec2(a.mod(PI.mul(2)).mul(freq), r);
|
|
106
|
+
const nLeft = pow(valueNoise(left), intensity);
|
|
107
|
+
return mix(pow(valueNoise(right), intensity), nLeft, smoothstep(-.15, .15, uv$2.x));
|
|
109
108
|
});
|
|
110
109
|
const rayEffect = Fn(() => {
|
|
111
110
|
const animTime = time.mul(uniforms.speed.uniform).mul(.2);
|
|
112
111
|
const radius = length(shapeUV);
|
|
113
|
-
const spots = float
|
|
114
|
-
const intensityCalc = float
|
|
115
|
-
const density = float
|
|
116
|
-
const accumRay = float
|
|
112
|
+
const spots = float(6.5).mul(abs(uniforms.spotty.uniform));
|
|
113
|
+
const intensityCalc = float(4).sub(float(3).mul(clamp(uniforms.intensity.uniform, 0, 1)));
|
|
114
|
+
const density = float(6).mul(uniforms.density.uniform);
|
|
115
|
+
const accumRay = float(0).toVar();
|
|
117
116
|
const r1 = radius.mul(1).sub(animTime.mul(3));
|
|
118
|
-
const r2 = radius.mul(.5).mul(float
|
|
117
|
+
const r2 = radius.mul(.5).mul(float(1).add(spots)).sub(animTime.mul(2));
|
|
119
118
|
const f1 = density.mul(5);
|
|
120
119
|
const ray = raysShape(shapeUV, r1, f1, intensityCalc).toVar();
|
|
121
120
|
ray.assign(ray.mul(raysShape(shapeUV, r2, f1.mul(4), intensityCalc)));
|
|
122
121
|
accumRay.assign(accumRay.add(ray));
|
|
123
122
|
const r3 = radius.mul(1.4).sub(animTime.mul(2.5));
|
|
124
|
-
const r4 = radius.mul(.7).mul(float
|
|
123
|
+
const r4 = radius.mul(.7).mul(float(1).add(spots)).sub(animTime.mul(1.8));
|
|
125
124
|
const f2 = density.mul(4.5);
|
|
126
125
|
const ray2 = raysShape(shapeUV, r3, f2, intensityCalc).toVar();
|
|
127
126
|
ray2.assign(ray2.mul(raysShape(shapeUV, r4, f2.mul(3.5), intensityCalc)));
|
|
128
127
|
accumRay.assign(accumRay.add(ray2.mul(.7)));
|
|
129
|
-
return clamp
|
|
128
|
+
return clamp(accumRay, 0, 1);
|
|
130
129
|
})();
|
|
131
130
|
const rayColorRGB = uniforms.rayColor.uniform.rgb;
|
|
132
131
|
const rayColorA = uniforms.rayColor.uniform.a;
|
|
133
132
|
const bgColorRGB = uniforms.backgroundColor.uniform.rgb;
|
|
134
133
|
const bgColorA = uniforms.backgroundColor.uniform.a;
|
|
135
134
|
const rayAlpha = rayEffect.mul(rayColorA);
|
|
136
|
-
const finalAlpha = rayAlpha.add(bgColorA.mul(float
|
|
137
|
-
const safeAlpha = clamp
|
|
135
|
+
const finalAlpha = rayAlpha.add(bgColorA.mul(float(1).sub(rayAlpha)));
|
|
136
|
+
const safeAlpha = clamp(finalAlpha, .001, 1);
|
|
138
137
|
const rayContribution = rayColorRGB.mul(rayAlpha);
|
|
139
|
-
const bgContribution = bgColorRGB.mul(bgColorA).mul(float
|
|
140
|
-
return vec4
|
|
138
|
+
const bgContribution = bgColorRGB.mul(bgColorA).mul(float(1).sub(rayAlpha));
|
|
139
|
+
return vec4(rayContribution.add(bgContribution).div(safeAlpha), finalAlpha);
|
|
141
140
|
}
|
|
142
141
|
};
|
|
143
142
|
var Godrays_default = componentDefinition;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as transformColor } from "./transformations-
|
|
2
|
-
import
|
|
1
|
+
import { r as transformColor } from "./transformations-Dv5JW9ck.js";
|
|
2
|
+
import { fract, fwidth, max, screenUV, smoothstep, vec2, vec4, viewportSize } from "three/tsl";
|
|
3
3
|
const componentDefinition = {
|
|
4
4
|
name: "Grid",
|
|
5
5
|
category: "Base Layers",
|
|
@@ -39,10 +39,9 @@ const componentDefinition = {
|
|
|
39
39
|
}
|
|
40
40
|
},
|
|
41
41
|
fragmentNode: ({ uniforms, uvContext }) => {
|
|
42
|
-
const
|
|
43
|
-
const
|
|
44
|
-
const
|
|
45
|
-
const correctedUV = vec2$1(uv.x.mul(aspect), uv.y.oneMinus());
|
|
42
|
+
const uv$1 = uvContext ?? screenUV;
|
|
43
|
+
const aspect = viewportSize.x.div(viewportSize.y);
|
|
44
|
+
const correctedUV = vec2(uv$1.x.mul(aspect), uv$1.y.oneMinus());
|
|
46
45
|
const cells = uniforms.cells.uniform;
|
|
47
46
|
const gridUV = correctedUV.mul(cells);
|
|
48
47
|
const gridFract = fract(gridUV);
|
|
@@ -50,8 +49,8 @@ const componentDefinition = {
|
|
|
50
49
|
const distToLineX = gridFract.x.min(gridFract.x.oneMinus());
|
|
51
50
|
const distToLineY = gridFract.y.min(gridFract.y.oneMinus());
|
|
52
51
|
const pixelSize = fwidth(gridUV);
|
|
53
|
-
const gridMask = max
|
|
54
|
-
return vec4
|
|
52
|
+
const gridMask = max(smoothstep(lineWidth.add(pixelSize.x), lineWidth, distToLineX), smoothstep(lineWidth.add(pixelSize.y), lineWidth, distToLineY));
|
|
53
|
+
return vec4(uniforms.color.uniform.rgb, uniforms.color.uniform.a.mul(gridMask));
|
|
55
54
|
}
|
|
56
55
|
};
|
|
57
56
|
var Grid_default = componentDefinition;
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import { t as applyEdgeHandling } from "./edges-
|
|
2
|
-
import { a as transformEdges } from "./transformations-
|
|
1
|
+
import { t as applyEdgeHandling } from "./edges-Djr_12SL.js";
|
|
2
|
+
import { a as transformEdges } from "./transformations-Dv5JW9ck.js";
|
|
3
3
|
import { DataTexture, FloatType, LinearFilter, RGFormat } from "three";
|
|
4
|
-
import
|
|
4
|
+
import { convertToTexture, float, screenUV, texture, uniform, vec2, vec4 } from "three/tsl";
|
|
5
5
|
var DEFAULT_GRID_SIZE = 20;
|
|
6
6
|
var displacementStateCache = /* @__PURE__ */ new WeakMap();
|
|
7
7
|
var getOrCreateDisplacementState = (uniforms) => {
|
|
8
8
|
let state = displacementStateCache.get(uniforms);
|
|
9
9
|
const gridSize = uniforms?.gridSize?.uniform?.value ? Math.max(8, Math.min(128, Math.floor(uniforms.gridSize.uniform.value))) : DEFAULT_GRID_SIZE;
|
|
10
10
|
if (state && state.gridSize !== gridSize) {
|
|
11
|
-
state.
|
|
11
|
+
state.dataTexture.dispose();
|
|
12
12
|
state = void 0;
|
|
13
13
|
displacementStateCache.delete(uniforms);
|
|
14
14
|
}
|
|
15
15
|
if (!state) {
|
|
16
16
|
const data = new Float32Array(gridSize * gridSize * 2);
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
const dataTexture = new DataTexture(data, gridSize, gridSize, RGFormat, FloatType);
|
|
18
|
+
dataTexture.magFilter = LinearFilter;
|
|
19
|
+
dataTexture.minFilter = LinearFilter;
|
|
20
|
+
dataTexture.needsUpdate = true;
|
|
21
21
|
state = {
|
|
22
|
-
|
|
22
|
+
dataTexture,
|
|
23
23
|
data,
|
|
24
|
-
tslNode:
|
|
24
|
+
tslNode: texture(dataTexture),
|
|
25
25
|
gridSize
|
|
26
26
|
};
|
|
27
27
|
displacementStateCache.set(uniforms, state);
|
|
@@ -119,10 +119,9 @@ const componentDefinition = {
|
|
|
119
119
|
}
|
|
120
120
|
},
|
|
121
121
|
fragmentNode: ({ uniforms, onBeforeRender, childNode, onCleanup }) => {
|
|
122
|
-
const {
|
|
123
|
-
const
|
|
124
|
-
const
|
|
125
|
-
const mouseVelY = uniform$1(0);
|
|
122
|
+
const { dataTexture: displacementTexture, data: displacementData, tslNode: displacementField, gridSize: GRID_SIZE } = getOrCreateDisplacementState(uniforms);
|
|
123
|
+
const mouseVelX = uniform(0);
|
|
124
|
+
const mouseVelY = uniform(0);
|
|
126
125
|
let prevX = .5;
|
|
127
126
|
let prevY = .5;
|
|
128
127
|
let lastTime = Date.now();
|
|
@@ -168,19 +167,19 @@ const componentDefinition = {
|
|
|
168
167
|
displacementTexture.dispose();
|
|
169
168
|
displacementStateCache.delete(uniforms);
|
|
170
169
|
});
|
|
171
|
-
if (!childNode) return vec4
|
|
172
|
-
const childTexture = convertToTexture
|
|
170
|
+
if (!childNode) return vec4(0, 0, 0, 0);
|
|
171
|
+
const childTexture = convertToTexture(childNode);
|
|
173
172
|
onCleanup(() => {
|
|
174
173
|
if (childTexture?.renderTarget?.dispose) childTexture.renderTarget.dispose();
|
|
175
174
|
});
|
|
176
175
|
const gridSizeUniform = uniforms.gridSize.uniform;
|
|
177
|
-
const gridScale = float
|
|
178
|
-
const gridCellUV = screenUV
|
|
176
|
+
const gridScale = float(1).div(gridSizeUniform);
|
|
177
|
+
const gridCellUV = screenUV.div(gridScale).floor().mul(gridScale).add(gridScale.mul(.5));
|
|
179
178
|
const displacement = displacementField.sample(gridCellUV).xy;
|
|
180
|
-
const maxDisplacement = float
|
|
181
|
-
const negMaxDisplacement = float
|
|
182
|
-
const clampedDisplacement = displacement.clamp(vec2
|
|
183
|
-
const distortedUV = screenUV
|
|
179
|
+
const maxDisplacement = float(.1);
|
|
180
|
+
const negMaxDisplacement = float(-.1);
|
|
181
|
+
const clampedDisplacement = displacement.clamp(vec2(negMaxDisplacement, negMaxDisplacement), vec2(maxDisplacement, maxDisplacement));
|
|
182
|
+
const distortedUV = screenUV.sub(clampedDisplacement);
|
|
184
183
|
return applyEdgeHandling(distortedUV, childTexture.sample(distortedUV), childTexture, uniforms.edges.uniform);
|
|
185
184
|
}
|
|
186
185
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { vec4 } from "three/tsl";
|
|
2
2
|
const componentDefinition = {
|
|
3
3
|
name: "Group",
|
|
4
4
|
category: "Utilities",
|
|
@@ -6,8 +6,7 @@ const componentDefinition = {
|
|
|
6
6
|
requiresChild: true,
|
|
7
7
|
props: {},
|
|
8
8
|
fragmentNode: ({ childNode }) => {
|
|
9
|
-
|
|
10
|
-
return childNode || vec4$1(0);
|
|
9
|
+
return childNode || vec4(0);
|
|
11
10
|
}
|
|
12
11
|
};
|
|
13
12
|
var Group_default = componentDefinition;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as transformAngle } from "./transformations-
|
|
2
|
-
import
|
|
1
|
+
import { n as transformAngle } from "./transformations-Dv5JW9ck.js";
|
|
2
|
+
import { cos, dot, fract, length, radians, screenUV, sin, smoothstep, vec2, vec3, vec4, viewportSize } from "three/tsl";
|
|
3
3
|
const componentDefinition = {
|
|
4
4
|
name: "Halftone",
|
|
5
5
|
category: "Stylize",
|
|
@@ -42,23 +42,22 @@ const componentDefinition = {
|
|
|
42
42
|
}
|
|
43
43
|
},
|
|
44
44
|
fragmentNode: ({ uniforms, childNode }) => {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const _uv = screenUV$1;
|
|
45
|
+
if (!childNode) return vec4(0);
|
|
46
|
+
const _uv = screenUV;
|
|
48
47
|
const frequency = uniforms.frequency.uniform;
|
|
49
48
|
const angleDegrees = uniforms.angle.uniform;
|
|
50
49
|
const smoothness = uniforms.smoothness.uniform;
|
|
51
50
|
const angle = radians(angleDegrees);
|
|
52
|
-
const aspect = viewportSize
|
|
53
|
-
const aspectCorrectedUV = vec2
|
|
54
|
-
const c = cos
|
|
55
|
-
const s = sin
|
|
56
|
-
const gridUV = fract(vec2
|
|
51
|
+
const aspect = viewportSize.x.div(viewportSize.y);
|
|
52
|
+
const aspectCorrectedUV = vec2(_uv.x.mul(aspect), _uv.y);
|
|
53
|
+
const c = cos(angle);
|
|
54
|
+
const s = sin(angle);
|
|
55
|
+
const gridUV = fract(vec2(dot(aspectCorrectedUV, vec2(c, s.negate())), dot(aspectCorrectedUV, vec2(s, c))).mul(frequency)).sub(.5);
|
|
57
56
|
const originalColor = childNode;
|
|
58
|
-
const dotSize = dot
|
|
57
|
+
const dotSize = dot(originalColor.rgb, vec3(.299, .587, .114)).mul(.7).add(.15);
|
|
59
58
|
const dist = length(gridUV);
|
|
60
59
|
const dotPattern = smoothstep(dotSize.add(smoothness), dotSize.sub(smoothness), dist);
|
|
61
|
-
return vec4
|
|
60
|
+
return vec4(originalColor.rgb.mul(dotPattern), originalColor.a.mul(dotPattern));
|
|
62
61
|
}
|
|
63
62
|
};
|
|
64
63
|
var Halftone_default = componentDefinition;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SRGBColorSpace, Texture, TextureLoader } from "three/webgpu";
|
|
2
|
-
import
|
|
2
|
+
import { float, max, min, or, screenUV, select, step, texture, uniform, vec2, vec4, viewportSize } from "three/tsl";
|
|
3
3
|
const componentDefinition = {
|
|
4
4
|
name: "ImageTexture",
|
|
5
5
|
category: "Base Layers",
|
|
@@ -55,17 +55,16 @@ const componentDefinition = {
|
|
|
55
55
|
}
|
|
56
56
|
},
|
|
57
57
|
fragmentNode: ({ uniforms, onCleanup, onBeforeRender, uvContext }) => {
|
|
58
|
-
const
|
|
59
|
-
const baseUV = uvContext ?? screenUV$1;
|
|
58
|
+
const baseUV = uvContext ?? screenUV;
|
|
60
59
|
const loader = new TextureLoader();
|
|
61
60
|
let currentUrl = "";
|
|
62
61
|
let isLoading = false;
|
|
63
62
|
const placeholderTexture = new Texture();
|
|
64
63
|
placeholderTexture.colorSpace = SRGBColorSpace;
|
|
65
64
|
const textureNode = texture(placeholderTexture);
|
|
66
|
-
const imageAspectUniform =
|
|
67
|
-
const imageWidthUniform =
|
|
68
|
-
const imageHeightUniform =
|
|
65
|
+
const imageAspectUniform = uniform(1);
|
|
66
|
+
const imageWidthUniform = uniform(0);
|
|
67
|
+
const imageHeightUniform = uniform(0);
|
|
69
68
|
const loadImage = (url) => {
|
|
70
69
|
if (!url || url.trim() === "" || isLoading) return;
|
|
71
70
|
isLoading = true;
|
|
@@ -114,29 +113,29 @@ const componentDefinition = {
|
|
|
114
113
|
onCleanup(() => {
|
|
115
114
|
placeholderTexture.dispose();
|
|
116
115
|
});
|
|
117
|
-
const uv = baseUV;
|
|
118
|
-
const viewportAspect = viewportSize
|
|
116
|
+
const uv$1 = baseUV;
|
|
117
|
+
const viewportAspect = viewportSize.x.div(viewportSize.y);
|
|
119
118
|
const objectFitMode = uniforms.objectFit.uniform;
|
|
120
|
-
const coverScale = max
|
|
121
|
-
const coverUVScale = vec2
|
|
122
|
-
const containScale = min
|
|
123
|
-
const containUVScale = vec2
|
|
124
|
-
const fillUVScale = vec2
|
|
125
|
-
const scaleDownScale = min
|
|
126
|
-
const scaleDownUVScale = vec2
|
|
127
|
-
const noneScale = min
|
|
128
|
-
const noneUVScale = vec2
|
|
129
|
-
const isCover = step
|
|
130
|
-
const isContain = step
|
|
131
|
-
const isFill = step
|
|
132
|
-
const isScaleDown = step
|
|
133
|
-
const isNone = step
|
|
134
|
-
const uvScale = vec2
|
|
135
|
-
const adjustedUV = uv.sub(vec2
|
|
136
|
-
const finalUV = vec2
|
|
119
|
+
const coverScale = max(viewportAspect.div(imageAspectUniform), float(1));
|
|
120
|
+
const coverUVScale = vec2(imageAspectUniform.div(viewportAspect).mul(coverScale), coverScale);
|
|
121
|
+
const containScale = min(viewportAspect.div(imageAspectUniform), float(1));
|
|
122
|
+
const containUVScale = vec2(imageAspectUniform.div(viewportAspect).mul(containScale), containScale);
|
|
123
|
+
const fillUVScale = vec2(1, 1);
|
|
124
|
+
const scaleDownScale = min(min(viewportAspect.div(imageAspectUniform), float(1)), min(viewportSize.x.div(imageWidthUniform), viewportSize.y.div(imageHeightUniform)));
|
|
125
|
+
const scaleDownUVScale = vec2(imageAspectUniform.div(viewportAspect).mul(scaleDownScale), scaleDownScale);
|
|
126
|
+
const noneScale = min(viewportSize.x.div(imageWidthUniform), viewportSize.y.div(imageHeightUniform));
|
|
127
|
+
const noneUVScale = vec2(imageAspectUniform.div(viewportAspect).mul(noneScale), noneScale);
|
|
128
|
+
const isCover = step(objectFitMode, float(.5));
|
|
129
|
+
const isContain = step(float(.5), objectFitMode).mul(step(objectFitMode, float(1.5)));
|
|
130
|
+
const isFill = step(float(1.5), objectFitMode).mul(step(objectFitMode, float(2.5)));
|
|
131
|
+
const isScaleDown = step(float(2.5), objectFitMode).mul(step(objectFitMode, float(3.5)));
|
|
132
|
+
const isNone = step(float(3.5), objectFitMode);
|
|
133
|
+
const uvScale = vec2(0).add(coverUVScale.mul(isCover)).add(containUVScale.mul(isContain)).add(fillUVScale.mul(isFill)).add(scaleDownUVScale.mul(isScaleDown)).add(noneUVScale.mul(isNone));
|
|
134
|
+
const adjustedUV = uv$1.sub(vec2(.5)).div(uvScale).add(vec2(.5));
|
|
135
|
+
const finalUV = vec2(adjustedUV.x, float(1).sub(adjustedUV.y));
|
|
137
136
|
const sampledColor = textureNode.sample(finalUV);
|
|
138
|
-
const isOutOfBounds =
|
|
139
|
-
return vec4
|
|
137
|
+
const isOutOfBounds = or(or(finalUV.x.lessThan(0), finalUV.x.greaterThan(1)), or(finalUV.y.lessThan(0), finalUV.y.greaterThan(1)));
|
|
138
|
+
return vec4(sampledColor.rgb, select(isOutOfBounds, float(0), sampledColor.a));
|
|
140
139
|
}
|
|
141
140
|
};
|
|
142
141
|
var ImageTexture_default = componentDefinition;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { vec3, vec4 } from "three/tsl";
|
|
2
2
|
const componentDefinition = {
|
|
3
3
|
name: "Invert",
|
|
4
4
|
category: "Adjustments",
|
|
@@ -6,15 +6,14 @@ const componentDefinition = {
|
|
|
6
6
|
requiresChild: true,
|
|
7
7
|
props: {},
|
|
8
8
|
fragmentNode: ({ childNode }) => {
|
|
9
|
-
const { vec4: vec4$1, vec3: vec3$1 } = TSL;
|
|
10
9
|
if (!childNode) {
|
|
11
10
|
console.error("You must pass a child component into the Invert shader.");
|
|
12
|
-
return vec4
|
|
11
|
+
return vec4(0);
|
|
13
12
|
}
|
|
14
|
-
const sourceColor = childNode || vec4
|
|
13
|
+
const sourceColor = childNode || vec4(0, 0, 0, 0);
|
|
15
14
|
const alpha = sourceColor.a;
|
|
16
|
-
const unpremultiplied = alpha.greaterThan(0).select(sourceColor.rgb.div(alpha), vec3
|
|
17
|
-
return vec4
|
|
15
|
+
const unpremultiplied = alpha.greaterThan(0).select(sourceColor.rgb.div(alpha), vec3(0, 0, 0));
|
|
16
|
+
return vec4(vec3(1, 1, 1).sub(unpremultiplied).mul(alpha), alpha);
|
|
18
17
|
}
|
|
19
18
|
};
|
|
20
19
|
var Invert_default = componentDefinition;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as transformAngle } from "./transformations-
|
|
2
|
-
import
|
|
1
|
+
import { n as transformAngle } from "./transformations-Dv5JW9ck.js";
|
|
2
|
+
import { Fn, convertToTexture, cos, float, radians, screenUV, sin, vec2, vec4, viewportSize } from "three/tsl";
|
|
3
3
|
const componentDefinition = {
|
|
4
4
|
name: "LinearBlur",
|
|
5
5
|
category: "Blurs",
|
|
@@ -32,24 +32,23 @@ const componentDefinition = {
|
|
|
32
32
|
}
|
|
33
33
|
},
|
|
34
34
|
fragmentNode: ({ uniforms, childNode, onCleanup }) => {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const childTexture = convertToTexture$1(childNode);
|
|
35
|
+
if (!childNode) return vec4(0, 0, 0, 0);
|
|
36
|
+
const childTexture = convertToTexture(childNode);
|
|
38
37
|
onCleanup(() => {
|
|
39
38
|
if (childTexture?.renderTarget?.dispose) childTexture.renderTarget.dispose();
|
|
40
39
|
});
|
|
41
40
|
const angleRad = radians(uniforms.angle.uniform);
|
|
42
|
-
const blurDirection = vec2
|
|
41
|
+
const blurDirection = vec2(cos(angleRad), sin(angleRad));
|
|
43
42
|
return Fn(() => {
|
|
44
|
-
const uv = screenUV
|
|
45
|
-
const texel = vec2
|
|
43
|
+
const uv$1 = screenUV;
|
|
44
|
+
const texel = vec2(1).div(viewportSize);
|
|
46
45
|
const blurVector = blurDirection.mul(uniforms.intensity.uniform).mul(texel).mul(2);
|
|
47
|
-
const total = vec4
|
|
48
|
-
const totalWeight = float
|
|
46
|
+
const total = vec4(0).toVar();
|
|
47
|
+
const totalWeight = float(0).toVar();
|
|
49
48
|
for (let i = 0; i < 32; i++) {
|
|
50
|
-
const t = float
|
|
51
|
-
const weight = float
|
|
52
|
-
const coord = uv.add(blurVector.mul(t.mul(.5)));
|
|
49
|
+
const t = float(i).div(float(31)).sub(.5).mul(2);
|
|
50
|
+
const weight = float(1).div(float(2.506628)).mul(float(-.5).mul(t).mul(t).div(float(.64)).exp());
|
|
51
|
+
const coord = uv$1.add(blurVector.mul(t.mul(.5)));
|
|
53
52
|
const sample = childTexture.sample(coord).mul(weight);
|
|
54
53
|
total.assign(total.add(sample));
|
|
55
54
|
totalWeight.assign(totalWeight.add(weight));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { a as transformEdges, i as transformColorSpace, n as transformAngle, o as transformPosition, r as transformColor, t as colorSpaceOptions } from "./transformations-
|
|
2
|
-
import { t as mixColors } from "./colorMixing-
|
|
3
|
-
import
|
|
1
|
+
import { a as transformEdges, i as transformColorSpace, n as transformAngle, o as transformPosition, r as transformColor, t as colorSpaceOptions } from "./transformations-Dv5JW9ck.js";
|
|
2
|
+
import { t as mixColors } from "./colorMixing-CZPFmiT4.js";
|
|
3
|
+
import { abs, cos, dot, float, fract, length, mod, normalize, radians, screenUV, sin, vec2, vec4 } from "three/tsl";
|
|
4
4
|
const componentDefinition = {
|
|
5
5
|
name: "LinearGradient",
|
|
6
6
|
category: "Base Layers",
|
|
@@ -100,33 +100,32 @@ const componentDefinition = {
|
|
|
100
100
|
}
|
|
101
101
|
},
|
|
102
102
|
fragmentNode: ({ uniforms, uvContext }) => {
|
|
103
|
-
const
|
|
104
|
-
const
|
|
105
|
-
const
|
|
106
|
-
const endPos = vec2$1(uniforms.end.uniform[0], uniforms.end.uniform[1].oneMinus());
|
|
103
|
+
const uv$1 = uvContext ?? screenUV;
|
|
104
|
+
const startPos = vec2(uniforms.start.uniform[0], uniforms.start.uniform[1].oneMinus());
|
|
105
|
+
const endPos = vec2(uniforms.end.uniform[0], uniforms.end.uniform[1].oneMinus());
|
|
107
106
|
const gradientVector = endPos.sub(startPos);
|
|
108
107
|
const gradientLength = length(gradientVector);
|
|
109
108
|
const gradientDir = normalize(gradientVector);
|
|
110
109
|
const angleRad = radians(uniforms.angle.uniform).negate();
|
|
111
|
-
const cosAngle = cos
|
|
112
|
-
const sinAngle = sin
|
|
110
|
+
const cosAngle = cos(angleRad);
|
|
111
|
+
const sinAngle = sin(angleRad);
|
|
113
112
|
const midpoint = startPos.add(endPos).mul(.5);
|
|
114
|
-
const centeredUV = uv.sub(midpoint);
|
|
115
|
-
const t = dot
|
|
113
|
+
const centeredUV = uv$1.sub(midpoint);
|
|
114
|
+
const t = dot(vec2(centeredUV.x.mul(cosAngle).sub(centeredUV.y.mul(sinAngle)), centeredUV.x.mul(sinAngle).add(centeredUV.y.mul(cosAngle))).add(midpoint).sub(startPos), gradientDir).div(gradientLength.max(1e-6));
|
|
116
115
|
const edgeMode = uniforms.edges.uniform;
|
|
117
|
-
const stretchT = t.clamp(float
|
|
118
|
-
const inBoundsX = t.greaterThanEqual(float
|
|
119
|
-
const inBoundsY = t.lessThanEqual(float
|
|
116
|
+
const stretchT = t.clamp(float(0), float(1));
|
|
117
|
+
const inBoundsX = t.greaterThanEqual(float(0)).select(float(1), float(0));
|
|
118
|
+
const inBoundsY = t.lessThanEqual(float(1)).select(float(1), float(0));
|
|
120
119
|
const inBounds = inBoundsX.mul(inBoundsY);
|
|
121
|
-
const mirrorT = mod(abs
|
|
122
|
-
const finalMirrorT = mirrorT.greaterThan(float
|
|
120
|
+
const mirrorT = mod(abs(t), float(2));
|
|
121
|
+
const finalMirrorT = mirrorT.greaterThan(float(1)).select(float(2).sub(mirrorT), mirrorT);
|
|
123
122
|
const wrapT = fract(t);
|
|
124
|
-
const isMode1OrHigher = edgeMode.greaterThanEqual(float
|
|
125
|
-
const isMode2OrHigher = edgeMode.greaterThanEqual(float
|
|
126
|
-
const finalT = edgeMode.greaterThanEqual(float
|
|
127
|
-
const mixedColor = mixColors(uniforms.colorA.uniform, uniforms.colorB.uniform, finalT.clamp(float
|
|
128
|
-
const finalAlpha = isMode1OrHigher.and(edgeMode.lessThan(float
|
|
129
|
-
return vec4
|
|
123
|
+
const isMode1OrHigher = edgeMode.greaterThanEqual(float(.5));
|
|
124
|
+
const isMode2OrHigher = edgeMode.greaterThanEqual(float(1.5));
|
|
125
|
+
const finalT = edgeMode.greaterThanEqual(float(2.5)).select(wrapT, isMode2OrHigher.select(finalMirrorT, isMode1OrHigher.select(t, stretchT)));
|
|
126
|
+
const mixedColor = mixColors(uniforms.colorA.uniform, uniforms.colorB.uniform, finalT.clamp(float(0), float(1)), uniforms.colorSpace.uniform);
|
|
127
|
+
const finalAlpha = isMode1OrHigher.and(edgeMode.lessThan(float(1.5))).select(mixedColor.w.mul(inBounds), mixedColor.w);
|
|
128
|
+
return vec4(mixedColor.x, mixedColor.y, mixedColor.z, finalAlpha);
|
|
130
129
|
}
|
|
131
130
|
};
|
|
132
131
|
var LinearGradient_default = componentDefinition;
|