11import { fnusin , fusin } from 'animation' ;
22import { GREEN , layer , RED , WHITE } from 'color' ;
33import { sprite , texturePosition } from 'image' ;
4- import { PI , rotateVector } from 'math' ;
4+ import { PHI , PI , rotateVector } from 'math' ;
55import { sdfCircle , sdfLine2 , sdfSquare , sdfSegment } from 'sdf' ;
66import { structs } from './structs.js' ;
77
@@ -16,7 +16,7 @@ ${sdfCircle}
1616${ sdfSquare }
1717${ rotateVector }
1818${ sprite }
19-
19+ ${ PHI }
2020${ PI }
2121${ layer }
2222${ fusin }
@@ -120,10 +120,16 @@ fn sdRectangle2(position0:vec2f, position1:vec2f, uv:vec2f) -> f32 {
120120 return length(max(d, vec2f())) + min(max(d.x, d.y), 0.0);
121121}
122122
123+ const MATRIX0 = vec3f(.129,.145,.039);
124+ const MATRIX1 = vec3f(.231,.274,.117);
125+ const MATRIX2 = vec3f(.2,.282,.152);
126+ const MATRIX3 = vec3f(.309,.4,.290) ;
127+ const MATRIX4 = vec4f(.572,.717,.549, 1);
128+
123129
124130const TAU = PI * 2; // TODO: fix on main library
125131const TAUQUARTER = TAU * .25;
126- const NUMCHARS = 128 ;
132+ const NUMCHARS = 30 ;
127133const MAXBITS = 256;
128134const CHLEN = 0.125;
129135const DINTENSITY = .0041;//0.0151;
@@ -133,6 +139,7 @@ const TRIROTATION = .00001;
133139const PIXELATEDSIZE = 100;
134140const PIMILLI = PI * .001;
135141const FEEDBACKFADE = .98;
142+ const FEEDBACKFADEN = 1-FEEDBACKFADE;
136143const charSize = vec2(8u,22u);
137144const charOffset = 32u; // A is 33
138145const maxCircleRadius = .9;
@@ -169,7 +176,7 @@ fn main(
169176
170177 let s = sdfCircle(center, maxCircleRadius * c4, .1 * audioX, uvr);
171178 let t = sdfCircle(center, audio1, audio1, uvr);
172- let sq = sdfSquare(center, maxCircleRadius * c4, .1 * c4, TAU * audio1, uvr);
179+ let sq = sdfSquare(center, maxCircleRadius * c4, .1 * c4, PHI * audio1, uvr);
173180
174181 let rectMask = sdRectangle1( center, vec2f(.7) + vec2f(.2) * c0, .004 + .020 * c3 /*.0014*/ /*.1 * c1*/, uvr) * step(.001, c0);
175182
@@ -215,12 +222,14 @@ fn main(
215222
216223 let feedbackUV = ((uvrRotate + center) / fadeRotate) - center;
217224 var feedbackColor = texturePosition(feedbackTexture, imageSampler, vec2(), feedbackUV, false);
218- feedbackColor = mix(feedbackColor, vec4f(), 1-FEEDBACKFADE );
225+ feedbackColor = mix(feedbackColor, vec4f(), FEEDBACKFADEN );
219226 feedbackColor = feedbackColor * step(.01, feedbackColor.a);
220227
221228 let height = 0.;
222- let lineMask = sdfLine2(vec2(0, height + audioX) * ratio, vec2(1, height + audioX) * ratio, .005, uvr);
223- let lineMask2 = sdfLine2(vec2(0, height + audioX2) * ratio, vec2(1, height + audioX2) * ratio, .005, uvr);
229+ let heightM1 = height + audioX;
230+ let heightM2 = height + audioX2;
231+ let lineMask = sdfLine2(vec2(0, heightM1) * ratio, vec2(1, heightM1) * ratio, .005, uvr);
232+ let lineMask2 = sdfLine2(vec2(0, heightM2) * ratio, vec2(1, heightM2) * ratio, .005, uvr);
224233
225234 let fontPosition = vec2(.003, 0.) * ratio;
226235 let charSizeF32 = vec2(f32(charSize.x) / params.screen.x, f32(charSize.y) / params.screen.y);
@@ -232,20 +241,26 @@ fn main(
232241 let textUVR = uvr / textScale;
233242 let spaceRatio = .0017 * ratio.x;
234243 for (var index = 0; index < NUMCHARS; index++) {
244+ let indexF32 = f32(index);
235245 let charIndex = u32(chars[index]);
236- let charPosition = charSizeF32 * vec2(f32(index), 0);
237- let space = spaceRatio * vec2(f32(index), 0);
238- stringMask += sprite(font, textImageSampler, space + fontPosition + charPosition, textUVR, charIndex - charOffset, charSize).x;
239- stringMask2 += sprite(font, textImageSampler, space + fontPosition + charPosition, textUVR + .0005, charIndex - charOffset, charSize).x;
246+ let charPosition = charSizeF32 * vec2(indexF32, 0);
247+ let space = spaceRatio * vec2(indexF32, 0);
248+ let sfPcP = space + fontPosition + charPosition;
249+ let cIcO = charIndex - charOffset;
250+ stringMask += sprite(font, textImageSampler, sfPcP, textUVR, cIcO, charSize).x;
251+ stringMask2 += sprite(font, textImageSampler, sfPcP, textUVR + .0005, cIcO, charSize).x;
240252 }
241253
242254 var messageStringMask = 0.;
243- let messagePosition = vec2(.15, .19) * ratio;
244- for (var index = 0; index < 21; index++) {
245- let charIndex = u32(message[index]);
246- let charPosition = charSizeF32 * vec2(f32(index), sin(params.time + f32(index) * .1));
247- let space = spaceRatio * vec2(f32(index), 0);
248- messageStringMask += sprite(font, textImageSampler, space + messagePosition + charPosition, textUVR, charIndex - charOffset, charSize).x;
255+ if(params.showMessage == 1.){
256+ let messagePosition = vec2(.15, .19) * ratio;
257+ for (var index = 0; index < 21; index++) {
258+ let indexF32 = f32(index);
259+ let charIndex = u32(message[index]);
260+ let charPosition = charSizeF32 * vec2(indexF32, sin(params.time + indexF32 * .1));
261+ let space = spaceRatio * vec2(indexF32, 0);
262+ messageStringMask += sprite(font, textImageSampler, space + messagePosition + charPosition, textUVR, charIndex - charOffset, charSize).x;
263+ }
249264 }
250265
251266
@@ -257,7 +272,7 @@ fn main(
257272 variables.triRotation -= .000001 * step(0., variables.triRotation) * c2Visible;
258273 variables.triRotation = variables.triRotation % TAU; // cap rotation to avoid it getting stuck
259274 equiTriUV = rotateVector(equiTriUV, variables.triRotation + TAUQUARTER);
260- let poliMask = sdfngon(vec2f(), numSides, .5 + (c7 * .5 ), .01, equiTriUV) * c2Visible;
275+ let poliMask = sdfngon(vec2f(), numSides, .5 + (c2 * .25 ), .01, equiTriUV) * c2Visible;
261276
262277 let progressBarMask = sdfLine2(vec2(), vec2(params.progress,0) * ratio, .005, uvr);
263278
@@ -287,11 +302,11 @@ fn main(
287302 stringColor2 = stringMask2 * mix( vec4( 1-vec3(fusin(.132) , fusin(.586), 0), 1), vec4(1-vec3(1,.5, fusin(.7589633)), 1), c0);
288303 }
289304 case 1 { // matrix
290- audioWave = vec4f( vec3f(.129,.145,.039) * lineMask, 1);
291- audioWave2 = vec4f( vec3f(.231,.274,.117) * lineMask2, 1);
292- progressBar = vec4f( vec3f(.2,.282,.152) * progressBarMask, 1);
293- poligon = vec4f( vec3f(.309,.4,.290) * poliMask, 1);
294- stringColor = vec4f( .572,.717,.549, 1) * stringMask;
305+ audioWave = vec4f(MATRIX0 * lineMask, 1);
306+ audioWave2 = vec4f(MATRIX1 * lineMask2, 1);
307+ progressBar = vec4f(MATRIX2 * progressBarMask, 1);
308+ poligon = vec4f(MATRIX3 * poliMask, 1);
309+ stringColor = MATRIX4 * stringMask;
295310 stringColor2 = stringMask2 * GREEN;
296311 }
297312 case 2 { // artwork
0 commit comments