mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-02-20 12:33:14 +00:00
Image effect refactors
This commit is contained in:
parent
c9f0301c79
commit
7b067de20e
10 changed files with 64 additions and 155 deletions
|
@ -13,6 +13,7 @@ var preview_texture := ImageTexture.new()
|
|||
var preview: TextureRect
|
||||
var selection_checkbox: CheckBox
|
||||
var affect_option_button: OptionButton
|
||||
var confirmed := false
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
|
@ -30,6 +31,7 @@ func _ready() -> void:
|
|||
|
||||
|
||||
func _about_to_show() -> void:
|
||||
confirmed = false
|
||||
Global.canvas.selection.transform_content_confirm()
|
||||
var frame: Frame = Global.current_project.frames[Global.current_project.current_frame]
|
||||
current_cel = frame.cels[Global.current_project.current_layer].image
|
||||
|
@ -41,6 +43,7 @@ func _about_to_show() -> void:
|
|||
|
||||
|
||||
func _confirmed() -> void:
|
||||
confirmed = true
|
||||
var project: Project = Global.current_project
|
||||
if affect == CEL:
|
||||
var undo_data := _get_undo_data(project)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
shader_type canvas_item;
|
||||
render_mode unshaded;
|
||||
|
||||
uniform sampler2D map; // GradientTexture
|
||||
uniform sampler2D selection;
|
||||
|
|
|
@ -7,15 +7,11 @@ var alpha := false
|
|||
|
||||
var shader: Shader = preload("res://src/Shaders/Desaturate.shader")
|
||||
|
||||
var confirmed: bool = false
|
||||
|
||||
|
||||
func _about_to_show() -> void:
|
||||
confirmed = false
|
||||
func _ready() -> void:
|
||||
var sm := ShaderMaterial.new()
|
||||
sm.shader = shader
|
||||
preview.set_material(sm)
|
||||
._about_to_show()
|
||||
|
||||
|
||||
func set_nodes() -> void:
|
||||
|
@ -24,35 +20,25 @@ func set_nodes() -> void:
|
|||
affect_option_button = $VBoxContainer/OptionsContainer/AffectOptionButton
|
||||
|
||||
|
||||
func _confirmed() -> void:
|
||||
confirmed = true
|
||||
._confirmed()
|
||||
|
||||
|
||||
func commit_action(cel: Image, project: Project = Global.current_project) -> void:
|
||||
var selection_tex := ImageTexture.new()
|
||||
if selection_checkbox.pressed and project.has_selection:
|
||||
var selection: Image = project.bitmap_to_image(project.selection_bitmap)
|
||||
selection_tex.create_from_image(selection, 0)
|
||||
|
||||
var params := {
|
||||
"red": red,
|
||||
"blue": blue,
|
||||
"green": green,
|
||||
"alpha": alpha,
|
||||
"selection": selection_tex,
|
||||
"affect_selection": selection_checkbox.pressed,
|
||||
"has_selection": project.has_selection
|
||||
}
|
||||
if !confirmed:
|
||||
preview.material.set_shader_param("red", red)
|
||||
preview.material.set_shader_param("blue", blue)
|
||||
preview.material.set_shader_param("green", green)
|
||||
preview.material.set_shader_param("alpha", alpha)
|
||||
preview.material.set_shader_param("selection", selection_tex)
|
||||
preview.material.set_shader_param("affect_selection", selection_checkbox.pressed)
|
||||
preview.material.set_shader_param("has_selection", project.has_selection)
|
||||
for param in params:
|
||||
preview.material.set_shader_param(param, params[param])
|
||||
else:
|
||||
var params := {
|
||||
"red": red,
|
||||
"blue": blue,
|
||||
"green": green,
|
||||
"alpha": alpha,
|
||||
"selection": selection_tex,
|
||||
"affect_selection": selection_checkbox.pressed,
|
||||
"has_selection": project.has_selection
|
||||
}
|
||||
var gen := ShaderImageEffect.new()
|
||||
gen.generate_image(cel, shader, params, project.size)
|
||||
yield(gen, "done")
|
||||
|
|
|
@ -2,7 +2,6 @@ extends ImageEffect
|
|||
|
||||
var offset := Vector2(5, 5)
|
||||
var color := Color.black
|
||||
var confirmed := false
|
||||
var shader: Shader = load("res://src/Shaders/DropShadow.tres")
|
||||
|
||||
onready var x_spinbox: SpinBox = $VBoxContainer/OptionsContainer/XSpinBox
|
||||
|
@ -13,19 +12,9 @@ onready var shadow_color = $VBoxContainer/OptionsContainer/ShadowColor
|
|||
func _ready() -> void:
|
||||
shadow_color.get_picker().presets_visible = false
|
||||
color = shadow_color.color
|
||||
|
||||
|
||||
func _about_to_show() -> void:
|
||||
confirmed = false
|
||||
var sm := ShaderMaterial.new()
|
||||
sm.shader = shader
|
||||
preview.set_material(sm)
|
||||
._about_to_show()
|
||||
|
||||
|
||||
func _confirmed() -> void:
|
||||
confirmed = true
|
||||
._confirmed()
|
||||
|
||||
|
||||
func set_nodes() -> void:
|
||||
|
@ -40,16 +29,15 @@ func commit_action(cel: Image, project: Project = Global.current_project) -> voi
|
|||
var selection: Image = project.bitmap_to_image(project.selection_bitmap)
|
||||
selection_tex.create_from_image(selection, 0)
|
||||
|
||||
var params := {
|
||||
"shadow_offset": offset,
|
||||
"shadow_color": color,
|
||||
"selection": selection_tex,
|
||||
}
|
||||
if !confirmed:
|
||||
preview.material.set_shader_param("shadow_offset", offset)
|
||||
preview.material.set_shader_param("shadow_color", color)
|
||||
preview.material.set_shader_param("selection", selection_tex)
|
||||
for param in params:
|
||||
preview.material.set_shader_param(param, params[param])
|
||||
else:
|
||||
var params := {
|
||||
"shadow_offset": offset,
|
||||
"shadow_color": color,
|
||||
"selection": selection_tex,
|
||||
}
|
||||
var gen := ShaderImageEffect.new()
|
||||
gen.generate_image(cel, shader, params, project.size)
|
||||
yield(gen, "done")
|
||||
|
|
|
@ -9,7 +9,6 @@ var shader_radial_step: Shader = preload("res://src/Shaders/Gradients/RadialStep
|
|||
var shader_linear_dither: Shader = preload("res://src/Shaders/Gradients/LinearDithering.gdshader")
|
||||
var shader_radial_dither: Shader = preload("res://src/Shaders/Gradients/RadialDithering.gdshader")
|
||||
|
||||
var confirmed := false
|
||||
var shader: Shader = shader_linear
|
||||
var dither_matrices := [
|
||||
DitherMatrix.new(preload("res://assets/dither-matrices/bayer2.png"), "Bayer 2x2"),
|
||||
|
@ -56,16 +55,6 @@ func _ready() -> void:
|
|||
dithering_option_button.add_item(matrix.name)
|
||||
|
||||
|
||||
func _about_to_show() -> void:
|
||||
confirmed = false
|
||||
._about_to_show()
|
||||
|
||||
|
||||
func _confirmed() -> void:
|
||||
confirmed = true
|
||||
._confirmed()
|
||||
|
||||
|
||||
func set_nodes() -> void:
|
||||
preview = $VBoxContainer/AspectRatioContainer/Preview
|
||||
selection_checkbox = $VBoxContainer/OptionsContainer/SelectionCheckBox
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
extends ImageEffect
|
||||
|
||||
var shader: Shader = preload("res://src/Shaders/GradientMap.gdshader")
|
||||
var confirmed := false
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
var sm := ShaderMaterial.new()
|
||||
sm.shader = shader
|
||||
|
@ -17,16 +15,6 @@ func set_nodes() -> void:
|
|||
affect_option_button = $VBoxContainer/OptionsContainer/AffectOptionButton
|
||||
|
||||
|
||||
func _about_to_show() -> void:
|
||||
confirmed = false
|
||||
._about_to_show()
|
||||
|
||||
|
||||
func _confirmed() -> void:
|
||||
confirmed = true
|
||||
._confirmed()
|
||||
|
||||
|
||||
func commit_action(cel: Image, project: Project = Global.current_project) -> void:
|
||||
var selection_tex := ImageTexture.new()
|
||||
if selection_checkbox.pressed and project.has_selection:
|
||||
|
@ -36,7 +24,6 @@ func commit_action(cel: Image, project: Project = Global.current_project) -> voi
|
|||
var params := {"selection": selection_tex, "map": $VBoxContainer/GradientEdit.texture}
|
||||
|
||||
if !confirmed:
|
||||
preview.material.shader = shader
|
||||
for param in params:
|
||||
preview.material.set_shader_param(param, params[param])
|
||||
else:
|
||||
|
|
|
@ -3,7 +3,6 @@ extends ImageEffect
|
|||
var shader: Shader = preload("res://src/Shaders/HSV.shader")
|
||||
|
||||
var live_preview: bool = true
|
||||
var confirmed: bool = false
|
||||
|
||||
onready var hue_slider = $VBoxContainer/HBoxContainer/Sliders/Hue
|
||||
onready var sat_slider = $VBoxContainer/HBoxContainer/Sliders/Saturation
|
||||
|
@ -16,11 +15,14 @@ onready var wait_apply_timer = $WaitApply
|
|||
onready var wait_time_spinbox = $VBoxContainer/WaitSettings/WaitTime
|
||||
|
||||
|
||||
func _about_to_show() -> void:
|
||||
reset()
|
||||
func _ready() -> void:
|
||||
var sm := ShaderMaterial.new()
|
||||
sm.shader = shader
|
||||
preview.set_material(sm)
|
||||
|
||||
|
||||
func _about_to_show() -> void:
|
||||
reset()
|
||||
._about_to_show()
|
||||
|
||||
|
||||
|
@ -30,34 +32,24 @@ func set_nodes() -> void:
|
|||
affect_option_button = $VBoxContainer/AffectHBoxContainer/AffectOptionButton
|
||||
|
||||
|
||||
func _confirmed() -> void:
|
||||
confirmed = true
|
||||
._confirmed()
|
||||
reset()
|
||||
|
||||
|
||||
func commit_action(cel: Image, project: Project = Global.current_project) -> void:
|
||||
var selection_tex := ImageTexture.new()
|
||||
if selection_checkbox.pressed and project.has_selection:
|
||||
var selection: Image = project.bitmap_to_image(project.selection_bitmap)
|
||||
selection_tex.create_from_image(selection, 0)
|
||||
|
||||
var params := {
|
||||
"hue_shift_amount": hue_slider.value / 360,
|
||||
"sat_shift_amount": sat_slider.value / 100,
|
||||
"val_shift_amount": val_slider.value / 100,
|
||||
"selection": selection_tex,
|
||||
"affect_selection": selection_checkbox.pressed,
|
||||
"has_selection": project.has_selection
|
||||
}
|
||||
if !confirmed:
|
||||
preview.material.set_shader_param("hue_shift_amount", hue_slider.value / 360)
|
||||
preview.material.set_shader_param("sat_shift_amount", sat_slider.value / 100)
|
||||
preview.material.set_shader_param("val_shift_amount", val_slider.value / 100)
|
||||
preview.material.set_shader_param("selection", selection_tex)
|
||||
preview.material.set_shader_param("affect_selection", selection_checkbox.pressed)
|
||||
preview.material.set_shader_param("has_selection", project.has_selection)
|
||||
for param in params:
|
||||
preview.material.set_shader_param(param, params[param])
|
||||
else:
|
||||
var params := {
|
||||
"hue_shift_amount": hue_slider.value / 360,
|
||||
"sat_shift_amount": sat_slider.value / 100,
|
||||
"val_shift_amount": val_slider.value / 100,
|
||||
"selection": selection_tex,
|
||||
"affect_selection": selection_checkbox.pressed,
|
||||
"has_selection": project.has_selection
|
||||
}
|
||||
var gen := ShaderImageEffect.new()
|
||||
gen.generate_image(cel, shader, params, project.size)
|
||||
yield(gen, "done")
|
||||
|
|
|
@ -7,15 +7,11 @@ var alpha := false
|
|||
|
||||
var shader: Shader = preload("res://src/Shaders/Invert.shader")
|
||||
|
||||
var confirmed: bool = false
|
||||
|
||||
|
||||
func _about_to_show() -> void:
|
||||
confirmed = false
|
||||
func _ready() -> void:
|
||||
var sm := ShaderMaterial.new()
|
||||
sm.shader = shader
|
||||
preview.set_material(sm)
|
||||
._about_to_show()
|
||||
|
||||
|
||||
func set_nodes() -> void:
|
||||
|
@ -24,35 +20,26 @@ func set_nodes() -> void:
|
|||
affect_option_button = $VBoxContainer/OptionsContainer/AffectOptionButton
|
||||
|
||||
|
||||
func _confirmed() -> void:
|
||||
confirmed = true
|
||||
._confirmed()
|
||||
|
||||
|
||||
func commit_action(cel: Image, project: Project = Global.current_project) -> void:
|
||||
var selection_tex := ImageTexture.new()
|
||||
if selection_checkbox.pressed and project.has_selection:
|
||||
var selection: Image = project.bitmap_to_image(project.selection_bitmap)
|
||||
selection_tex.create_from_image(selection, 0)
|
||||
|
||||
var params := {
|
||||
"red": red,
|
||||
"blue": blue,
|
||||
"green": green,
|
||||
"alpha": alpha,
|
||||
"selection": selection_tex,
|
||||
"affect_selection": selection_checkbox.pressed,
|
||||
"has_selection": project.has_selection
|
||||
}
|
||||
|
||||
if !confirmed:
|
||||
preview.material.set_shader_param("red", red)
|
||||
preview.material.set_shader_param("blue", blue)
|
||||
preview.material.set_shader_param("green", green)
|
||||
preview.material.set_shader_param("alpha", alpha)
|
||||
preview.material.set_shader_param("selection", selection_tex)
|
||||
preview.material.set_shader_param("affect_selection", selection_checkbox.pressed)
|
||||
preview.material.set_shader_param("has_selection", project.has_selection)
|
||||
for param in params:
|
||||
preview.material.set_shader_param(param, params[param])
|
||||
else:
|
||||
var params := {
|
||||
"red": red,
|
||||
"blue": blue,
|
||||
"green": green,
|
||||
"alpha": alpha,
|
||||
"selection": selection_tex,
|
||||
"affect_selection": selection_checkbox.pressed,
|
||||
"has_selection": project.has_selection
|
||||
}
|
||||
var gen := ShaderImageEffect.new()
|
||||
gen.generate_image(cel, shader, params, project.size)
|
||||
yield(gen, "done")
|
||||
|
|
|
@ -4,7 +4,6 @@ var color := Color.red
|
|||
var thickness := 1
|
||||
var pattern := 0
|
||||
var inside_image := false
|
||||
var confirmed := false
|
||||
var shader: Shader
|
||||
|
||||
onready var outline_color = $VBoxContainer/OptionsContainer/OutlineColor
|
||||
|
@ -15,22 +14,11 @@ func _ready() -> void:
|
|||
$VBoxContainer/OptionsContainer/PatternOptionButton.disabled = true
|
||||
else:
|
||||
shader = load("res://src/Shaders/OutlineInline.gdshader")
|
||||
outline_color.get_picker().presets_visible = false
|
||||
color = outline_color.color
|
||||
|
||||
|
||||
func _about_to_show() -> void:
|
||||
confirmed = false
|
||||
if shader:
|
||||
var sm := ShaderMaterial.new()
|
||||
sm.shader = shader
|
||||
preview.set_material(sm)
|
||||
._about_to_show()
|
||||
|
||||
|
||||
func _confirmed() -> void:
|
||||
confirmed = true
|
||||
._confirmed()
|
||||
outline_color.get_picker().presets_visible = false
|
||||
color = outline_color.color
|
||||
|
||||
|
||||
func set_nodes() -> void:
|
||||
|
@ -51,24 +39,19 @@ func commit_action(cel: Image, project: Project = Global.current_project) -> voi
|
|||
var selection: Image = project.bitmap_to_image(project.selection_bitmap)
|
||||
selection_tex.create_from_image(selection, 0)
|
||||
|
||||
var params := {
|
||||
"color": color,
|
||||
"width": thickness,
|
||||
"pattern": pattern,
|
||||
"inside": inside_image,
|
||||
"selection": selection_tex,
|
||||
"affect_selection": selection_checkbox.pressed,
|
||||
"has_selection": project.has_selection
|
||||
}
|
||||
if !confirmed:
|
||||
preview.material.set_shader_param("color", color)
|
||||
preview.material.set_shader_param("width", thickness)
|
||||
preview.material.set_shader_param("pattern", pattern)
|
||||
preview.material.set_shader_param("inside", inside_image)
|
||||
preview.material.set_shader_param("selection", selection_tex)
|
||||
preview.material.set_shader_param("affect_selection", selection_checkbox.pressed)
|
||||
preview.material.set_shader_param("has_selection", project.has_selection)
|
||||
for param in params:
|
||||
preview.material.set_shader_param(param, params[param])
|
||||
else:
|
||||
var params := {
|
||||
"color": color,
|
||||
"width": thickness,
|
||||
"pattern": pattern,
|
||||
"inside": inside_image,
|
||||
"selection": selection_tex,
|
||||
"affect_selection": selection_checkbox.pressed,
|
||||
"has_selection": project.has_selection
|
||||
}
|
||||
var gen := ShaderImageEffect.new()
|
||||
gen.generate_image(cel, shader, params, project.size)
|
||||
yield(gen, "done")
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
extends ImageEffect
|
||||
|
||||
var live_preview: bool = true
|
||||
var confirmed := false
|
||||
var shader: Shader = preload("res://src/Shaders/Rotation.shader")
|
||||
|
||||
onready var type_option_button: OptionButton = $VBoxContainer/HBoxContainer2/TypeOptionButton
|
||||
|
@ -111,12 +110,6 @@ func commit_action(_cel: Image, _project: Project = Global.current_project) -> v
|
|||
_cel.blit_rect(image, Rect2(Vector2.ZERO, image.get_size()), Vector2.ZERO)
|
||||
|
||||
|
||||
func _confirmed() -> void:
|
||||
confirmed = true
|
||||
._confirmed()
|
||||
angle_hslider.value = 0
|
||||
|
||||
|
||||
func _on_HSlider_value_changed(_value: float) -> void:
|
||||
angle_spinbox.value = angle_hslider.value
|
||||
if live_preview:
|
||||
|
|
Loading…
Add table
Reference in a new issue