Improve lightmap bake

This commit is contained in:
luboslenco
2025-09-15 17:47:04 +02:00
parent c0386189d4
commit da9776537b
+24 -7
View File
@@ -5,13 +5,17 @@ let render_path_raytrace_bake_current_sample: i32 = 0;
let render_path_raytrace_bake_rays_timer: f32 = 0.0;
let render_path_raytrace_bake_rays_counter: i32 = 0;
let render_path_raytrace_bake_last_layer: gpu_texture_t = null;
let render_path_raytrace_bake_last_bake: i32 = 0;
let render_path_raytrace_bake_last_bake_type: i32 = 0;
let render_path_raytrace_bake_last_bake_type2: i32 = 0;
function render_path_raytrace_bake_commands(parse_paint_material: (b?: bool)=>void): bool {
if (!render_path_raytrace_ready || !render_path_raytrace_is_bake || render_path_raytrace_bake_last_bake != context_raw.bake_type) {
let rebuild: bool = !(render_path_raytrace_ready && render_path_raytrace_is_bake && render_path_raytrace_bake_last_bake != context_raw.bake_type);
render_path_raytrace_bake_last_bake = context_raw.bake_type;
if (!render_path_raytrace_ready ||
!render_path_raytrace_is_bake ||
render_path_raytrace_bake_last_bake_type != context_raw.bake_type) {
let rebuild: bool = !(render_path_raytrace_ready && render_path_raytrace_is_bake && render_path_raytrace_bake_last_bake_type != context_raw.bake_type);
render_path_raytrace_bake_last_bake_type = context_raw.bake_type;
render_path_raytrace_ready = true;
render_path_raytrace_is_bake = true;
render_path_raytrace_last_envmap = null;
@@ -76,9 +80,13 @@ function render_path_raytrace_bake_commands(parse_paint_material: (b?: bool)=>vo
let probe: world_data_t = scene_world;
let saved_envmap: gpu_texture_t = context_raw.show_envmap_blur ? probe._.radiance_mipmaps[0] : context_raw.saved_envmap;
if (render_path_raytrace_last_envmap != saved_envmap || render_path_raytrace_bake_last_layer != context_raw.layer.texpaint) {
if (render_path_raytrace_last_envmap != saved_envmap ||
render_path_raytrace_bake_last_layer != context_raw.layer.texpaint ||
render_path_raytrace_bake_last_bake_type2 != context_raw.bake_type) {
render_path_raytrace_last_envmap = saved_envmap;
render_path_raytrace_bake_last_layer = context_raw.layer.texpaint;
render_path_raytrace_bake_last_bake_type2 = context_raw.bake_type;
let bnoise_sobol: gpu_texture_t = map_get(scene_embedded, "bnoise_sobol.k");
let bnoise_scramble: gpu_texture_t = map_get(scene_embedded, "bnoise_scramble.k");
@@ -86,9 +94,18 @@ function render_path_raytrace_bake_commands(parse_paint_material: (b?: bool)=>vo
let baketex0: render_target_t = map_get(render_path_render_targets, "baketex0");
let baketex1: render_target_t = map_get(render_path_render_targets, "baketex1");
let texpaint_undo: render_target_t = map_get(render_path_render_targets, "texpaint_undo" + history_undo_i);
iron_raytrace_set_textures(baketex0._image, baketex1._image, texpaint_undo._image, saved_envmap, bnoise_sobol, bnoise_scramble, bnoise_rank);
let tex2: gpu_texture_t = null;
if (context_raw.bake_type == bake_type_t.LIGHTMAP) {
let flat: slot_layer_t = layers_flatten(true);
tex2 = flat.texpaint;
}
else {
let texpaint_undo: render_target_t = map_get(render_path_render_targets, "texpaint_undo" + history_undo_i);
tex2 = texpaint_undo._image;
}
iron_raytrace_set_textures(baketex0._image, baketex1._image, tex2, saved_envmap, bnoise_sobol, bnoise_scramble, bnoise_rank);
}
if (context_raw.brush_time > 0) {