diff options
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); |
