paint: cleanup

This commit is contained in:
luboslenco
2026-04-24 13:14:27 +02:00
parent a90409b043
commit 6b1841014d
8 changed files with 83 additions and 99 deletions
+65 -47
View File
@@ -59,6 +59,7 @@ void base_on_drop_files(char *drop_path) {
void base_init_on_start_arm(void *_) {
import_arm_run_project(project_filepath);
g_context->tool = TOOL_TYPE_CURSOR;
// Auto-run script
if (g_project->script_datas != NULL && g_project->script_datas->length > 0) {
minic_ctx_t *ctx = minic_eval(g_project->script_datas->buffer[0]);
@@ -390,12 +391,6 @@ void base_init_undo_layers() {
}
void base_render(void *_) {
if (g_context->frame == 2) {
util_render_make_material_preview();
ui_base_hwnds->buffer[TAB_AREA_SIDEBAR1]->redraws = 2;
base_init_undo_layers();
}
if (g_context->tool == TOOL_TYPE_CURSOR) {
sim_init();
@@ -403,11 +398,12 @@ void base_render(void *_) {
}
if (g_context->frame == 2) {
util_render_make_material_preview();
ui_base_hwnds->buffer[TAB_AREA_SIDEBAR1]->redraws = 2;
base_init_undo_layers();
make_material_parse_mesh_material();
make_material_parse_paint_material(true);
g_context->ddirty = 0;
g_context->camera_pivot = g_config->camera_pivot;
g_context->camera_controls = g_config->camera_controls;
}
else if (g_context->frame == 3) {
g_context->ddirty = 3;
@@ -648,44 +644,8 @@ void ui_base_menu_draw_viewport_mode() {
mode_handle->i = g_context->viewport_mode;
ui_text(tr("Viewport Mode"), UI_ALIGN_RIGHT, 0x00000000);
string_array_t *modes = any_array_create_from_raw(
(void *[]){
tr("Lit"),
tr("Base Color"),
tr("Normal"),
tr("Occlusion"),
tr("Roughness"),
tr("Metallic"),
tr("Opacity"),
tr("Height"),
tr("Emission"),
tr("Subsurface"),
tr("TexCoord"),
tr("Object Normal"),
tr("Material ID"),
tr("Object ID"),
tr("Mask"),
},
15);
string_array_t *shortcuts = any_array_create_from_raw(
(void *[]){
"l",
"b",
"n",
"o",
"r",
"m",
"a",
"h",
"e",
"s",
"t",
"1",
"2",
"3",
"4",
},
15);
string_array_t *modes = base_get_viewport_modes();
string_array_t *shortcuts = base_get_viewport_mode_shortcuts();
if (gpu_raytrace_supported()) {
any_array_push(modes, tr("Path Traced"));
any_array_push(shortcuts, "p");
@@ -1752,6 +1712,9 @@ void base_init() {
base_update_workflow();
}
g_context->camera_pivot = g_config->camera_pivot;
g_context->camera_controls = g_config->camera_controls;
bool has_projects = g_config->recent_projects->length > 0;
if (g_config->splash_screen && has_projects) {
box_projects_show();
@@ -1768,7 +1731,6 @@ void base_init() {
if (args_player) {
sys_notify_on_next_frame(&base_init_on_start_arm, NULL);
g_context->tool = TOOL_TYPE_CURSOR;
make_material_parse_paint_material(true);
g_config->workspace = WORKSPACE_PLAYER;
base_update_workspace();
@@ -2357,3 +2319,59 @@ uint32_t base_darker(uint32_t x, uint32_t y) {
b = b > by ? b - by : 0;
return (x & 0xff000000) | (r << 16) | (g << 8) | b;
}
string_array_t *base_get_viewport_modes() {
string_array_t *modes = any_array_create_from_raw(
(void *[]){
tr("Lit"),
tr("Base Color"),
tr("Normal"),
tr("Occlusion"),
tr("Roughness"),
tr("Metallic"),
tr("Opacity"),
tr("Height"),
tr("Emission"),
tr("Subsurface"),
tr("TexCoord"),
tr("Object Normal"),
tr("Material ID"),
tr("Object ID"),
tr("Mask"),
},
15);
if (gpu_raytrace_supported()) {
any_array_push(modes, tr("Path Traced"));
}
return modes;
}
string_array_t *base_get_viewport_mode_shortcuts() {
string_array_t *shortcuts = any_array_create_from_raw(
(void *[]){
"l",
"b",
"n",
"o",
"r",
"m",
"a",
"h",
"e",
"s",
"t",
"1",
"2",
"3",
"4",
},
15);
if (gpu_raytrace_supported()) {
any_array_push(shortcuts, "p");
}
return shortcuts;
}
+1 -6
View File
@@ -607,12 +607,7 @@ void box_preferences_pen_tab() {
void box_preferences_viewport_tab() {
ui_handle_t *h_mode = ui_handle(__ID__);
h_mode->i = g_config->viewport_mode;
string_array_t *mode_combo = any_array_create_from_raw(
(void *[]){
tr("Lit"),
tr("Path Traced"),
},
2);
string_array_t *mode_combo = base_get_viewport_modes();
ui_combo(h_mode, mode_combo, tr("Default Mode"), true, UI_ALIGN_LEFT, true);
if (h_mode->changed) {
g_config->viewport_mode = h_mode->i;
+6 -2
View File
@@ -26,7 +26,7 @@ context_t *context_create() {
c->layers_destination = EXPORT_DESTINATION_DISK;
c->split_by = SPLIT_TYPE_OBJECT;
c->select_time = 0.0;
c->viewport_mode = g_config->viewport_mode == 0 ? VIEWPORT_MODE_LIT : VIEWPORT_MODE_PATH_TRACE;
c->viewport_mode = g_config->viewport_mode;
c->hscale_was_changed = false;
c->export_mesh_format = MESH_FORMAT_OBJ;
c->export_mesh_index = 0;
@@ -285,7 +285,7 @@ void context_select_tool(i32 i) {
make_material_parse_mesh_material();
g_context->ddirty = 3;
viewport_mode_t _viewport_mode = g_context->viewport_mode;
g_context->viewport_mode = VIEWPORT_MODE_MINUS_ONE;
g_context->viewport_mode = VIEWPORT_MODE_NONE;
context_set_viewport_mode(_viewport_mode);
context_init_tool();
@@ -460,6 +460,10 @@ void context_set_viewport_mode(viewport_mode_t mode) {
}
}
void context_set_camera_controls(int i) {
g_context->camera_controls = i;
}
void context_load_envmap() {
if (!g_context->envmap_loaded) {
// TODO: Unable to share texture for both radiance and envmap - reload image
+2 -1
View File
@@ -49,7 +49,7 @@ typedef enum {
} bake_up_axis_t;
typedef enum {
VIEWPORT_MODE_MINUS_ONE = -1,
VIEWPORT_MODE_NONE = -1,
VIEWPORT_MODE_LIT = 0,
VIEWPORT_MODE_BASE_COLOR = 1,
VIEWPORT_MODE_NORMAL_MAP = 2,
@@ -145,6 +145,7 @@ typedef enum {
} blend_type_t;
typedef enum {
CAMERA_CONTROLS_NONE = -1,
CAMERA_CONTROLS_ORBIT = 0,
CAMERA_CONTROLS_ROTATE = 1,
CAMERA_CONTROLS_FLY = 2,
+5
View File
@@ -157,6 +157,8 @@ void base_redraw_status();
void base_redraw_console();
uint32_t base_darker(uint32_t x, uint32_t y);
void base_redraw_ui();
string_array_t *base_get_viewport_modes();
string_array_t *base_get_viewport_mode_shortcuts();
ui_handle_t_array_t *ui_base_init_hwnds();
ui_handle_t_array_t *ui_base_init_htabs();
tab_draw_array_t_array_t *ui_base_init_hwnd_tabs();
@@ -577,6 +579,9 @@ void render_path_raytrace_raytrace_init(char *shader_nam
void render_path_raytrace_draw(bool use_live_layer);
node_shader_context_t *sculpt_make_sculpt_run(material_t *data, material_context_t *matcon);
void sculpt_make_mesh_run(node_shader_t *kong, slot_layer_t *l);
void sculpt_import_mesh_pack_to_texture(mesh_data_t *mesh, slot_layer_t *l);
void sculpt_setup_layer_sculpt_texture(slot_layer_t *l, mesh_data_t *md);
void sculpt_setup();
void sculpt_layers_create_sculpt_layer();
void render_path_sculpt_commands();
void render_path_sculpt_begin();
+1
View File
@@ -595,6 +595,7 @@ void import_arm_run_project(char *path) {
sys_notify_on_next_frame(&import_arm_run_project_on_next_frame, NULL);
base_update_workflow();
ui_base_hwnds->buffer[TAB_AREA_SIDEBAR0]->redraws = 2;
ui_base_hwnds->buffer[TAB_AREA_SIDEBAR1]->redraws = 2;
g_context->ddirty = 4;
+2 -43
View File
@@ -497,49 +497,8 @@ void ui_menubar_draw_category_items() {
else if (ui_menubar_category == MENUBAR_CATEGORY_MODE) {
ui_handle_t *mode_handle = ui_handle(__ID__);
mode_handle->i = g_context->viewport_mode;
string_array_t *modes = any_array_create_from_raw(
(void *[]){
tr("Lit"),
tr("Base Color"),
tr("Normal"),
tr("Occlusion"),
tr("Roughness"),
tr("Metallic"),
tr("Opacity"),
tr("Height"),
tr("Emission"),
tr("Subsurface"),
tr("TexCoord"),
tr("Object Normal"),
tr("Material ID"),
tr("Object ID"),
tr("Mask"),
},
15);
string_array_t *shortcuts = any_array_create_from_raw(
(void *[]){
"l",
"b",
"n",
"o",
"r",
"m",
"a",
"h",
"e",
"s",
"t",
"1",
"2",
"3",
"4",
},
15);
if (gpu_raytrace_supported()) {
any_array_push(modes, tr("Path Traced"));
any_array_push(shortcuts, "p");
}
string_array_t *modes = base_get_viewport_modes();
string_array_t *shortcuts = base_get_viewport_mode_shortcuts();
if (g_config->workflow == WORKFLOW_BASE) {
array_splice(modes, 9, 1);
+1
View File
@@ -138,6 +138,7 @@ buffer_t *util_encode_project(project_t *raw) {
armpack_encode_start(encoded->buffer);
armpack_encode_map(25);
armpack_encode_string("version");
armpack_encode_string(raw->version);
armpack_encode_string("assets");