paint: cleanup

This commit is contained in:
luboslenco
2026-08-21 22:40:25 +02:00
parent cf8077c0a6
commit e20e5d6d5f
153 changed files with 5820 additions and 5819 deletions
+72 -72
View File
@@ -14,10 +14,10 @@ static mesh_data_t *export_arm_named_mesh_data(mesh_object_t *p) {
static mesh_data_t *export_arm_linked_mesh_data(mesh_object_t *p, i32 source_index) {
return ALLOC_INIT(mesh_data_t, {.name = util_mesh_link_name(source_index, p->base->name),
.scale_pos = p->data->scale_pos,
.scale_tex = p->data->scale_tex,
.vertex_arrays = any_array_create_from_raw((void *[]){}, 0),
.index_array = u32_array_create(0)});
.scale_pos = p->data->scale_pos,
.scale_tex = p->data->scale_tex,
.vertex_arrays = any_array_create_from_raw((void *[]){}, 0),
.index_array = u32_array_create(0)});
}
void export_arm_run_mesh(char *path, mesh_object_t_array_t *paint_objects) {
@@ -197,17 +197,17 @@ void export_arm_run_project() {
for (i32 i = 0; i < g_project->_->materials->length; ++i) {
slot_material_t *m = g_project->_->materials->buffer[i];
material_data2_t *d = ALLOC_INIT(material_data2_t, {
.paint_base = m->paint_base,
.paint_opac = m->paint_opac,
.paint_occ = m->paint_occ,
.paint_rough = m->paint_rough,
.paint_met = m->paint_met,
.paint_nor = m->paint_nor,
.paint_height = m->paint_height,
.paint_emis = m->paint_emis,
.paint_subs = m->paint_subs,
.opac_mode = m->paint_opac_mode,
});
.paint_base = m->paint_base,
.paint_opac = m->paint_opac,
.paint_occ = m->paint_occ,
.paint_rough = m->paint_rough,
.paint_met = m->paint_met,
.paint_nor = m->paint_nor,
.paint_height = m->paint_height,
.paint_emis = m->paint_emis,
.paint_subs = m->paint_subs,
.opac_mode = m->paint_opac_mode,
});
any_array_push(mdata2, d);
}
}
@@ -233,42 +233,42 @@ void export_arm_run_project() {
slot_layer_t *l = g_project->_->layers->buffer[i];
layer_data_t *d =
ALLOC_INIT(layer_data_t, {.name = l->name,
.res = l->texpaint != NULL ? l->texpaint->width : g_project->_->layers->buffer[0]->texpaint->width,
.bpp = bpp,
.texpaint = l->texpaint != NULL ? lz4_encode(gpu_get_texture_pixels(l->texpaint)) : NULL,
.uv_scale = l->scale,
.uv_rot = l->angle,
.uv_type = l->uv_type,
.uv_map = l->uv_map,
.decal_mat = l->uv_type == UV_TYPE_PROJECT ? mat4_to_f32_array(l->decal_mat) : NULL,
.opacity_mask = l->mask_opacity,
.fill_material = l->fill_material != NULL ? array_index_of(g_project->_->materials, l->fill_material) : -1,
.object_mask = l->object_mask,
.blending = l->blending,
.parent = l->parent != NULL ? array_index_of(g_project->_->layers, l->parent) : -1,
.visible = l->visible,
.texpaint_nor = l->texpaint_nor != NULL ? lz4_encode(gpu_get_texture_pixels(l->texpaint_nor)) : NULL,
.texpaint_pack = l->texpaint_pack != NULL ? lz4_encode(gpu_get_texture_pixels(l->texpaint_pack)) : NULL,
.texpaint_sculpt = l->texpaint_sculpt != NULL ? lz4_encode(gpu_get_texture_pixels(l->texpaint_sculpt)) : NULL,
.paint_base = l->paint_base,
.paint_opac = l->paint_opac,
.paint_occ = l->paint_occ,
.paint_rough = l->paint_rough,
.paint_met = l->paint_met,
.paint_nor = l->paint_nor,
.paint_nor_blend = l->paint_nor_blend,
.paint_height = l->paint_height,
.paint_height_blend = l->paint_height_blend,
.paint_emis = l->paint_emis,
.paint_subs = l->paint_subs,
.path_points = l->path_points,
.path_points_world = l->path_points_world,
.path_points_camera = l->path_points_camera,
.path_points_parent = l->path_points_parent,
.path_tool = l->path_tool,
.path_curved = l->path_curved,
.path_text = l->path_text,
.path_material = l->path_material != NULL ? array_index_of(g_project->_->materials, l->path_material) : -1});
.res = l->texpaint != NULL ? l->texpaint->width : g_project->_->layers->buffer[0]->texpaint->width,
.bpp = bpp,
.texpaint = l->texpaint != NULL ? lz4_encode(gpu_get_texture_pixels(l->texpaint)) : NULL,
.uv_scale = l->scale,
.uv_rot = l->angle,
.uv_type = l->uv_type,
.uv_map = l->uv_map,
.decal_mat = l->uv_type == UV_TYPE_PROJECT ? mat4_to_f32_array(l->decal_mat) : NULL,
.opacity_mask = l->mask_opacity,
.fill_material = l->fill_material != NULL ? array_index_of(g_project->_->materials, l->fill_material) : -1,
.object_mask = l->object_mask,
.blending = l->blending,
.parent = l->parent != NULL ? array_index_of(g_project->_->layers, l->parent) : -1,
.visible = l->visible,
.texpaint_nor = l->texpaint_nor != NULL ? lz4_encode(gpu_get_texture_pixels(l->texpaint_nor)) : NULL,
.texpaint_pack = l->texpaint_pack != NULL ? lz4_encode(gpu_get_texture_pixels(l->texpaint_pack)) : NULL,
.texpaint_sculpt = l->texpaint_sculpt != NULL ? lz4_encode(gpu_get_texture_pixels(l->texpaint_sculpt)) : NULL,
.paint_base = l->paint_base,
.paint_opac = l->paint_opac,
.paint_occ = l->paint_occ,
.paint_rough = l->paint_rough,
.paint_met = l->paint_met,
.paint_nor = l->paint_nor,
.paint_nor_blend = l->paint_nor_blend,
.paint_height = l->paint_height,
.paint_height_blend = l->paint_height_blend,
.paint_emis = l->paint_emis,
.paint_subs = l->paint_subs,
.path_points = l->path_points,
.path_points_world = l->path_points_world,
.path_points_camera = l->path_points_camera,
.path_points_parent = l->path_points_parent,
.path_tool = l->path_tool,
.path_curved = l->path_curved,
.path_text = l->path_text,
.path_material = l->path_material != NULL ? array_index_of(g_project->_->materials, l->path_material) : -1});
any_array_push(ld, d);
}
@@ -350,7 +350,7 @@ void export_arm_run_project() {
g_project->mesh_physics_shapes = i32_array_create(g_project->_->paint_objects->length);
g_project->mesh_physics_masses = f32_array_create(g_project->_->paint_objects->length);
for (i32 i = 0; i < g_project->mesh_physics_shapes->length; ++i) {
physics_body_t *pb = g_project->_->paint_objects->buffer[i]->base->_->body;
physics_body_t *pb = g_project->_->paint_objects->buffer[i]->base->_->body;
g_project->mesh_physics_shapes->buffer[i] = pb != NULL ? pb->shape : -1; // No physics
g_project->mesh_physics_masses->buffer[i] = pb != NULL ? pb->mass : 0.0;
}
@@ -507,26 +507,26 @@ void export_arm_run_material(char *path) {
material_data2_t_array_t *mdata2 = any_array_create_from_raw((void *[]){}, 0);
material_data2_t *md2 = ALLOC_INIT(material_data2_t, {
.paint_base = m->paint_base,
.paint_opac = m->paint_opac,
.paint_occ = m->paint_occ,
.paint_rough = m->paint_rough,
.paint_met = m->paint_met,
.paint_nor = m->paint_nor,
.paint_height = m->paint_height,
.paint_emis = m->paint_emis,
.paint_subs = m->paint_subs,
.opac_mode = m->paint_opac_mode,
});
.paint_base = m->paint_base,
.paint_opac = m->paint_opac,
.paint_occ = m->paint_occ,
.paint_rough = m->paint_rough,
.paint_met = m->paint_met,
.paint_nor = m->paint_nor,
.paint_height = m->paint_height,
.paint_emis = m->paint_emis,
.paint_subs = m->paint_subs,
.opac_mode = m->paint_opac_mode,
});
any_array_push(mdata2, md2);
project_t *raw = ALLOC_INIT(project_t, {.version = manifest_version_project,
.material_nodes = mnodes,
.material_groups = mgroups,
.material_icons = micons,
.material_datas = mdata2,
.assets = texture_files,
.packed_assets = packed_assets});
.material_nodes = mnodes,
.material_groups = mgroups,
.material_icons = micons,
.material_datas = mdata2,
.assets = texture_files,
.packed_assets = packed_assets});
if (g_context->write_icon_on_export) { // Separate icon files
buffer_t *buf = buffer_half_to_u8(gpu_get_texture_pixels(m->image));
@@ -615,9 +615,9 @@ void export_arm_pack_assets(project_t *raw, asset_t_array_t *assets) {
draw_end();
any_array_push(temp_images, temp);
packed_asset_t *pa = ALLOC_INIT(packed_asset_t, {.name = assets->buffer[i]->file,
.bytes = ends_with(assets->buffer[i]->file, ".jpg")
? iron_encode_jpg(gpu_get_texture_pixels(temp), temp->width, temp->height, 0, 80)
: iron_encode_png(gpu_get_texture_pixels(temp), temp->width, temp->height, 0)});
.bytes = ends_with(assets->buffer[i]->file, ".jpg")
? iron_encode_jpg(gpu_get_texture_pixels(temp), temp->width, temp->height, 0, 80)
: iron_encode_png(gpu_get_texture_pixels(temp), temp->width, temp->height, 0)});
any_array_push(raw->packed_assets, pa);
}
}
+5 -5
View File
@@ -304,11 +304,11 @@ buffer_t *export_exr_run(i32 width, i32 height, buffer_t *src, i32 bits, i32 typ
i32 stride = channels * byte_size;
i32 pos = 0;
_export_exr_width = width;
_export_exr_stride = stride;
_export_exr_out = out;
_export_exr_src_view = src;
_export_exr_write_line = bits == 16 ? export_exr_write_line16 : export_exr_write_line32;
_export_exr_width = width;
_export_exr_stride = stride;
_export_exr_out = out;
_export_exr_src_view = src;
_export_exr_write_line = bits == 16 ? export_exr_write_line16 : export_exr_write_line32;
void (*write_data)(i32, i32, i32) = type == 1 ? export_exr_write_bgr : export_exr_write_single;
for (i32 y = 0; y < height; ++y) {
+2 -2
View File
@@ -33,8 +33,8 @@ static void export_texture_write_texture(char *file, buffer_t *pixels, i32 type,
#endif
gpu_texture_t *image = gpu_create_texture_from_bytes(pixels, res_x, res_y, GPU_TEXTURE_FORMAT_RGBA32);
any_map_set(data_cached_textures, file, image);
string_array_t *ar = string_split(file, PATH_SEP);
char *name = ar->buffer[ar->length - 1];
string_array_t *ar = string_split(file, PATH_SEP);
char *name = ar->buffer[ar->length - 1];
for (i32 i = 0; i < (i32)ar->length - 1; ++i) {
free(ar->buffer[i]);
}
+11 -11
View File
@@ -150,9 +150,9 @@ void import_arm_unpack_asset(project_t *project, char *abs, char *file, bool cop
if (!project_packed_asset_exists(g_project->packed_assets, pa->name)) {
if (copy) {
packed_asset_t *pa_copy =
ALLOC_INIT(packed_asset_t, {.name = string_copy(pa->name), .bytes = u8_array_create_from_array(pa->bytes)}); // Project data is temporary
pa = pa_copy;
packed_asset_t *pa_copy = ALLOC_INIT(packed_asset_t, {.name = string_copy(pa->name),
.bytes = u8_array_create_from_array(pa->bytes)}); // Project data is temporary
pa = pa_copy;
}
any_array_push(g_project->packed_assets, pa);
@@ -214,7 +214,7 @@ void import_arm_run_material_from_project(project_t *project, char *path) {
}
sys_notify_on_next_frame(&import_arm_run_material_from_project_on_next_frame, imported);
ui_nodes_group_stack = any_array_create_from_raw((void *[]){}, 0);
ui_nodes_group_stack = any_array_create_from_raw((void *[]){}, 0);
ui_base_hwnds->buffer[TAB_AREA_SIDEBAR1]->redraws = 2;
data_delete_blob(path);
}
@@ -252,8 +252,8 @@ void import_arm_run_project(char *path) {
}
else if (!import_arm_has_version(b)) {
import_as_mesh = true;
scene_raw_gc = armpack_decode(b);
project = ALLOC_INIT(project_t, {.mesh_datas = scene_raw_gc->mesh_datas});
scene_raw_gc = armpack_decode(b);
project = ALLOC_INIT(project_t, {.mesh_datas = scene_raw_gc->mesh_datas});
}
else {
project = armpack_decode(b);
@@ -280,7 +280,7 @@ void import_arm_run_project(char *path) {
project_new(import_as_mesh);
g_project->_->filepath = string_copy(path);
ui_files_filename = string_copy(substring(path, string_last_index_of(path, PATH_SEP) + 1, string_last_index_of(path, ".")));
ui_files_filename = string_copy(substring(path, string_last_index_of(path, PATH_SEP) + 1, string_last_index_of(path, ".")));
#if defined(IRON_ANDROID) || defined(IRON_IOS)
sys_title_set(ui_files_filename);
#else
@@ -307,8 +307,8 @@ void import_arm_run_project(char *path) {
array_insert(recent, 0, recent_path);
config_save();
project->_ = g_project->_; // Carry over runtime arrays set up by project_new
g_project = project;
project->_ = g_project->_; // Carry over runtime arrays set up by project_new
g_project = project;
layer_data_t *l0 = g_project->layer_datas->buffer[0];
base_res_handle->i = config_get_texture_res_pos(l0->res);
base_res_x_handle->f = (f32)l0->res;
@@ -631,8 +631,8 @@ void import_arm_run_project(char *path) {
any_array_push(g_project->_->materials, g_context->material);
}
ui_nodes_hwnd->redraws = 2;
ui_nodes_group_stack = any_array_create_from_raw((void *[]){}, 0);
ui_nodes_hwnd->redraws = 2;
ui_nodes_group_stack = any_array_create_from_raw((void *[]){}, 0);
g_project->_->material_groups = any_array_create_from_raw((void *[]){}, 0);
if (g_project->material_groups != NULL) {
for (i32 i = 0; i < g_project->material_groups->length; ++i) {
+1 -1
View File
@@ -26,7 +26,7 @@ void import_asset_run(char *path, f32 drop_x, f32 drop_y, bool show_box, bool hd
_import_asset_drop_y = drop_y;
_import_asset_show_box = show_box;
_import_asset_hdr_as_envmap = hdr_as_envmap;
_import_asset_done = done;
_import_asset_done = done;
file_cache_cloud(path, &import_asset_run_cache_cloud_done, g_config->server);
return;
+2 -2
View File
@@ -91,7 +91,7 @@ f32_array_t *import_envmap_get_spherical_harmonics(buffer_t *source, i32 source_
void import_envmap_run(char *path, gpu_texture_t *image) {
// Init
if (import_envmap_pipeline == NULL) {
import_envmap_pipeline = gpu_create_pipeline();
import_envmap_pipeline = gpu_create_pipeline();
import_envmap_pipeline->vertex_shader = sys_get_shader("prefilter_envmap.vert");
import_envmap_pipeline->fragment_shader = sys_get_shader("prefilter_envmap.frag");
import_envmap_pipeline->blend_source = GPU_BLEND_SOURCE_ALPHA;
@@ -110,7 +110,7 @@ void import_envmap_run(char *path, gpu_texture_t *image) {
import_envmap_radiance = gpu_create_render_target(1024, 512, GPU_TEXTURE_FORMAT_RGBA64);
import_envmap_mips = any_array_create_from_raw((void *[]){}, 0);
i32 w = 512;
i32 w = 512;
for (i32 i = 0; i < 5; ++i) {
any_array_push(import_envmap_mips, gpu_create_render_target(w, w > 1 ? math_floor(w / 2.0) : 1, GPU_TEXTURE_FORMAT_RGBA64));
w = math_floor(w / 2.0);
+2 -2
View File
@@ -451,8 +451,8 @@ project_t *import_arm_from_version_0(any_map_t *old) {
project_t *import_arm_from_old(buffer_t *b) {
any_map_t *old = armpack_decode_to_map(b);
project_t *(*fns[])(any_map_t *) = {
import_arm_from_version_0, import_arm_from_version_1, import_arm_from_version_2, import_arm_from_version_3, import_arm_from_version_4,
import_arm_from_version_5, import_arm_from_version_6, import_arm_from_version_7, import_arm_from_version_8, import_arm_from_version_9,
import_arm_from_version_0, import_arm_from_version_1, import_arm_from_version_2, import_arm_from_version_3, import_arm_from_version_4,
import_arm_from_version_5, import_arm_from_version_6, import_arm_from_version_7, import_arm_from_version_8, import_arm_from_version_9,
import_arm_from_version_10, import_arm_from_version_11, import_arm_from_version_12, import_arm_from_version_13,
};
for (i32 v = sizeof(fns) / sizeof(fns[0]) - 1; v >= 0; --v) {
+10 -10
View File
@@ -287,16 +287,16 @@ void import_mesh_add_mesh(raw_mesh_t *mesh) {
mesh_data_t *import_mesh_raw_mesh(raw_mesh_t *mesh) {
mesh_data_t *raw = ALLOC_INIT(mesh_data_t, {.name = mesh->name,
.vertex_arrays = any_array_create_from_raw(
(void *[]){
ALLOC_INIT(vertex_array_t, {.values = mesh->posa, .attrib = "pos", .data = "short4norm"}),
ALLOC_INIT(vertex_array_t, {.values = mesh->nora, .attrib = "nor", .data = "short2norm"}),
ALLOC_INIT(vertex_array_t, {.values = mesh->texa, .attrib = "tex", .data = "short2norm"}),
},
3),
.index_array = mesh->inda,
.scale_pos = mesh->scale_pos,
.scale_tex = mesh->scale_tex});
.vertex_arrays = any_array_create_from_raw(
(void *[]){
ALLOC_INIT(vertex_array_t, {.values = mesh->posa, .attrib = "pos", .data = "short4norm"}),
ALLOC_INIT(vertex_array_t, {.values = mesh->nora, .attrib = "nor", .data = "short2norm"}),
ALLOC_INIT(vertex_array_t, {.values = mesh->texa, .attrib = "tex", .data = "short2norm"}),
},
3),
.index_array = mesh->inda,
.scale_pos = mesh->scale_pos,
.scale_tex = mesh->scale_tex});
if (mesh->texa1 != NULL) {
vertex_array_t *va = ALLOC_INIT(vertex_array_t, {.values = mesh->texa1, .attrib = "tex1", .data = "short2norm"});
any_array_push(raw->vertex_arrays, va);
+1 -1
View File
@@ -9,7 +9,7 @@ void import_plugin_run(char *path) {
char *filename = substring(path, string_last_index_of(path, PATH_SEP) + 1, string_length(path));
char *dst_path = string("%s%splugins%s%s", path_data(), PATH_SEP, PATH_SEP, filename);
file_copy(path, dst_path); // Copy to plugin folder
file_copy(path, dst_path); // Copy to plugin folder
box_preferences_files_plugin = NULL; // Refresh file list
console_info(string("%s %s", tr("Plugin imported:"), filename));
}