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) { if (i == 0 || value >= m) {
d += char_at(uv, pos + vec2(magnitude - i - 1, 0), int(0x30 + (value % (m * 10)) / m)); d += char_at(uv, pos + vec2(magnitude - i - 1, 0), int(0x30 + (value % (m * 10)) / m));
m *= 10; m *= 10;
} else {
break;
} }
} }
return d; return d;
@@ -1254,12 +1252,20 @@ subroutine(src_stage_sub) vec4 src_16(vec2 vUV, int seed)
// logic // 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; vec2 uv2 = uv1;
uv2 *= 10; uv2 *= 10;
uv2.x -= 0.5; uv2.x -= 0.5;
uv2.y += 0.5; uv2.y += 0.5;
vec2 uv3 = uv1 * 30;
// base frame // base frame
float f = float f =
h_rect(uv2, vec2(-5, -2), vec2(1), 0.1) + h_rect(uv2, vec2(-5, -2), vec2(1), 0.1) +
@@ -1317,6 +1323,31 @@ subroutine(src_stage_sub) vec4 src_16(vec2 vUV, int seed)
f += char_at(uv2, vec2(1.55, -0.6), mix_type > 0 ? 0x4B : 0x4D); 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))); 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); return vec4(f);
} }
+1 -13
View File
@@ -9,7 +9,7 @@ float s(vec2 uv, float x0, float y0) {
step(-y0 - 1, -uv.y); 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, 0x41, 0x00}, // IN A
{0x49, 0x4E, 0x20, 0x42, 0x00}, // IN B {0x49, 0x4E, 0x20, 0x42, 0x00}, // IN B
{0x53, 0x52, 0x43, 0x20, 0x41}, // SRC A {0x53, 0x52, 0x43, 0x20, 0x41}, // SRC A
@@ -18,9 +18,6 @@ const int texts[11][5] = {
{0x46, 0x58, 0x20, 0x42, 0x00}, // FX B {0x46, 0x58, 0x20, 0x42, 0x00}, // FX B
{0x41, 0x2B, 0x42, 0x00, 0x00}, // A+B {0x41, 0x2B, 0x42, 0x00, 0x00}, // A+B
{0x4D, 0x46, 0x58, 0x00, 0x00}, // MFX {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() { void main() {
@@ -54,14 +51,5 @@ void main() {
t += write_5(uv3, vec2(-17,8), texts[6]); t += write_5(uv3, vec2(-17,8), texts[6]);
t += write_5(uv3, vec2(19,8), texts[7]); 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); fragColor = mix(c, 1 - c, t);
} }
+7 -2
View File
@@ -22,8 +22,9 @@ static void print_help(int status_code) {
"[-fc=CFG_PATH] " "[-fc=CFG_PATH] "
"[-is=SIZE] " "[-is=SIZE] "
"[-t=TEMPO] " "[-t=TEMPO] "
"[--monitor] " "[-m] "
"[--demo] " "[--demo] "
"[-w] "
"\n\n" "\n\n"
"Fusion Of Real-time Generative Effects.\n\n" "Fusion Of Real-time Generative Effects.\n\n"
"options:\n" "options:\n"
@@ -36,7 +37,8 @@ static void print_help(int status_code) {
" -is, --internal-size internal texture height (default: 720)\n" " -is, --internal-size internal texture height (default: 720)\n"
" -t, --tempo base tempo (default: 60)\n" " -t, --tempo base tempo (default: 60)\n"
" -m, --monitor output monitor\n" " -m, --monitor output monitor\n"
" --demo demonstration mode\n"); " --demo demonstration mode\n"
" -w, --windowed not fullscreen\n");
exit(status_code); exit(status_code);
} }
@@ -82,6 +84,7 @@ Parameters args_parse(int argc, char **argv) {
params.base_tempo = 60.0f; params.base_tempo = 60.0f;
params.monitor = false; params.monitor = false;
params.demo = false; params.demo = false;
params.windowed = false;
for (i = 1; i < argc; i++) { for (i = 1; i < argc; i++) {
arg = argv[i]; arg = argv[i];
@@ -107,6 +110,8 @@ Parameters args_parse(int argc, char **argv) {
params.monitor = true; params.monitor = true;
} else if (is_arg(arg, "--demo")) { } else if (is_arg(arg, "--demo")) {
params.demo = true; params.demo = true;
} else if (is_arg(arg, "-w") || is_arg(arg, "--windowed")) {
params.windowed = true;
} else { } else {
invalid_arg(arg); 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, init_files(params.frag_path, &common_shader_code, fragment_shaders,
frag_count); frag_count);
window = window_init(PACKAGE " " VERSION, params.screen, error_callback, window = window_init(PACKAGE " " VERSION, params.screen, params.windowed,
key_callback); error_callback, key_callback);
window_get_context(window, &context); window_get_context(window, &context);
+1
View File
@@ -18,6 +18,7 @@ typedef struct Parameters {
float base_tempo; float base_tempo;
bool monitor; bool monitor;
bool demo; bool demo;
bool windowed;
} Parameters; } Parameters;
typedef struct Vertex { typedef struct Vertex {
+2 -2
View File
@@ -93,7 +93,7 @@ static void use_window(GLFWwindow *window) {
glfwSwapInterval(1); 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 (*error_callback)(int, const char *),
void (*key_callback)(Window *, int, int, int, int)) { void (*key_callback)(Window *, int, int, int, int)) {
GLFWwindow *window; GLFWwindow *window;
@@ -101,7 +101,7 @@ Window *window_init(char *title, unsigned char monitor_index,
init_glfw(error_callback); init_glfw(error_callback);
monitor = get_monitor(monitor_index); monitor = windowed ? NULL : get_monitor(monitor_index);
window = create_window(monitor, title, key_callback); window = create_window(monitor, title, key_callback);
+1 -1
View File
@@ -3,7 +3,7 @@
#ifndef WINDOW_H #ifndef WINDOW_H
#define 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 (*error_callback)(int, const char *),
void (*key_callback)(Window *, int, int, int, int)); void (*key_callback)(Window *, int, int, int, int));