paint: use parent blending for layer filter
This commit is contained in:
@@ -244,7 +244,7 @@ void export_texture_run_layers(char *path, slot_layer_t_array_t *layers, char *o
|
||||
gpu_set_texture(pipes_texa, layers_temp_image);
|
||||
gpu_set_float(pipes_opac, slot_layer_get_opacity(l1));
|
||||
gpu_set_float(pipes_tex1w, empty->width);
|
||||
gpu_set_int(pipes_blending, layers->length > 1 ? l1->blending : 0);
|
||||
gpu_set_int(pipes_blending, layers->length > 1 ? slot_layer_get_blending(l1) : 0);
|
||||
gpu_set_vertex_buffer(const_data_screen_aligned_vb);
|
||||
gpu_set_index_buffer(const_data_screen_aligned_ib);
|
||||
gpu_draw();
|
||||
|
||||
@@ -37,6 +37,7 @@ bool slot_layer_has_masks(slot_layer_t *raw, bool include_group
|
||||
slot_layer_t_array_t *slot_layer_get_filters(slot_layer_t *raw, bool include_group_filters);
|
||||
f32 slot_layer_get_opacity(slot_layer_t *raw);
|
||||
i32 slot_layer_get_object_mask(slot_layer_t *raw);
|
||||
i32 slot_layer_get_blending(slot_layer_t *raw);
|
||||
bool slot_layer_is_layer(slot_layer_t *raw);
|
||||
bool slot_layer_is_path(slot_layer_t *raw);
|
||||
bool slot_layer_is_group(slot_layer_t *raw);
|
||||
|
||||
@@ -372,7 +372,7 @@ node_shader_context_t *make_mesh_run(material_t *data, i32 layer_pass) {
|
||||
}
|
||||
else {
|
||||
node_shader_write_frag(kong, string("basecol = %s;",
|
||||
make_material_blend_mode(kong, l->blending, "basecol", "texpaint_sample.rgb", "texpaint_opac")));
|
||||
make_material_blend_mode(kong, slot_layer_get_blending(l), "basecol", "texpaint_sample.rgb", "texpaint_opac")));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -617,7 +617,11 @@ f32 slot_layer_get_opacity(slot_layer_t *raw) {
|
||||
}
|
||||
|
||||
i32 slot_layer_get_object_mask(slot_layer_t *raw) {
|
||||
return slot_layer_is_mask(raw) ? raw->parent->object_mask : raw->object_mask;
|
||||
return (slot_layer_is_mask(raw) || slot_layer_is_filter(raw)) ? raw->parent->object_mask : raw->object_mask;
|
||||
}
|
||||
|
||||
i32 slot_layer_get_blending(slot_layer_t *raw) {
|
||||
return slot_layer_is_filter(raw) ? raw->parent->blending : raw->blending;
|
||||
}
|
||||
|
||||
bool slot_layer_is_layer(slot_layer_t *raw) {
|
||||
@@ -1735,7 +1739,7 @@ void layers_merge_layer(slot_layer_t *l0, slot_layer_t *l1, bool use_mask) {
|
||||
gpu_set_texture(pipes_texa, layers_temp_image);
|
||||
gpu_set_float(pipes_opac, slot_layer_get_opacity(l1));
|
||||
gpu_set_float(pipes_tex1w, empty->width);
|
||||
gpu_set_int(pipes_blending, l1->blending);
|
||||
gpu_set_int(pipes_blending, slot_layer_get_blending(l1));
|
||||
gpu_set_vertex_buffer(const_data_screen_aligned_vb);
|
||||
gpu_set_index_buffer(const_data_screen_aligned_ib);
|
||||
gpu_draw();
|
||||
@@ -1861,7 +1865,7 @@ slot_layer_t *layers_flatten(bool height_to_normal, slot_layer_t_array_t *layers
|
||||
gpu_set_texture(pipes_texa, layers_temp_image);
|
||||
gpu_set_float(pipes_opac, slot_layer_get_opacity(l1));
|
||||
gpu_set_float(pipes_tex1w, empty->width);
|
||||
gpu_set_int(pipes_blending, layers->length > 1 ? l1->blending : 0);
|
||||
gpu_set_int(pipes_blending, layers->length > 1 ? slot_layer_get_blending(l1) : 0);
|
||||
gpu_set_vertex_buffer(const_data_screen_aligned_vb);
|
||||
gpu_set_index_buffer(const_data_screen_aligned_ib);
|
||||
gpu_draw();
|
||||
|
||||
@@ -447,7 +447,7 @@ void tab_layers_draw_layer_slot_full(slot_layer_t *l, i32 i) {
|
||||
}
|
||||
|
||||
// Blending combo
|
||||
if (!slot_layer_is_group(l) && !slot_layer_is_mask(l)) {
|
||||
if (!slot_layer_is_group(l) && !slot_layer_is_mask(l) && !slot_layer_is_filter(l)) {
|
||||
ui->_x = uix + uiw * 0.60;
|
||||
ui->_y = uiy;
|
||||
ui->_w = uiw * 0.30;
|
||||
@@ -455,7 +455,7 @@ void tab_layers_draw_layer_slot_full(slot_layer_t *l, i32 i) {
|
||||
}
|
||||
|
||||
// Object combo
|
||||
if (!slot_layer_is_group(l) && !slot_layer_is_mask(l)) {
|
||||
if (!slot_layer_is_group(l) && !slot_layer_is_mask(l) && !slot_layer_is_filter(l)) {
|
||||
ui->_x = uix + uiw * 0.60;
|
||||
ui->_y = uiy + center * 2;
|
||||
ui->_w = uiw * 0.30;
|
||||
@@ -638,12 +638,12 @@ void tab_layers_draw_layer_context_menu_draw() {
|
||||
ui_menu_keep_open = true;
|
||||
}
|
||||
|
||||
if (!slot_layer_is_group(l) && !slot_layer_is_mask(l)) {
|
||||
if (!slot_layer_is_group(l) && !slot_layer_is_mask(l) && !slot_layer_is_filter(l)) {
|
||||
if (tab_layers_combo_blending(l, true)->changed) {
|
||||
ui_menu_keep_open = true;
|
||||
}
|
||||
}
|
||||
if (slot_layer_is_layer(l)) {
|
||||
if (slot_layer_is_layer(l) && !slot_layer_is_filter(l)) {
|
||||
if (tab_layers_combo_object(l, true)->changed) {
|
||||
ui_menu_keep_open = true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user