Improve lightmap bake
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user