Disable VSync while ImageCompositor.update processes the image
This commit is contained in:
parent
77273f9c1b
commit
560e455cd2
3 changed files with 9 additions and 2 deletions
|
@ -27,7 +27,6 @@ window/size/viewport_width=640
|
||||||
window/size/viewport_height=672
|
window/size/viewport_height=672
|
||||||
window/energy_saving/keep_screen_on=false
|
window/energy_saving/keep_screen_on=false
|
||||||
window/subwindows/embed_subwindows=false
|
window/subwindows/embed_subwindows=false
|
||||||
window/vsync/vsync_mode=0
|
|
||||||
|
|
||||||
[editor_plugins]
|
[editor_plugins]
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ func _input(event):
|
||||||
|
|
||||||
var old_zoom = self.zoom
|
var old_zoom = self.zoom
|
||||||
|
|
||||||
func _process(delta: float) -> void:
|
func _process(_delta: float) -> void:
|
||||||
if self.zoom != old_zoom:
|
if self.zoom != old_zoom:
|
||||||
image_viewport_display.update_zoom_texture_filter(self.zoom)
|
image_viewport_display.update_zoom_texture_filter(self.zoom)
|
||||||
image_viewport_display.material.set_shader_parameter("zoom_level", self.zoom)
|
image_viewport_display.material.set_shader_parameter("zoom_level", self.zoom)
|
||||||
|
|
|
@ -43,6 +43,12 @@ func shader_has_step_uniform(shader: Shader) -> bool:
|
||||||
return true
|
return true
|
||||||
return false
|
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)
|
func update(overwrite_image_path: String = "") -> Array: # returns error messages (strings)
|
||||||
var shader = Filesystem.shader # read from disk
|
var shader = Filesystem.shader # read from disk
|
||||||
if shader == null:
|
if shader == null:
|
||||||
|
@ -98,6 +104,7 @@ func update(overwrite_image_path: String = "") -> Array: # returns error message
|
||||||
# assign material
|
# assign material
|
||||||
image_sprite.material = mat
|
image_sprite.material = mat
|
||||||
# iterate n times
|
# iterate n times
|
||||||
|
set_vsync(false) # speed up processing
|
||||||
for i in range(steps):
|
for i in range(steps):
|
||||||
if has_step_uniform:
|
if has_step_uniform:
|
||||||
# set STEP param
|
# 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
|
await RenderingServer.frame_post_draw # wait for next frame to get drawn
|
||||||
Filesystem.result = get_texture().get_image()
|
Filesystem.result = get_texture().get_image()
|
||||||
image_sprite.texture = ImageTexture.create_from_image(Filesystem.result)
|
image_sprite.texture = ImageTexture.create_from_image(Filesystem.result)
|
||||||
|
set_vsync(true) # reenable vsync
|
||||||
image_sprite.material = null
|
image_sprite.material = null
|
||||||
# done
|
# done
|
||||||
return errors
|
return errors
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue