mirror of
https://github.com/sphynx-owner/JFA_driven_motion_blur_addon.git
synced 2025-09-19 04:06:08 +08:00
restructure of compositor and fix inconsistencies
This commit is contained in:
@ -91,7 +91,7 @@ layout(push_constant, std430) uniform Params
|
||||
{
|
||||
float rotation_velocity_multiplier;
|
||||
float movement_velocity_multiplier;
|
||||
float object_velocity_multilpier;
|
||||
float object_velocity_multiplier;
|
||||
float rotation_velocity_lower_threshold;
|
||||
float movement_velocity_lower_threshold;
|
||||
float object_velocity_lower_threshold;
|
||||
@ -99,7 +99,7 @@ layout(push_constant, std430) uniform Params
|
||||
float movement_velocity_upper_threshold;
|
||||
float object_velocity_upper_threshold;
|
||||
float is_fsr2;
|
||||
float nan_fl_1;
|
||||
float motion_blur_intensity;
|
||||
float nan_fl_2;
|
||||
} params;
|
||||
|
||||
@ -174,9 +174,9 @@ void main()
|
||||
// get object velocity
|
||||
vec3 object_uv_change = base_velocity - camera_uv_change.xyz;
|
||||
// construct final velocity with user defined weights
|
||||
vec3 total_velocity = camera_rotation_uv_change * params.rotation_velocity_multiplier * sharp_step(params.rotation_velocity_lower_threshold, params.rotation_velocity_upper_threshold, length(camera_rotation_uv_change))
|
||||
+ camera_movement_uv_change * params.movement_velocity_multiplier * sharp_step(params.movement_velocity_lower_threshold, params.movement_velocity_upper_threshold, length(camera_movement_uv_change))
|
||||
+ object_uv_change * params.object_velocity_multilpier * sharp_step(params.object_velocity_lower_threshold, params.object_velocity_upper_threshold, length(object_uv_change));
|
||||
vec3 total_velocity = camera_rotation_uv_change * params.rotation_velocity_multiplier * sharp_step(params.rotation_velocity_lower_threshold, params.rotation_velocity_upper_threshold, length(camera_rotation_uv_change) * params.rotation_velocity_multiplier * params.motion_blur_intensity)
|
||||
+ camera_movement_uv_change * params.movement_velocity_multiplier * sharp_step(params.movement_velocity_lower_threshold, params.movement_velocity_upper_threshold, length(camera_movement_uv_change) * params.movement_velocity_multiplier * params.motion_blur_intensity)
|
||||
+ object_uv_change * params.object_velocity_multiplier * sharp_step(params.object_velocity_lower_threshold, params.object_velocity_upper_threshold, length(object_uv_change) * params.object_velocity_multiplier * params.motion_blur_intensity);
|
||||
// if objects move, clear z direction, (z only correct for static environment)
|
||||
if(dot(object_uv_change.xy, object_uv_change.xy) > 0.000001)
|
||||
{
|
||||
|
@ -1,4 +1,4 @@
|
||||
extends "res://addons/SphynxMotionBlurToolkit/BaseClasses/enhanced_compositor_effect.gd"
|
||||
extends "res://addons/SphynxMotionBlurToolkit/BaseClasses/mb_compositor_effect.gd"
|
||||
class_name PreBlurProcessor
|
||||
|
||||
@export_group("Shader Stages")
|
||||
@ -15,12 +15,27 @@ class_name PreBlurProcessor
|
||||
|
||||
var custom_velocity : StringName = "custom_velocity"
|
||||
|
||||
func _init():
|
||||
needs_motion_vectors = true
|
||||
set_deferred("context", "MotionBlur")
|
||||
super()
|
||||
var temp_intensity : float
|
||||
|
||||
var previous_time : float = 0
|
||||
|
||||
func _render_callback_2(render_size : Vector2i, render_scene_buffers : RenderSceneBuffersRD, render_scene_data : RenderSceneDataRD):
|
||||
var time : float = float(Time.get_ticks_msec()) / 1000
|
||||
|
||||
var delta_time : float = time - previous_time
|
||||
|
||||
previous_time = time
|
||||
|
||||
temp_intensity = intensity
|
||||
|
||||
if framerate_independent:
|
||||
var capped_frame_time : float = 1 / target_constant_framerate
|
||||
|
||||
if !uncapped_independence:
|
||||
capped_frame_time = min(capped_frame_time, delta_time)
|
||||
|
||||
temp_intensity = intensity * capped_frame_time / delta_time
|
||||
|
||||
ensure_texture(custom_velocity, render_scene_buffers)
|
||||
|
||||
rd.draw_command_begin_label("Pre Blur Processing", Color(1.0, 1.0, 1.0, 1.0))
|
||||
@ -36,7 +51,7 @@ func _render_callback_2(render_size : Vector2i, render_scene_buffers : RenderSce
|
||||
camera_movement_component.upper_threshold,
|
||||
object_movement_component.upper_threshold,
|
||||
1 if true else 0,
|
||||
0,
|
||||
temp_intensity,
|
||||
0,
|
||||
]
|
||||
|
||||
|
Reference in New Issue
Block a user