Fix updating mesh data

This commit is contained in:
luboslenco
2025-08-13 13:34:22 +02:00
parent a55ba9854a
commit c67e255179
4 changed files with 102 additions and 134 deletions
-1
View File
@@ -45,7 +45,6 @@ function make_mesh_run(data: material_t, layer_pass: i32 = 0): node_shader_conte
if (make_material_height_used && displace_strength > 0.0) {
kong.vert_n = true;
node_shader_write_vert(kong, "var height: float = 0.0;");
let num_layers: i32 = 1;
let displace_3: string = displace_strength + ", " + displace_strength + ", " + displace_strength;
node_shader_write_vert(kong, "output.wposition += wnormal * float3(height, height, height) * float3(" + displace_3 + ");");
}
+17 -16
View File
@@ -91,22 +91,23 @@ function ui_nodes_ext_run() {
if (ui_header_worktab.position == space_type_t.SPACE3D && !is_float_node) {
// Make copy of vertices before displacement
let o: mesh_object_t = project_paint_objects[0];
let g: mesh_data_t = o.data;
let vertices: buffer_t = gpu_lock_vertex_buffer(g._.vertex_buffer);
if (ui_nodes_ext_last_vertices == null || ui_nodes_ext_last_vertices.length != vertices.length) {
ui_nodes_ext_last_vertices = buffer_create(vertices.length);
for (let i: i32 = 0; i < math_floor((vertices.length) / 2); ++i) {
// buffer_set_i16(ui_nodes_ext_last_vertices, i * 2, buffer_get_i16(vertices, i * 2)); ////
buffer_set_i16(ui_nodes_ext_last_vertices, i * 2, buffer_get_i16(g._.vertices, i * 2));
}
}
else {
for (let i: i32 = 0; i < math_floor((vertices.length) / 2); ++i) {
buffer_set_i16(vertices, i * 2, buffer_get_i16(ui_nodes_ext_last_vertices, i * 2));
}
}
gpu_vertex_buffer_unlock(g._.vertex_buffer);
////
// let o: mesh_object_t = project_paint_objects[0];
// let g: mesh_data_t = o.data;
// let vertices: buffer_t = gpu_lock_vertex_buffer(g._.vertex_buffer);
// if (ui_nodes_ext_last_vertices == null || ui_nodes_ext_last_vertices.length != vertices.length) {
// ui_nodes_ext_last_vertices = buffer_create(vertices.length);
// for (let i: i32 = 0; i < math_floor((vertices.length) / 2); ++i) {
// // buffer_set_i16(ui_nodes_ext_last_vertices, i * 2, buffer_get_i16(vertices, i * 2));
// }
// }
// else {
// for (let i: i32 = 0; i < math_floor((vertices.length) / 2); ++i) {
// buffer_set_i16(vertices, i * 2, buffer_get_i16(ui_nodes_ext_last_vertices, i * 2));
// }
// }
// gpu_vertex_buffer_unlock(g._.vertex_buffer);
////
// Apply displacement
if (config_raw.displace_strength > 0) {