110 lines
3.3 KiB
GDScript3
110 lines
3.3 KiB
GDScript3
|
tool
|
||
|
extends Node
|
||
|
|
||
|
## Exported variables
|
||
|
var flare_strength := 1.0 setget set_flare_strength
|
||
|
var flare_bias := 1.05 setget set_flare_bias
|
||
|
var flare_blur := 2.0 setget set_flare_blur;
|
||
|
|
||
|
var distortion_quality := 0 setget set_distortion_quality;
|
||
|
var distortion := 2.0 setget set_flare_distortion
|
||
|
|
||
|
var ghost_count := 7 setget set_ghost_count
|
||
|
var ghost_spacing := 0.3 setget set_ghost_spacing
|
||
|
var halo_width := 0.25 setget set_halo_width
|
||
|
|
||
|
var streak_strength := 0.5 setget set_streak_strength
|
||
|
var lens_dirt = preload("lens_dirt_default.jpeg") setget set_lens_dirt
|
||
|
## Exported variables
|
||
|
|
||
|
var screen := MeshInstance.new()
|
||
|
var material := preload("lens_flare_shader.tres").duplicate()
|
||
|
|
||
|
|
||
|
func _get_property_list() -> Array:
|
||
|
var properties := [
|
||
|
{name="LensFlare", type=TYPE_NIL, usage=PROPERTY_USAGE_CATEGORY},
|
||
|
{name="flare_strength", type=TYPE_REAL, hint=PROPERTY_HINT_RANGE, hint_string="0,16"},
|
||
|
{name="flare_bias", type=TYPE_REAL, hint=PROPERTY_HINT_RANGE, hint_string="0,16"},
|
||
|
{name="flare_blur", type=TYPE_REAL, hint=PROPERTY_HINT_RANGE, hint_string="0,10"},
|
||
|
{name="distortion_quality", type=TYPE_INT, hint=PROPERTY_HINT_ENUM, hint_string="Low,Medium,High"},
|
||
|
{name="distortion", type=TYPE_REAL, hint=PROPERTY_HINT_RANGE, hint_string="0,50"},
|
||
|
{name="ghost_count", type=TYPE_INT, hint=PROPERTY_HINT_RANGE, hint_string="0,20"},
|
||
|
{name="ghost_spacing", type=TYPE_REAL, hint=PROPERTY_HINT_RANGE, hint_string="0,1"},
|
||
|
{name="halo_width", type=TYPE_REAL, hint=PROPERTY_HINT_RANGE, hint_string="0,1"},
|
||
|
{name="streak_strength", type=TYPE_REAL, hint=PROPERTY_HINT_RANGE, hint_string="0,1"},
|
||
|
{name="lens_dirt", type=TYPE_OBJECT, hint=PROPERTY_HINT_RESOURCE_TYPE, hint_string="Texture"},
|
||
|
]
|
||
|
|
||
|
return properties
|
||
|
|
||
|
|
||
|
func _init() -> void:
|
||
|
screen.mesh = CubeMesh.new()
|
||
|
screen.scale = Vector3(1,1,1) * pow(2.0,30);
|
||
|
add_child(screen)
|
||
|
screen.material_override = material
|
||
|
|
||
|
|
||
|
func _enter_tree() -> void:
|
||
|
set_flare_strength(flare_strength)
|
||
|
set_flare_bias(flare_bias)
|
||
|
set_flare_distortion(distortion)
|
||
|
set_distortion_quality(distortion_quality)
|
||
|
set_ghost_count(ghost_count)
|
||
|
set_ghost_spacing(ghost_spacing)
|
||
|
set_halo_width(halo_width)
|
||
|
set_streak_strength(streak_strength)
|
||
|
set_flare_blur(flare_blur)
|
||
|
set_lens_dirt(lens_dirt)
|
||
|
|
||
|
|
||
|
func set_flare_strength(value: float) -> void:
|
||
|
flare_strength = value
|
||
|
material.set_shader_param("bloom_scale", value)
|
||
|
|
||
|
|
||
|
func set_flare_bias(value: float) -> void:
|
||
|
flare_bias = value
|
||
|
material.set_shader_param("bloom_bias", value)
|
||
|
|
||
|
|
||
|
func set_flare_distortion(value: float) -> void:
|
||
|
distortion = value
|
||
|
material.set_shader_param("distort", value)
|
||
|
|
||
|
|
||
|
func set_distortion_quality(value: int) -> void:
|
||
|
distortion_quality = value
|
||
|
material.set_shader_param("distortion_quality", value)
|
||
|
|
||
|
|
||
|
func set_ghost_count(value: int) -> void:
|
||
|
ghost_count = value
|
||
|
material.set_shader_param("ghosts", value)
|
||
|
|
||
|
|
||
|
func set_ghost_spacing(value: float) -> void:
|
||
|
ghost_spacing = value
|
||
|
material.set_shader_param("ghost_dispersal", value)
|
||
|
|
||
|
|
||
|
func set_halo_width(value: float) -> void:
|
||
|
halo_width = value
|
||
|
material.set_shader_param("halo_width", value)
|
||
|
|
||
|
|
||
|
func set_streak_strength(value: float) -> void:
|
||
|
streak_strength = value
|
||
|
material.set_shader_param("streak_strength", value)
|
||
|
|
||
|
|
||
|
func set_flare_blur(value: float) -> void:
|
||
|
flare_blur = value
|
||
|
material.set_shader_param("lod", value)
|
||
|
|
||
|
|
||
|
func set_lens_dirt(value: Texture) -> void:
|
||
|
lens_dirt = value
|
||
|
material.set_shader_param("lens_dirt", value)
|