paint: cleanup

This commit is contained in:
luboslenco
2026-06-05 20:34:10 +02:00
parent 2d140020b9
commit 31d0a37734
59 changed files with 874 additions and 912 deletions
+4 -4
View File
@@ -31,8 +31,8 @@ node_shader_context_t *make_depth_run(material_t *data, material_context_t *matc
// kong->vert_n = true;
// node_shader_write_vert(kong, "var height: float = 0.0;");
// i32 num_layers = 0;
// for (i32 i = 0; i < project_layers->length; ++i) {
// slot_layer_t *l = project_layers->buffer[i];
// for (i32 i = 0; i < g_project->_->layers->length; ++i) {
// slot_layer_t *l = g_project->_->layers->buffer[i];
// if (!slot_layer_is_visible(l) || !l->paint_height || !slot_layer_is_layer(l)) {
// continue;
// }
@@ -63,8 +63,8 @@ node_shader_context_t *make_depth_run(material_t *data, material_context_t *matc
// {
// slot_layer_t_array_t *sculpt_layers = any_array_create_from_raw((void *[]){}, 0);
// i32_array_t *sculpt_indices = i32_array_create(0);
// for (i32 i = 0; i < project_layers->length; ++i) {
// slot_layer_t *l = project_layers->buffer[i];
// for (i32 i = 0; i < g_project->_->layers->length; ++i) {
// slot_layer_t *l = g_project->_->layers->buffer[i];
// if (l->texpaint_sculpt != NULL && slot_layer_is_visible(l)) {
// any_array_push(sculpt_layers, l);
// i32_array_push(sculpt_indices, i);
+8 -8
View File
@@ -26,7 +26,7 @@ void make_material_delete_context(shader_context_t *c) {
}
void make_material_parse_mesh_material() {
material_data_t *m = project_materials->buffer[0]->data;
material_data_t *m = g_project->_->materials->buffer[0]->data;
for (i32 i = 0; i < m->_->shader->contexts->length; ++i) {
shader_context_t *c = m->_->shader->contexts->buffer[i];
@@ -98,7 +98,7 @@ void make_material_parse_mesh_preview_material() {
return;
}
material_data_t *m = project_materials->buffer[0]->data;
material_data_t *m = g_project->_->materials->buffer[0]->data;
shader_context_t *scon = NULL;
for (i32 i = 0; i < m->_->shader->contexts->length; ++i) {
shader_context_t *c = m->_->shader->contexts->buffer[i];
@@ -243,8 +243,8 @@ void make_material_traverse_nodes(ui_node_t_array_t *nodes, ui_node_canvas_t *gr
ui_node_t *node = nodes->buffer[i];
make_material_bake_node_preview(node, group, parents);
if (string_equals(node->type, "GROUP")) {
for (i32 j = 0; j < project_material_groups->length; ++j) {
node_group_t *g = project_material_groups->buffer[j];
for (i32 j = 0; j < g_project->_->material_groups->length; ++j) {
node_group_t *g = g_project->_->material_groups->buffer[j];
char *cname = g->canvas->name;
if (string_equals(cname, node->name)) {
any_array_push(parents, node);
@@ -291,7 +291,7 @@ void make_material_parse_paint_material(bool bake_previews) {
draw_begin(current, false, 0);
}
material_data_t *m = project_materials->buffer[0]->data;
material_data_t *m = g_project->_->materials->buffer[0]->data;
for (i32 i = 0; i < m->_->shader->contexts->length; ++i) {
shader_context_t *c = m->_->shader->contexts->buffer[i];
if (string_equals(c->name, "paint")) {
@@ -343,7 +343,7 @@ void make_material_parse_paint_material(bool bake_previews) {
}
void make_material_save_paint_material() {
material_data_t *m = project_materials->buffer[0]->data;
material_data_t *m = g_project->_->materials->buffer[0]->data;
for (i32 i = 0; i < m->_->shader->contexts->length; ++i) {
shader_context_t *c = m->_->shader->contexts->buffer[i];
if (string_equals(c->name, "paint")) {
@@ -368,7 +368,7 @@ void make_material_restore_paint_material() {
if (make_material_saved_scon == NULL) {
return;
}
material_data_t *m = project_materials->buffer[0]->data;
material_data_t *m = g_project->_->materials->buffer[0]->data;
for (i32 i = 0; i < m->_->shader->contexts->length; ++i) {
shader_context_t *c = m->_->shader->contexts->buffer[i];
if (string_equals(c->name, "paint")) {
@@ -516,7 +516,7 @@ f32 make_material_get_displace_strength() {
}
void make_material_parse_depth_material() {
material_data_t *m = project_materials->buffer[0]->data;
material_data_t *m = g_project->_->materials->buffer[0]->data;
for (i32 i = 0; i < m->_->shader->contexts->length; ++i) {
shader_context_t *c = m->_->shader->contexts->buffer[i];
+10 -10
View File
@@ -119,8 +119,8 @@ node_shader_context_t *make_mesh_run(material_t *data, i32 layer_pass) {
kong->vert_n = true;
node_shader_write_vert(kong, "var height: float = 0.0;");
i32 num_layers = 0;
for (i32 i = 0; i < project_layers->length; ++i) {
slot_layer_t *l = project_layers->buffer[i];
for (i32 i = 0; i < g_project->_->layers->length; ++i) {
slot_layer_t *l = g_project->_->layers->buffer[i];
if (!slot_layer_is_visible(l) || !l->paint_height || !slot_layer_is_layer(l)) {
continue;
}
@@ -165,8 +165,8 @@ node_shader_context_t *make_mesh_run(material_t *data, i32 layer_pass) {
{
slot_layer_t_array_t *sculpt_layers = any_array_create_from_raw((void *[]){}, 0);
i32_array_t *sculpt_indices = i32_array_create(0);
for (i32 i = 0; i < project_layers->length; ++i) {
slot_layer_t *l = project_layers->buffer[i];
for (i32 i = 0; i < g_project->_->layers->length; ++i) {
slot_layer_t *l = g_project->_->layers->buffer[i];
if (l->texpaint_sculpt != NULL && slot_layer_is_visible(l)) {
any_array_push(sculpt_layers, l);
i32_array_push(sculpt_indices, i);
@@ -242,7 +242,7 @@ node_shader_context_t *make_mesh_run(material_t *data, i32 layer_pass) {
continue;
}
texture_count++;
i32 index = array_index_of(project_layers, m);
i32 index = array_index_of(g_project->_->layers, m);
node_shader_add_texture(kong, string("texpaint_view_mask%s", i32_to_string(m->id)), string("_texpaint%s", i32_to_string(index)));
}
}
@@ -262,8 +262,8 @@ node_shader_context_t *make_mesh_run(material_t *data, i32 layer_pass) {
slot_layer_t_array_t *layers = any_array_create_from_raw((void *[]){}, 0);
i32 start_count = texture_count;
bool is_material_tool = g_context->tool == TOOL_TYPE_MATERIAL;
for (i32 i = 0; i < project_layers->length; ++i) {
slot_layer_t *l = project_layers->buffer[i];
for (i32 i = 0; i < g_project->_->layers->length; ++i) {
slot_layer_t *l = g_project->_->layers->buffer[i];
if (is_material_tool && l != g_context->layer) {
continue;
}
@@ -301,7 +301,7 @@ node_shader_context_t *make_mesh_run(material_t *data, i32 layer_pass) {
slot_layer_t *l = layers->buffer[i];
if (slot_layer_get_object_mask(l) > 0) {
node_shader_add_constant(kong, "uid: int", "_uid");
if (slot_layer_get_object_mask(l) > project_paint_objects->length) { // Atlas
if (slot_layer_get_object_mask(l) > g_project->_->paint_objects->length) { // Atlas
mesh_object_t_array_t *visibles = project_get_atlas_objects(slot_layer_get_object_mask(l));
node_shader_write_frag(kong, "if (");
for (i32 i = 0; i < visibles->length; ++i) {
@@ -314,7 +314,7 @@ node_shader_context_t *make_mesh_run(material_t *data, i32 layer_pass) {
node_shader_write_frag(kong, ") {");
}
else { // Object mask
i32 uid = project_paint_objects->buffer[slot_layer_get_object_mask(l) - 1]->base->uid;
i32 uid = g_project->_->paint_objects->buffer[slot_layer_get_object_mask(l) - 1]->base->uid;
node_shader_write_frag(kong, string("if (%s == constants.uid) {", i32_to_string(uid)));
}
}
@@ -373,7 +373,7 @@ node_shader_context_t *make_mesh_run(material_t *data, i32 layer_pass) {
}
if (l->paint_base) {
if (l == project_layers->buffer[0]) {
if (l == g_project->_->layers->buffer[0]) {
node_shader_write_frag(kong, "basecol = texpaint_sample.rgb * texpaint_opac;");
}
else {
+2 -2
View File
@@ -597,8 +597,8 @@ node_shader_context_t *make_paint_run(material_t *data, material_context_t *matc
{
slot_layer_t_array_t *sculpt_layers = any_array_create_from_raw((void *[]){}, 0);
i32_array_t *sculpt_indices = i32_array_create(0);
for (i32 i = 0; i < project_layers->length; ++i) {
slot_layer_t *l = project_layers->buffer[i];
for (i32 i = 0; i < g_project->_->layers->length; ++i) {
slot_layer_t *l = g_project->_->layers->buffer[i];
if (l->texpaint_sculpt != NULL && slot_layer_is_visible(l)) {
any_array_push(sculpt_layers, l);
i32_array_push(sculpt_indices, i);
+5 -5
View File
@@ -294,8 +294,8 @@ void sculpt_init_sculpt_texture(slot_layer_t *l, mesh_data_t *md) {
sculpt_import_mesh_pack_to_texture(md, l->texpaint_sculpt);
i32 sculpt_layer_count = 0;
for (i32 i = 0; i < project_layers->length; ++i) {
if (project_layers->buffer[i]->texpaint_sculpt != NULL) {
for (i32 i = 0; i < g_project->_->layers->length; ++i) {
if (g_project->_->layers->buffer[i]->texpaint_sculpt != NULL) {
sculpt_layer_count++;
}
}
@@ -430,7 +430,7 @@ void render_path_sculpt_commands() {
material_context_t *material_context = NULL;
shader_context_t *shader_context = NULL;
material_data_t *mat = project_paint_objects->buffer[0]->material;
material_data_t *mat = g_project->_->paint_objects->buffer[0]->material;
for (i32 j = 0; j < mat->contexts->length; ++j) {
if (string_equals(mat->contexts->buffer[j]->name, "paint")) {
shader_context = shader_data_get_context(mat->_->shader, "paint");
@@ -441,7 +441,7 @@ void render_path_sculpt_commands() {
gpu_set_pipeline(shader_context->_->pipe);
uniforms_set_context_consts(shader_context, _render_path_bind_params);
uniforms_set_obj_consts(shader_context, project_paint_objects->buffer[0]->base);
uniforms_set_obj_consts(shader_context, g_project->_->paint_objects->buffer[0]->base);
uniforms_set_material_consts(shader_context, material_context);
gpu_set_vertex_buffer(const_data_screen_aligned_vb);
gpu_set_index_buffer(const_data_screen_aligned_ib);
@@ -473,7 +473,7 @@ void slot_layer_apply_sculpt(slot_layer_t *raw) {
return;
}
mesh_object_t *o = project_paint_objects->buffer[0];
mesh_object_t *o = g_project->_->paint_objects->buffer[0];
mesh_data_t *g = o->data;
i16_array_t *va0 = g->vertex_arrays->buffer[0]->values;
i32 num_verts = math_floor(va0->length / 4.0);
+18 -18
View File
@@ -299,8 +299,8 @@ void render_path_paint_commands_paint(bool dilation) {
// matid % 3 == 0 - normal, 1 - emission, 2 - subsurface
i32 id = buffer_get_u8(b, 3);
i32 matid = math_floor((id - (id % 3)) / 3.0);
for (i32 i = 0; i < project_materials->length; ++i) {
slot_material_t *m = project_materials->buffer[i];
for (i32 i = 0; i < g_project->_->materials->length; ++i) {
slot_material_t *m = g_project->_->materials->buffer[i];
if (m->id == matid) {
context_set_material(m);
g_context->materialid_picked = matid;
@@ -312,8 +312,8 @@ void render_path_paint_commands_paint(bool dilation) {
// Update fill layers which are using materials containing a PICKER node
slot_material_t *_material = g_context->material;
for (i32 i = 0; i < project_materials->length; ++i) {
slot_material_t *m = project_materials->buffer[i];
for (i32 i = 0; i < g_project->_->materials->length; ++i) {
slot_material_t *m = g_project->_->materials->buffer[i];
bool has_picker = false;
for (i32 j = 0; j < m->canvas->nodes->length; ++j) {
ui_node_t *node = m->canvas->nodes->buffer[j];
@@ -357,8 +357,8 @@ void render_path_paint_commands_paint(bool dilation) {
i32 r_byte = buffer_get_u8(pixel, 0);
#endif
i32 index = r_byte - 1;
if (index >= 0 && index < project_paint_objects->length) {
g_context->paint_object = project_paint_objects->buffer[index];
if (index >= 0 && index < g_project->_->paint_objects->length) {
g_context->paint_object = g_project->_->paint_objects->buffer[index];
// g_context->layer->object_mask = index + 1;
// context_set_layer(g_context->layer);
@@ -434,8 +434,8 @@ void render_path_paint_commands_paint(bool dilation) {
render_path_bind_target("gbuffer2", "gbuffer2");
}
i32 sculpt_layer_count = 0;
for (i32 i = 0; i < project_layers->length; ++i) {
slot_layer_t *sl = project_layers->buffer[i];
for (i32 i = 0; i < g_project->_->layers->length; ++i) {
slot_layer_t *sl = g_project->_->layers->buffer[i];
if (sl->texpaint_sculpt != NULL && slot_layer_is_visible(sl)) {
render_path_bind_target(string("texpaint_sculpt%d", sl->id), string("texpaint_sculpt%d", sl->id));
sculpt_layer_count++;
@@ -762,7 +762,7 @@ bool render_path_paint_paint_enabled() {
// Skip paint if material references this layer and wants to paint into it at the same time
bool self_in_material = false;
i32 layer_i = array_index_of(project_layers, g_context->layer);
i32 layer_i = array_index_of(g_project->_->layers, g_context->layer);
ui_node_t_array_t *nodes = g_context->material->canvas->nodes;
for (i32 i = 0; i < nodes->length; ++i) {
ui_node_t *n = nodes->buffer[i];
@@ -902,7 +902,7 @@ void render_path_paint_draw() {
g_context->bake_type = g_context->bake_type == BAKE_TYPE_NORMAL ? BAKE_TYPE_NORMAL_OBJECT : BAKE_TYPE_POSITION; // Bake high poly data
make_material_parse_paint_material(false);
mesh_object_t *_paint_object = g_context->paint_object;
mesh_object_t *high_poly = project_paint_objects->buffer[g_context->bake_high_poly];
mesh_object_t *high_poly = g_project->_->paint_objects->buffer[g_context->bake_high_poly];
bool _visible = high_poly->base->visible;
high_poly->base->visible = true;
context_select_paint_object(high_poly);
@@ -931,8 +931,8 @@ void render_path_paint_draw() {
g_context->merged_object->base->visible = false;
}
for (i32 i = 0; i < project_paint_objects->length; ++i) {
mesh_object_t *p = project_paint_objects->buffer[i];
for (i32 i = 0; i < g_project->_->paint_objects->length; ++i) {
mesh_object_t *p = g_project->_->paint_objects->buffer[i];
context_select_paint_object(p);
render_path_paint_commands_paint(true);
}
@@ -975,8 +975,8 @@ void render_path_paint_set_plane_mesh() {
gc_unroot(render_path_paint_visibles);
render_path_paint_visibles = u8_array_create_from_raw((u8[]){}, 0);
gc_root(render_path_paint_visibles);
for (i32 i = 0; i < project_paint_objects->length; ++i) {
mesh_object_t *p = project_paint_objects->buffer[i];
for (i32 i = 0; i < g_project->_->paint_objects->length; ++i) {
mesh_object_t *p = g_project->_->paint_objects->buffer[i];
u8_array_push(render_path_paint_visibles, p->base->visible);
p->base->visible = false;
}
@@ -1085,8 +1085,8 @@ 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_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];
for (i32 i = 0; i < g_project->_->paint_objects->length; ++i) {
g_project->_->paint_objects->buffer[i]->base->visible = render_path_paint_visibles->buffer[i];
}
if (g_context->merged_object != NULL) {
g_context->merged_object->base->visible = render_path_paint_merged_object_visible;
@@ -1108,8 +1108,8 @@ void render_path_paint_bind_layers() {
render_path_paint_use_live_layer(true);
}
for (i32 i = 0; i < project_layers->length; ++i) {
slot_layer_t *l = project_layers->buffer[i];
for (i32 i = 0; i < g_project->_->layers->length; ++i) {
slot_layer_t *l = g_project->_->layers->buffer[i];
render_path_bind_target(string("texpaint%d", l->id), string("texpaint%d", l->id));
if (slot_layer_is_layer(l)) {
+2 -2
View File
@@ -160,8 +160,8 @@ void render_path_raytrace_raytrace_init(char *shader_name, bool build) {
_gpu_raytrace_as_init();
// if (g_context->tool == TOOL_TYPE_CURSOR) {
// for (i32 i = 0; i < project_paint_objects->length; ++i) {
// mesh_object_t *po = project_paint_objects->buffer[i];
// for (i32 i = 0; i < g_project->_->paint_objects->length; ++i) {
// mesh_object_t *po = g_project->_->paint_objects->buffer[i];
// if (!po->base->visible) {
// continue;
// }