diff --git a/project.godot b/project.godot index 918c937..0fb77e0 100644 --- a/project.godot +++ b/project.godot @@ -27,7 +27,6 @@ window/size/viewport_width=640 window/size/viewport_height=672 window/energy_saving/keep_screen_on=false window/subwindows/embed_subwindows=false -window/vsync/vsync_mode=0 [editor_plugins] diff --git a/src/Camera.gd b/src/Camera.gd index b1fe7f1..416e035 100644 --- a/src/Camera.gd +++ b/src/Camera.gd @@ -18,7 +18,7 @@ func _input(event): var old_zoom = self.zoom -func _process(delta: float) -> void: +func _process(_delta: float) -> void: if self.zoom != old_zoom: image_viewport_display.update_zoom_texture_filter(self.zoom) image_viewport_display.material.set_shader_parameter("zoom_level", self.zoom) diff --git a/src/ImageCompositor.gd b/src/ImageCompositor.gd index ae47695..9692fb7 100644 --- a/src/ImageCompositor.gd +++ b/src/ImageCompositor.gd @@ -43,6 +43,12 @@ func shader_has_step_uniform(shader: Shader) -> bool: return true return false +func set_vsync(enabled: bool): + if enabled: + DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_ENABLED) + else: + DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_DISABLED) + func update(overwrite_image_path: String = "") -> Array: # returns error messages (strings) var shader = Filesystem.shader # read from disk if shader == null: @@ -98,6 +104,7 @@ func update(overwrite_image_path: String = "") -> Array: # returns error message # assign material image_sprite.material = mat # iterate n times + set_vsync(false) # speed up processing for i in range(steps): if has_step_uniform: # set STEP param @@ -106,6 +113,7 @@ func update(overwrite_image_path: String = "") -> Array: # returns error message await RenderingServer.frame_post_draw # wait for next frame to get drawn Filesystem.result = get_texture().get_image() image_sprite.texture = ImageTexture.create_from_image(Filesystem.result) + set_vsync(true) # reenable vsync image_sprite.material = null # done return errors