105 lines
3.7 KiB
GDScript
105 lines
3.7 KiB
GDScript
# @tool
|
|
extends CanvasLayer
|
|
|
|
@export_enum("vignette", "fog", "glitch", "palette", "chromatic_abberation")
|
|
var mode: Array[String] = ["vignette"] as Array[String]:
|
|
set(new_val):
|
|
mode = new_val
|
|
if not is_node_ready():
|
|
return
|
|
_setup_visibility()
|
|
@export_group("Vignette", "vignette_")
|
|
@export var vignette_rgb := Color8(0x3f, 0x26, 0x31):
|
|
set(new_val):
|
|
vignette_rgb = new_val
|
|
if not is_node_ready():
|
|
return
|
|
get_node("Vignette").material.set("shader_parameter/vignette_rgb", new_val)
|
|
@export_range(0, 5) var vignette_intensity := 0.3:
|
|
set(new_val):
|
|
vignette_intensity = new_val
|
|
if not is_node_ready():
|
|
return
|
|
get_node("Vignette").material.set("shader_parameter/vignette_intensity", new_val)
|
|
@export_group("Fog", "fog_")
|
|
@export var fog_offset := Vector2(0.0, 0.0):
|
|
set(new_val):
|
|
fog_offset = new_val
|
|
if not is_node_ready():
|
|
return
|
|
get_node("Fog").texture.noise.set("offset", new_val)
|
|
@export var fog_base_color := Color8(0xff, 0xff, 0xff, 0x3d):
|
|
set(new_val):
|
|
fog_base_color = new_val
|
|
if not is_node_ready():
|
|
return
|
|
get_node("Fog").material.set("shader_parameter/base_color", new_val)
|
|
@export_group("Glitch", "glitch_")
|
|
@export var glitch_power := 0.001:
|
|
set(new_val):
|
|
glitch_power = new_val
|
|
if not is_node_ready():
|
|
return
|
|
get_node("GlitchEffect").material.set("shader_parameter/shake_power", new_val)
|
|
# rate
|
|
@export var glitch_rate := 0.2:
|
|
set(new_val):
|
|
glitch_rate = new_val
|
|
if not is_node_ready():
|
|
return
|
|
get_node("GlitchEffect").material.set("shader_parameter/shake_rate", new_val)
|
|
# speed
|
|
@export var glitch_speed := 5.0:
|
|
set(new_val):
|
|
glitch_speed = new_val
|
|
if not is_node_ready():
|
|
return
|
|
get_node("GlitchEffect").material.set("shader_parameter/shake_speed", new_val)
|
|
# block_size
|
|
@export var glitch_block_size := 30.5:
|
|
set(new_val):
|
|
glitch_block_size = new_val
|
|
if not is_node_ready():
|
|
return
|
|
get_node("GlitchEffect").material.set("shader_parameter/shake_block_size", new_val)
|
|
# color rate
|
|
@export var glitch_color_rate := 0.01:
|
|
set(new_val):
|
|
glitch_color_rate = new_val
|
|
if not is_node_ready():
|
|
return
|
|
get_node("GlitchEffect").material.set("shader_parameter/shake_color_rate", new_val)
|
|
@export_group("Palette", "palette_")
|
|
@export var palette_texture := preload("res://asset/shader/palette/bloodmoon21-1x.png"):
|
|
set(new_val):
|
|
palette_texture = new_val
|
|
if not is_node_ready():
|
|
return
|
|
get_node("Palette").material.set("shader_parameter/palette", new_val)
|
|
|
|
|
|
func _ready() -> void:
|
|
$Sprite2D.visible = false
|
|
layer = GlobalConfig.CANVAS_LAYER_SHADING
|
|
# set up other properties
|
|
get_node("Vignette").material.set("shader_parameter/vignette_rgb", vignette_rgb)
|
|
get_node("Vignette").material.set("shader_parameter/vignette_intensity", vignette_intensity)
|
|
get_node("Fog").texture.noise.set("offset", fog_offset)
|
|
get_node("Fog").material.set("shader_parameter/base_color", fog_base_color)
|
|
get_node("GlitchEffect").material.set("shader_parameter/shake_power", glitch_power)
|
|
get_node("GlitchEffect").material.set("shader_parameter/shake_rate", glitch_rate)
|
|
get_node("GlitchEffect").material.set("shader_parameter/shake_speed", glitch_speed)
|
|
get_node("GlitchEffect").material.set("shader_parameter/shake_block_size", glitch_block_size)
|
|
get_node("GlitchEffect").material.set("shader_parameter/shake_color_rate", glitch_color_rate)
|
|
get_node("Palette").material.set("shader_parameter/palette", palette_texture)
|
|
# set up visibility
|
|
_setup_visibility()
|
|
|
|
|
|
func _setup_visibility():
|
|
get_node("Vignette").visible = mode.has("vignette")
|
|
get_node("Fog").visible = mode.has("fog")
|
|
get_node("GlitchEffect").visible = mode.has("glitch")
|
|
get_node("Palette").visible = mode.has("palette")
|
|
get_node("ChromaticAbberation").visible = mode.has("chromatic_abberation")
|