Gpu cleanup (unstable)

This commit is contained in:
luboslenco
2025-06-18 20:47:58 +02:00
parent 34d29bd023
commit 234590c511
46 changed files with 1509 additions and 1804 deletions
+40 -40
View File
@@ -34,18 +34,18 @@ function layers_init() {
draw_end();
// Nor
_gpu_begin(texpaint_nor._image, null, clear_flag_t.COLOR, color_from_floats(0.5, 0.5, 1.0, 0.0));
_gpu_end();
iron_gpu_end();
// Occ, rough, met
_gpu_begin(texpaint_pack._image, null, clear_flag_t.COLOR, color_from_floats(1.0, 0.4, 0.0, 0.0));
_gpu_end();
iron_gpu_end();
let texpaint_nor_empty: render_target_t = map_get(render_path_render_targets, "texpaint_nor_empty");
let texpaint_pack_empty: render_target_t = map_get(render_path_render_targets, "texpaint_pack_empty");
// Nor
_gpu_begin(texpaint_nor_empty._image, null, clear_flag_t.COLOR, color_from_floats(0.5, 0.5, 1.0, 0.0));
_gpu_end();
iron_gpu_end();
// Occ, rough, met
_gpu_begin(texpaint_pack_empty._image, null, clear_flag_t.COLOR, color_from_floats(1.0, 0.4, 0.0, 0.0));
_gpu_end();
iron_gpu_end();
///end
}
@@ -256,29 +256,29 @@ function layers_apply_mask(l: slot_layer_t, m: slot_layer_t) {
// Apply mask
_gpu_begin(l.texpaint);
gpu_set_pipeline(pipes_apply_mask);
gpu_set_texture(pipes_tex0_mask, layers_temp_image);
gpu_set_texture(pipes_texa_mask, m.texpaint);
gpu_set_vertex_buffer(const_data_screen_aligned_vb);
gpu_set_index_buffer(const_data_screen_aligned_ib);
iron_gpu_set_pipeline(pipes_apply_mask);
iron_gpu_set_texture(pipes_tex0_mask, layers_temp_image);
iron_gpu_set_texture(pipes_texa_mask, m.texpaint);
iron_gpu_set_vertex_buffer(const_data_screen_aligned_vb);
iron_gpu_set_index_buffer(const_data_screen_aligned_ib);
gpu_draw();
_gpu_end();
iron_gpu_end();
}
function layers_commands_merge_pack(pipe: iron_gpu_pipeline_t, i0: iron_gpu_texture_t, i1: iron_gpu_texture_t, i1pack: iron_gpu_texture_t, i1mask_opacity: f32, i1texmask: iron_gpu_texture_t, i1blending: i32 = -1) {
_gpu_begin(i0);
gpu_set_pipeline(pipe);
gpu_set_texture(pipes_tex0, i1);
gpu_set_texture(pipes_tex1, i1pack);
gpu_set_texture(pipes_texmask, i1texmask);
gpu_set_texture(pipes_texa, layers_temp_image);
iron_gpu_set_pipeline(pipe);
iron_gpu_set_texture(pipes_tex0, i1);
iron_gpu_set_texture(pipes_tex1, i1pack);
iron_gpu_set_texture(pipes_texmask, i1texmask);
iron_gpu_set_texture(pipes_texa, layers_temp_image);
gpu_set_float(pipes_opac, i1mask_opacity);
gpu_set_float(pipes_tex1w, i1pack.width);
gpu_set_int(pipes_blending, i1blending);
gpu_set_vertex_buffer(const_data_screen_aligned_vb);
gpu_set_index_buffer(const_data_screen_aligned_ib);
iron_gpu_set_vertex_buffer(const_data_screen_aligned_vb);
iron_gpu_set_index_buffer(const_data_screen_aligned_ib);
gpu_draw();
_gpu_end();
iron_gpu_end();
}
function layers_is_fill_material(): bool {
@@ -731,32 +731,32 @@ function layers_merge_layer(l0 : slot_layer_t, l1: slot_layer_t, use_mask: bool
if (slot_layer_is_mask(l1)) {
_gpu_begin(l0.texpaint);
gpu_set_pipeline(pipes_merge_mask);
gpu_set_texture(pipes_tex0_merge_mask, l1.texpaint);
gpu_set_texture(pipes_texa_merge_mask, layers_temp_image);
iron_gpu_set_pipeline(pipes_merge_mask);
iron_gpu_set_texture(pipes_tex0_merge_mask, l1.texpaint);
iron_gpu_set_texture(pipes_texa_merge_mask, layers_temp_image);
gpu_set_float(pipes_opac_merge_mask, slot_layer_get_opacity(l1));
gpu_set_int(pipes_blending_merge_mask, l1.blending);
gpu_set_vertex_buffer(const_data_screen_aligned_vb);
gpu_set_index_buffer(const_data_screen_aligned_ib);
iron_gpu_set_vertex_buffer(const_data_screen_aligned_vb);
iron_gpu_set_index_buffer(const_data_screen_aligned_ib);
gpu_draw();
_gpu_end();
iron_gpu_end();
}
if (slot_layer_is_layer(l1)) {
if (l1.paint_base) {
_gpu_begin(l0.texpaint);
gpu_set_pipeline(pipes_merge);
gpu_set_texture(pipes_tex0, l1.texpaint);
gpu_set_texture(pipes_tex1, empty);
gpu_set_texture(pipes_texmask, mask);
gpu_set_texture(pipes_texa, layers_temp_image);
iron_gpu_set_pipeline(pipes_merge);
iron_gpu_set_texture(pipes_tex0, l1.texpaint);
iron_gpu_set_texture(pipes_tex1, empty);
iron_gpu_set_texture(pipes_texmask, mask);
iron_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_vertex_buffer(const_data_screen_aligned_vb);
gpu_set_index_buffer(const_data_screen_aligned_ib);
iron_gpu_set_vertex_buffer(const_data_screen_aligned_vb);
iron_gpu_set_index_buffer(const_data_screen_aligned_ib);
gpu_draw();
_gpu_end();
iron_gpu_end();
}
if (l0.texpaint_nor != null) {
@@ -768,18 +768,18 @@ function layers_merge_layer(l0 : slot_layer_t, l1: slot_layer_t, use_mask: bool
if (l1.paint_nor) {
_gpu_begin(l0.texpaint_nor);
gpu_set_pipeline(pipes_merge);
gpu_set_texture(pipes_tex0, l1.texpaint);
gpu_set_texture(pipes_tex1, l1.texpaint_nor);
gpu_set_texture(pipes_texmask, mask);
gpu_set_texture(pipes_texa, layers_temp_image);
iron_gpu_set_pipeline(pipes_merge);
iron_gpu_set_texture(pipes_tex0, l1.texpaint);
iron_gpu_set_texture(pipes_tex1, l1.texpaint_nor);
iron_gpu_set_texture(pipes_texmask, mask);
iron_gpu_set_texture(pipes_texa, layers_temp_image);
gpu_set_float(pipes_opac, slot_layer_get_opacity(l1));
gpu_set_float(pipes_tex1w, l1.texpaint_nor.width);
gpu_set_int(pipes_blending, l1.paint_nor_blend ? 102 : 101);
gpu_set_vertex_buffer(const_data_screen_aligned_vb);
gpu_set_index_buffer(const_data_screen_aligned_ib);
iron_gpu_set_vertex_buffer(const_data_screen_aligned_vb);
iron_gpu_set_index_buffer(const_data_screen_aligned_ib);
gpu_draw();
_gpu_end();
iron_gpu_end();
}
}