This commit is contained in:
Rakarake 2026-02-24 15:57:27 +01:00
parent c3c39a77cd
commit e84950178f
3 changed files with 14 additions and 1 deletions

1
.gitignore vendored
View file

@ -6,3 +6,4 @@ wlr-layer-shell-unstable-v1-protocol.h
wlr-layer-shell-unstable-v1-protocol.c wlr-layer-shell-unstable-v1-protocol.c
xdg-shell-protocol.h xdg-shell-protocol.h
xdg-shell-protocol.c xdg-shell-protocol.c
shaders/

View file

@ -45,6 +45,7 @@ const char *fragment_header_src =
"layout(location = 0) out vec4 color;\n" "layout(location = 0) out vec4 color;\n"
"uniform vec2 iResolution;\n" "uniform vec2 iResolution;\n"
"uniform float iTime;\n" "uniform float iTime;\n"
"uniform int iFrame;\n"
"void mainImage(out vec4 fragColor, in vec2 fragCoord);\n" "void mainImage(out vec4 fragColor, in vec2 fragCoord);\n"
"void main() {\n" "void main() {\n"
" mainImage(color, gl_FragCoord.xy);\n" " mainImage(color, gl_FragCoord.xy);\n"
@ -155,7 +156,11 @@ Renderer new_renderer() {
(void *)0 (void *)0
); );
Renderer renderer = { "", 0, vao }; Renderer renderer;
renderer.shader_path = "";
renderer.shader = 0;
renderer.vao = vao;
renderer.frame_nr = 0;
return renderer; return renderer;
} }
@ -177,6 +182,8 @@ void render(Renderer *state, int w, int h, double time, char *shader_path, int r
state->shader_path = shader_path; state->shader_path = shader_path;
} }
state->frame_nr++;
// Rendorrrr // Rendorrrr
glViewport(0, 0, w, h); glViewport(0, 0, w, h);
@ -192,6 +199,9 @@ void render(Renderer *state, int w, int h, double time, char *shader_path, int r
int uniform_iTime = glGetUniformLocation(state->shader, "iTime"); int uniform_iTime = glGetUniformLocation(state->shader, "iTime");
glUniform1f(uniform_iTime, (float)time); glUniform1f(uniform_iTime, (float)time);
int uniform_iFrame = glGetUniformLocation(state->shader, "iFrame");
glUniform1i(uniform_iFrame, state->frame_nr);
glBindVertexArray(state->vao); glBindVertexArray(state->vao);
glDrawArrays(GL_TRIANGLES, 0, 6); glDrawArrays(GL_TRIANGLES, 0, 6);
} }

View file

@ -7,6 +7,8 @@ typedef struct Renderer {
char *shader_path; char *shader_path;
unsigned int shader; unsigned int shader;
unsigned int vao; unsigned int vao;
/// The currently rendered frame.
unsigned int frame_nr;
struct stat shader_file_modified; struct stat shader_file_modified;
} Renderer; } Renderer;