paint: masking fixes
This commit is contained in:
@@ -50,10 +50,10 @@ fun layer_view_frag(input: vert_out): float4 {
|
||||
if (constants.channel == 6) {
|
||||
// Apply mask as red area
|
||||
var tex_sample: float4 = sample_lod(tex, sampler_linear, input.tex, 0.0);
|
||||
if (tex_sample.r < 0.9) {
|
||||
discard;
|
||||
if (tex_sample.r < 0.9 || tex_sample.g < 0.9 || tex_sample.b < 0.9) {
|
||||
return float4(1.0, 0.0, 0.0, 1.0);
|
||||
}
|
||||
return float4(1.0, 0.0, 0.0, 1.0);
|
||||
discard;
|
||||
}
|
||||
// else {
|
||||
var tex_sample: float4 = sample_lod(tex, sampler_linear, input.tex, 0.0);
|
||||
|
||||
@@ -25,7 +25,21 @@ void inpaint_image_node_button_on_next_frame(ui_node_t *node) {
|
||||
buffer_t *input_buf = gpu_get_texture_pixels(input);
|
||||
#endif
|
||||
iron_write_png(string("%s%sinput.png", dir, PATH_SEP), input_buf, input->width, input->height, 0);
|
||||
iron_write_png(string("%s%smask.png", dir, PATH_SEP), gpu_get_texture_pixels(mask), mask->width, mask->height, 0);
|
||||
|
||||
buffer_t *mask_buf = gpu_get_texture_pixels(mask);
|
||||
for (uint32_t i = 0; i < mask_buf->length / 4; ++i) {
|
||||
if (mask_buf->buffer[i * 4] + mask_buf->buffer[i * 4 + 1] + mask_buf->buffer[i * 4 + 2] > 200) {
|
||||
mask_buf->buffer[i * 4] = 0;
|
||||
mask_buf->buffer[i * 4 + 1] = 0;
|
||||
mask_buf->buffer[i * 4 + 2] = 0;
|
||||
}
|
||||
else {
|
||||
mask_buf->buffer[i * 4] = 255;
|
||||
mask_buf->buffer[i * 4 + 1] = 255;
|
||||
mask_buf->buffer[i * 4 + 2] = 255;
|
||||
}
|
||||
}
|
||||
iron_write_png(string("%s%smask.png", dir, PATH_SEP), mask_buf, mask->width, mask->height, 0);
|
||||
}
|
||||
else {
|
||||
gpu_texture_t *masked = gpu_create_render_target(512, 512, GPU_TEXTURE_FORMAT_RGBA32);
|
||||
|
||||
@@ -26,12 +26,6 @@ void outpaint_image_node_button_on_next_frame(ui_node_t *node) {
|
||||
draw_scaled_image(input, 64, 64, 512 - 128, 512 - 128);
|
||||
draw_end();
|
||||
|
||||
// #ifdef IRON_BGRA
|
||||
// let input_buf: buffer_t = buffer_bgra_swap(gpu_get_texture_pixels(input)); // Vulkan non-rt textures need a flip
|
||||
// #else
|
||||
// let input_buf: buffer_t = gpu_get_texture_pixels(input);
|
||||
// #endif
|
||||
|
||||
char *dir = neural_node_dir();
|
||||
iron_write_png(string("%s%sinput.png", dir, PATH_SEP), gpu_get_texture_pixels(input_scaled), input_scaled->width, input_scaled->height, 0);
|
||||
iron_write_png(string("%s%smask.png", dir, PATH_SEP), gpu_get_texture_pixels(mask), mask->width, mask->height, 0);
|
||||
|
||||
@@ -16,11 +16,7 @@ void upscale_image_node_button(i32 node_id) {
|
||||
ui_node_t *from_node = neural_from_node(node->inputs->buffer[0], 0);
|
||||
gpu_texture_t *input = ui_nodes_get_node_preview_image(from_node);
|
||||
if (input != NULL) {
|
||||
#ifdef IRON_BGRA
|
||||
buffer_t *input_buf = buffer_bgra_swap(gpu_get_texture_pixels(input)); // Vulkan non-rt textures need a flip
|
||||
#else
|
||||
buffer_t *input_buf = gpu_get_texture_pixels(input);
|
||||
#endif
|
||||
|
||||
char *dir = neural_node_dir();
|
||||
iron_write_png(string("%s%sinput.png", dir, PATH_SEP), input_buf, input->width, input->height, 0);
|
||||
|
||||
Reference in New Issue
Block a user