Fix rt bake

This commit is contained in:
luboslenco
2025-01-12 12:00:58 +01:00
parent 8651ccaa9b
commit 2f9e392fa0
2 changed files with 24 additions and 18 deletions
+16 -14
View File
@@ -140,7 +140,7 @@ function render_path_raytrace_commands(use_live_layer: bool) {
///end
}
function render_path_raytrace_raytrace_init(shader_name: string, build: bool = true) {
function render_path_raytrace_raytrace_init(shader_name: string, build: bool = true, bake: bool = false) {
if (render_path_raytrace_first) {
render_path_raytrace_first = false;
scene_embed_data("bnoise_sobol.k");
@@ -152,7 +152,7 @@ function render_path_raytrace_raytrace_init(shader_name: string, build: bool = t
}
if (build) {
render_path_raytrace_build_data();
render_path_raytrace_build_data(bake);
}
{
@@ -177,7 +177,7 @@ function render_path_raytrace_raytrace_init(shader_name: string, build: bool = t
}
}
function render_path_raytrace_build_data() {
function render_path_raytrace_build_data(bake: bool = false) {
if (context_raw.merged_object == null) {
util_mesh_merge();
}
@@ -190,20 +190,22 @@ function render_path_raytrace_build_data() {
render_path_raytrace_transform = mo.base.transform.world_unpack;
let md: mesh_data_t = mo.data;
if (md.scale_pos != 1.0) {
render_path_raytrace_transform = mat4_scale(
render_path_raytrace_transform, vec4_create(md.scale_pos, md.scale_pos, md.scale_pos)
);
}
if (mo.base.parent != null) {
let f: f32 = mo.base.parent.transform.scale.x;
if (f != 1.0) {
if (!bake) {
let md: mesh_data_t = mo.data;
if (md.scale_pos != 1.0) {
render_path_raytrace_transform = mat4_scale(
render_path_raytrace_transform, vec4_create(f, f, f)
render_path_raytrace_transform, vec4_create(md.scale_pos, md.scale_pos, md.scale_pos)
);
}
if (mo.base.parent != null) {
let f: f32 = mo.base.parent.transform.scale.x;
if (f != 1.0) {
render_path_raytrace_transform = mat4_scale(
render_path_raytrace_transform, vec4_create(f, f, f)
);
}
}
}
render_path_raytrace_vb = mo.data._.vertex_buffer;
+8 -4
View File
@@ -65,7 +65,7 @@ function render_path_raytrace_bake_commands(parse_paint_material: (b?: bool)=>vo
app_notify_on_next_frame(parse_paint_material);
render_path_raytrace_first = true;
render_path_raytrace_raytrace_init(render_path_raytrace_bake_get_bake_shader_name(), rebuild);
render_path_raytrace_raytrace_init(render_path_raytrace_bake_get_bake_shader_name(), rebuild, true);
return false;
}
@@ -74,18 +74,22 @@ function render_path_raytrace_bake_commands(parse_paint_material: (b?: bool)=>vo
context_load_envmap();
context_update_envmap();
}
let probe: world_data_t = scene_world;
let saved_envmap: image_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) {
render_path_raytrace_last_envmap = saved_envmap;
render_path_raytrace_bake_last_layer = context_raw.layer.texpaint;
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);
let bnoise_sobol: image_t = map_get(scene_embedded, "bnoise_sobol.k");
let bnoise_scramble: image_t = map_get(scene_embedded, "bnoise_scramble.k");
let bnoise_rank: image_t = map_get(scene_embedded, "bnoise_rank.k");
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.texture_, bnoise_sobol.texture_, bnoise_scramble.texture_, bnoise_rank.texture_);
}