Fix bloom in pathtraced mode

This commit is contained in:
luboslenco
2025-08-08 22:40:21 +02:00
parent f9ba7124a2
commit 23500ad5b7
6 changed files with 10 additions and 8 deletions
Binary file not shown.
+2 -3
View File
@@ -4,6 +4,7 @@ const constants: {
screen_size_inv: float2; screen_size_inv: float2;
current_mip_level: int; current_mip_level: int;
sample_scale: float; sample_scale: float;
bloom_strength: float;
}; };
#[set(everything)] #[set(everything)]
@@ -21,8 +22,6 @@ struct vert_out {
tex: float2; tex: float2;
} }
const bloom_strength: float = 0.02;
fun bloom_upsample_pass_vert(input: vert_in): vert_out { fun bloom_upsample_pass_vert(input: vert_in): vert_out {
var output: vert_out; var output: vert_out;
output.tex = input.pos.xy * 0.5 + 0.5; output.tex = input.pos.xy * 0.5 + 0.5;
@@ -52,7 +51,7 @@ fun bloom_upsample_pass_frag(input: vert_out): float4 {
color.rgb = upsample_dual_filter(input.tex, constants.screen_size_inv); color.rgb = upsample_dual_filter(input.tex, constants.screen_size_inv);
if (constants.current_mip_level == 0) { if (constants.current_mip_level == 0) {
color.rgb = color.rgb * float3(bloom_strength, bloom_strength, bloom_strength); color.rgb = color.rgb * float3(constants.bloom_strength, constants.bloom_strength, constants.bloom_strength);
} }
color.a = 1.0; color.a = 1.0;
+3 -3
View File
@@ -160,7 +160,7 @@ function render_path_base_commands(draw_commands: ()=>void) {
render_path_base_end(); render_path_base_end();
} }
function render_path_base_draw_bloom() { function render_path_base_draw_bloom(source: string, target: string) {
if (config_raw.rp_bloom == false) { if (config_raw.rp_bloom == false) {
return; return;
} }
@@ -193,13 +193,13 @@ function render_path_base_draw_bloom() {
for (let i: i32 = 0; i < num_mips; ++i) { for (let i: i32 = 0; i < num_mips; ++i) {
render_path_base_bloom_current_mip = i; render_path_base_bloom_current_mip = i;
render_path_set_target(render_path_base_bloom_mipmaps[i].name, null, null, clear_flag_t.COLOR, 0x00000000); render_path_set_target(render_path_base_bloom_mipmaps[i].name, null, null, clear_flag_t.COLOR, 0x00000000);
render_path_bind_target(i == 0 ? "buf" : render_path_base_bloom_mipmaps[i - 1].name, "tex"); render_path_bind_target(i == 0 ? source : render_path_base_bloom_mipmaps[i - 1].name, "tex");
render_path_draw_shader("shader_datas/bloom_pass/bloom_downsample_pass"); render_path_draw_shader("shader_datas/bloom_pass/bloom_downsample_pass");
} }
for (let i: i32 = 0; i < num_mips; ++i) { for (let i: i32 = 0; i < num_mips; ++i) {
let mip_level: i32 = num_mips - 1 - i; let mip_level: i32 = num_mips - 1 - i;
render_path_base_bloom_current_mip = mip_level; render_path_base_bloom_current_mip = mip_level;
render_path_set_target(mip_level == 0 ? "buf" : render_path_base_bloom_mipmaps[mip_level - 1].name); render_path_set_target(mip_level == 0 ? target : render_path_base_bloom_mipmaps[mip_level - 1].name);
render_path_bind_target(render_path_base_bloom_mipmaps[mip_level].name, "tex"); render_path_bind_target(render_path_base_bloom_mipmaps[mip_level].name, "tex");
render_path_draw_shader("shader_datas/bloom_pass/bloom_upsample_pass"); render_path_draw_shader("shader_datas/bloom_pass/bloom_upsample_pass");
} }
+1 -1
View File
@@ -115,7 +115,7 @@ function render_path_deferred_commands() {
function render_path_deferred_draw_deferred() { function render_path_deferred_draw_deferred() {
render_path_base_draw_ssao(); render_path_base_draw_ssao();
render_path_base_draw_deferred_light(); render_path_base_draw_deferred_light();
render_path_base_draw_bloom(); render_path_base_draw_bloom("buf", "buf");
// draw_histogram(); // draw_histogram();
render_path_set_target("gbuffer1"); render_path_set_target("gbuffer1");
+1 -1
View File
@@ -221,7 +221,6 @@ function render_path_raytrace_draw(use_live_layer: bool) {
///end ///end
render_path_raytrace_commands(use_live_layer); render_path_raytrace_commands(use_live_layer);
render_path_base_draw_bloom();
render_path_set_target("buf"); render_path_set_target("buf");
render_path_draw_meshes("overlay"); render_path_draw_meshes("overlay");
render_path_set_target("buf"); render_path_set_target("buf");
@@ -229,6 +228,7 @@ function render_path_raytrace_draw(use_live_layer: bool) {
render_path_set_target("last"); render_path_set_target("last");
render_path_bind_target("buf", "tex"); render_path_bind_target("buf", "tex");
render_path_draw_shader("shader_datas/compositor_pass/compositor_pass"); render_path_draw_shader("shader_datas/compositor_pass/compositor_pass");
render_path_base_draw_bloom("buf", "last");
render_path_set_target(""); render_path_set_target("");
render_path_bind_target("last", "tex"); render_path_bind_target("last", "tex");
render_path_draw_shader("shader_datas/copy_pass/copy_pass"); render_path_draw_shader("shader_datas/copy_pass/copy_pass");
+3
View File
@@ -68,6 +68,9 @@ function uniforms_ext_f32_link(object: object_t, mat: material_data_t, link: str
else if (link == "_bloom_sample_scale") { else if (link == "_bloom_sample_scale") {
return render_path_base_bloom_sample_scale; return render_path_base_bloom_sample_scale;
} }
else if (link == "_bloom_strength") {
return context_raw.viewport_mode == viewport_mode_t.PATH_TRACE ? 0.2 : 0.02;
}
else if (link == "_brush_scale_x") { else if (link == "_brush_scale_x") {
return 1 / context_raw.brush_scale_x; return 1 / context_raw.brush_scale_x;
} }