|
@@ -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) {
|