Fix rt bake
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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_);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user