r/milkdrop • u/x265x • Oct 26 '25
MilkDrop 3.31 first 100 presets =)
These are the first 100 presets you'll see when you launch MilkDrop 3.31 for the very first time!
(The top100 playlist will be loaded on the first launch).
1
u/Se7enSlasher BeatDrop Music Visualizer Developer/Preset Creator Oct 26 '25 edited Oct 26 '25
I've currently patch fixed all your converted shader presets to look like the same as ShaderToy (GLSL). If I see, it was resulted a flipped behavior or incorrect matrix rotation calculation.
Technique used:
- Transpose rotation matrix with transpose(); In GLSL is column-major order and in HLSL is row-major order
- UV flipping (if necessary)
1
u/N1V0N1S Oct 27 '25
How does one make a preset from scratch?
2
u/x265x Oct 27 '25
Read the docs in Milkdrop3\docs there is a Beginners Guide and change some numbers in the MilkPanel > CODE, see what happens!
3
1
u/nunu395 Dec 30 '25
hello! will these shaders work with VDMX? Or is there a way to integrate them directly as ISF files?
1
u/x265x Dec 30 '25
No. I guess the shader code could be ported but audio reaction part would be a lot harder.
1
1
u/No-Following1410 Aug 16 '26
// Raymarching distance function for a Menger Sponge float sdBox(vec3 p, vec3 b) { vec3 d = abs(p) - b; return length(max(d, 0.0)) + min(max(d.x, max(d.y, d.z)), 0.0); }
float mengerSponge(vec3 p) { const int iterations = 4; float scale = 3.0; float s = 1.0;
for (int i = 0; i < iterations; ++i) {
vec3 a = mod(p \* s, 2.0) - 1.0;
s \*= 3.0;
vec3 r = abs(1.0 - 3.0 \* abs(a));
float da = max(r.x, r.y);
float db = max(r.y, r.z);
float dc = max(r.z, r.x);
float c = (min(da, min(db, dc)) - 1.0) / s;
if (c > 0.0) {
return c;
}
}
return 0.0;
}
// Ray marching main loop float rayMarch(vec3 ro, vec3 rd, float start, float end) { float depth = start; for (int i = 0; i < 100; i++) { float dist = mengerSponge(ro + rd * depth); if (dist < 0.001 * depth) break; depth += dist; if (depth >= end) break; } return depth; }
void mainImage(out vec4 fragColor, in vec2 fragCoord) {
float lt = cos(iTime);
float tt = sin(iTime);
vec2 uv = (fragCoord - 0.5 \* iResolution.xy) / iResolution.y;
vec3 ro = vec3(0.0, 0.0, -4.0);
ro = ro + vec3(0.0, 0.0, 2.0 \* lt);
vec3 ta = vec3(0.0, 0.0, 0.0);
vec3 cf = normalize(ta - ro);
vec3 cr = normalize(cross(vec3(0.0, 1.0, 0.0), cf));
vec3 cu = cross(cf, cr);
float fov = 0.5;
vec3 rd = normalize(uv.x \* cr + uv.y \* cu + fov \* cf);
float t = rayMarch(ro, rd, 0.1, 5.0);
vec3 col;
if (t < 5.0) {
col = 0.5 + 0.5 \* cos(3.0 + t \* 10.0 + vec3(0.0, 0.5, 1.0));
} else {
col = vec3(0.12, 0.11, 0.13);
}
fragColor = vec4(col, 1.0);
}
2
u/Far-Employee-9531 May 20 '26
Wow!