# @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")