From 142045f51086e91ba6434ec1f1e5c6e2147e7766 Mon Sep 17 00:00:00 2001 From: luboslenco Date: Sun, 5 Apr 2026 23:00:47 +0200 Subject: [PATCH] paint: cleanup --- paint/sources/base.c | 4 +- paint/sources/brush_nodes/color_node.c | 2 +- paint/sources/brush_nodes/input_node.c | 6 +- paint/sources/brush_nodes/vector_math_node.c | 10 +- paint/sources/brush_nodes/vector_node.c | 2 +- paint/sources/camera.c | 78 +++++-------- paint/sources/compass.c | 18 +-- paint/sources/context.c | 2 +- paint/sources/export_arm.c | 2 +- paint/sources/geom.c | 4 +- paint/sources/gizmo.c | 26 ++--- paint/sources/globals.h | 4 +- paint/sources/import_arm.c | 30 ++--- paint/sources/import_envmap.c | 2 +- paint/sources/kickstart.c | 16 +-- paint/sources/physics_sim.c | 9 +- paint/sources/project.c | 2 +- paint/sources/render_path_base.c | 8 +- paint/sources/render_path_paint.c | 28 ++--- paint/sources/render_path_raytrace.c | 2 +- paint/sources/tab_layers.c | 4 +- paint/sources/tab_materials.c | 2 +- paint/sources/types.h | 20 ---- paint/sources/uniforms_ext.c | 47 ++++---- paint/sources/util_mesh.c | 20 ++-- paint/sources/util_render.c | 116 +++++++++++-------- paint/sources/viewport.c | 12 +- 27 files changed, 224 insertions(+), 252 deletions(-) diff --git a/paint/sources/base.c b/paint/sources/base.c index 2491d0d5..122f8ab7 100644 --- a/paint/sources/base.c +++ b/paint/sources/base.c @@ -1426,8 +1426,8 @@ void ui_base_update(void *_) { camera_object_t *camera = scene_camera; transform_t *ct = camera->base->transform; - mo->base->transform->loc = vec4_create(transform_world_x(ct), transform_world_y(ct), transform_world_z(ct), 1.0); - mo->base->transform->scale = vec4_create(g_context->brush_radius * 0.2, g_context->brush_radius * 0.2, g_context->brush_radius * 0.2, 1.0); + mo->base->transform->loc = (vec4_t){transform_world_x(ct), transform_world_y(ct), transform_world_z(ct), 1.0}; + mo->base->transform->scale = (vec4_t){g_context->brush_radius * 0.2, g_context->brush_radius * 0.2, g_context->brush_radius * 0.2, 1.0}; transform_build_matrix(mo->base->transform); physics_body_t *body = physics_body_create(); diff --git a/paint/sources/brush_nodes/color_node.c b/paint/sources/brush_nodes/color_node.c index 94f58aea..42b5ebb1 100644 --- a/paint/sources/brush_nodes/color_node.c +++ b/paint/sources/brush_nodes/color_node.c @@ -49,6 +49,6 @@ color_node_t *color_node_create(ui_node_t *raw, f32_array_t *args) { n->base->get = color_node_get; n->base->get_as_image = color_node_get_as_image; n->base->set = color_node_set; - n->value = vec4_create(r, g, b, a); + n->value = (vec4_t){r, g, b, a}; return n; } diff --git a/paint/sources/brush_nodes/input_node.c b/paint/sources/brush_nodes/input_node.c index a9baa5e5..703c599b 100644 --- a/paint/sources/brush_nodes/input_node.c +++ b/paint/sources/brush_nodes/input_node.c @@ -84,12 +84,12 @@ void input_node_update(float_node_t *self) { } if (g_context->brush_lazy_radius > 0) { - vec4_t v1 = vec4_create(g_context->brush_lazy_x * sys_w(), g_context->brush_lazy_y * sys_h(), 0.0, 1.0); - vec4_t v2 = vec4_create(input_node_coords.x * sys_w(), input_node_coords.y * sys_h(), 0.0, 1.0); + vec4_t v1 = (vec4_t){g_context->brush_lazy_x * sys_w(), g_context->brush_lazy_y * sys_h(), 0.0, 1.0}; + vec4_t v2 = (vec4_t){input_node_coords.x * sys_w(), input_node_coords.y * sys_h(), 0.0, 1.0}; f32 d = vec4_dist(v1, v2); f32 r = g_context->brush_lazy_radius * 85; if (d > r) { - vec4_t v3 = vec4_create(0.0, 0.0, 0.0, 1.0); + vec4_t v3 = (vec4_t){0.0, 0.0, 0.0, 1.0}; v3 = vec4_sub(v2, v1); v3 = vec4_norm(v3); v3 = vec4_mult(v3, 1.0 - g_context->brush_lazy_step); diff --git a/paint/sources/brush_nodes/vector_math_node.c b/paint/sources/brush_nodes/vector_math_node.c index 8f416f45..8bd3c8a3 100644 --- a/paint/sources/brush_nodes/vector_math_node.c +++ b/paint/sources/brush_nodes/vector_math_node.c @@ -21,7 +21,7 @@ logic_node_value_t *vector_math_node_get(vector_math_node_t *self, i32 from) { } else if (string_equals(op, "Dot Product")) { f = vec4_dot(self->v, v2); - self->v = vec4_create(f, f, f, 1.0); + self->v = (vec4_t){f, f, f, 1.0}; } else if (string_equals(op, "Cross Product")) { self->v = vec4_cross(self->v, v2); @@ -41,18 +41,18 @@ logic_node_value_t *vector_math_node_get(vector_math_node_t *self, i32 from) { } else if (string_equals(op, "Length")) { f = vec4_len(self->v); - self->v = vec4_create(f, f, f, 1.0); + self->v = (vec4_t){f, f, f, 1.0}; } else if (string_equals(op, "Distance")) { f = vec4_dist(self->v, v2); - self->v = vec4_create(f, f, f, 1.0); + self->v = (vec4_t){f, f, f, 1.0}; } else if (string_equals(op, "Project")) { self->v = vec4_clone(v2); self->v = vec4_mult(self->v, vec4_dot(v1, v2) / (float)vec4_dot(v2, v2)); } else if (string_equals(op, "Reflect")) { - vec4_t tmp = vec4_create(0.0, 0.0, 0.0, 1.0); + vec4_t tmp = (vec4_t){0.0, 0.0, 0.0, 1.0}; tmp = vec4_clone(v2); tmp = vec4_norm(tmp); self->v = vec4_reflect(self->v, tmp); @@ -132,6 +132,6 @@ vector_math_node_t *vector_math_node_create(ui_node_t *raw, f32_array_t *args) { vector_math_node_t *n = GC_ALLOC_INIT(vector_math_node_t, {0}); n->base = logic_node_create(n); n->base->get = vector_math_node_get; - n->v = vec4_create(0.0, 0.0, 0.0, 1.0); + n->v = (vec4_t){0.0, 0.0, 0.0, 1.0}; return n; } diff --git a/paint/sources/brush_nodes/vector_node.c b/paint/sources/brush_nodes/vector_node.c index d3387e09..4448ffef 100644 --- a/paint/sources/brush_nodes/vector_node.c +++ b/paint/sources/brush_nodes/vector_node.c @@ -43,7 +43,7 @@ vector_node_t *vector_node_create(ui_node_t *raw, f32_array_t *args) { n->base->get = vector_node_get; n->base->get_as_image = vector_node_get_as_image; n->base->set = vector_node_set; - n->value = vec4_create(0.0, 0.0, 0.0, 1.0); + n->value = (vec4_t){0.0, 0.0, 0.0, 1.0}; if (args != NULL) { logic_node_add_input(n->base, float_node_create(NULL, f32_array_create_x(args->buffer[0])), 0); diff --git a/paint/sources/camera.c b/paint/sources/camera.c index fd048fbc..75c23075 100644 --- a/paint/sources/camera.c +++ b/paint/sources/camera.c @@ -66,7 +66,7 @@ static void camera_orbit_action(bool modif, bool default_keymap) { } vec4_t offset = - vec4_create(camera->base->transform->loc.x - pivot_x, camera->base->transform->loc.y - pivot_y, camera->base->transform->loc.z - pivot_z, 0.0); + (vec4_t){camera->base->transform->loc.x - pivot_x, camera->base->transform->loc.y - pivot_y, camera->base->transform->loc.z - pivot_z, 0.0}; quat_t q_x = quat_from_axis_angle(vec4_z_axis(), angle_x); quat_t q_y = quat_from_axis_angle(right, angle_y); offset = vec4_apply_quat(offset, q_x); @@ -128,7 +128,7 @@ static void camera_rotate_action(bool modif, bool default_keymap) { angle_y = 0.0; } - vec4_t offset = vec4_create(t->loc.x - pivot_x, t->loc.y - pivot_y, t->loc.z - pivot_z, 0.0); + vec4_t offset = (vec4_t){t->loc.x - pivot_x, t->loc.y - pivot_y, t->loc.z - pivot_z, 0.0}; quat_t q_x = quat_from_axis_angle(up, angle_x); quat_t q_y = quat_from_axis_angle(right, angle_y); offset = vec4_apply_quat(offset, q_x); @@ -152,11 +152,11 @@ static void camera_rotate_action(bool modif, bool default_keymap) { } f32 camera_get_zoom_speed() { - i32 sign = g_config->zoom_direction == ZOOM_DIRECTION_VERTICAL_INVERTED || g_config->zoom_direction == ZOOM_DIRECTION_HORIZONTAL_INVERTED || - g_config->zoom_direction == ZOOM_DIRECTION_VERTICAL_HORIZONTAL_INVERTED - ? -1 - : 1; - camera_object_t *camera = scene_camera; + i32 sign = g_config->zoom_direction == ZOOM_DIRECTION_VERTICAL_INVERTED || g_config->zoom_direction == ZOOM_DIRECTION_HORIZONTAL_INVERTED || + g_config->zoom_direction == ZOOM_DIRECTION_VERTICAL_HORIZONTAL_INVERTED + ? -1 + : 1; + camera_object_t *camera = scene_camera; f32 fov_adjust = camera->data->fov; return (g_config->camera_zoom_speed * sign) / (float)fov_adjust; } @@ -166,7 +166,7 @@ f32 camera_get_zoom_delta() { : g_config->zoom_direction == ZOOM_DIRECTION_VERTICAL_INVERTED ? -mouse_movement_y : g_config->zoom_direction == ZOOM_DIRECTION_HORIZONTAL ? mouse_movement_x : g_config->zoom_direction == ZOOM_DIRECTION_HORIZONTAL_INVERTED ? mouse_movement_x - : -(mouse_movement_y - mouse_movement_x); + : -(mouse_movement_y - mouse_movement_x); } static void camera_zoom_action(bool modif_key) { @@ -206,7 +206,7 @@ static void camera_fly_action(bool modif_key) { if (camera_ease > 1.0) { camera_ease = 1.0; } - camera_dir = vec4_create(0, 0, 0, 1.0); + camera_dir = (vec4_t){0, 0, 0, 1.0}; vec4_t look = camera_object_look(camera); vec4_t right = camera_object_right(camera); if (move_forward) { @@ -259,14 +259,14 @@ i32 camera_index() { void camera_pan_action(bool modif, bool default_keymap) { camera_object_t *camera = scene_camera; if (operator_shortcut(any_map_get(config_keymap, "action_pan"), SHORTCUT_TYPE_DOWN) || (mouse_down("middle") && !modif && default_keymap)) { - camera_redraws = 2; - f32 f = 150 * (1.0 / (float)(camera_distance() / 4.0)); - vec4_t look = vec4_mult(transform_look(camera->base->transform), mouse_movement_y / (float)f * g_config->camera_pan_speed); - vec4_t right = vec4_mult(transform_right(camera->base->transform), -mouse_movement_x / (float)f * g_config->camera_pan_speed); - camera->base->transform->loc = vec4_add(camera->base->transform->loc, look); - camera->base->transform->loc = vec4_add(camera->base->transform->loc, right); - camera_origins->buffer[camera_index()]->v = vec4_add(camera_origins->buffer[camera_index()]->v, look); - camera_origins->buffer[camera_index()]->v = vec4_add(camera_origins->buffer[camera_index()]->v, right); + camera_redraws = 2; + f32 f = 150 * (1.0 / (float)(camera_distance() / 4.0)); + vec4_t look = vec4_mult(transform_look(camera->base->transform), mouse_movement_y / (float)f * g_config->camera_pan_speed); + vec4_t right = vec4_mult(transform_right(camera->base->transform), -mouse_movement_x / (float)f * g_config->camera_pan_speed); + camera->base->transform->loc = vec4_add(camera->base->transform->loc, look); + camera->base->transform->loc = vec4_add(camera->base->transform->loc, right); + camera_origins[camera_index()] = vec4_add(camera_origins[camera_index()], look); + camera_origins[camera_index()] = vec4_add(camera_origins[camera_index()], right); camera_object_build_mat(camera); } } @@ -278,10 +278,9 @@ void camera_set_pivot_center_to_mouse() { return; } - vec4_box_t *o = camera_origins->buffer[camera_index()]; - o->v.x = g_context->posx_picked; - o->v.y = g_context->posy_picked; - o->v.z = g_context->posz_picked; + camera_origins[camera_index()].x = g_context->posx_picked; + camera_origins[camera_index()].y = g_context->posy_picked; + camera_origins[camera_index()].z = g_context->posz_picked; camera_redraws = 2; camera_object_t *camera = scene_camera; @@ -361,44 +360,29 @@ void camera_update(void *_) { f32 camera_distance() { camera_object_t *camera = scene_camera; - return vec4_dist(camera_origins->buffer[camera_index()]->v, camera->base->transform->loc); + return vec4_dist(camera_origins[camera_index()], camera->base->transform->loc); } void camera_reset(i32 view_index) { camera_object_t *camera = scene_camera; if (view_index == -1) { - vec4_box_t *v0 = GC_ALLOC_INIT(vec4_box_t, {.v = vec4_create(0, 0, 0, 1)}); - vec4_box_t *v1 = GC_ALLOC_INIT(vec4_box_t, {.v = vec4_create(0, 0, 0, 1)}); - gc_unroot(camera_origins); - camera_origins = any_array_create_from_raw( - (void *[]){ - v0, - v1, - }, - 2); - gc_root(camera_origins); - mat4_box_t *m0 = GC_ALLOC_INIT(mat4_box_t, {.v = mat4_clone(camera->base->transform->local)}); - mat4_box_t *m1 = GC_ALLOC_INIT(mat4_box_t, {.v = mat4_clone(camera->base->transform->local)}); - gc_unroot(camera_views); - camera_views = any_array_create_from_raw( - (void *[]){ - m0, - m1, - }, - 2); - gc_root(camera_views); + camera_origins[0] = (vec4_t){0, 0, 0, 1}; + camera_origins[1] = (vec4_t){0, 0, 0, 1}; + + camera_views[0] = mat4_clone(camera->base->transform->local); + camera_views[1] = mat4_clone(camera->base->transform->local); } else { - camera_origins->buffer[view_index]->v = vec4_create(0, 0, 0, 1.0); - camera_views->buffer[view_index]->v = mat4_clone(camera->base->transform->local); + camera_origins[view_index] = (vec4_t){0, 0, 0, 1.0}; + camera_views[view_index] = mat4_clone(camera->base->transform->local); } #ifdef IRON_IOS if (config_is_iphone()) { viewport_zoom(-2.8); - vec4_t right = vec4_mult(transform_right(camera->base->transform), -0.135); - camera->base->transform->loc = vec4_add(camera->base->transform->loc, right); - camera_origins->buffer[camera_index()]->v = vec4_add(camera_origins->buffer[camera_index()]->v, right); + vec4_t right = vec4_mult(transform_right(camera->base->transform), -0.135); + camera->base->transform->loc = vec4_add(camera->base->transform->loc, right); + camera_origins[camera_index()] = vec4_add(camera_origins[camera_index()], right); camera_object_build_mat(camera); } #endif diff --git a/paint/sources/compass.c b/paint/sources/compass.c index 4a0a044b..cbf622a3 100644 --- a/paint/sources/compass.c +++ b/paint/sources/compass.c @@ -39,9 +39,9 @@ void compass_render() { compass_y = -compass_y; } - compass->base->transform->loc = vec4_create(compass_x * ratio, compass_y, -1, 1.0); - compass->base->transform->rot = quat_create(-crot.x, -crot.y, -crot.z, crot.w); - compass->base->transform->scale = vec4_create(0.4, 0.4, 0.4, 1.0); + compass->base->transform->loc = (vec4_t){compass_x * ratio, compass_y, -1, 1.0}; + compass->base->transform->rot = (quat_t){-crot.x, -crot.y, -crot.z, crot.w}; + compass->base->transform->scale = (vec4_t){0.4, 0.4, 0.4, 1.0}; transform_build_matrix(compass->base->transform); compass->frustum_culling = false; mesh_object_render(compass, "overlay", NULL); @@ -72,13 +72,13 @@ void compass_init_hitbox() { _compass_hitbox_z = object_create(true); gc_root(_compass_hitbox_z); - _compass_hitbox_x->transform->scale = vec4_create(0.15, 0.15, 0.15, 1.0); - _compass_hitbox_y->transform->scale = vec4_create(0.15, 0.15, 0.15, 1.0); - _compass_hitbox_z->transform->scale = vec4_create(0.15, 0.15, 0.15, 1.0); + _compass_hitbox_x->transform->scale = (vec4_t){0.15, 0.15, 0.15, 1.0}; + _compass_hitbox_y->transform->scale = (vec4_t){0.15, 0.15, 0.15, 1.0}; + _compass_hitbox_z->transform->scale = (vec4_t){0.15, 0.15, 0.15, 1.0}; - _compass_hitbox_x->transform->loc = vec4_create(1.5, 0, 0, 1.0); - _compass_hitbox_y->transform->loc = vec4_create(0, 1.5, 0, 1.0); - _compass_hitbox_z->transform->loc = vec4_create(0, 0, 1.5, 1.0); + _compass_hitbox_x->transform->loc = (vec4_t){1.5, 0, 0, 1.0}; + _compass_hitbox_y->transform->loc = (vec4_t){0, 1.5, 0, 1.0}; + _compass_hitbox_z->transform->loc = (vec4_t){0, 0, 1.5, 1.0}; object_t *compass = scene_get_child(".Compass"); object_set_parent(_compass_hitbox_x, compass); diff --git a/paint/sources/context.c b/paint/sources/context.c index fd080b89..c5e28e4a 100644 --- a/paint/sources/context.c +++ b/paint/sources/context.c @@ -32,7 +32,7 @@ context_t *context_create() { c->export_mesh_index = 0; c->pack_assets_on_export = true; c->pack_assets_on_save = false; - c->paint_vec = vec4_create(0.0, 0.0, 0.0, 1.0); + c->paint_vec = (vec4_t){0.0, 0.0, 0.0, 1.0}; c->last_paint_x = -1.0; c->last_paint_y = -1.0; c->foreground_event = false; diff --git a/paint/sources/export_arm.c b/paint/sources/export_arm.c index e319c9c2..c3bb95fc 100644 --- a/paint/sources/export_arm.c +++ b/paint/sources/export_arm.c @@ -212,7 +212,7 @@ void export_arm_run_project() { g_project->envmap_angle = g_context->envmap_angle; g_project->envmap_blur = g_context->show_envmap_blur; g_project->camera_world = mat4_to_f32_array(scene_camera->base->transform->local); - g_project->camera_origin = export_arm_vec3f32(camera_origins->buffer[0]->v); + g_project->camera_origin = export_arm_vec3f32(camera_origins[0]); g_project->camera_fov = scene_camera->data->fov; // g_project.mesh_datas = md; // TODO: fix GC ref diff --git a/paint/sources/geom.c b/paint/sources/geom.c index 1f052498..996063ec 100644 --- a/paint/sources/geom.c +++ b/paint/sources/geom.c @@ -70,7 +70,7 @@ raw_mesh_t *geom_make_uv_sphere(f32 radius, i32 width_segments, i32 height_segme mesh->texa = i16_array_create(width_verts * height_verts * 2); mesh->inda = u32_array_create(width_segments * height_segments * 6 - width_segments * 6); - vec4_t nor = vec4_create(0.0, 0.0, 0.0, 1.0); + vec4_t nor = (vec4_t){0.0, 0.0, 0.0, 1.0}; i32 pos = 0; for (i32 y = 0; y < height_verts; ++y) { f32 v = y / (float)height_segments; @@ -92,7 +92,7 @@ raw_mesh_t *geom_make_uv_sphere(f32 radius, i32 width_segments, i32 height_segme mesh->posa->buffer[i4] = math_floor(vx * inv); mesh->posa->buffer[i4 + 1] = math_floor(vy * inv); mesh->posa->buffer[i4 + 2] = math_floor(vz * inv); - nor = vec4_create(vx, vy, vz, 1.0); + nor = (vec4_t){vx, vy, vz, 1.0}; nor = vec4_norm(nor); mesh->posa->buffer[i4 + 3] = math_floor(nor.z * 32767); mesh->nora->buffer[i2] = math_floor(nor.x * 32767); diff --git a/paint/sources/gizmo.c b/paint/sources/gizmo.c index ab3fbc2b..8b4ccbbb 100644 --- a/paint/sources/gizmo.c +++ b/paint/sources/gizmo.c @@ -22,22 +22,22 @@ void gizmo_update() { gizmo->transform->loc = vec4_clone(paint_object->transform->loc); } else if (is_decal) { - gizmo->transform->loc = vec4_create(g_context->layer->decal_mat.m30, g_context->layer->decal_mat.m31, g_context->layer->decal_mat.m32, 1.0); + gizmo->transform->loc = (vec4_t){g_context->layer->decal_mat.m30, g_context->layer->decal_mat.m31, g_context->layer->decal_mat.m32, 1.0}; } camera_object_t *cam = scene_camera; f32 fov = cam->data->fov; f32 dist = vec4_dist(cam->base->transform->loc, gizmo->transform->loc) / 8.0 * fov; - gizmo->transform->scale = vec4_create(dist, dist, dist, 1.0); - g_context->gizmo_translate_x->transform->scale = vec4_create(dist, dist, dist, 1.0); - g_context->gizmo_translate_y->transform->scale = vec4_create(dist, dist, dist, 1.0); - g_context->gizmo_translate_z->transform->scale = vec4_create(dist, dist, dist, 1.0); - g_context->gizmo_scale_x->transform->scale = vec4_create(dist, dist, dist, 1.0); - g_context->gizmo_scale_y->transform->scale = vec4_create(dist, dist, dist, 1.0); - g_context->gizmo_scale_z->transform->scale = vec4_create(dist, dist, dist, 1.0); - g_context->gizmo_rotate_x->transform->scale = vec4_create(dist, dist, dist, 1.0); - g_context->gizmo_rotate_y->transform->scale = vec4_create(dist, dist, dist, 1.0); - g_context->gizmo_rotate_z->transform->scale = vec4_create(dist, dist, dist, 1.0); + gizmo->transform->scale = (vec4_t){dist, dist, dist, 1.0}; + g_context->gizmo_translate_x->transform->scale = (vec4_t){dist, dist, dist, 1.0}; + g_context->gizmo_translate_y->transform->scale = (vec4_t){dist, dist, dist, 1.0}; + g_context->gizmo_translate_z->transform->scale = (vec4_t){dist, dist, dist, 1.0}; + g_context->gizmo_scale_x->transform->scale = (vec4_t){dist, dist, dist, 1.0}; + g_context->gizmo_scale_y->transform->scale = (vec4_t){dist, dist, dist, 1.0}; + g_context->gizmo_scale_z->transform->scale = (vec4_t){dist, dist, dist, 1.0}; + g_context->gizmo_rotate_x->transform->scale = (vec4_t){dist, dist, dist, 1.0}; + g_context->gizmo_rotate_y->transform->scale = (vec4_t){dist, dist, dist, 1.0}; + g_context->gizmo_rotate_z->transform->scale = (vec4_t){dist, dist, dist, 1.0}; transform_build_matrix(gizmo->transform); // Scene control @@ -234,10 +234,10 @@ void gizmo_update() { g_context->rdirty = 2; if (is_object) { transform_t *t = paint_object->transform; - gizmo_v = vec4_create(transform_world_x(t), transform_world_y(t), transform_world_z(t), 1.0); + gizmo_v = (vec4_t){transform_world_x(t), transform_world_y(t), transform_world_z(t), 1.0}; } else if (is_decal) { - gizmo_v = vec4_create(g_context->layer->decal_mat.m30, g_context->layer->decal_mat.m31, g_context->layer->decal_mat.m32, 1.0); + gizmo_v = (vec4_t){g_context->layer->decal_mat.m30, g_context->layer->decal_mat.m31, g_context->layer->decal_mat.m32, 1.0}; } if (g_context->translate_x || g_context->scale_x) { diff --git a/paint/sources/globals.h b/paint/sources/globals.h index 4a3ea639..818fc9f1 100644 --- a/paint/sources/globals.h +++ b/paint/sources/globals.h @@ -391,8 +391,8 @@ char *console_message = ""; f32 console_message_timer = 0.0; i32 console_message_color = 0x00000000; string_array_t *console_last_traces; -vec4_box_t_array_t *camera_origins; -mat4_box_t_array_t *camera_views; +vec4_t camera_origins[2]; +mat4_t camera_views[2]; vec4_t camera_dir; ui_handle_t *box_preferences_htab; string_array_t *box_preferences_files_plugin = NULL; diff --git a/paint/sources/import_arm.c b/paint/sources/import_arm.c index 441a2579..8907bafb 100644 --- a/paint/sources/import_arm.c +++ b/paint/sources/import_arm.c @@ -5,7 +5,7 @@ scene_t *scene_raw_gc; void import_arm_run_project_on_next_frame(void *_) { // Once envmap is imported - scene_world->strength = g_project->envmap_strength; + scene_world->strength = g_project->envmap_strength; g_context->envmap_angle = g_project->envmap_angle; g_context->show_envmap_blur = g_project->envmap_blur; if (g_context->show_envmap_blur) { @@ -35,7 +35,7 @@ void import_arm_run_mesh(project_t *raw) { md->_->handle = md->name; any_map_set(data_cached_meshes, md->_->handle, md); } - object->base->transform->scale = vec4_create(1, 1, 1, 1.0); + object->base->transform->scale = (vec4_t){1, 1, 1, 1.0}; transform_build_matrix(object->base->transform); object->base->name = md->name; any_array_push(project_paint_objects, object); @@ -221,9 +221,9 @@ void import_arm_run_swatches_from_project(project_t *project, char *path, bool r } void import_arm_run_project(char *path) { - buffer_t *b = data_get_blob(path); + buffer_t *b = data_get_blob(path); project_t *project; - bool import_as_mesh = false; + bool import_as_mesh = false; if (import_arm_is_old(b)) { project = import_arm_from_old(b); } @@ -315,8 +315,8 @@ void import_arm_run_project(char *path) { transform_decompose(scene_camera->base->transform); scene_camera->data->fov = g_project->camera_fov; camera_object_build_proj(scene_camera, -1.0); - f32_array_t *origin = g_project->camera_origin; - camera_origins->buffer[0]->v = vec4_create(origin->buffer[0], origin->buffer[1], origin->buffer[2], 1.0); + f32_array_t *origin = g_project->camera_origin; + camera_origins[0] = (vec4_t){origin->buffer[0], origin->buffer[1], origin->buffer[2], 1.0}; } for (i32 i = 0; i < project->assets->length; ++i) { @@ -358,7 +358,7 @@ void import_arm_run_project(char *path) { mesh_data_t *md = mesh_data_create(project->mesh_datas->buffer[0]); mesh_object_set_data(g_context->paint_object, md); - g_context->paint_object->base->transform->scale = vec4_create(1, 1, 1, 1.0); + g_context->paint_object->base->transform->scale = (vec4_t){1, 1, 1, 1.0}; transform_build_matrix(g_context->paint_object->base->transform); g_context->paint_object->base->name = md->name; gc_unroot(project_paint_objects); @@ -430,9 +430,9 @@ void import_arm_run_project(char *path) { render_target_t *blend1 = any_map_get(rts, "texpaint_blend1"); gpu_texture_t *_texpaint_blend1 = blend1->_image; gpu_delete_texture(_texpaint_blend1); - blend1->width = config_get_texture_res_x(); - blend1->height = config_get_texture_res_y(); - blend1->_image = gpu_create_render_target(config_get_texture_res_x(), config_get_texture_res_y(), GPU_TEXTURE_FORMAT_R8); + blend1->width = config_get_texture_res_x(); + blend1->height = config_get_texture_res_y(); + blend1->_image = gpu_create_render_target(config_get_texture_res_x(), config_get_texture_res_y(), GPU_TEXTURE_FORMAT_R8); g_context->brush_blend_dirty = true; } @@ -564,7 +564,7 @@ void import_arm_run_project(char *path) { } for (i32 i = 0; i < project_materials->length; ++i) { - slot_material_t *m = project_materials->buffer[i]; + slot_material_t *m = project_materials->buffer[i]; g_context->material = m; make_material_parse_paint_material(true); util_render_make_material_preview(); @@ -596,12 +596,12 @@ void import_arm_run_project(char *path) { ui_base_hwnds->buffer[TAB_AREA_SIDEBAR0]->redraws = 2; ui_base_hwnds->buffer[TAB_AREA_SIDEBAR1]->redraws = 2; - g_context->ddirty = 4; + g_context->ddirty = 4; data_delete_blob(path); } void import_arm_run_material(char *path) { - buffer_t *b = data_get_blob(path); + buffer_t *b = data_get_blob(path); project_t *project; if (import_arm_is_old(b)) { project = import_arm_from_old(b); @@ -618,7 +618,7 @@ void import_arm_run_material(char *path) { } void import_arm_run_brush(char *path) { - buffer_t *b = data_get_blob(path); + buffer_t *b = data_get_blob(path); project_t *project = armpack_decode(b); if (project->version == NULL) { data_delete_blob(path); @@ -673,7 +673,7 @@ void import_arm_run_brush_from_project(project_t *project, char *path) { } void import_arm_run_swatches(char *path, bool replace_existing) { - buffer_t *b = data_get_blob(path); + buffer_t *b = data_get_blob(path); project_t *project = armpack_decode(b); if (project->version == NULL) { data_delete_blob(path); diff --git a/paint/sources/import_envmap.c b/paint/sources/import_envmap.c index 9dcc38e4..12935c68 100644 --- a/paint/sources/import_envmap.c +++ b/paint/sources/import_envmap.c @@ -38,7 +38,7 @@ vec4_t import_envmap_reverse_equirect(f32 x, f32 y) { f32 theta = x * math_pi() * 2 - math_pi(); f32 phi = y * math_pi(); // return n.set(math_sin(phi) * math_cos(theta), -(math_sin(phi) * math_sin(theta)), math_cos(phi)); - import_envmap_n = vec4_create(-math_cos(phi), math_sin(phi) * math_cos(theta), -(math_sin(phi) * math_sin(theta)), 1.0); + import_envmap_n = (vec4_t){-math_cos(phi), math_sin(phi) * math_cos(theta), -(math_sin(phi) * math_sin(theta)), 1.0}; return import_envmap_n; } diff --git a/paint/sources/kickstart.c b/paint/sources/kickstart.c index d07346b0..862d50f2 100644 --- a/paint/sources/kickstart.c +++ b/paint/sources/kickstart.c @@ -88,10 +88,10 @@ void _kickstart() { ui_base_hwnd_tabs = ui_base_init_hwnd_tabs(); gc_root(ui_base_hwnd_tabs); - gizmo_v = vec4_create(0.0, 0.0, 0.0, 1.0); - gizmo_v0 = vec4_create(0.0, 0.0, 0.0, 1.0); - gizmo_q = quat_create(0.0, 0.0, 0.0, 1.0); - gizmo_q0 = quat_create(0.0, 0.0, 0.0, 1.0); + gizmo_v = (vec4_t){0.0, 0.0, 0.0, 1.0}; + gizmo_v0 = (vec4_t){0.0, 0.0, 0.0, 1.0}; + gizmo_q = (quat_t){0.0, 0.0, 0.0, 1.0}; + gizmo_q0 = (quat_t){0.0, 0.0, 0.0, 1.0}; ui_toolbar_handle = ui_handle_create(); gc_root(ui_toolbar_handle); @@ -315,7 +315,7 @@ void _kickstart() { console_last_traces = any_array_create(0); gc_root(console_last_traces); - camera_dir = vec4_create(0.0, 0.0, 0.0, 1.0); + camera_dir = (vec4_t){0.0, 0.0, 0.0, 1.0}; box_preferences_htab = ui_handle_create(); gc_root(box_preferences_htab); @@ -330,12 +330,12 @@ void _kickstart() { gc_root(render_path_raytrace_f32a); render_path_raytrace_help_mat = mat4_identity(); - import_envmap_params = vec4_create(0.0, 0.0, 0.0, 1.0); - import_envmap_n = vec4_create(0.0, 0.0, 0.0, 1.0); + import_envmap_params = (vec4_t){0.0, 0.0, 0.0, 1.0}; + import_envmap_n = (vec4_t){0.0, 0.0, 0.0, 1.0}; neural_node_results = any_imap_create(); gc_root(neural_node_results); - input_node_coords = vec4_create(0.0, 0.0, 0.0, 1.0); + input_node_coords = (vec4_t){0.0, 0.0, 0.0, 1.0}; sys_on_resize = base_on_resize; sys_on_w = base_w; diff --git a/paint/sources/physics_sim.c b/paint/sources/physics_sim.c index 77714a55..01dcd628 100644 --- a/paint/sources/physics_sim.c +++ b/paint/sources/physics_sim.c @@ -1,8 +1,8 @@ #include "global.h" -mat4_box_t_array_t *sim_transforms; -bool sim_initialized = false; +any_array_t *sim_transforms; +bool sim_initialized = false; void sim_init() { if (sim_initialized) { @@ -66,7 +66,8 @@ void sim_play() { gc_root(sim_transforms); mesh_object_t_array_t *pos = project_paint_objects; for (i32 i = 0; i < pos->length; ++i) { - mat4_box_t *m = GC_ALLOC_INIT(mat4_box_t, {.v = pos->buffer[i]->base->transform->local}); + mat4_t *m = gc_alloc(sizeof(mat4_t)); + memcpy(m->m, pos->buffer[i]->base->transform->local.m, sizeof(m->m)); any_array_push(sim_transforms, m); } } @@ -81,7 +82,7 @@ void sim_stop() { // Restore transforms mesh_object_t_array_t *pos = project_paint_objects; for (i32 i = 0; i < pos->length; ++i) { - transform_set_matrix(pos->buffer[i]->base->transform, sim_transforms->buffer[i]->v); + transform_set_matrix(pos->buffer[i]->base->transform, *(mat4_t *)sim_transforms->buffer[i]); physics_body_t *pb = any_imap_get(physics_body_object_map, pos->buffer[i]->base->uid); if (pb != NULL) { physics_body_sync_transform(pb); diff --git a/paint/sources/project.c b/paint/sources/project.c index b7df089e..6a95d80b 100644 --- a/paint/sources/project.c +++ b/paint/sources/project.c @@ -265,7 +265,7 @@ void project_new(bool reset_layers) { g_context->paint_object = context_main_object(); context_select_paint_object(context_main_object()); - g_context->paint_object->base->transform->scale = vec4_create(1, 1, 1, 1.0); + g_context->paint_object->base->transform->scale = (vec4_t){1, 1, 1, 1.0}; transform_build_matrix(g_context->paint_object->base->transform); g_context->paint_object->base->name = "Tessellated"; diff --git a/paint/sources/render_path_base.c b/paint/sources/render_path_base.c index 59fda6b9..1f353289 100644 --- a/paint/sources/render_path_base.c +++ b/paint/sources/render_path_base.c @@ -49,7 +49,7 @@ void render_path_base_begin() { camera_object_t *cam = scene_camera; if (g_context->view_index_last > -1) { // Save current viewport camera - camera_views->buffer[g_context->view_index_last]->v = mat4_clone(cam->base->transform->local); + camera_views[g_context->view_index_last] = mat4_clone(cam->base->transform->local); } bool decal = context_is_decal(); @@ -59,7 +59,7 @@ void render_path_base_begin() { g_context->ddirty = 1; } - transform_set_matrix(cam->base->transform, camera_views->buffer[g_context->view_index]->v); + transform_set_matrix(cam->base->transform, camera_views[g_context->view_index]); camera_object_build_mat(cam); camera_object_build_proj(cam, -1.0); } @@ -141,7 +141,7 @@ void render_path_base_draw_split(void (*draw_commands)(void)) { camera_object_t *cam = scene_camera; g_context->view_index = g_context->view_index == 0 ? 1 : 0; - transform_set_matrix(cam->base->transform, camera_views->buffer[g_context->view_index]->v); + transform_set_matrix(cam->base->transform, camera_views[g_context->view_index]); camera_object_build_mat(cam); camera_object_build_proj(cam, -1.0); @@ -151,7 +151,7 @@ void render_path_base_draw_split(void (*draw_commands)(void)) { g_context->viewport_mode == VIEWPORT_MODE_PATH_TRACE ? render_path_raytrace_draw(use_live_layer) : draw_commands(); g_context->view_index = g_context->view_index == 0 ? 1 : 0; - transform_set_matrix(cam->base->transform, camera_views->buffer[g_context->view_index]->v); + transform_set_matrix(cam->base->transform, camera_views[g_context->view_index]); camera_object_build_mat(cam); camera_object_build_proj(cam, -1.0); } diff --git a/paint/sources/render_path_paint.c b/paint/sources/render_path_paint.c index 14d25e64..da5772b9 100644 --- a/paint/sources/render_path_paint.c +++ b/paint/sources/render_path_paint.c @@ -379,41 +379,41 @@ void render_path_paint_commands_symmetry() { f32 sy = t->scale.y; f32 sz = t->scale.z; if (g_context->sym_x) { - t->scale = vec4_create(-sx, sy, sz, 1.0); + t->scale = (vec4_t){-sx, sy, sz, 1.0}; transform_build_matrix(t); render_path_paint_commands_paint(false); } if (g_context->sym_y) { - t->scale = vec4_create(sx, -sy, sz, 1.0); + t->scale = (vec4_t){sx, -sy, sz, 1.0}; transform_build_matrix(t); render_path_paint_commands_paint(false); } if (g_context->sym_z) { - t->scale = vec4_create(sx, sy, -sz, 1.0); + t->scale = (vec4_t){sx, sy, -sz, 1.0}; transform_build_matrix(t); render_path_paint_commands_paint(false); } if (g_context->sym_x && g_context->sym_y) { - t->scale = vec4_create(-sx, -sy, sz, 1.0); + t->scale = (vec4_t){-sx, -sy, sz, 1.0}; transform_build_matrix(t); render_path_paint_commands_paint(false); } if (g_context->sym_x && g_context->sym_z) { - t->scale = vec4_create(-sx, sy, -sz, 1.0); + t->scale = (vec4_t){-sx, sy, -sz, 1.0}; transform_build_matrix(t); render_path_paint_commands_paint(false); } if (g_context->sym_y && g_context->sym_z) { - t->scale = vec4_create(sx, -sy, -sz, 1.0); + t->scale = (vec4_t){sx, -sy, -sz, 1.0}; transform_build_matrix(t); render_path_paint_commands_paint(false); } if (g_context->sym_x && g_context->sym_y && g_context->sym_z) { - t->scale = vec4_create(-sx, -sy, -sz, 1.0); + t->scale = (vec4_t){-sx, -sy, -sz, 1.0}; transform_build_matrix(t); render_path_paint_commands_paint(false); } - t->scale = vec4_create(sx, sy, sz, 1.0); + t->scale = (vec4_t){sx, sy, sz, 1.0}; transform_build_matrix(t); } } @@ -772,8 +772,8 @@ void render_path_paint_set_plane_mesh() { f32 tx = ui_view2d_pan_x / (float)ui_view2d_ww; f32 ty = ui_view2d_pan_y / (float)sys_h(); m = mat4_identity(); - m = mat4_scale(m, vec4_create(tw, tw, 1, 1.0)); - m = mat4_set_loc(m, vec4_create(tx, ty, 0, 1.0)); + m = mat4_scale(m, (vec4_t){tw, tw, 1, 1.0}); + m = mat4_set_loc(m, (vec4_t){tx, ty, 0, 1.0}); mat4_t m2 = mat4_identity(); m2 = mat4_inv(scene_camera->vp); m = mat4_mult_mat(m, m2); @@ -845,19 +845,19 @@ void render_path_paint_set_plane_mesh() { render_path_paint_planeo->base->visible = true; g_context->paint_object = render_path_paint_planeo; - vec4_t v = vec4_create(m.m00, m.m01, m.m02, 1.0); + vec4_t v = (vec4_t){m.m00, m.m01, m.m02, 1.0}; f32 sx = vec4_len(v); render_path_paint_planeo->base->transform->rot = quat_from_euler(-math_pi() / 2.0, 0, 0); - render_path_paint_planeo->base->transform->scale = vec4_create(sx, 1.0, sx, 1.0); + render_path_paint_planeo->base->transform->scale = (vec4_t){sx, 1.0, sx, 1.0}; render_path_paint_planeo->base->transform->scale.z *= config_get_texture_res_y() / (float)config_get_texture_res_x(); - render_path_paint_planeo->base->transform->loc = vec4_create(m.m30, -m.m31, 0.0, 1.0); + render_path_paint_planeo->base->transform->loc = (vec4_t){m.m30, -m.m31, 0.0, 1.0}; transform_build_matrix(render_path_paint_planeo->base->transform); } void render_path_paint_restore_plane_mesh() { g_context->paint2d_view = false; render_path_paint_planeo->base->visible = false; - render_path_paint_planeo->base->transform->loc = vec4_create(0.0, 0.0, 0.0, 1.0); + render_path_paint_planeo->base->transform->loc = (vec4_t){0.0, 0.0, 0.0, 1.0}; for (i32 i = 0; i < project_paint_objects->length; ++i) { project_paint_objects->buffer[i]->base->visible = render_path_paint_visibles->buffer[i]; } diff --git a/paint/sources/render_path_raytrace.c b/paint/sources/render_path_raytrace.c index 364266ab..ab34b14c 100644 --- a/paint/sources/render_path_raytrace.c +++ b/paint/sources/render_path_raytrace.c @@ -134,7 +134,7 @@ void render_path_raytrace_build_data() { if (mo->base->parent != NULL) { sc *= mo->base->parent->transform->scale.x; } - render_path_raytrace_transform = mat4_scale(render_path_raytrace_transform, vec4_create(sc, sc, sc, 1.0)); + render_path_raytrace_transform = mat4_scale(render_path_raytrace_transform, (vec4_t){sc, sc, sc, 1.0}); gc_unroot(render_path_raytrace_vb); render_path_raytrace_vb = mo->data->_->vertex_buffer; diff --git a/paint/sources/tab_layers.c b/paint/sources/tab_layers.c index 26367327..7ab2a584 100644 --- a/paint/sources/tab_layers.c +++ b/paint/sources/tab_layers.c @@ -994,10 +994,10 @@ void tab_layers_button_new_menu() { } } if (ui_menu_button(tr("Fill Layer"), "", ICON_SPHERE)) { - layers_create_fill_layer(UV_TYPE_UVMAP, mat4nan, -1); + layers_create_fill_layer(UV_TYPE_UVMAP, mat4_nan(), -1); } if (ui_menu_button(tr("Decal Layer"), "", ICON_DECAL)) { - layers_create_fill_layer(UV_TYPE_PROJECT, mat4nan, -1); + layers_create_fill_layer(UV_TYPE_PROJECT, mat4_nan(), -1); } if (ui_menu_button(tr("Black Mask"), "", ICON_MASK)) { if (slot_layer_is_mask(l)) { diff --git a/paint/sources/tab_materials.c b/paint/sources/tab_materials.c index 392f37c3..99ed5cf9 100644 --- a/paint/sources/tab_materials.c +++ b/paint/sources/tab_materials.c @@ -82,7 +82,7 @@ void tab_materials_draw_slots_menu() { if (ui_menu_button(tr("To Fill Layer"), "", ICON_SPHERE)) { context_select_material(i); - layers_create_fill_layer(UV_TYPE_UVMAP, mat4nan, -1); + layers_create_fill_layer(UV_TYPE_UVMAP, mat4_nan(), -1); } if (ui_menu_button(tr("Export"), "", ICON_EXPORT)) { diff --git a/paint/sources/types.h b/paint/sources/types.h index e98ce3f1..ff9d5fc5 100644 --- a/paint/sources/types.h +++ b/paint/sources/types.h @@ -4,14 +4,6 @@ #include "enums.h" #include "minic.h" -typedef struct mat4_box { - mat4_t v; -} mat4_box_t; - -typedef struct vec4_box { - vec4_t v; -} vec4_box_t; - typedef struct slot_brush { struct ui_nodes *nodes; struct ui_node_canvas *canvas; @@ -751,12 +743,6 @@ typedef struct node_list_t_array { int capacity; } node_list_t_array_t; -typedef struct mat4_box_t_array { - mat4_box_t **buffer; - int length; - int capacity; -} mat4_box_t_array_t; - typedef struct slot_brush_t_array { slot_brush_t **buffer; int length; @@ -835,12 +821,6 @@ typedef struct history_step_t_array { int capacity; } history_step_t_array_t; -typedef struct vec4_box_t_array { - vec4_box_t **buffer; - int length; - int capacity; -} vec4_box_t_array_t; - typedef struct tab_draw_array_t_array { tab_draw_array_t **buffer; int length; diff --git a/paint/sources/uniforms_ext.c b/paint/sources/uniforms_ext.c index 64cd42c0..e130128d 100644 --- a/paint/sources/uniforms_ext.c +++ b/paint/sources/uniforms_ext.c @@ -142,13 +142,13 @@ f32 uniforms_ext_f32_link(object_t *object, material_data_t *mat, char *link) { vec2_t uniforms_ext_vec2_link(object_t *object, material_data_t *mat, char *link) { if (string_equals(link, "_gbuffer_size")) { render_target_t *gbuffer2 = any_map_get(render_path_render_targets, "gbuffer2"); - return vec2_create(gbuffer2->_image->width, gbuffer2->_image->height); + return (vec2_t){gbuffer2->_image->width, gbuffer2->_image->height}; } else if (string_equals(link, "_clone_delta")) { - return vec2_create(g_context->clone_delta_x, g_context->clone_delta_y); + return (vec2_t){g_context->clone_delta_x, g_context->clone_delta_y}; } else if (string_equals(link, "_texpaint_size")) { - return vec2_create(config_get_texture_res_x(), config_get_texture_res_y()); + return (vec2_t){config_get_texture_res_x(), config_get_texture_res_y()}; } else if (string_equals(link, "_brush_angle")) { f32 brush_angle = g_context->brush_angle + g_context->brush_nodes_angle; @@ -157,7 +157,7 @@ vec2_t uniforms_ext_vec2_link(object_t *object, material_data_t *mat, char *link if (g_config->pressure_angle && pen_down("tip")) { angle *= pen_pressure * g_config->pressure_sensitivity; } - return vec2_create(math_cos(-angle), math_sin(-angle)); + return (vec2_t){math_cos(-angle), math_sin(-angle)}; } return vec2_nan(); } @@ -173,7 +173,6 @@ f32 uniforms_ext_vec2d(f32 x) { vec4_t uniforms_ext_vec3_link(object_t *object, material_data_t *mat, char *link) { vec4_t v = vec4_nan(); if (string_equals(link, "_brush_direction")) { - v = _uniforms_vec; // Discard first paint for directional brush bool allow_paint = g_context->prev_paint_vec_x != g_context->last_paint_vec_x && g_context->prev_paint_vec_y != g_context->last_paint_vec_y && g_context->prev_paint_vec_x > 0 && g_context->prev_paint_vec_y > 0; @@ -186,42 +185,36 @@ vec4_t uniforms_ext_vec3_link(object_t *object, material_data_t *mat, char *link lastx = uniforms_ext_vec2d(lastx); } f32 angle = math_atan2(-y + lasty, x - lastx) - math_pi() / 2.0; - v = vec4_create(math_cos(angle), math_sin(angle), allow_paint ? 1 : 0, 1.0); + v = (vec4_t){math_cos(angle), math_sin(angle), allow_paint ? 1 : 0, 1.0}; g_context->prev_paint_vec_x = g_context->last_paint_vec_x; g_context->prev_paint_vec_y = g_context->last_paint_vec_y; return v; } else if (string_equals(link, "_decal_layer_loc")) { - v = _uniforms_vec; - v = vec4_create(g_context->layer->decal_mat.m30, g_context->layer->decal_mat.m31, g_context->layer->decal_mat.m32, 1.0); + v = (vec4_t){g_context->layer->decal_mat.m30, g_context->layer->decal_mat.m31, g_context->layer->decal_mat.m32, 1.0}; return v; } else if (string_equals(link, "_decal_layer_nor")) { - v = _uniforms_vec; - v = vec4_create(g_context->layer->decal_mat.m20, g_context->layer->decal_mat.m21, g_context->layer->decal_mat.m22, 1.0); + v = (vec4_t){g_context->layer->decal_mat.m20, g_context->layer->decal_mat.m21, g_context->layer->decal_mat.m22, 1.0}; v = vec4_norm(v); return v; } else if (string_equals(link, "_picker_base")) { - v = _uniforms_vec; - v = vec4_create(color_get_rb(g_context->picked_color->base) / 255.0, color_get_gb(g_context->picked_color->base) / 255.0, - color_get_bb(g_context->picked_color->base) / 255.0, 1.0); + v = (vec4_t){color_get_rb(g_context->picked_color->base) / 255.0, color_get_gb(g_context->picked_color->base) / 255.0, + color_get_bb(g_context->picked_color->base) / 255.0, 1.0}; return v; } else if (string_equals(link, "_picker_normal")) { - v = _uniforms_vec; - v = vec4_create(color_get_rb(g_context->picked_color->normal) / 255.0, color_get_gb(g_context->picked_color->normal) / 255.0, - color_get_bb(g_context->picked_color->normal) / 255.0, 1.0); + v = (vec4_t){color_get_rb(g_context->picked_color->normal) / 255.0, color_get_gb(g_context->picked_color->normal) / 255.0, + color_get_bb(g_context->picked_color->normal) / 255.0, 1.0}; return v; } else if (string_equals(link, "_particle_hit")) { - v = _uniforms_vec; - v = vec4_create(g_context->particle_hit_x, g_context->particle_hit_y, g_context->particle_hit_z, 1.0); + v = (vec4_t){g_context->particle_hit_x, g_context->particle_hit_y, g_context->particle_hit_z, 1.0}; return v; } else if (string_equals(link, "_particle_hit_last")) { - v = _uniforms_vec; - v = vec4_create(g_context->last_particle_hit_x, g_context->last_particle_hit_y, g_context->last_particle_hit_z, 1.0); + v = (vec4_t){g_context->last_particle_hit_x, g_context->last_particle_hit_y, g_context->last_particle_hit_z, 1.0}; return v; } return v; @@ -230,7 +223,7 @@ vec4_t uniforms_ext_vec3_link(object_t *object, material_data_t *mat, char *link vec4_t uniforms_ext_vec4_link(object_t *object, material_data_t *mat, char *link) { if (string_equals(link, "_input_brush")) { bool down = mouse_down("left") || pen_down("tip"); - vec4_t v = vec4_create(g_context->paint_vec.x, g_context->paint_vec.y, down ? 1.0 : 0.0, g_context->paint2d ? 1.0 : 0.0); + vec4_t v = (vec4_t){g_context->paint_vec.x, g_context->paint_vec.y, down ? 1.0 : 0.0, g_context->paint2d ? 1.0 : 0.0}; if (g_context->paint2d) { v.x = uniforms_ext_vec2d(v.x); } @@ -239,7 +232,7 @@ vec4_t uniforms_ext_vec4_link(object_t *object, material_data_t *mat, char *link } else if (string_equals(link, "_input_brush_last")) { bool down = mouse_down("left") || pen_down("tip"); - vec4_t v = vec4_create(g_context->last_paint_vec_x, g_context->last_paint_vec_y, down ? 1.0 : 0.0, g_context->paint2d ? 1.0 : 0.0); + vec4_t v = (vec4_t){g_context->last_paint_vec_x, g_context->last_paint_vec_y, down ? 1.0 : 0.0, g_context->paint2d ? 1.0 : 0.0}; if (g_context->paint2d) { v.x = uniforms_ext_vec2d(v.x); } @@ -247,14 +240,14 @@ vec4_t uniforms_ext_vec4_link(object_t *object, material_data_t *mat, char *link return v; } else if (string_equals(link, "_envmap_data")) { - return vec4_create(g_context->envmap_angle, math_sin(-g_context->envmap_angle), math_cos(-g_context->envmap_angle), scene_world->strength * 2.0); + return (vec4_t){g_context->envmap_angle, math_sin(-g_context->envmap_angle), math_cos(-g_context->envmap_angle), scene_world->strength * 2.0}; } else if (string_equals(link, "_envmap_data_world")) { bool tonemap = g_context->viewport_mode == VIEWPORT_MODE_LIT || g_context->viewport_mode == VIEWPORT_MODE_PATH_TRACE; - return vec4_create(g_context->envmap_angle, tonemap ? 0.0 : 1.0, 0.0, g_context->show_envmap ? scene_world->strength : 1.0); + return (vec4_t){g_context->envmap_angle, tonemap ? 0.0 : 1.0, 0.0, g_context->show_envmap ? scene_world->strength : 1.0}; } else if (string_equals(link, "_stencil_transform")) { - vec4_t v = vec4_create(g_context->brush_stencil_x, g_context->brush_stencil_y, g_context->brush_stencil_scale, g_context->brush_stencil_angle); + vec4_t v = (vec4_t){g_context->brush_stencil_x, g_context->brush_stencil_y, g_context->brush_stencil_scale, g_context->brush_stencil_angle}; if (g_context->paint2d) { v.x = uniforms_ext_vec2d(v.x); } @@ -266,7 +259,7 @@ vec4_t uniforms_ext_vec4_link(object_t *object, material_data_t *mat, char *link f32 val = (g_context->brush_radius * g_context->brush_nodes_radius) / 15.0; f32 scale2d = (900 / (float)base_h()) * g_config->window_scale; val *= scale2d; // Projection ratio - vec4_t v = vec4_create(g_context->decal_x, g_context->decal_y, decal_mask ? 1 : 0, val); + vec4_t v = (vec4_t){g_context->decal_x, g_context->decal_y, decal_mask ? 1 : 0, val}; if (g_context->paint2d) { v.x = uniforms_ext_vec2d(v.x); } @@ -281,7 +274,7 @@ mat4_t uniforms_ext_mat4_link(object_t *object, material_data_t *mat, char *link if (string_equals(link, "_decal_layer_matrix")) { // Decal layer mat4_t m = mat4_inv(g_context->layer->decal_mat); f32 f = object->parent->transform->scale.x * object->transform->scale_world; - m = mat4_scale(m, vec4_create(f, f, f, 1.0)); + m = mat4_scale(m, (vec4_t){f, f, f, 1.0}); m = mat4_mult_mat(m, uniforms_ext_ortho_p); return m; } diff --git a/paint/sources/util_mesh.c b/paint/sources/util_mesh.c index 14c9f34f..969c10f8 100644 --- a/paint/sources/util_mesh.c +++ b/paint/sources/util_mesh.c @@ -209,11 +209,11 @@ i32 util_mesh_calc_normals_sort(i32 *pa, i32 *pb) { } void util_mesh_calc_normals(bool smooth) { - vec4_t va = vec4_create(0.0, 0.0, 0.0, 1.0); - vec4_t vb = vec4_create(0.0, 0.0, 0.0, 1.0); - vec4_t vc = vec4_create(0.0, 0.0, 0.0, 1.0); - vec4_t cb = vec4_create(0.0, 0.0, 0.0, 1.0); - vec4_t ab = vec4_create(0.0, 0.0, 0.0, 1.0); + vec4_t va = (vec4_t){0.0, 0.0, 0.0, 1.0}; + vec4_t vb = (vec4_t){0.0, 0.0, 0.0, 1.0}; + vec4_t vc = (vec4_t){0.0, 0.0, 0.0, 1.0}; + vec4_t cb = (vec4_t){0.0, 0.0, 0.0, 1.0}; + vec4_t ab = (vec4_t){0.0, 0.0, 0.0, 1.0}; mesh_object_t_array_t *objects = project_paint_objects; for (i32 i = 0; i < objects->length; ++i) { mesh_object_t *o = objects->buffer[i]; @@ -257,9 +257,9 @@ void util_mesh_calc_normals(bool smooth) { i32 i1 = inda->buffer[i * 3]; i32 i2 = inda->buffer[i * 3 + 1]; i32 i3 = inda->buffer[i * 3 + 2]; - va = vec4_create(va0->buffer[i1 * 4], va0->buffer[i1 * 4 + 1], va0->buffer[i1 * 4 + 2], 1.0); - vb = vec4_create(va0->buffer[i2 * 4], va0->buffer[i2 * 4 + 1], va0->buffer[i2 * 4 + 2], 1.0); - vc = vec4_create(va0->buffer[i3 * 4], va0->buffer[i3 * 4 + 1], va0->buffer[i3 * 4 + 2], 1.0); + va = (vec4_t){va0->buffer[i1 * 4], va0->buffer[i1 * 4 + 1], va0->buffer[i1 * 4 + 2], 1.0}; + vb = (vec4_t){va0->buffer[i2 * 4], va0->buffer[i2 * 4 + 1], va0->buffer[i2 * 4 + 2], 1.0}; + vc = (vec4_t){va0->buffer[i3 * 4], va0->buffer[i3 * 4 + 1], va0->buffer[i3 * 4 + 2], 1.0}; cb = vec4_sub(vc, vb); ab = vec4_sub(va, vb); cb = vec4_cross(cb, ab); @@ -425,9 +425,9 @@ void util_mesh_apply_displacement(gpu_texture_t *texpaint_pack, f32 strength, f3 void util_mesh_equirect_unwrap(raw_mesh_t *mesh) { i32 verts = math_floor(mesh->posa->length / 4.0); mesh->texa = i16_array_create(verts * 2); - vec4_t n = vec4_create(0.0, 0.0, 0.0, 1.0); + vec4_t n = (vec4_t){0.0, 0.0, 0.0, 1.0}; for (i32 i = 0; i < verts; ++i) { - n = vec4_create(mesh->posa->buffer[i * 4] / 32767.0, mesh->posa->buffer[i * 4 + 1] / 32767.0, mesh->posa->buffer[i * 4 + 2] / 32767.0, 1.0); + n = (vec4_t){mesh->posa->buffer[i * 4] / 32767.0, mesh->posa->buffer[i * 4 + 1] / 32767.0, mesh->posa->buffer[i * 4 + 2] / 32767.0, 1.0}; n = vec4_norm(n); // Sphere projection // mesh.texa[i * 2 ] = math_atan2(n.x, n.y) / (math_pi() * 2) + 0.5; diff --git a/paint/sources/util_render.c b/paint/sources/util_render.c index 5b960d96..7abe8a12 100644 --- a/paint/sources/util_render.c +++ b/paint/sources/util_render.c @@ -17,30 +17,44 @@ void util_render_make_material_preview() { }, 1); gc_root(scene_meshes); - mesh_object_t *painto = g_context->paint_object; + mesh_object_t *painto = g_context->paint_object; g_context->paint_object = sphere; - sphere->material = project_materials->buffer[0]->data; + sphere->material = project_materials->buffer[0]->data; g_context->material->preview_ready = true; g_context->saved_camera = mat4_clone(scene_camera->base->transform->local); - mat4_t m = mat4_create(0.9146286343879498, -0.0032648027153306235, 0.404281837254303, 0.4659988049397712, 0.404295023959927, 0.007367569133732468, - -0.9145989516155143, -1.0687517188018691, 0.000007410128652369705, 0.9999675337275382, 0.008058532943908717, 0.015935682577325486, 0, - 0, 0, 1); + mat4_t m = (mat4_t){0.9146286343879498, + -0.0032648027153306235, + 0.404281837254303, + 0.4659988049397712, + 0.404295023959927, + 0.007367569133732468, + -0.9145989516155143, + -1.0687517188018691, + 0.000007410128652369705, + 0.9999675337275382, + 0.008058532943908717, + 0.015935682577325486, + 0, + 0, + 0, + 1}; + transform_set_matrix(scene_camera->base->transform, m); f32 saved_fov = scene_camera->data->fov; scene_camera->data->fov = 0.92; viewport_update_camera_type(CAMERA_TYPE_PERSPECTIVE); - world_data_t *probe = scene_world; - f32 _probe_strength = probe->strength; - probe->strength = 2; - f32 _envmap_angle = g_context->envmap_angle; - g_context->envmap_angle = 0.0; - f32 _brush_scale = g_context->brush_scale; - g_context->brush_scale = 1.5; - f32 _brush_nodes_scale = g_context->brush_nodes_scale; - g_context->brush_nodes_scale = 1.0; + world_data_t *probe = scene_world; + f32 _probe_strength = probe->strength; + probe->strength = 2; + f32 _envmap_angle = g_context->envmap_angle; + g_context->envmap_angle = 0.0; + f32 _brush_scale = g_context->brush_scale; + g_context->brush_scale = 1.5; + f32 _brush_nodes_scale = g_context->brush_nodes_scale; + g_context->brush_nodes_scale = 1.0; gpu_texture_t *_envmap = scene_world->_->envmap; scene_world->_->envmap = g_context->preview_envmap; @@ -61,8 +75,8 @@ void util_render_make_material_preview() { gc_root(render_path_commands); g_context->material_preview = false; - _render_path_last_w = sys_w(); - _render_path_last_h = sys_h(); + _render_path_last_w = sys_w(); + _render_path_last_h = sys_h(); // Restore sphere->base->visible = false; @@ -77,11 +91,11 @@ void util_render_make_material_preview() { camera_object_build_proj(scene_camera, -1.0); camera_object_build_mat(scene_camera); - probe->strength = _probe_strength; + probe->strength = _probe_strength; g_context->envmap_angle = _envmap_angle; g_context->brush_scale = _brush_scale; g_context->brush_nodes_scale = _brush_nodes_scale; - scene_world->_->envmap = _envmap; + scene_world->_->envmap = _envmap; make_material_parse_mesh_material(); g_context->ddirty = 0; @@ -94,7 +108,7 @@ void util_render_make_decal_preview() { g_context->decal_preview = true; mesh_object_t *plane = scene_get_child(".Plane")->ext; - plane->base->transform->scale = vec4_create(1, 1, 1, 1.0); + plane->base->transform->scale = (vec4_t){1, 1, 1, 1.0}; plane->base->transform->rot = quat_from_euler(-math_pi() / 2.0, 0, 0); transform_build_matrix(plane->base->transform); plane->base->visible = true; @@ -106,12 +120,12 @@ void util_render_make_decal_preview() { }, 1); gc_root(scene_meshes); - mesh_object_t *painto = g_context->paint_object; + mesh_object_t *painto = g_context->paint_object; g_context->paint_object = plane; g_context->saved_camera = mat4_clone(scene_camera->base->transform->local); - mat4_t m = mat4_identity(); - m = mat4_translate(m, 0, 0, 1); + mat4_t m = mat4_identity(); + m = mat4_translate(m, 0, 0, 1); transform_set_matrix(scene_camera->base->transform, m); f32 saved_fov = scene_camera->data->fov; scene_camera->data->fov = 0.92; @@ -136,8 +150,8 @@ void util_render_make_decal_preview() { gc_root(render_path_commands); g_context->decal_preview = false; - _render_path_last_w = sys_w(); - _render_path_last_h = sys_h(); + _render_path_last_w = sys_w(); + _render_path_last_h = sys_h(); // Restore plane->base->visible = false; @@ -248,7 +262,7 @@ void util_render_make_brush_preview() { } slot_material_t *_material = g_context->material; - g_context->material = slot_material_create(NULL, NULL); + g_context->material = slot_material_create(NULL, NULL); // Prevent grid jump g_context->material->nodes->pan_x = g_context->brush->nodes->pan_x; @@ -256,14 +270,14 @@ void util_render_make_brush_preview() { g_context->material->nodes->zoom = g_context->brush->nodes->zoom; tool_type_t _tool = g_context->tool; - g_context->tool = TOOL_TYPE_BRUSH; + g_context->tool = TOOL_TYPE_BRUSH; slot_layer_t *_layer = g_context->layer; if (slot_layer_is_mask(g_context->layer)) { g_context->layer = g_context->layer->parent; } - slot_material_t *_fill_layer = g_context->layer->fill_layer; + slot_material_t *_fill_layer = g_context->layer->fill_layer; g_context->layer->fill_layer = NULL; render_path_paint_use_live_layer(true); @@ -282,13 +296,13 @@ void util_render_make_brush_preview() { } bool merged_object_visible = false; if (g_context->merged_object != NULL) { - merged_object_visible = g_context->merged_object->base->visible; + merged_object_visible = g_context->merged_object->base->visible; g_context->merged_object->base->visible = false; } - camera_object_t *cam = scene_camera; + camera_object_t *cam = scene_camera; g_context->saved_camera = mat4_clone(cam->base->transform->local); - f32 saved_fov = cam->data->fov; + f32 saved_fov = cam->data->fov; viewport_update_camera_type(CAMERA_TYPE_PERSPECTIVE); mat4_t m = mat4_identity(); m = mat4_translate(m, 0, 0, 0.5); @@ -298,33 +312,33 @@ void util_render_make_brush_preview() { camera_object_build_mat(cam); m = mat4_inv(scene_camera->vp); - mesh_object_t *planeo = scene_get_child(".Plane")->ext; - planeo->base->visible = true; + mesh_object_t *planeo = scene_get_child(".Plane")->ext; + planeo->base->visible = true; g_context->paint_object = planeo; - vec4_t v = vec4_create(0.0, 0.0, 0.0, 1.0); - v = vec4_create(m.m00, m.m01, m.m02, 1.0); + vec4_t v = (vec4_t){0.0, 0.0, 0.0, 1.0}; + v = (vec4_t){m.m00, m.m01, m.m02, 1.0}; f32 sx = vec4_len(v); planeo->base->transform->rot = quat_from_euler(-math_pi() / 2.0, 0, 0); - planeo->base->transform->scale = vec4_create(sx, 1.0, sx, 1.0); - planeo->base->transform->loc = vec4_create(m.m30, -m.m31, 0.0, 1.0); + planeo->base->transform->scale = (vec4_t){sx, 1.0, sx, 1.0}; + planeo->base->transform->loc = (vec4_t){m.m30, -m.m31, 0.0, 1.0}; transform_build_matrix(planeo->base->transform); render_path_paint_live_layer_drawn = 0; render_path_base_draw_gbuffer(); // Paint brush preview - f32 _brush_radius = g_context->brush_radius; - f32 _brush_opacity = g_context->brush_opacity; - f32 _brush_hardness = g_context->brush_hardness; + f32 _brush_radius = g_context->brush_radius; + f32 _brush_opacity = g_context->brush_opacity; + f32 _brush_hardness = g_context->brush_hardness; g_context->brush_radius = 0.33; g_context->brush_opacity = 1.0; g_context->brush_hardness = 1.0; - f32 _x = g_context->paint_vec.x; - f32 _y = g_context->paint_vec.y; - f32 _last_x = g_context->last_paint_vec_x; - f32 _last_y = g_context->last_paint_vec_y; - i32 _pdirty = g_context->pdirty; + f32 _x = g_context->paint_vec.x; + f32 _y = g_context->paint_vec.y; + f32 _last_x = g_context->last_paint_vec_x; + f32 _last_y = g_context->last_paint_vec_y; + i32 _pdirty = g_context->pdirty; g_context->pdirty = 2; f32_array_t *points_x = f32_array_create_from_raw( @@ -382,7 +396,7 @@ void util_render_make_brush_preview() { // Restore paint mesh g_context->material_preview = false; - planeo->base->visible = false; + planeo->base->visible = false; for (i32 i = 0; i < project_paint_objects->length; ++i) { project_paint_objects->buffer[i]->base->visible = visibles->buffer[i]; } @@ -507,7 +521,7 @@ void util_render_make_node_preview(ui_node_canvas_t *canvas, ui_node_t *node, gp util_render_create_screen_aligned_full_data(); } - f32 _scale_world = g_context->paint_object->base->transform->scale_world; + f32 _scale_world = g_context->paint_object->base->transform->scale_world; g_context->paint_object->base->transform->scale_world = 3.0; transform_build_matrix(g_context->paint_object->base->transform); @@ -533,7 +547,7 @@ void util_render_make_node_preview(ui_node_canvas_t *canvas, ui_node_t *node, gp void util_render_pick_pos_nor_tex() { g_context->pick_pos_nor_tex = true; g_context->pdirty = 1; - tool_type_t _tool = g_context->tool; + tool_type_t _tool = g_context->tool; g_context->tool = TOOL_TYPE_PICKER; make_material_parse_paint_material(true); if (g_context->paint2d) { @@ -552,9 +566,9 @@ void util_render_pick_pos_nor_tex() { mat4_t util_render_get_decal_mat() { util_render_pick_pos_nor_tex(); mat4_t decal_mat = mat4_identity(); - vec4_t loc = vec4_create(g_context->posx_picked, g_context->posy_picked, g_context->posz_picked, 1.0); - quat_t rot = quat_from_to(vec4_create(0.0, 0.0, -1.0, 1.0), vec4_create(g_context->norx_picked, g_context->nory_picked, g_context->norz_picked, 1.0)); - vec4_t scale = vec4_create(g_context->brush_radius * 0.5, g_context->brush_radius * 0.5, g_context->brush_radius * 0.5, 1.0); - decal_mat = mat4_compose(loc, rot, scale); + vec4_t loc = (vec4_t){g_context->posx_picked, g_context->posy_picked, g_context->posz_picked, 1.0}; + quat_t rot = quat_from_to((vec4_t){0.0, 0.0, -1.0, 1.0}, (vec4_t){g_context->norx_picked, g_context->nory_picked, g_context->norz_picked, 1.0}); + vec4_t scale = (vec4_t){g_context->brush_radius * 0.5, g_context->brush_radius * 0.5, g_context->brush_radius * 0.5, 1.0}; + decal_mat = mat4_compose(loc, rot, scale); return decal_mat; } diff --git a/paint/sources/viewport.c b/paint/sources/viewport.c index 10b5c84a..a7c5f425 100644 --- a/paint/sources/viewport.c +++ b/paint/sources/viewport.c @@ -10,12 +10,12 @@ void viewport_scale_to_bounds(f32 bounds) { po->base->transform->dim.x = aabb.x; po->base->transform->dim.y = aabb.y; po->base->transform->dim.z = aabb.z; - po->base->transform->scale = vec4_create(bounds / (float)r, bounds / (float)r, bounds / (float)r, 1.0); - po->base->transform->loc = vec4_create(0, 0, 0, 1.0); + po->base->transform->scale = (vec4_t){bounds / (float)r, bounds / (float)r, bounds / (float)r, 1.0}; + po->base->transform->loc = (vec4_t){0, 0, 0, 1.0}; transform_build_matrix(po->base->transform); for (i32 i = 0; i < po->base->children->length; ++i) { object_t *c = po->base->children->buffer[i]; - c->transform->loc = vec4_create(0, 0, 0, 1.0); + c->transform->loc = (vec4_t){0, 0, 0, 1.0}; transform_build_matrix(c->transform); } } @@ -40,11 +40,11 @@ void viewport_reset() { } void viewport_set_view(f32 x, f32 y, f32 z, f32 rx, f32 ry, f32 rz) { - g_context->paint_object->base->transform->rot = quat_create(0, 0, 0, 1); + g_context->paint_object->base->transform->rot = (quat_t){0, 0, 0, 1}; g_context->paint_object->base->transform->dirty = true; camera_object_t *cam = scene_camera; f32 dist = vec4_len(cam->base->transform->loc); - cam->base->transform->loc = vec4_create(x * dist, y * dist, z * dist, 1.0); + cam->base->transform->loc = (vec4_t){x * dist, y * dist, z * dist, 1.0}; cam->base->transform->rot = quat_from_euler(rx, ry, rz); transform_build_matrix(cam->base->transform); camera_object_build_proj(cam, -1.0); @@ -56,7 +56,7 @@ void viewport_orbit(f32 x, f32 y) { camera_object_t *cam = scene_camera; f32 dist = camera_distance(); transform_move(cam->base->transform, camera_object_look_world(cam), dist); - transform_rotate(cam->base->transform, vec4_create(0, 0, 1, 1.0), x); + transform_rotate(cam->base->transform, (vec4_t){0, 0, 1, 1.0}, x); transform_rotate(cam->base->transform, camera_object_right_world(cam), y); transform_move(cam->base->transform, camera_object_look_world(cam), -dist); g_context->ddirty = 2;