Updated temporal AA

This commit is contained in:
Rodz Labs 2021-11-07 17:50:17 +01:00
parent c9394fd005
commit 179a7d4ce5
2 changed files with 18 additions and 11 deletions

View File

@ -57,26 +57,33 @@ func set_temporal_aa(v : bool):
yield(get_tree(), "idle_frame")
set_generator(generator, output, true)
var start_accumulate_trigger : bool = false
func start_accumulate():
if !temporal_aa_current:
return
if !start_accumulate_trigger:
start_accumulate_trigger = true
call_deferred("do_start_accumulate")
func do_start_accumulate():
started = false
yield(get_tree(), "idle_frame")
yield(get_tree(), "idle_frame")
yield(get_tree(), "idle_frame")
start_accumulate_trigger = false
$Accumulate/Iteration.material.set_shader_param("sum", $Accumulate.get_texture())
$Accumulate/Iteration.material.set_shader_param("clear", true)
divide = 0
divide = 1
started = true
while started:
var next_divide = divide + 1
$Accumulate.render_target_update_mode = Viewport.UPDATE_ONCE
$Accumulate.update_worlds()
material.set_shader_param("divide", divide)
yield(get_tree(), "idle_frame")
yield(get_tree(), "idle_frame")
$Accumulate/Iteration.material.set_shader_param("clear", false)
material.set_shader_param("divide", divide)
divide = next_divide
if divide > 1000:
divide += 1
if divide > 100000:
started = false
break

View File

@ -62,12 +62,12 @@ uniform float preview_2d_scale = 1.2;
uniform vec2 preview_2d_center = vec2(0.5);
void fragment() {
vec2 ratio = preview_2d_size;
vec2 jitter_uv = UV+0.75*fract(sin(vec2(TIME, TIME*0.5)*43758.5453123))/preview_2d_size;
vec2 uv = preview_2d_center+(jitter_uv-0.5)*preview_2d_scale*ratio/min(ratio.x, ratio.y);
if (clear) {
COLOR = vec4(0.0, 0.0, 0.0, 1.0);
COLOR = preview_2d(uv);
} else {
vec2 ratio = preview_2d_size;
vec2 jitter_uv = UV+0.75*fract(sin(vec2(TIME, TIME*0.5)*43758.5453123))/preview_2d_size;
vec2 uv = preview_2d_center+(jitter_uv-0.5)*preview_2d_scale*ratio/min(ratio.x, ratio.y);
COLOR = textureLod(sum, UV, 0.0)+preview_2d(uv);
}
}