pretty debug info and windowed mode

This commit is contained in:
2025-09-20 22:16:57 +02:00
parent 3b48880f58
commit 0e7c6435f5
7 changed files with 47 additions and 22 deletions
+33 -2
View File
@@ -805,8 +805,6 @@ float write_int(vec2 uv, vec2 pos, int value, int magnitude)
if (i == 0 || value >= m) {
d += char_at(uv, pos + vec2(magnitude - i - 1, 0), int(0x30 + (value % (m * 10)) / m));
m *= 10;
} else {
break;
}
}
return d;
@@ -1254,12 +1252,20 @@ subroutine(src_stage_sub) vec4 src_16(vec2 vUV, int seed)
// logic
const int texts[3][5] = {
{0x46, 0x50, 0x53, 0x00, 0x00}, // FPS
{0x54, 0x45, 0x4D, 0x50, 0x4F}, // TEMPO
{0x54, 0x49, 0x4D, 0x45, 0x00}, // TIME
};
vec2 uv2 = uv1;
uv2 *= 10;
uv2.x -= 0.5;
uv2.y += 0.5;
vec2 uv3 = uv1 * 30;
// base frame
float f =
h_rect(uv2, vec2(-5, -2), vec2(1), 0.1) +
@@ -1316,7 +1322,32 @@ subroutine(src_stage_sub) vec4 src_16(vec2 vUV, int seed)
// show mix
f += char_at(uv2, vec2(1.55, -0.6), mix_type > 0 ? 0x4B : 0x4D);
f = mix(f, 1 - f, rect(uv2, vec2(2, -0.9 + 0.9 * mix_value), vec2(0.9, 0.9 * mix_value)));
// show debug info
float v = 0;
float x = 0;
x = -15;
f += write_5(uv3, vec2(x,13), texts[0]);
f += write_int(uv3, vec2(x - 4,13), iFPS, 3);
v = min(1, iFPS/60.0);
f += h_rect(uv3, vec2(x, 12), vec2(4, 0.5), 0.2);
f += rect(uv3, vec2(x + 4 * v - 4, 12), vec2(4 * v, 0.4));
x = 0;
f += write_5(uv3, vec2(x,13), texts[1]);
f += write_int(uv3, vec2(x - 4,13), int(iTempo), 3);
v = modTime(1);
f += h_rect(uv3, vec2(x, 12), vec2(4, 0.5), 0.2);
f += rect(uv3, vec2(x + 4 * v - 4, 12), vec2(4 * v, 0.4));
x = 15;
f += write_5(uv3, vec2(x,13), texts[2]);
f += write_int(uv3, vec2(x - 6,13), int(iTime), 5);
v = fract(iTime);
f += h_rect(uv3, vec2(x, 12), vec2(4, 0.5), 0.2);
f += rect(uv3, vec2(x + 4 * v - 4, 12), vec2(4 * v, 0.4));
return vec4(f);
}
+1 -13
View File
@@ -9,7 +9,7 @@ float s(vec2 uv, float x0, float y0) {
step(-y0 - 1, -uv.y);
}
const int texts[11][5] = {
const int texts[8][5] = {
{0x49, 0x4E, 0x20, 0x41, 0x00}, // IN A
{0x49, 0x4E, 0x20, 0x42, 0x00}, // IN B
{0x53, 0x52, 0x43, 0x20, 0x41}, // SRC A
@@ -18,9 +18,6 @@ const int texts[11][5] = {
{0x46, 0x58, 0x20, 0x42, 0x00}, // FX B
{0x41, 0x2B, 0x42, 0x00, 0x00}, // A+B
{0x4D, 0x46, 0x58, 0x00, 0x00}, // MFX
{0x46, 0x50, 0x53, 0x00, 0x00}, // FPS
{0x54, 0x45, 0x4D, 0x50, 0x4F}, // TEMPO
{0x54, 0x49, 0x4D, 0x45, 0x00}, // TIME
};
void main() {
@@ -54,14 +51,5 @@ void main() {
t += write_5(uv3, vec2(-17,8), texts[6]);
t += write_5(uv3, vec2(19,8), texts[7]);
t += write_5(uv3, vec2(-23,8), texts[8]);
t += write_int(uv3, vec2(-27,8), iFPS, 3);
t += write_5(uv3, vec2(-23,6), texts[9]);
t += write_int(uv3, vec2(-27,6), int(iTempo), 3);
t += write_5(uv3, vec2(-23,4), texts[10]);
t += write_int(uv3, vec2(-29,4), int(iTime), 5);
fragColor = mix(c, 1 - c, t);
}
+7 -2
View File
@@ -22,8 +22,9 @@ static void print_help(int status_code) {
"[-fc=CFG_PATH] "
"[-is=SIZE] "
"[-t=TEMPO] "
"[--monitor] "
"[-m] "
"[--demo] "
"[-w] "
"\n\n"
"Fusion Of Real-time Generative Effects.\n\n"
"options:\n"
@@ -36,7 +37,8 @@ static void print_help(int status_code) {
" -is, --internal-size internal texture height (default: 720)\n"
" -t, --tempo base tempo (default: 60)\n"
" -m, --monitor output monitor\n"
" --demo demonstration mode\n");
" --demo demonstration mode\n"
" -w, --windowed not fullscreen\n");
exit(status_code);
}
@@ -82,6 +84,7 @@ Parameters args_parse(int argc, char **argv) {
params.base_tempo = 60.0f;
params.monitor = false;
params.demo = false;
params.windowed = false;
for (i = 1; i < argc; i++) {
arg = argv[i];
@@ -107,6 +110,8 @@ Parameters args_parse(int argc, char **argv) {
params.monitor = true;
} else if (is_arg(arg, "--demo")) {
params.demo = true;
} else if (is_arg(arg, "-w") || is_arg(arg, "--windowed")) {
params.windowed = true;
} else {
invalid_arg(arg);
}
+2 -2
View File
@@ -169,8 +169,8 @@ void forge_run(Parameters params) {
init_files(params.frag_path, &common_shader_code, fragment_shaders,
frag_count);
window = window_init(PACKAGE " " VERSION, params.screen, error_callback,
key_callback);
window = window_init(PACKAGE " " VERSION, params.screen, params.windowed,
error_callback, key_callback);
window_get_context(window, &context);
+1
View File
@@ -18,6 +18,7 @@ typedef struct Parameters {
float base_tempo;
bool monitor;
bool demo;
bool windowed;
} Parameters;
typedef struct Vertex {
+2 -2
View File
@@ -93,7 +93,7 @@ static void use_window(GLFWwindow *window) {
glfwSwapInterval(1);
}
Window *window_init(char *title, unsigned char monitor_index,
Window *window_init(char *title, unsigned char monitor_index, bool windowed,
void (*error_callback)(int, const char *),
void (*key_callback)(Window *, int, int, int, int)) {
GLFWwindow *window;
@@ -101,7 +101,7 @@ Window *window_init(char *title, unsigned char monitor_index,
init_glfw(error_callback);
monitor = get_monitor(monitor_index);
monitor = windowed ? NULL : get_monitor(monitor_index);
window = create_window(monitor, title, key_callback);
+1 -1
View File
@@ -3,7 +3,7 @@
#ifndef WINDOW_H
#define WINDOW_H
Window *window_init(char *title, unsigned char monitor_index,
Window *window_init(char *title, unsigned char monitor_index, bool windowed,
void (*error_callback)(int, const char *),
void (*key_callback)(Window *, int, int, int, int));