diff options
| author | Lizzy Fleckenstein <lizzy@vlhl.dev> | 2026-04-12 22:34:18 +0200 |
|---|---|---|
| committer | Lizzy Fleckenstein <lizzy@vlhl.dev> | 2026-04-12 22:45:04 +0200 |
| commit | d58e1aea4b57e890706b96565c8c1fd9e09b42ec (patch) | |
| tree | 61a838aa434da6a890ace72898b854328e0b688f /src/render.c | |
| parent | 5aa88cf26954a738d0f22a7c90bb33f1df422919 (diff) | |
| download | animtool-d58e1aea4b57e890706b96565c8c1fd9e09b42ec.tar.xz | |
Diffstat (limited to 'src/render.c')
| -rw-r--r-- | src/render.c | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/src/render.c b/src/render.c index fe0c200..0db8e19 100644 --- a/src/render.c +++ b/src/render.c @@ -40,18 +40,18 @@ static void render_node(struct node *node, mat4x4 model, draw_calls *calls, doub vals[op][i] = expr_eval(&node->transform.op[op][i], time); mat4x4 trans; - mat4x4_identity(trans); - mat4x4_translate(trans, vals[TR_TRANSLATE][0], vals[TR_TRANSLATE][1], vals[TR_TRANSLATE][2]); - mat4x4_scale_aniso(trans, trans, vals[TR_SCALE][0], vals[TR_SCALE][1], vals[TR_SCALE][2]); - mat4x4_rotate_X(trans, trans, deg2rad(vals[TR_ROTATE][0])); - mat4x4_rotate_Y(trans, trans, deg2rad(vals[TR_ROTATE][1])); - mat4x4_rotate_Z(trans, trans, deg2rad(vals[TR_ROTATE][2])); - - mat4x4 new_model; - mat4x4_mul(new_model, model, trans); - - for (size_t i = 0; i < node->transform.children.len; i++) - render_node(&node->transform.children.ptr[i], new_model, calls, time); + mat4x4_identity(trans); + mat4x4_translate(trans, vals[TR_TRANSLATE][0], vals[TR_TRANSLATE][1], vals[TR_TRANSLATE][2]); + mat4x4_scale_aniso(trans, trans, vals[TR_SCALE][0], vals[TR_SCALE][1], vals[TR_SCALE][2]); + mat4x4_rotate_X(trans, trans, deg2rad(vals[TR_ROTATE][0])); + mat4x4_rotate_Y(trans, trans, deg2rad(vals[TR_ROTATE][1])); + mat4x4_rotate_Z(trans, trans, deg2rad(vals[TR_ROTATE][2])); + + mat4x4 new_model; + mat4x4_mul(new_model, model, trans); + + for (size_t i = 0; i < node->transform.children.len; i++) + render_node(&node->transform.children.ptr[i], new_model, calls, time); break; } case NODE_CAMERA: { @@ -143,7 +143,7 @@ static void render_seq(size_t n_inst, struct seq_inst inst[n_inst], struct scene struct timespec ts_now; clock_gettime(CLOCK_REALTIME, &ts_now); double e_time = (double) - (ts_now.tv_nsec - state->start_ts.tv_nsec) / 1000000000.0 + + (ts_now.tv_nsec - state->start_ts.tv_nsec) / 1000000000.0 + (ts_now.tv_sec - state->start_ts.tv_sec); double ahead = time - e_time - scene->live.data; if (ahead > 0.0) { @@ -154,7 +154,7 @@ static void render_seq(size_t n_inst, struct seq_inst inst[n_inst], struct scene nanosleep(&ts_sleep, nullptr); } } - + struct draw_frame frame; render_frame(&frame, scene, &state->calls_buf, time); draw->draw_frame(&frame, state->render_buffer); |
