Skip to content

Commit 237bba8

Browse files
authored
Merge pull request #12 from Absulit/dev
general optimizations
2 parents 14cf640 + 775630a commit 237bba8

2 files changed

Lines changed: 46 additions & 27 deletions

File tree

src/main.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,19 @@ folderOptions.add(selectedScheme, 'Color Scheme', colorSchemes).onChange(v => {
4242
});
4343

4444
function clickSong() {
45-
points.setUniform('showMessage', 0);
4645
playSong(this);
4746
}
4847

4948
function playSong(song) {
5049
const { file } = song;
50+
points.setUniform('showMessage', 0);
5151
const audioUrl = URL.createObjectURL(file);
5252
const name = song?.name || file.name;
53+
const title = song?.title || name;
5354

5455
audio && audio.pause() && (audio = null);
5556
audio = points.setAudio('audio', audioUrl, options.volume, false, false);
56-
points.setStorageMap('chars', strToCodes(name));
57+
points.setStorageMap('chars', strToCodes(title));
5758
let artworkLoaded = 0;
5859
song?.artworkColors && points.setStorageMap('artworkColors', song?.artworkColors.flat());
5960
song?.artworkColors && (artworkLoaded = 1);
@@ -143,19 +144,21 @@ async function onCompleteTags(result) {
143144
}
144145

145146
song.name = name || file.name;
147+
song.title = title || name;
146148

147149

148150
if (!song.default) {
149151
await db.songs.add({
150152
file,
151153
artworkImageUrl,
152154
artworkColors,
153-
name: song.name
155+
name: song.name,
156+
title: song.title
154157
});
155158
}
156159

157160
folderSongs.add(song, 'fn').name(song.name);
158-
points.setStorageMap('chars', strToCodes(name));
161+
points.setStorageMap('chars', strToCodes(title));
159162
}
160163

161164
async function onErrorTags(response) {
@@ -278,6 +281,7 @@ songsFromDB.forEach(item => {
278281
artworkColors: item.artworkColors,
279282
artworkImageUrl: item.artworkImageUrl,
280283
name: item.name,
284+
title: item.title,
281285
src: audioUrl,
282286
fn: clickSong
283287
}

src/renderpasses/renderpass0/frag.js

Lines changed: 38 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { fnusin, fusin } from 'animation';
22
import { GREEN, layer, RED, WHITE } from 'color';
33
import { sprite, texturePosition } from 'image';
4-
import { PI, rotateVector } from 'math';
4+
import { PHI, PI, rotateVector } from 'math';
55
import { sdfCircle, sdfLine2, sdfSquare, sdfSegment } from 'sdf';
66
import { 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
124130
const TAU = PI * 2; // TODO: fix on main library
125131
const TAUQUARTER = TAU * .25;
126-
const NUMCHARS = 128;
132+
const NUMCHARS = 30;
127133
const MAXBITS = 256;
128134
const CHLEN = 0.125;
129135
const DINTENSITY = .0041;//0.0151;
@@ -133,6 +139,7 @@ const TRIROTATION = .00001;
133139
const PIXELATEDSIZE = 100;
134140
const PIMILLI = PI * .001;
135141
const FEEDBACKFADE = .98;
142+
const FEEDBACKFADEN = 1-FEEDBACKFADE;
136143
const charSize = vec2(8u,22u);
137144
const charOffset = 32u; // A is 33
138145
const 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

Comments
 (0)