53 lines
1.0 KiB
GDScript3
53 lines
1.0 KiB
GDScript3
![]() |
extends ImageScript
|
||
|
|
||
|
|
||
|
func _get_param_list():
|
||
|
var default_curve = Curve.new()
|
||
|
default_curve.add_point(Vector2.ZERO, 1, 1)
|
||
|
default_curve.add_point(Vector2.ONE, 1, 1)
|
||
|
return [
|
||
|
[
|
||
|
"Red",
|
||
|
SCRIPT_PARAM_RESOURCE,
|
||
|
default_curve.duplicate(),
|
||
|
"Curve",
|
||
|
],
|
||
|
[
|
||
|
"Green",
|
||
|
SCRIPT_PARAM_RESOURCE,
|
||
|
default_curve.duplicate(),
|
||
|
"Curve",
|
||
|
],
|
||
|
[
|
||
|
"Blue",
|
||
|
SCRIPT_PARAM_RESOURCE,
|
||
|
default_curve.duplicate(),
|
||
|
"Curve",
|
||
|
],
|
||
|
[
|
||
|
"Alpha",
|
||
|
SCRIPT_PARAM_RESOURCE,
|
||
|
default_curve.duplicate(),
|
||
|
"Curve",
|
||
|
],
|
||
|
]
|
||
|
|
||
|
|
||
|
func _get_image(new_image, selection):
|
||
|
var r_curve = get_param("Red")
|
||
|
var g_curve = get_param("Green")
|
||
|
var b_curve = get_param("Blue")
|
||
|
var a_curve = get_param("Alpha")
|
||
|
var pix : Color
|
||
|
for i in new_image.get_width():
|
||
|
for j in new_image.get_width():
|
||
|
if !selection.get_bit(i, j): continue
|
||
|
pix = new_image.get_pixel(i, j)
|
||
|
pix.r = r_curve.sample(pix.r)
|
||
|
pix.g = g_curve.sample(pix.g)
|
||
|
pix.b = b_curve.sample(pix.b)
|
||
|
pix.a = a_curve.sample(pix.a)
|
||
|
new_image.set_pixel(i, j, pix)
|
||
|
|
||
|
return new_image
|