shaders 2.2.26 → 2.2.28
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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as createAnimatedTime } from "./time-CTJvRUZ4.js";
|
|
2
|
-
import { o as transformPosition, r as transformColor } from "./transformations-
|
|
3
|
-
import
|
|
2
|
+
import { o as transformPosition, r as transformColor } from "./transformations-Dv5JW9ck.js";
|
|
3
|
+
import { Fn, abs, cos, float, max, mix, screenUV, smoothstep, vec2, vec4, viewportSize } from "three/tsl";
|
|
4
4
|
const componentDefinition = {
|
|
5
5
|
name: "Strands",
|
|
6
6
|
category: "Base Layers",
|
|
@@ -108,52 +108,51 @@ const componentDefinition = {
|
|
|
108
108
|
},
|
|
109
109
|
fragmentNode: (params) => {
|
|
110
110
|
const { uniforms, uvContext } = params;
|
|
111
|
-
const
|
|
112
|
-
const baseUV = uvContext ?? screenUV$1;
|
|
111
|
+
const baseUV = uvContext ?? screenUV;
|
|
113
112
|
const t = createAnimatedTime(params, uniforms.speed);
|
|
114
|
-
const random = Fn(([time]) => {
|
|
115
|
-
return cos$1
|
|
113
|
+
const random = Fn(([time$1]) => {
|
|
114
|
+
return cos(time$1).add(cos(time$1.mul(1.2).add(1.6))).add(cos(time$1.mul(1.4).add(1.5))).div(3);
|
|
116
115
|
});
|
|
117
|
-
return Fn(([uv]) => {
|
|
118
|
-
const aspectRatio = viewportSize
|
|
119
|
-
const startPos = vec2
|
|
120
|
-
const endPos = vec2
|
|
121
|
-
const aspectUV = vec2$1
|
|
116
|
+
return Fn(([uv$1]) => {
|
|
117
|
+
const aspectRatio = viewportSize.x.div(viewportSize.y);
|
|
118
|
+
const startPos = vec2(uniforms.start.uniform.x.mul(aspectRatio), uniforms.start.uniform.y.oneMinus());
|
|
119
|
+
const endPos = vec2(uniforms.end.uniform.x.mul(aspectRatio), uniforms.end.uniform.y.oneMinus());
|
|
120
|
+
const aspectUV = vec2(uv$1.x.mul(aspectRatio), uv$1.y);
|
|
122
121
|
const direction = endPos.sub(startPos);
|
|
123
|
-
const length = direction.length();
|
|
124
|
-
const normalizedDir = direction.div(length);
|
|
125
|
-
const perpDir = vec2
|
|
122
|
+
const length$1 = direction.length();
|
|
123
|
+
const normalizedDir = direction.div(length$1);
|
|
124
|
+
const perpDir = vec2(normalizedDir.y.negate(), normalizedDir.x);
|
|
126
125
|
const relativePos = aspectUV.sub(startPos);
|
|
127
|
-
const progress = relativePos.dot(normalizedDir).div(length);
|
|
126
|
+
const progress = relativePos.dot(normalizedDir).div(length$1);
|
|
128
127
|
const distFromLine = relativePos.dot(perpDir);
|
|
129
128
|
const waveCoord = progress.mul(10);
|
|
130
129
|
const perpCoord = distFromLine.mul(10);
|
|
131
|
-
const edgeFade = uniforms.pinEdges.uniform.select(smoothstep(float
|
|
132
|
-
const horizontalFade = uniforms.pinEdges.uniform.select(cos
|
|
133
|
-
const verticalFade = cos
|
|
134
|
-
const linesColor = vec4
|
|
130
|
+
const edgeFade = uniforms.pinEdges.uniform.select(smoothstep(float(0), float(.1), progress).mul(smoothstep(float(1), float(.9), progress)), float(1));
|
|
131
|
+
const horizontalFade = uniforms.pinEdges.uniform.select(cos(progress.mul(6.28)).mul(.5).add(.5).oneMinus(), float(1));
|
|
132
|
+
const verticalFade = cos(progress.mul(6.28)).mul(.5).add(.5).oneMinus();
|
|
133
|
+
const linesColor = vec4(0, 0, 0, 0).toVar();
|
|
135
134
|
const maxLines = uniforms.lineCount.uniform;
|
|
136
135
|
for (let i = 0; i < 32; i++) {
|
|
137
|
-
const lineActive = float
|
|
138
|
-
const lineIndex = float
|
|
136
|
+
const lineActive = float(i).lessThan(maxLines);
|
|
137
|
+
const lineIndex = float(i);
|
|
139
138
|
const normalizedIndex = lineIndex.div(maxLines);
|
|
140
|
-
const offsetFreq = float
|
|
141
|
-
const offsetSpeed = float
|
|
139
|
+
const offsetFreq = float(.5);
|
|
140
|
+
const offsetSpeed = float(1.33);
|
|
142
141
|
const offsetTime = t.mul(offsetSpeed);
|
|
143
142
|
const offsetPosition = lineIndex.add(waveCoord.mul(offsetFreq));
|
|
144
143
|
const rand = random(offsetPosition.add(offsetTime)).mul(.5).add(.5);
|
|
145
|
-
const halfWidth = mix
|
|
146
|
-
const minSpread = float
|
|
147
|
-
const maxSpread = float
|
|
148
|
-
const offset = random(offsetPosition.add(offsetTime.mul(normalizedIndex.add(1)))).mul(mix
|
|
144
|
+
const halfWidth = mix(float(.01), uniforms.lineWidth.uniform, rand.mul(horizontalFade)).mul(.5);
|
|
145
|
+
const minSpread = float(.6);
|
|
146
|
+
const maxSpread = float(2);
|
|
147
|
+
const offset = random(offsetPosition.add(offsetTime.mul(normalizedIndex.add(1)))).mul(mix(minSpread, maxSpread, horizontalFade)).mul(uniforms.amplitude.uniform);
|
|
149
148
|
const linePosition = random(waveCoord.mul(uniforms.frequency.uniform).add(t)).mul(horizontalFade).mul(uniforms.amplitude.uniform).add(offset);
|
|
150
|
-
const dist = abs
|
|
151
|
-
const lineEdgeSoftness = float
|
|
149
|
+
const dist = abs(perpCoord.sub(linePosition));
|
|
150
|
+
const lineEdgeSoftness = float(.01);
|
|
152
151
|
const line = smoothstep(halfWidth.add(lineEdgeSoftness), halfWidth.sub(lineEdgeSoftness), dist);
|
|
153
|
-
const lineContribution = vec4
|
|
154
|
-
linesColor.assign(max
|
|
152
|
+
const lineContribution = vec4(uniforms.waveColor.uniform.r, uniforms.waveColor.uniform.g, uniforms.waveColor.uniform.b, line).mul(rand);
|
|
153
|
+
linesColor.assign(max(linesColor, lineActive.select(lineContribution, vec4(0, 0, 0, 0))));
|
|
155
154
|
}
|
|
156
|
-
return linesColor.mul(vec4
|
|
155
|
+
return linesColor.mul(vec4(1, 1, 1, verticalFade.mul(edgeFade)));
|
|
157
156
|
})(baseUV);
|
|
158
157
|
}
|
|
159
158
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as applyEdgeHandling } from "./edges-
|
|
2
|
-
import { a as transformEdges, o as transformPosition } from "./transformations-
|
|
3
|
-
import
|
|
1
|
+
import { t as applyEdgeHandling } from "./edges-Djr_12SL.js";
|
|
2
|
+
import { a as transformEdges, o as transformPosition } from "./transformations-Dv5JW9ck.js";
|
|
3
|
+
import { clamp, convertToTexture, cos, float, mix, screenUV, sin, vec2, vec4, viewportSize } from "three/tsl";
|
|
4
4
|
const componentDefinition = {
|
|
5
5
|
name: "Stretch",
|
|
6
6
|
category: "Distortions",
|
|
@@ -81,51 +81,49 @@ const componentDefinition = {
|
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
},
|
|
84
|
-
uvTransformNode: ({ uv, uniforms, viewportSize: viewportSize$1 }) => {
|
|
85
|
-
const { vec2: vec2$1, float: float$1, sin: sin$1, cos: cos$1 } = TSL;
|
|
84
|
+
uvTransformNode: ({ uv: uv$1, uniforms, viewportSize: viewportSize$1 }) => {
|
|
86
85
|
const aspect = viewportSize$1.x.div(viewportSize$1.y);
|
|
87
|
-
const aspectCorrectedUV = vec2$1
|
|
88
|
-
const centerPos = vec2
|
|
86
|
+
const aspectCorrectedUV = vec2(uv$1.x.mul(aspect), uv$1.y);
|
|
87
|
+
const centerPos = vec2(uniforms.center.uniform.x.mul(aspect), uniforms.center.uniform.y.oneMinus());
|
|
89
88
|
const delta = aspectCorrectedUV.sub(centerPos);
|
|
90
89
|
const angleRad = uniforms.angle.uniform.mul(Math.PI / 180);
|
|
91
|
-
const directionVector = vec2
|
|
90
|
+
const directionVector = vec2(cos(angleRad), sin(angleRad));
|
|
92
91
|
const projection = delta.dot(directionVector);
|
|
93
92
|
const perpendicular = delta.sub(directionVector.mul(projection));
|
|
94
93
|
const falloffAmount = uniforms.falloff.uniform;
|
|
95
|
-
const transitionWidth =
|
|
96
|
-
const effectMask =
|
|
97
|
-
const scaledStrength = uniforms.strength.uniform.mul(float
|
|
98
|
-
const stretchFactor = float
|
|
94
|
+
const transitionWidth = mix(float(.001), float(75), falloffAmount);
|
|
95
|
+
const effectMask = clamp(projection.div(transitionWidth), float(0), float(1));
|
|
96
|
+
const scaledStrength = uniforms.strength.uniform.mul(float(100));
|
|
97
|
+
const stretchFactor = float(1).add(scaledStrength.mul(effectMask));
|
|
99
98
|
const finalProjection = projection.div(stretchFactor);
|
|
100
99
|
const stretchedDelta = directionVector.mul(finalProjection).add(perpendicular);
|
|
101
100
|
const stretchedUV = centerPos.add(stretchedDelta);
|
|
102
|
-
return vec2
|
|
101
|
+
return vec2(stretchedUV.x.div(aspect), stretchedUV.y);
|
|
103
102
|
},
|
|
104
103
|
fragmentNode: ({ uniforms, childNode, onCleanup }) => {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
const childTexture = convertToTexture$1(childNode);
|
|
104
|
+
if (!childNode) return vec4(0, 0, 0, 0);
|
|
105
|
+
const childTexture = convertToTexture(childNode);
|
|
108
106
|
onCleanup(() => {
|
|
109
107
|
if (childTexture?.renderTarget?.dispose) childTexture.renderTarget.dispose();
|
|
110
108
|
});
|
|
111
|
-
const aspect = viewportSize
|
|
112
|
-
const aspectCorrectedUV = vec2
|
|
113
|
-
const centerPos = vec2
|
|
109
|
+
const aspect = viewportSize.x.div(viewportSize.y);
|
|
110
|
+
const aspectCorrectedUV = vec2(screenUV.x.mul(aspect), screenUV.y);
|
|
111
|
+
const centerPos = vec2(uniforms.center.uniform.x.mul(aspect), uniforms.center.uniform.y.oneMinus());
|
|
114
112
|
const delta = aspectCorrectedUV.sub(centerPos);
|
|
115
113
|
const angleRad = uniforms.angle.uniform.mul(Math.PI / 180);
|
|
116
|
-
const directionVector = vec2
|
|
114
|
+
const directionVector = vec2(cos(angleRad), sin(angleRad));
|
|
117
115
|
const projection = delta.dot(directionVector);
|
|
118
116
|
const parallel = directionVector.mul(projection);
|
|
119
117
|
const perpendicular = delta.sub(parallel);
|
|
120
118
|
const falloffAmount = uniforms.falloff.uniform;
|
|
121
|
-
const transitionWidth =
|
|
122
|
-
const effectMask =
|
|
123
|
-
const scaledStrength = uniforms.strength.uniform.mul(float
|
|
124
|
-
const stretchFactor = float
|
|
119
|
+
const transitionWidth = mix(float(.001), float(75), falloffAmount);
|
|
120
|
+
const effectMask = clamp(projection.div(transitionWidth), float(0), float(1));
|
|
121
|
+
const scaledStrength = uniforms.strength.uniform.mul(float(100));
|
|
122
|
+
const stretchFactor = float(1).add(scaledStrength.mul(effectMask));
|
|
125
123
|
const finalProjection = projection.div(stretchFactor);
|
|
126
124
|
const stretchedDelta = directionVector.mul(finalProjection).add(perpendicular);
|
|
127
125
|
const stretchedUV = centerPos.add(stretchedDelta);
|
|
128
|
-
const finalUV = vec2
|
|
126
|
+
const finalUV = vec2(stretchedUV.x.div(aspect), stretchedUV.y);
|
|
129
127
|
return applyEdgeHandling(finalUV, childTexture.sample(finalUV), childTexture, uniforms.edges.uniform);
|
|
130
128
|
}
|
|
131
129
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as createAnimatedTime } from "./time-CTJvRUZ4.js";
|
|
2
|
-
import { i as transformColorSpace, r as transformColor, t as colorSpaceOptions } from "./transformations-
|
|
3
|
-
import { t as mixColors } from "./colorMixing-
|
|
4
|
-
import
|
|
2
|
+
import { i as transformColorSpace, r as transformColor, t as colorSpaceOptions } from "./transformations-Dv5JW9ck.js";
|
|
3
|
+
import { t as mixColors } from "./colorMixing-CZPFmiT4.js";
|
|
4
|
+
import { cos, float, screenUV, sin, smoothstep, vec2, vec4 } from "three/tsl";
|
|
5
5
|
const componentDefinition = {
|
|
6
6
|
name: "Swirl",
|
|
7
7
|
category: "Base Layers",
|
|
@@ -138,35 +138,34 @@ const componentDefinition = {
|
|
|
138
138
|
},
|
|
139
139
|
fragmentNode: (params) => {
|
|
140
140
|
const { uniforms, uvContext } = params;
|
|
141
|
-
const
|
|
142
|
-
const uvCoords = uvContext ?? screenUV$1;
|
|
141
|
+
const uvCoords = uvContext ?? screenUV;
|
|
143
142
|
const t = createAnimatedTime(params, uniforms.speed);
|
|
144
143
|
const detail = uniforms.detail.uniform;
|
|
145
|
-
const scaleCoarse = float
|
|
146
|
-
const scaleMedium = float
|
|
147
|
-
const scaleFine = float
|
|
144
|
+
const scaleCoarse = float(.02);
|
|
145
|
+
const scaleMedium = float(.028);
|
|
146
|
+
const scaleFine = float(.056);
|
|
148
147
|
const freq1 = detail;
|
|
149
148
|
const coarseScaleX = uniforms.coarseX.uniform.mul(scaleCoarse);
|
|
150
149
|
const coarseScaleY = uniforms.coarseY.uniform.mul(scaleCoarse);
|
|
151
|
-
const distort1 = vec2
|
|
152
|
-
const pattern1 = sin
|
|
150
|
+
const distort1 = vec2(uvCoords.x.add(sin(uvCoords.y.mul(freq1.mul(coarseScaleY).mul(1.7)).add(t.mul(.8))).mul(.12)), uvCoords.y.add(cos(uvCoords.x.mul(freq1.mul(coarseScaleX).mul(1.3)).sub(t.mul(.6))).mul(.12)));
|
|
151
|
+
const pattern1 = sin(distort1.x.mul(freq1.mul(coarseScaleX).mul(2.1)).add(distort1.y.mul(freq1.mul(coarseScaleY).mul(1.8))).add(t.mul(.4)));
|
|
153
152
|
const freq2 = detail.mul(1.4);
|
|
154
153
|
const mediumScaleX = uniforms.mediumX.uniform.mul(scaleMedium);
|
|
155
154
|
const mediumScaleY = uniforms.mediumY.uniform.mul(scaleMedium);
|
|
156
|
-
const distort2 = vec2
|
|
157
|
-
const pattern2 = cos
|
|
155
|
+
const distort2 = vec2(distort1.x.add(cos(distort1.y.mul(freq2.mul(mediumScaleY).mul(1.9)).sub(t.mul(.5))).mul(.06)), distort1.y.add(sin(distort1.x.mul(freq2.mul(mediumScaleX).mul(2.3)).add(t.mul(.7))).mul(.06)));
|
|
156
|
+
const pattern2 = cos(distort2.x.mul(freq2.mul(mediumScaleX).mul(1.6)).sub(distort2.y.mul(freq2.mul(mediumScaleY).mul(2.4))).add(t.mul(.3)));
|
|
158
157
|
const freq3 = detail.mul(2.8);
|
|
159
158
|
const fineScaleX = uniforms.fineX.uniform.mul(scaleFine);
|
|
160
159
|
const fineScaleY = uniforms.fineY.uniform.mul(scaleFine);
|
|
161
|
-
const distort3 = vec2
|
|
162
|
-
const pattern3 = sin
|
|
160
|
+
const distort3 = vec2(distort2.x.add(sin(distort2.y.mul(freq3.mul(fineScaleY).mul(1.1)).add(t.mul(.9))).mul(.03)), distort2.y.add(cos(distort2.x.mul(freq3.mul(fineScaleX).mul(.9)).sub(t.mul(.4))).mul(.03)));
|
|
161
|
+
const pattern3 = sin(distort3.x.mul(freq3.mul(fineScaleX).mul(1.3)).add(distort3.y.mul(freq3.mul(fineScaleY).mul(1.7))).sub(t.mul(.6)));
|
|
163
162
|
const combinedPattern = pattern1.mul(.5).add(pattern2.mul(.3)).add(pattern3.mul(.2));
|
|
164
163
|
const blendBias = uniforms.blend.uniform.sub(50).mul(.006);
|
|
165
164
|
const blendFactor = smoothstep(.3, .7, combinedPattern.mul(.5).add(.5).add(blendBias));
|
|
166
165
|
const colorMix = mixColors(uniforms.colorA.uniform, uniforms.colorB.uniform, blendFactor, uniforms.colorSpace.uniform);
|
|
167
|
-
const shimmer = sin
|
|
166
|
+
const shimmer = sin(t.mul(2.5).add(combinedPattern.mul(8))).mul(.015).add(1);
|
|
168
167
|
const finalColor = colorMix.mul(shimmer);
|
|
169
|
-
return vec4
|
|
168
|
+
return vec4(finalColor.rgb, finalColor.a);
|
|
170
169
|
}
|
|
171
170
|
};
|
|
172
171
|
var Swirl_default = componentDefinition;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as transformAngle, o as transformPosition } from "./transformations-
|
|
2
|
-
import
|
|
1
|
+
import { n as transformAngle, o as transformPosition } from "./transformations-Dv5JW9ck.js";
|
|
2
|
+
import { Fn, abs, convertToTexture, cos, dot, float, mix, radians, screenUV, sin, smoothstep, vec2, vec4, viewportSize } from "three/tsl";
|
|
3
3
|
const componentDefinition = {
|
|
4
4
|
name: "TiltShift",
|
|
5
5
|
category: "Blurs",
|
|
@@ -66,17 +66,16 @@ const componentDefinition = {
|
|
|
66
66
|
}
|
|
67
67
|
},
|
|
68
68
|
fragmentNode: ({ uniforms, childNode, onCleanup }) => {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
const childTexture = convertToTexture$1(childNode);
|
|
69
|
+
if (!childNode) return vec4(0, 0, 0, 0);
|
|
70
|
+
const childTexture = convertToTexture(childNode);
|
|
72
71
|
onCleanup(() => {
|
|
73
72
|
if (childTexture?.renderTarget?.dispose) childTexture.renderTarget.dispose();
|
|
74
73
|
});
|
|
75
74
|
const angleRad = radians(uniforms.angle.uniform);
|
|
76
|
-
const cosAngle = cos
|
|
77
|
-
const perpVector = vec2
|
|
78
|
-
const centerPosition = vec2
|
|
79
|
-
const distFromLine = abs
|
|
75
|
+
const cosAngle = cos(angleRad);
|
|
76
|
+
const perpVector = vec2(sin(angleRad).negate(), cosAngle);
|
|
77
|
+
const centerPosition = vec2(uniforms.center.uniform[0], uniforms.center.uniform[1].oneMinus());
|
|
78
|
+
const distFromLine = abs(dot(screenUV.sub(centerPosition), perpVector));
|
|
80
79
|
const focusWidth = uniforms.width.uniform.mul(.5);
|
|
81
80
|
const falloff = uniforms.falloff.uniform;
|
|
82
81
|
const blurAmount = smoothstep(focusWidth, focusWidth.add(falloff), distFromLine);
|
|
@@ -98,14 +97,14 @@ const componentDefinition = {
|
|
|
98
97
|
.056
|
|
99
98
|
];
|
|
100
99
|
const weightSum = 6.214;
|
|
101
|
-
const horizontalTexture = convertToTexture
|
|
102
|
-
const uv = screenUV
|
|
103
|
-
const pixelSize = vec2
|
|
104
|
-
const total = vec4
|
|
100
|
+
const horizontalTexture = convertToTexture(Fn(() => {
|
|
101
|
+
const uv$1 = screenUV;
|
|
102
|
+
const pixelSize = vec2(1).div(viewportSize);
|
|
103
|
+
const total = vec4(0).toVar();
|
|
105
104
|
for (let x = -6; x <= 6; x++) {
|
|
106
|
-
const weight = float
|
|
107
|
-
const offset = vec2
|
|
108
|
-
const sampleCoord = uv.add(offset);
|
|
105
|
+
const weight = float(weights[x + 6] / weightSum);
|
|
106
|
+
const offset = vec2(float(x), float(0)).mul(blurRadius).mul(pixelSize);
|
|
107
|
+
const sampleCoord = uv$1.add(offset);
|
|
109
108
|
const sample = childTexture.sample(sampleCoord).mul(weight);
|
|
110
109
|
total.assign(total.add(sample));
|
|
111
110
|
}
|
|
@@ -115,18 +114,18 @@ const componentDefinition = {
|
|
|
115
114
|
if (horizontalTexture?.renderTarget?.dispose) horizontalTexture.renderTarget.dispose();
|
|
116
115
|
});
|
|
117
116
|
return Fn(() => {
|
|
118
|
-
const uv = screenUV
|
|
119
|
-
const pixelSize = vec2
|
|
120
|
-
const total = vec4
|
|
117
|
+
const uv$1 = screenUV;
|
|
118
|
+
const pixelSize = vec2(1).div(viewportSize);
|
|
119
|
+
const total = vec4(0).toVar();
|
|
121
120
|
for (let y = -6; y <= 6; y++) {
|
|
122
|
-
const weight = float
|
|
123
|
-
const offset = vec2
|
|
124
|
-
const sampleCoord = uv.add(offset);
|
|
121
|
+
const weight = float(weights[y + 6] / weightSum);
|
|
122
|
+
const offset = vec2(float(0), float(y)).mul(blurRadius).mul(pixelSize);
|
|
123
|
+
const sampleCoord = uv$1.add(offset);
|
|
125
124
|
const sample = horizontalTexture.sample(sampleCoord).mul(weight);
|
|
126
125
|
total.assign(total.add(sample));
|
|
127
126
|
}
|
|
128
127
|
const blurred = total;
|
|
129
|
-
return mix
|
|
128
|
+
return mix(childTexture.sample(uv$1), blurred, blurAmount);
|
|
130
129
|
})();
|
|
131
130
|
}
|
|
132
131
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { i as transformColorSpace, r as transformColor, t as colorSpaceOptions } from "./transformations-
|
|
2
|
-
import { t as mixColors } from "./colorMixing-
|
|
3
|
-
import
|
|
1
|
+
import { i as transformColorSpace, r as transformColor, t as colorSpaceOptions } from "./transformations-Dv5JW9ck.js";
|
|
2
|
+
import { t as mixColors } from "./colorMixing-CZPFmiT4.js";
|
|
3
|
+
import { convertToTexture, dot, screenUV, smoothstep, vec3, vec4 } from "three/tsl";
|
|
4
4
|
const componentDefinition = {
|
|
5
5
|
name: "Tritone",
|
|
6
6
|
category: "Adjustments",
|
|
@@ -58,18 +58,17 @@ const componentDefinition = {
|
|
|
58
58
|
}
|
|
59
59
|
},
|
|
60
60
|
fragmentNode: ({ uniforms, childNode, onCleanup }) => {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
const childTexture = convertToTexture$1(childNode);
|
|
61
|
+
if (!childNode) return vec4(0, 0, 0, 0);
|
|
62
|
+
const childTexture = convertToTexture(childNode);
|
|
64
63
|
onCleanup(() => {
|
|
65
64
|
if (childTexture?.renderTarget?.dispose) childTexture.renderTarget.dispose();
|
|
66
65
|
});
|
|
67
|
-
const inputColor = childTexture.sample(screenUV
|
|
68
|
-
const luminance = dot
|
|
66
|
+
const inputColor = childTexture.sample(screenUV);
|
|
67
|
+
const luminance = dot(inputColor.rgb, vec3(.299, .587, .114));
|
|
69
68
|
const shadowToMid = smoothstep(uniforms.blendMid.uniform.sub(.25), uniforms.blendMid.uniform, luminance);
|
|
70
69
|
const lowerBlend = mixColors(uniforms.colorA.uniform, uniforms.colorB.uniform, shadowToMid, uniforms.colorSpace.uniform);
|
|
71
70
|
const midToHighlight = smoothstep(uniforms.blendMid.uniform, uniforms.blendMid.uniform.add(.25), luminance);
|
|
72
|
-
return vec4
|
|
71
|
+
return vec4(mixColors(lowerBlend, mixColors(uniforms.colorB.uniform, uniforms.colorC.uniform, midToHighlight, uniforms.colorSpace.uniform), smoothstep(uniforms.blendMid.uniform.sub(.1), uniforms.blendMid.uniform.add(.1), luminance), uniforms.colorSpace.uniform).rgb, inputColor.a);
|
|
73
72
|
}
|
|
74
73
|
};
|
|
75
74
|
var Tritone_default = componentDefinition;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as applyEdgeHandling } from "./edges-
|
|
2
|
-
import { a as transformEdges, o as transformPosition } from "./transformations-
|
|
3
|
-
import
|
|
1
|
+
import { t as applyEdgeHandling } from "./edges-Djr_12SL.js";
|
|
2
|
+
import { a as transformEdges, o as transformPosition } from "./transformations-Dv5JW9ck.js";
|
|
3
|
+
import { convertToTexture, cos, length, screenUV, sin, vec2, vec4 } from "three/tsl";
|
|
4
4
|
const componentDefinition = {
|
|
5
5
|
name: "Twirl",
|
|
6
6
|
category: "Distortions",
|
|
@@ -59,37 +59,35 @@ const componentDefinition = {
|
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
},
|
|
62
|
-
uvTransformNode: ({ uv, uniforms }) => {
|
|
63
|
-
const
|
|
64
|
-
const
|
|
65
|
-
const delta = uv.sub(centerPos);
|
|
62
|
+
uvTransformNode: ({ uv: uv$1, uniforms }) => {
|
|
63
|
+
const centerPos = vec2(uniforms.center.uniform.x, uniforms.center.uniform.y.oneMinus());
|
|
64
|
+
const delta = uv$1.sub(centerPos);
|
|
66
65
|
const angle = uniforms.intensity.uniform.mul(length(delta));
|
|
67
|
-
const cosAngle = cos
|
|
68
|
-
const sinAngle = sin
|
|
66
|
+
const cosAngle = cos(angle);
|
|
67
|
+
const sinAngle = sin(angle);
|
|
69
68
|
const rotatedX = cosAngle.mul(delta.x).sub(sinAngle.mul(delta.y));
|
|
70
69
|
const rotatedY = sinAngle.mul(delta.x).add(cosAngle.mul(delta.y));
|
|
71
|
-
return vec2
|
|
70
|
+
return vec2(rotatedX.add(centerPos.x), rotatedY.add(centerPos.y));
|
|
72
71
|
},
|
|
73
72
|
fragmentNode: ({ uniforms, childNode, onCleanup }) => {
|
|
74
|
-
const { vec2: vec2$1, vec4: vec4$1, cos: cos$1, sin: sin$1, length, screenUV: screenUV$1, convertToTexture: convertToTexture$1 } = TSL;
|
|
75
73
|
if (!childNode) {
|
|
76
74
|
console.error("You must pass a child component into the Twirl shader.");
|
|
77
|
-
return vec4
|
|
75
|
+
return vec4(0);
|
|
78
76
|
}
|
|
79
|
-
const texture = convertToTexture
|
|
77
|
+
const texture$1 = convertToTexture(childNode);
|
|
80
78
|
onCleanup(() => {
|
|
81
|
-
if (texture?.renderTarget?.dispose) texture.renderTarget.dispose();
|
|
79
|
+
if (texture$1?.renderTarget?.dispose) texture$1.renderTarget.dispose();
|
|
82
80
|
});
|
|
83
|
-
const uvNode = screenUV
|
|
84
|
-
const centerPos = vec2
|
|
81
|
+
const uvNode = screenUV;
|
|
82
|
+
const centerPos = vec2(uniforms.center.uniform.x, uniforms.center.uniform.y.oneMinus());
|
|
85
83
|
const delta = uvNode.sub(centerPos);
|
|
86
84
|
const angle = uniforms.intensity.uniform.mul(length(delta));
|
|
87
|
-
const cosAngle = cos
|
|
88
|
-
const sinAngle = sin
|
|
85
|
+
const cosAngle = cos(angle);
|
|
86
|
+
const sinAngle = sin(angle);
|
|
89
87
|
const rotatedX = cosAngle.mul(delta.x).sub(sinAngle.mul(delta.y));
|
|
90
88
|
const rotatedY = sinAngle.mul(delta.x).add(cosAngle.mul(delta.y));
|
|
91
|
-
const twistedUV = vec2
|
|
92
|
-
return applyEdgeHandling(twistedUV, texture.sample(twistedUV), texture, uniforms.edges.uniform);
|
|
89
|
+
const twistedUV = vec2(rotatedX.add(centerPos.x), rotatedY.add(centerPos.y));
|
|
90
|
+
return applyEdgeHandling(twistedUV, texture$1.sample(twistedUV), texture$1, uniforms.edges.uniform);
|
|
93
91
|
}
|
|
94
92
|
};
|
|
95
93
|
var Twirl_default = componentDefinition;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as applyEdgeHandling } from "./edges-
|
|
2
|
-
import { a as transformEdges } from "./transformations-
|
|
3
|
-
import
|
|
1
|
+
import { t as applyEdgeHandling } from "./edges-Djr_12SL.js";
|
|
2
|
+
import { a as transformEdges } from "./transformations-Dv5JW9ck.js";
|
|
3
|
+
import { PI, abs, convertToTexture, cos, float, fract, screenUV, sin, step, time, vec2, vec4 } from "three/tsl";
|
|
4
4
|
const componentDefinition = {
|
|
5
5
|
name: "WaveDistortion",
|
|
6
6
|
category: "Distortions",
|
|
@@ -114,55 +114,53 @@ const componentDefinition = {
|
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
},
|
|
117
|
-
uvTransformNode: ({ uv, uniforms }) => {
|
|
118
|
-
const { vec2: vec2$1, sin: sin$1, cos: cos$1, abs: abs$1, fract, step: step$1, float: float$1, PI, time } = TSL;
|
|
117
|
+
uvTransformNode: ({ uv: uv$1, uniforms }) => {
|
|
119
118
|
const t = time.mul(uniforms.speed.uniform).mul(.5);
|
|
120
119
|
const angleRad = uniforms.angle.uniform.mul(PI).div(180);
|
|
121
|
-
const cosAngle = cos
|
|
122
|
-
const sinAngle = sin
|
|
123
|
-
const centeredUV = uv.sub(vec2
|
|
124
|
-
const phase = vec2
|
|
120
|
+
const cosAngle = cos(angleRad);
|
|
121
|
+
const sinAngle = sin(angleRad);
|
|
122
|
+
const centeredUV = uv$1.sub(vec2(.5, .5));
|
|
123
|
+
const phase = vec2(centeredUV.x.mul(cosAngle).sub(centeredUV.y.mul(sinAngle)), centeredUV.x.mul(sinAngle).add(centeredUV.y.mul(cosAngle))).add(vec2(.5, .5)).y.mul(uniforms.frequency.uniform).mul(PI.mul(2)).add(t);
|
|
125
124
|
const normalizedPhase = fract(phase.div(PI.mul(2)));
|
|
126
|
-
const sineWave = sin
|
|
127
|
-
const triangleWave = abs
|
|
128
|
-
const squareWave = step
|
|
125
|
+
const sineWave = sin(phase);
|
|
126
|
+
const triangleWave = abs(normalizedPhase.mul(2).sub(1)).mul(2).sub(1);
|
|
127
|
+
const squareWave = step(float(.5), normalizedPhase).mul(2).sub(1);
|
|
129
128
|
const sawtoothWave = normalizedPhase.mul(2).sub(1);
|
|
130
129
|
const waveTypeValue = uniforms.waveType.uniform;
|
|
131
|
-
const isSine = step
|
|
132
|
-
const isTriangle = step
|
|
133
|
-
const isSquare = step
|
|
134
|
-
const isSawtooth = step
|
|
130
|
+
const isSine = step(waveTypeValue, float(.5));
|
|
131
|
+
const isTriangle = step(float(.5), waveTypeValue).mul(step(waveTypeValue, float(1.5)));
|
|
132
|
+
const isSquare = step(float(1.5), waveTypeValue).mul(step(waveTypeValue, float(2.5)));
|
|
133
|
+
const isSawtooth = step(float(2.5), waveTypeValue);
|
|
135
134
|
const displacement = sineWave.mul(isSine).add(triangleWave.mul(isTriangle)).add(squareWave.mul(isSquare)).add(sawtoothWave.mul(isSawtooth)).mul(uniforms.strength.uniform).mul(.5);
|
|
136
135
|
const displacementX = displacement.mul(cosAngle);
|
|
137
136
|
const displacementY = displacement.mul(sinAngle);
|
|
138
|
-
return vec2$1
|
|
137
|
+
return vec2(uv$1.x.add(displacementX), uv$1.y.add(displacementY));
|
|
139
138
|
},
|
|
140
139
|
fragmentNode: (params) => {
|
|
141
140
|
const { uniforms, childNode, onCleanup } = params;
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
const uvCoord = screenUV$1;
|
|
141
|
+
if (!childNode) return vec4(0, 0, 0, 0);
|
|
142
|
+
const uvCoord = screenUV;
|
|
145
143
|
const t = time.mul(uniforms.speed.uniform).mul(.5);
|
|
146
144
|
const angleRad = uniforms.angle.uniform.mul(PI).div(180);
|
|
147
|
-
const cosAngle = cos
|
|
148
|
-
const sinAngle = sin
|
|
149
|
-
const centeredUV = uvCoord.sub(vec2
|
|
150
|
-
const phase = vec2
|
|
145
|
+
const cosAngle = cos(angleRad);
|
|
146
|
+
const sinAngle = sin(angleRad);
|
|
147
|
+
const centeredUV = uvCoord.sub(vec2(.5, .5));
|
|
148
|
+
const phase = vec2(centeredUV.x.mul(cosAngle).sub(centeredUV.y.mul(sinAngle)), centeredUV.x.mul(sinAngle).add(centeredUV.y.mul(cosAngle))).add(vec2(.5, .5)).y.mul(uniforms.frequency.uniform).mul(PI.mul(2)).add(t);
|
|
151
149
|
const normalizedPhase = fract(phase.div(PI.mul(2)));
|
|
152
|
-
const sineWave = sin
|
|
153
|
-
const triangleWave = abs
|
|
154
|
-
const squareWave = step
|
|
150
|
+
const sineWave = sin(phase);
|
|
151
|
+
const triangleWave = abs(normalizedPhase.mul(2).sub(1)).mul(2).sub(1);
|
|
152
|
+
const squareWave = step(float(.5), normalizedPhase).mul(2).sub(1);
|
|
155
153
|
const sawtoothWave = normalizedPhase.mul(2).sub(1);
|
|
156
154
|
const waveTypeValue = uniforms.waveType.uniform;
|
|
157
|
-
const isSine = step
|
|
158
|
-
const isTriangle = step
|
|
159
|
-
const isSquare = step
|
|
160
|
-
const isSawtooth = step
|
|
155
|
+
const isSine = step(waveTypeValue, float(.5));
|
|
156
|
+
const isTriangle = step(float(.5), waveTypeValue).mul(step(waveTypeValue, float(1.5)));
|
|
157
|
+
const isSquare = step(float(1.5), waveTypeValue).mul(step(waveTypeValue, float(2.5)));
|
|
158
|
+
const isSawtooth = step(float(2.5), waveTypeValue);
|
|
161
159
|
const displacement = sineWave.mul(isSine).add(triangleWave.mul(isTriangle)).add(squareWave.mul(isSquare)).add(sawtoothWave.mul(isSawtooth)).mul(uniforms.strength.uniform).mul(.5);
|
|
162
160
|
const displacementX = displacement.mul(cosAngle);
|
|
163
161
|
const displacementY = displacement.mul(sinAngle);
|
|
164
|
-
const distortedUV = vec2
|
|
165
|
-
const childTexture = convertToTexture
|
|
162
|
+
const distortedUV = vec2(uvCoord.x.add(displacementX), uvCoord.y.add(displacementY));
|
|
163
|
+
const childTexture = convertToTexture(childNode);
|
|
166
164
|
onCleanup(() => {
|
|
167
165
|
if (childTexture?.renderTarget?.dispose) childTexture.renderTarget.dispose();
|
|
168
166
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { o as transformPosition } from "./transformations-
|
|
2
|
-
import
|
|
1
|
+
import { o as transformPosition } from "./transformations-Dv5JW9ck.js";
|
|
2
|
+
import { Fn, convertToTexture, float, screenUV, vec2, vec4 } from "three/tsl";
|
|
3
3
|
const componentDefinition = {
|
|
4
4
|
name: "ZoomBlur",
|
|
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
|
-
const center = vec2
|
|
40
|
+
const center = vec2(uniforms.center.uniform.x, uniforms.center.uniform.y.oneMinus());
|
|
42
41
|
const radius = uniforms.intensity.uniform.mul(.01);
|
|
43
42
|
return Fn(() => {
|
|
44
|
-
const uv = screenUV
|
|
45
|
-
const total = vec4
|
|
46
|
-
const totalWeight = float
|
|
43
|
+
const uv$1 = screenUV;
|
|
44
|
+
const total = vec4(0).toVar();
|
|
45
|
+
const totalWeight = float(0).toVar();
|
|
47
46
|
for (let i = 0; i < 32; i++) {
|
|
48
|
-
const t = float
|
|
47
|
+
const t = float(i).div(float(31));
|
|
49
48
|
const weightT = t.sub(.5).mul(2);
|
|
50
|
-
const weight = float
|
|
51
|
-
const scale = float
|
|
52
|
-
const scaledCoord = uv.sub(center).div(scale).add(center);
|
|
49
|
+
const weight = float(1).div(float(2.506628)).mul(float(-.5).mul(weightT).mul(weightT).div(float(.64)).exp());
|
|
50
|
+
const scale = float(1).add(radius.mul(t));
|
|
51
|
+
const scaledCoord = uv$1.sub(center).div(scale).add(center);
|
|
53
52
|
const sample = childTexture.sample(scaledCoord).mul(weight);
|
|
54
53
|
total.assign(total.add(sample));
|
|
55
54
|
totalWeight.assign(totalWeight.add(weight));
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { atan, cos, float, max, pow, sin, sqrt, vec3, vec4 } from "three/tsl";
|
|
2
|
+
var p3ToSRGB = (p3) => {
|
|
3
|
+
return vec3(p3.x.mul(1.2249401).sub(p3.y.mul(.2249404)).sub(p3.z.mul(0)), p3.x.mul(-.0420569).add(p3.y.mul(1.0420571)).add(p3.z.mul(0)), p3.x.mul(-.0196376).sub(p3.y.mul(.0786361)).add(p3.z.mul(1.0982735)));
|
|
4
|
+
};
|
|
5
|
+
var sRGBToP3 = (srgb) => {
|
|
6
|
+
return vec3(srgb.x.mul(.8224621).add(srgb.y.mul(.177538)).add(srgb.z.mul(0)), srgb.x.mul(.0331941).add(srgb.y.mul(.9668058)).add(srgb.z.mul(0)), srgb.x.mul(.0170826).add(srgb.y.mul(.0723974)).add(srgb.z.mul(.9105199)));
|
|
7
|
+
};
|
|
8
|
+
var rgbToOklab = (rgb) => {
|
|
9
|
+
const r = rgb.x;
|
|
10
|
+
const g = rgb.y;
|
|
11
|
+
const b = rgb.z;
|
|
12
|
+
const l = r.mul(.4122214708).add(g.mul(.5363325363)).add(b.mul(.0514459929));
|
|
13
|
+
const m = r.mul(.2119034982).add(g.mul(.6806995451).add(b.mul(.1073969566)));
|
|
14
|
+
const s = r.mul(.0883024619).add(g.mul(.2817188376)).add(b.mul(.6299787005));
|
|
15
|
+
const l_ = pow(l, float(1 / 3));
|
|
16
|
+
const m_ = pow(m, float(1 / 3));
|
|
17
|
+
const s_ = pow(s, float(1 / 3));
|
|
18
|
+
return vec3(l_.mul(.2104542553).add(m_.mul(.793617785)).sub(s_.mul(.0040720468)), l_.mul(1.9779984951).sub(m_.mul(2.428592205)).add(s_.mul(.4505937099)), l_.mul(.0259040371).add(m_.mul(.7827717662)).sub(s_.mul(.808675766)));
|
|
19
|
+
};
|
|
20
|
+
var oklabToRgb = (lab) => {
|
|
21
|
+
const L = lab.x;
|
|
22
|
+
const a = lab.y;
|
|
23
|
+
const b = lab.z;
|
|
24
|
+
const l_ = L.add(a.mul(.3963377774)).add(b.mul(.2158037573));
|
|
25
|
+
const m_ = L.sub(a.mul(.1055613458)).sub(b.mul(.0638541728));
|
|
26
|
+
const s_ = L.sub(a.mul(.0894841775)).sub(b.mul(1.291485548));
|
|
27
|
+
const l = pow(l_, float(3));
|
|
28
|
+
const m = pow(m_, float(3));
|
|
29
|
+
const s = pow(s_, float(3));
|
|
30
|
+
return vec3(l.mul(4.0767416621).sub(m.mul(3.3077115913)).add(s.mul(.2309699292)), l.mul(-1.2684380046).add(m.mul(2.6097574011)).sub(s.mul(.3413193965)), l.mul(-.0041960863).sub(m.mul(.7034186147)).add(s.mul(1.707614701)));
|
|
31
|
+
};
|
|
32
|
+
var oklabToOklch = (lab) => {
|
|
33
|
+
const L = lab.x;
|
|
34
|
+
const a = lab.y;
|
|
35
|
+
const b = lab.z;
|
|
36
|
+
return vec3(L, sqrt(a.mul(a).add(b.mul(b))), atan(b, a));
|
|
37
|
+
};
|
|
38
|
+
var oklchToOklab = (lch) => {
|
|
39
|
+
const L = lch.x;
|
|
40
|
+
const C = lch.y;
|
|
41
|
+
const h = lch.z;
|
|
42
|
+
return vec3(L, C.mul(cos(h)), C.mul(sin(h)));
|
|
43
|
+
};
|
|
44
|
+
const mixColors = (colorA, colorB, t, colorSpaceMode) => {
|
|
45
|
+
const p3A = vec3(colorA.x, colorA.y, colorA.z);
|
|
46
|
+
const p3B = vec3(colorB.x, colorB.y, colorB.z);
|
|
47
|
+
const alphaA = colorA.w;
|
|
48
|
+
const alphaB = colorB.w;
|
|
49
|
+
const weightA = alphaA.mul(float(1).sub(t));
|
|
50
|
+
const weightB = alphaB.mul(t);
|
|
51
|
+
const totalWeight = weightA.add(weightB);
|
|
52
|
+
const safeWeight = max(totalWeight, float(.001));
|
|
53
|
+
const alphaWeightedMix = (rgbA, rgbB) => {
|
|
54
|
+
return rgbA.mul(weightA).add(rgbB.mul(weightB)).div(safeWeight);
|
|
55
|
+
};
|
|
56
|
+
const linearMix = alphaWeightedMix(p3A, p3B);
|
|
57
|
+
const srgbA = p3ToSRGB(p3A);
|
|
58
|
+
const srgbB = p3ToSRGB(p3B);
|
|
59
|
+
const oklabA = rgbToOklab(srgbA);
|
|
60
|
+
const oklabB = rgbToOklab(srgbB);
|
|
61
|
+
const oklchResult = sRGBToP3(oklabToRgb(oklchToOklab(alphaWeightedMix(oklabToOklch(oklabA), oklabToOklch(oklabB)))));
|
|
62
|
+
const oklabResult = sRGBToP3(oklabToRgb(alphaWeightedMix(oklabA, oklabB)));
|
|
63
|
+
const isMode1OrHigher = colorSpaceMode.greaterThanEqual(float(.5));
|
|
64
|
+
const rgb = colorSpaceMode.greaterThanEqual(float(1.5)).select(oklabResult, isMode1OrHigher.select(oklchResult, linearMix));
|
|
65
|
+
const alpha = totalWeight;
|
|
66
|
+
return vec4(rgb.x, rgb.y, rgb.z, alpha);
|
|
67
|
+
};
|
|
68
|
+
export { mixColors as t };
|