From 307b6f04df11c1eaf69d2a896580ee3badbe4098 Mon Sep 17 00:00:00 2001 From: Korin <92170697+ItsKorin@users.noreply.github.com> Date: Mon, 18 Mar 2024 05:18:59 +0100 Subject: [PATCH] cleaned up files --- addons/post_processing/assets/ascii.png | Bin 0 -> 196 bytes .../post_processing/assets/ascii.png.import | 34 ++++ addons/post_processing/assets/lens_aura.png | Bin 0 -> 20293 bytes .../assets/lens_aura.png.import | 34 ++++ addons/post_processing/assets/lens_divine.png | Bin 0 -> 26290 bytes .../assets/lens_divine.png.import | 34 ++++ addons/post_processing/assets/lens_flare.gd | 35 ++++ .../post_processing/node/children/Bloom.tscn | 21 --- .../node/children/ChromaticAberration.tscn | 3 +- .../node/children/analog_monitor.tscn | 1 + .../post_processing/node/children/ascii.tscn | 24 +++ .../post_processing/node/children/bloom.tscn | 38 ++++ .../post_processing/node/children/blur.tscn | 4 +- .../node/children/circular_waves.tscn | 1 + .../node/children/fish_eye.tscn | 9 +- .../post_processing/node/children/glitch.tscn | 2 + .../post_processing/node/children/grain.tscn | 3 +- .../node/children/outline.tscn | 2 + .../node/children/screen_shake.tscn | 1 + .../node/children/speed_lines.tscn | 1 + .../node/children/vignette.tscn | 2 + addons/post_processing/node/post_process.gd | 37 +++- addons/post_processing/post_processing.zip | Bin 23204 -> 0 bytes .../shaders/CLREDIT.gdshaderinc | 0 .../shaders/LensFlares.gdshader | 93 ++++++++++ addons/post_processing/shaders/ascii.gdshader | 37 ++++ addons/post_processing/shaders/bloom.gdshader | 170 +++++------------- .../post_processing/shaders/fish_eye.gdshader | 86 ++++----- addons/post_processing/shaders/water.gdshader | 48 +++++ 29 files changed, 522 insertions(+), 198 deletions(-) create mode 100644 addons/post_processing/assets/ascii.png create mode 100644 addons/post_processing/assets/ascii.png.import create mode 100644 addons/post_processing/assets/lens_aura.png create mode 100644 addons/post_processing/assets/lens_aura.png.import create mode 100644 addons/post_processing/assets/lens_divine.png create mode 100644 addons/post_processing/assets/lens_divine.png.import create mode 100644 addons/post_processing/assets/lens_flare.gd delete mode 100644 addons/post_processing/node/children/Bloom.tscn create mode 100644 addons/post_processing/node/children/ascii.tscn create mode 100644 addons/post_processing/node/children/bloom.tscn delete mode 100644 addons/post_processing/post_processing.zip create mode 100644 addons/post_processing/shaders/CLREDIT.gdshaderinc create mode 100644 addons/post_processing/shaders/LensFlares.gdshader create mode 100644 addons/post_processing/shaders/ascii.gdshader create mode 100644 addons/post_processing/shaders/water.gdshader diff --git a/addons/post_processing/assets/ascii.png b/addons/post_processing/assets/ascii.png new file mode 100644 index 0000000000000000000000000000000000000000..f2b6acba02f90c9a315f0ae90ea4d47b16f8a90d GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^4L~fw0VEiH8*79Bscugf#}JR>SEmN@F$nUwJpVVn z?ziK{?h|Uc!ap2S;;g5X;KLx@q0^Oy6Bu%mmLQe`C=o`i5b uWZ1C2#ZK&xx5C?&tF3p|CrqF8`WAEEk2N8C8b7&#oagE4=d#Wzp$P!7ibg#E literal 0 HcmV?d00001 diff --git a/addons/post_processing/assets/ascii.png.import b/addons/post_processing/assets/ascii.png.import new file mode 100644 index 0000000..be17bfa --- /dev/null +++ b/addons/post_processing/assets/ascii.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://5rj5tlylm7bt" +path="res://.godot/imported/ascii.png-152231094f5e4e2669cec888e3c259a5.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/post_processing/assets/ascii.png" +dest_files=["res://.godot/imported/ascii.png-152231094f5e4e2669cec888e3c259a5.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/post_processing/assets/lens_aura.png b/addons/post_processing/assets/lens_aura.png new file mode 100644 index 0000000000000000000000000000000000000000..e97e394a7e1b867463fe5da8032785f567194b10 GIT binary patch literal 20293 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 literal 0 HcmV?d00001 diff --git a/addons/post_processing/assets/lens_aura.png.import b/addons/post_processing/assets/lens_aura.png.import new file mode 100644 index 0000000..c91b123 --- /dev/null +++ b/addons/post_processing/assets/lens_aura.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://3ee7ii2w44gd" +path="res://.godot/imported/lens_aura.png-e27f19e14a0272728e7b44bd21dd8800.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/post_processing/assets/lens_aura.png" +dest_files=["res://.godot/imported/lens_aura.png-e27f19e14a0272728e7b44bd21dd8800.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/post_processing/assets/lens_divine.png b/addons/post_processing/assets/lens_divine.png new file mode 100644 index 0000000000000000000000000000000000000000..b0f98381755d1e35387c500aec15a97544584c22 GIT binary patch literal 26290 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�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≫VK;ly>Erk~y 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 literal 0 HcmV?d00001 diff --git a/addons/post_processing/assets/lens_divine.png.import b/addons/post_processing/assets/lens_divine.png.import new file mode 100644 index 0000000..4dcba9f --- /dev/null +++ b/addons/post_processing/assets/lens_divine.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dhlg318yf5dvo" +path="res://.godot/imported/lens_divine.png-f89592ebc844543be1487a3ee051ee93.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/post_processing/assets/lens_divine.png" +dest_files=["res://.godot/imported/lens_divine.png-f89592ebc844543be1487a3ee051ee93.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/post_processing/assets/lens_flare.gd b/addons/post_processing/assets/lens_flare.gd new file mode 100644 index 0000000..ce5c59c --- /dev/null +++ b/addons/post_processing/assets/lens_flare.gd @@ -0,0 +1,35 @@ +extends CanvasLayer + +# In your main scene script + +var camera = null +var light_source = null +var light_pos_world = null +var screen_pos = null +var light_pos_screen = null +var material = null + +func _ready(): + # Get camera node automatically based on type + camera = get_tree().get_root().find_child("Camera3D", true, true) # Searches entire scene tree + if not camera: + print("Warning: No Camera node found in scene!") + return + + # Get first light node (adjust if you need a specific light) + light_source = get_tree().get_root().find_child("Light3D", true, true) # Searches entire scene tree + if not light_source: + print("Warning: No Light node found in scene!") + return + +func _physics_process(delta): + if not camera or not light_source: + return # Skip if camera or light not found + + # Calculate and set light position as before + light_pos_world = light_source.global_transform.origin + screen_pos = camera.project_world_ray(light_pos_world) + light_pos_screen = screen_pos / screen_pos.w + + material = $data.material + material.set_uniform("LightPositionWorldSpace", light_pos_screen) diff --git a/addons/post_processing/node/children/Bloom.tscn b/addons/post_processing/node/children/Bloom.tscn deleted file mode 100644 index c731f15..0000000 --- a/addons/post_processing/node/children/Bloom.tscn +++ /dev/null @@ -1,21 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://c26geci666vfd"] - -[ext_resource type="Shader" path="res://addons/post_processing/shaders/bloom.gdshader" id="1_eorxe"] - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_s3kyv"] -shader = ExtResource("1_eorxe") -shader_parameter/blur_type = 1 -shader_parameter/blur_amount = 16 -shader_parameter/blur_radius = 1.0 -shader_parameter/blur_direction = Vector2(1, 1) - -[node name="Bloom" type="CanvasLayer"] -layer = 100 - -[node name="ColorRect" type="ColorRect" parent="."] -material = SubResource("ShaderMaterial_s3kyv") -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 diff --git a/addons/post_processing/node/children/ChromaticAberration.tscn b/addons/post_processing/node/children/ChromaticAberration.tscn index 07a7c04..8d66993 100644 --- a/addons/post_processing/node/children/ChromaticAberration.tscn +++ b/addons/post_processing/node/children/ChromaticAberration.tscn @@ -4,7 +4,7 @@ [sub_resource type="ShaderMaterial" id="ShaderMaterial_ke5y5"] shader = ExtResource("1_qxjen") -shader_parameter/offset = 1.0 +shader_parameter/offset = 5.23 [node name="ChromaticAberration" type="CanvasLayer"] layer = 102 @@ -16,3 +16,4 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +mouse_filter = 2 diff --git a/addons/post_processing/node/children/analog_monitor.tscn b/addons/post_processing/node/children/analog_monitor.tscn index 8316f71..eacf31a 100644 --- a/addons/post_processing/node/children/analog_monitor.tscn +++ b/addons/post_processing/node/children/analog_monitor.tscn @@ -26,3 +26,4 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +mouse_filter = 2 diff --git a/addons/post_processing/node/children/ascii.tscn b/addons/post_processing/node/children/ascii.tscn new file mode 100644 index 0000000..59f0ff0 --- /dev/null +++ b/addons/post_processing/node/children/ascii.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=4 format=3 uid="uid://k8tnsut5pohj"] + +[ext_resource type="Shader" path="res://addons/post_processing/shaders/ascii.gdshader" id="1_bp3vh"] +[ext_resource type="Texture2D" uid="uid://5rj5tlylm7bt" path="res://addons/post_processing/assets/ascii.png" id="2_qs7p5"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_ppj3i"] +shader = ExtResource("1_bp3vh") +shader_parameter/ascii_size = Vector2(5, 10) +shader_parameter/available_columns = 10 +shader_parameter/max_columns = 16 +shader_parameter/ascii_tex = ExtResource("2_qs7p5") + +[node name="Ascii" type="CanvasLayer"] +layer = 99 +visible = false + +[node name="data" type="ColorRect" parent="."] +material = SubResource("ShaderMaterial_ppj3i") +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 diff --git a/addons/post_processing/node/children/bloom.tscn b/addons/post_processing/node/children/bloom.tscn new file mode 100644 index 0000000..fe6ab3e --- /dev/null +++ b/addons/post_processing/node/children/bloom.tscn @@ -0,0 +1,38 @@ +[gd_scene load_steps=3 format=3 uid="uid://dvpfe511myfg5"] + +[ext_resource type="Shader" path="res://addons/post_processing/shaders/bloom.gdshader" id="1_qyxdw"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_qv2yl"] +shader = ExtResource("1_qyxdw") +shader_parameter/BlurAmount = null +shader_parameter/FlareThreshold = null +shader_parameter/Flares = null +shader_parameter/FlareSpacing = null +shader_parameter/Intensity = null +shader_parameter/Saturation_ = null +shader_parameter/FalloffStart = null +shader_parameter/FalloffEnd = null + +[node name="Bloom" type="CanvasLayer"] + +[node name="SubViewportContainer" type="SubViewportContainer" parent="."] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +stretch = true + +[node name="SubViewport" type="SubViewport" parent="SubViewportContainer"] +handle_input_locally = false +size = Vector2i(1152, 648) +render_target_update_mode = 4 + +[node name="TextureRect" type="ColorRect" parent="."] +z_index = 105 +material = SubResource("ShaderMaterial_qv2yl") +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 diff --git a/addons/post_processing/node/children/blur.tscn b/addons/post_processing/node/children/blur.tscn index 4d4d138..6b434b2 100644 --- a/addons/post_processing/node/children/blur.tscn +++ b/addons/post_processing/node/children/blur.tscn @@ -4,10 +4,11 @@ [sub_resource type="ShaderMaterial" id="ShaderMaterial_efbmf"] shader = ExtResource("1_6v1pv") -shader_parameter/lod = 1.0 +shader_parameter/lod = 4.615 [node name="Blur" type="CanvasLayer"] layer = 101 +visible = false [node name="data" type="ColorRect" parent="."] material = SubResource("ShaderMaterial_efbmf") @@ -16,3 +17,4 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +mouse_filter = 2 diff --git a/addons/post_processing/node/children/circular_waves.tscn b/addons/post_processing/node/children/circular_waves.tscn index 9921fb6..989a8b8 100644 --- a/addons/post_processing/node/children/circular_waves.tscn +++ b/addons/post_processing/node/children/circular_waves.tscn @@ -27,3 +27,4 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +mouse_filter = 2 diff --git a/addons/post_processing/node/children/fish_eye.tscn b/addons/post_processing/node/children/fish_eye.tscn index 35a2451..bf97bd7 100644 --- a/addons/post_processing/node/children/fish_eye.tscn +++ b/addons/post_processing/node/children/fish_eye.tscn @@ -4,10 +4,16 @@ [sub_resource type="ShaderMaterial" id="ShaderMaterial_v56sw"] shader = ExtResource("1_eks6e") -shader_parameter/effect_amount = 0.0 +shader_parameter/aspect = 1.0 +shader_parameter/distortion = 1.0 +shader_parameter/radius = 1.0 +shader_parameter/alpha = 1.0 +shader_parameter/crop = 1.0 +shader_parameter/crop_color = Color(0, 0, 0, 1) [node name="FishEye" type="CanvasLayer"] layer = 103 +visible = false [node name="data" type="ColorRect" parent="."] material = SubResource("ShaderMaterial_v56sw") @@ -16,3 +22,4 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +mouse_filter = 2 diff --git a/addons/post_processing/node/children/glitch.tscn b/addons/post_processing/node/children/glitch.tscn index 9e4fbba..a4edafd 100644 --- a/addons/post_processing/node/children/glitch.tscn +++ b/addons/post_processing/node/children/glitch.tscn @@ -12,6 +12,7 @@ shader_parameter/colorOffsetIntensity = 1.3 [node name="Glitch" type="CanvasLayer"] layer = 104 +visible = false [node name="data" type="ColorRect" parent="."] material = SubResource("ShaderMaterial_gdr74") @@ -20,3 +21,4 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +mouse_filter = 2 diff --git a/addons/post_processing/node/children/grain.tscn b/addons/post_processing/node/children/grain.tscn index 534942c..670d9ea 100644 --- a/addons/post_processing/node/children/grain.tscn +++ b/addons/post_processing/node/children/grain.tscn @@ -3,8 +3,8 @@ [ext_resource type="Shader" path="res://addons/post_processing/shaders/grain.gdshader" id="1_wos36"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_wb4vw"] +render_priority = 0 shader = ExtResource("1_wos36") -shader_parameter/strength = 75.0 [node name="Grain" type="CanvasLayer"] visible = false @@ -16,3 +16,4 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +mouse_filter = 2 diff --git a/addons/post_processing/node/children/outline.tscn b/addons/post_processing/node/children/outline.tscn index eedbfc2..41833d5 100644 --- a/addons/post_processing/node/children/outline.tscn +++ b/addons/post_processing/node/children/outline.tscn @@ -9,6 +9,7 @@ shader_parameter/threshold = 0.0 shader_parameter/blend = 0.1 [node name="Outline" type="CanvasLayer"] +visible = false [node name="data" type="ColorRect" parent="."] material = SubResource("ShaderMaterial_yuki3") @@ -17,3 +18,4 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +mouse_filter = 2 diff --git a/addons/post_processing/node/children/screen_shake.tscn b/addons/post_processing/node/children/screen_shake.tscn index a4ef448..d7a8f58 100644 --- a/addons/post_processing/node/children/screen_shake.tscn +++ b/addons/post_processing/node/children/screen_shake.tscn @@ -19,3 +19,4 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +mouse_filter = 2 diff --git a/addons/post_processing/node/children/speed_lines.tscn b/addons/post_processing/node/children/speed_lines.tscn index d9385f9..ed52456 100644 --- a/addons/post_processing/node/children/speed_lines.tscn +++ b/addons/post_processing/node/children/speed_lines.tscn @@ -33,3 +33,4 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +mouse_filter = 2 diff --git a/addons/post_processing/node/children/vignette.tscn b/addons/post_processing/node/children/vignette.tscn index 96c2940..a6259aa 100644 --- a/addons/post_processing/node/children/vignette.tscn +++ b/addons/post_processing/node/children/vignette.tscn @@ -9,6 +9,7 @@ shader_parameter/vignette_opacity = 1.0 shader_parameter/vignette_rgb = Color(0, 0, 0, 1) [node name="Vignette" type="CanvasLayer"] +visible = false [node name="data" type="ColorRect" parent="."] material = SubResource("ShaderMaterial_jiuwk") @@ -17,3 +18,4 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +mouse_filter = 2 diff --git a/addons/post_processing/node/post_process.gd b/addons/post_processing/node/post_process.gd index f9e6a59..2123278 100644 --- a/addons/post_processing/node/post_process.gd +++ b/addons/post_processing/node/post_process.gd @@ -2,6 +2,10 @@ extends CanvasLayer @export_category("Post Process") +@export var reload: bool +@export_category("ASCII (No Color)") +@export var ASCII: bool +@export var ASCIISize: Vector2 = Vector2(4,9) @export_category("Chromatic Aberration") @export var ChromaticAberration: bool @export var StrenghtCA: float = 1 @@ -10,7 +14,12 @@ extends CanvasLayer @export_range(0.0, 5) var L_O_D = 1.0 @export_category("Fish Eye") @export var FishEye: bool -@export_range(-2.5, 2.5) var FishEyeAmount: float +@export var FishEyeAspect = 1.0 +@export var FishEyeDistortion = 1.0 +@export var FishEyeRadius = 1.0 +@export var FishEyeAlpha = 1.0 +@export var FishEyeCrop = 1.0 +@export var FishEyeCropColor = Color.BLACK @export_category("Vignette") @export var Vignette: bool @export var VignetteIntensity = 0.4 @@ -66,7 +75,12 @@ func _update_shaders(): data.material.set_shader_parameter("lod", L_O_D) elif child.name == "FishEye": var data = child.get_child(0) - data.material.set_shader_parameter("effect_amount", FishEyeAmount) + data.material.set_shader_parameter("aspect", FishEyeAspect) + data.material.set_shader_parameter("distortion", FishEyeDistortion) + data.material.set_shader_parameter("radius", FishEyeRadius) + data.material.set_shader_parameter("alpha", FishEyeAlpha) + data.material.set_shader_parameter("crop", FishEyeCrop) + data.material.set_shader_parameter("crop_color", FishEyeCropColor) elif child.name == "Vignette": var data = child.get_child(0) data.material.set_shader_parameter("vignette_intensity", VignetteIntensity) @@ -104,7 +118,9 @@ func _update_shaders(): data.material.set_shader_parameter("line_count", SpeedLinesCount) data.material.set_shader_parameter("line_density", SpeedLineDensity) data.material.set_shader_parameter("animation_speed", SpeedLineSpeed) - + elif child.name == "Ascii": + var data = child.get_child(0) + data.material.set_shader_parameter("ascii_size", ASCIISize) if ChromaticAberration == true: for child in get_children(): @@ -194,7 +210,14 @@ func _update_shaders(): for child in get_children(): if child.name.begins_with("SpeedLines"): child.visible = false - + if ASCII == true: + for child in get_children(): + if child.name.begins_with("Ascii"): + child.visible = true + else: + for child in get_children(): + if child.name.begins_with("Ascii"): + child.visible = false @@ -233,6 +256,9 @@ func _enter_tree(): var spd_lin = load("res://addons/post_processing/node/children/speed_lines.tscn") add_child(spd_lin.instantiate()) print("created SDP_LIN") + var ascii = load("res://addons/post_processing/node/children/ascii.tscn") + add_child(ascii.instantiate()) + print("created ASCII") _update_shaders() @@ -243,3 +269,6 @@ func _enter_tree(): func _process(delta): if Engine.is_editor_hint() or !Engine.is_editor_hint(): _update_shaders() + if reload == true: + _update_shaders() + reload = false diff --git a/addons/post_processing/post_processing.zip b/addons/post_processing/post_processing.zip deleted file mode 100644 index 5c4a005bea772155f5029a686157a2a419fcddba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23204 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 diff --git a/addons/post_processing/shaders/CLREDIT.gdshaderinc b/addons/post_processing/shaders/CLREDIT.gdshaderinc new file mode 100644 index 0000000..e69de29 diff --git a/addons/post_processing/shaders/LensFlares.gdshader b/addons/post_processing/shaders/LensFlares.gdshader new file mode 100644 index 0000000..e908e46 --- /dev/null +++ b/addons/post_processing/shaders/LensFlares.gdshader @@ -0,0 +1,93 @@ +shader_type canvas_item; +render_mode blend_mix; + +uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; + +uniform vec2 sun_position = vec2(0.0); +uniform vec3 tint = vec3(1.4,1.2,1.0); +uniform sampler2D noise_texture; + +float noise_float(float t, vec2 texResolution) +{ + return texture(noise_texture,vec2(t,0.0)/texResolution).x; +} +float noise_vec2(vec2 t, vec2 texResolution) +{ + return texture(noise_texture,t/texResolution).x; +} + +vec3 lensflare(vec2 uv,vec2 pos, vec2 texResolution) +{ + vec2 main = uv-pos; + vec2 uvd = uv*(length(uv)); + + float ang = atan(main.x,main.y); + float dist = length(main); + dist = pow(dist,0.1); + + float n = noise_vec2(vec2(ang*16.0,dist*32.0), texResolution); + + // Do not need an artificial sun + //float f0 = 1.0/(length(uv-pos)*16.0+1.0); + //f0 = f0 + f0*(sin(noise_float(sin(ang*2.+pos.x)*4.0 - cos(ang*3.+pos.y), texResolution)*16.)*.1 + dist*.1 + .8); + + float f1 = max(0.01-pow(length(uv+1.2*pos),1.9),.0)*7.0; + + float f2 = max(1.0/(1.0+32.0*pow(length(uvd+0.8*pos),2.0)),.0)*00.25; + float f22 = max(1.0/(1.0+32.0*pow(length(uvd+0.85*pos),2.0)),.0)*00.23; + float f23 = max(1.0/(1.0+32.0*pow(length(uvd+0.9*pos),2.0)),.0)*00.21; + + vec2 uvx = mix(uv,uvd,-0.5); + + float f4 = max(0.01-pow(length(uvx+0.4*pos),2.4),.0)*6.0; + float f42 = max(0.01-pow(length(uvx+0.45*pos),2.4),.0)*5.0; + float f43 = max(0.01-pow(length(uvx+0.5*pos),2.4),.0)*3.0; + + uvx = mix(uv,uvd,-.4); + + float f5 = max(0.01-pow(length(uvx+0.2*pos),5.5),.0)*2.0; + float f52 = max(0.01-pow(length(uvx+0.4*pos),5.5),.0)*2.0; + float f53 = max(0.01-pow(length(uvx+0.6*pos),5.5),.0)*2.0; + + uvx = mix(uv,uvd,-0.5); + + float f6 = max(0.01-pow(length(uvx-0.3*pos),1.6),.0)*6.0; + float f62 = max(0.01-pow(length(uvx-0.325*pos),1.6),.0)*3.0; + float f63 = max(0.01-pow(length(uvx-0.35*pos),1.6),.0)*5.0; + + vec3 c = vec3(.0); + + c.r+=f2+f4+f5+f6; c.g+=f22+f42+f52+f62; c.b+=f23+f43+f53+f63; + c = c*1.3 - vec3(length(uvd)*.05); + + // Do not need an artificial sun + //c+=vec3(f0); + + return c; +} + +vec3 cc(vec3 color, float factor,float factor2) // color modifier +{ + float w = color.x+color.y+color.z; + return mix(color,vec3(w)*factor,w*factor2); +} + +void fragment() +{ + vec2 texResolution = 1.0 / TEXTURE_PIXEL_SIZE; + vec2 resolution = 1.0 / SCREEN_PIXEL_SIZE; + + vec2 uv = FRAGCOORD.xy / resolution.xy - 0.5; + uv.x *= resolution.x/resolution.y; //fix aspect ratio + vec2 mouse = (sun_position.xy / resolution.xy) - vec2(0.5, 0.5); + mouse.x *= resolution.x / resolution.y; //fix aspect ratio + + vec4 previousColor = texture(SCREEN_TEXTURE, SCREEN_UV); + + vec3 color = previousColor.rgb; + + color += tint * lensflare(uv, mouse.xy, texResolution); + color -= noise_vec2(FRAGCOORD.xy, texResolution)*.015; + color = cc(color,.5,.1); + COLOR = vec4(color,1.0); +} \ No newline at end of file diff --git a/addons/post_processing/shaders/ascii.gdshader b/addons/post_processing/shaders/ascii.gdshader new file mode 100644 index 0000000..ad2baa1 --- /dev/null +++ b/addons/post_processing/shaders/ascii.gdshader @@ -0,0 +1,37 @@ +/* + アスキー文字エフェクトシェーダー by あるる(きのもと 結衣) @arlez80 + Ascii Effect Shader by Yui Kinomoto @arlez80 + + MIT License +*/ + +shader_type canvas_item; +render_mode unshaded; + +uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; + +const vec3 MONOCHROME_SCALE = vec3( 0.298912, 0.586611, 0.114478 ); + +uniform sampler2D ascii_tex : source_color; +uniform vec2 ascii_size = vec2( 8.0, 16.0 ); +uniform int available_columns = 10; +uniform int max_columns = 16; + +void fragment( ) +{ + vec2 screen_uv = floor( SCREEN_UV / SCREEN_PIXEL_SIZE / ascii_size ) * SCREEN_PIXEL_SIZE * ascii_size; + vec2 diff = ascii_size * SCREEN_PIXEL_SIZE; + vec4 color = ( + textureLod( SCREEN_TEXTURE, screen_uv, 0.0 ) + + textureLod( SCREEN_TEXTURE, screen_uv + vec2( 0.0, diff.y ), 0.0 ) + + textureLod( SCREEN_TEXTURE, screen_uv + vec2( diff.x, 0.0 ), 0.0 ) + + textureLod( SCREEN_TEXTURE, screen_uv + diff, 0.0 ) + ) / 4.0; + + vec2 ascii_uv = fract( SCREEN_UV / SCREEN_PIXEL_SIZE / ascii_size ); + ascii_uv.x = ( 1.0 - ascii_uv.x ) / float( max_columns ); + float col = floor( dot( color.rgb, MONOCHROME_SCALE ) * float( available_columns ) ) / float( available_columns ); + + COLOR = texture( ascii_tex, ascii_uv + vec2( col * ( float( available_columns ) / float( max_columns ) ), 0.0 ) ); +} + diff --git a/addons/post_processing/shaders/bloom.gdshader b/addons/post_processing/shaders/bloom.gdshader index 9e29c94..6139b44 100644 --- a/addons/post_processing/shaders/bloom.gdshader +++ b/addons/post_processing/shaders/bloom.gdshader @@ -1,135 +1,53 @@ shader_type canvas_item; +render_mode blend_add; -uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; +#include "CLREDIT.gdshaderinc" +uniform lowp sampler2D Screen_Sample : hint_screen_texture, filter_linear_mipmap_anisotropic; +uniform lowp sampler2D FlareTex; // Texture for the lens flare -vec4 texture_xorgaussian(sampler2D tex, vec2 uv, vec2 pixel_size, float blurriness, int iterations, int quality){ - float pi = 6.28; - - vec2 radius = blurriness / (1.0 / pixel_size).xy; - vec4 blurred_tex = texture(tex, uv); - - for(float d = 0.0; d < pi; d += pi / float(iterations)){ - for( float i = 1.0 / float(quality); i <= 1.0; i += 1.0 / float(quality) ){ - vec2 directions = uv + vec2(cos(d), sin(d)) * radius * i; - blurred_tex += texture(tex, directions); - } - } - blurred_tex /= float(quality) * float(iterations) + 1.0; - - return blurred_tex; -} +uniform float BlurAmount; // Adjust blur intensity +uniform float FlareThreshold; // Threshold for brightness to consider flare +uniform int Flares; // Number of lens flares +uniform float FlareSpacing; // Separation between flares +uniform float Intensity; // Overall intensity of the effect +uniform float Saturation_; // Adjust color saturation (optional) +uniform float FalloffStart; // Controls falloff start distance from center (0-1) +uniform float FalloffEnd; // Controls falloff end distance from center (0-1) -// Experience-Monks' fast gaussian blur function -// Link: https://github.com/Experience-Monks/glsl-fast-gaussian-blur/ -// -// BLUR ITERATIONS (Default 16.0 - More is better but slower) -// BLUR DIRECTION (Direction in which the blur is apllied, use vec2(1, 0) for first pass and vec2(0, 1) for second pass) -// -// Desc.: ACTUALLY PRETTY SLOW but still pretty good for custom cinematic -// bloom effects, since this needs render 2 passes -vec4 texture_monksgaussian_multipass(sampler2D tex, vec2 uv, vec2 pixel_size, int iterations, vec2 direction){ - vec4 blurred_tex = vec4(0.0); - vec2 resolution = 1.0 / pixel_size; - - for (int i=0; i < iterations; i++){ - float size = float(iterations - i); - - vec2 off1 = vec2(1.3846153846) * (direction * size); - vec2 off2 = vec2(3.2307692308) * (direction * size); +void fragment() { + //UV = SCREEN_UV; - blurred_tex += texture(tex, uv) * 0.2270270270; - blurred_tex += texture(tex, uv + (off1 / resolution)) * 0.3162162162; - blurred_tex += texture(tex, uv - (off1 / resolution)) * 0.3162162162; - blurred_tex += texture(tex, uv + (off2 / resolution)) * 0.0702702703; - blurred_tex += texture(tex, uv - (off2 / resolution)) * 0.0702702703; - } - - blurred_tex /= float(iterations) + 1.0; - - return blurred_tex; -} + // Sample the scene color + vec3 SceneColor = texture(Screen_Sample, UV).rgb; -// u/_NoDev_'s gaussian blur function -// Discussion Link: https://www.reddit.com/r/godot/comments/klgfo9/help_with_shaders_in_gles2/ -// Code Link: https://postimg.cc/7JDJw80d -// -// BLUR BLURRINESS (Default 8.0 - More is better but slower) -// BLUR RADIUS (Default 1.5) -// BLUR DIRECTION (Direction in which the blur is apllied, use vec2(1, 0) for first pass and vec2(0, 1) for second pass) -// -// Desc.: Really fast and GOOD FOR MOST CASES, but might NOT RUN IN THE WEB! -// use 'texture_xorgaussian' instead if you found any issues. -vec4 texture_nodevgaussian_singlepass(sampler2D tex, vec2 uv, vec2 pixel_size, float blurriness, float radius){ - float pi = 3.14; - float n = 0.0015; - - vec4 blurred_tex = vec4(0); - - float weight; - for (float i = -blurriness; i <= blurriness; i++){ - float d = i / pi; - vec2 anchor = vec2(cos(d), sin(d)) * radius * i; - vec2 directions = uv + pixel_size * anchor; - blurred_tex += texture(tex, directions) * n; - if (i <= 0.0) {n += 0.0015; } - if (i > 0.0) {n -= 0.0015; } - weight += n; - } - - float norm = 1.0 / weight; - blurred_tex *= norm; - return blurred_tex; -} -vec4 texture_nodevgaussian_multipass(sampler2D tex, vec2 uv, vec2 pixel_size, float blurriness, vec2 direction){ - float n = 0.0015; - - vec4 blurred_tex = vec4(0); - - float weight; - for (float i = -blurriness; i <= blurriness; i++){ - vec2 directions = uv + pixel_size * (direction * i); - blurred_tex += texture(tex, directions) * n; - if (i <= 0.0) {n += 0.0015; } - if (i > 0.0) {n -= 0.0015; } - weight += n; - } - - float norm = 1.0 / weight; - blurred_tex *= norm; - return blurred_tex; -} + // Calculate direction vector from screen center (static) + vec2 FlareDir = vec2(0.5) - UV; + + // Accumulate flare color with falloff + vec3 FinalFlare = vec3(0.0); + for (int i = 0; i < Flares; ++i) { + // Offset UV based on flare direction and index + vec2 SampleUV = fract(UV + FlareDir * (BlurAmount + vec2(float(i) * FlareSpacing))); + // Sample the scene with blur in flare direction + vec3 BlurredScene = texture(Screen_Sample, SampleUV, BlurAmount).rgb; -uniform int blur_type = 1; -uniform int blur_amount = 16; -uniform float blur_radius = 1; -uniform vec2 blur_direction = vec2(1, 1); -void fragment(){ - vec2 uv = FRAGCOORD.xy / (1.0 / SCREEN_PIXEL_SIZE).xy; - - if (blur_type == 0) - { - vec4 xorgaussian = texture_xorgaussian(SCREEN_TEXTURE, uv, SCREEN_PIXEL_SIZE, float(blur_amount), 16, 4); - COLOR = xorgaussian; - } - else if (blur_type == 1) - { - vec4 monksgaussian_multipass = texture_monksgaussian_multipass(SCREEN_TEXTURE, uv, SCREEN_PIXEL_SIZE, blur_amount, blur_direction); - COLOR = monksgaussian_multipass; - } - else if (blur_type == 2) - { - vec4 nodevgaussian_singlepass = texture_nodevgaussian_singlepass(SCREEN_TEXTURE, uv, SCREEN_PIXEL_SIZE, float(blur_amount), blur_radius); - COLOR = nodevgaussian_singlepass; - } - else if (blur_type == 3) - { - vec4 nodevgaussian_multipass = texture_nodevgaussian_multipass(SCREEN_TEXTURE, uv, SCREEN_PIXEL_SIZE, float(blur_amount), blur_direction); - COLOR = nodevgaussian_multipass; - } - else - { - COLOR = texture(SCREEN_TEXTURE, uv); - } -} \ No newline at end of file + // Apply threshold to filter out dark areas + BlurredScene = ApplyThreshold(BlurredScene, FlareThreshold); // Adjust threshold as needed (optional) + + // Calculate distance from center for falloff + float Dist = distance(SampleUV, vec2(0.5)); + float Falloff = smoothstep(FalloffStart, FalloffEnd, Dist); + + // Apply weight and accumulate flare color + FinalFlare += BlurredScene * Falloff; + } + + // Apply lens flare texture + FinalFlare *= texture(FlareTex, UV).rgb; + + // Apply intensity and optional saturation adjustment + COLOR.rgb = FinalFlare * Intensity; + COLOR.rgb = Saturation(COLOR.rgb, Saturation_); // Adjust saturation as needed (optional) +} diff --git a/addons/post_processing/shaders/fish_eye.gdshader b/addons/post_processing/shaders/fish_eye.gdshader index cdb6b9f..8ccfe15 100644 --- a/addons/post_processing/shaders/fish_eye.gdshader +++ b/addons/post_processing/shaders/fish_eye.gdshader @@ -1,49 +1,49 @@ +///////////////////////////////// +// 2D Radial Distortion Shader // +///////////////////////////////// + +// Screen space shader for Godot, based on: https://gist.github.com/aggregate1166877/a889083801d67917c26c12a98e7f57a7 + shader_type canvas_item; + +uniform float aspect = 1.0; +uniform float distortion = 1.0; +uniform float radius = 1.0; +uniform float alpha = 1.0; +uniform float crop = 1.0; +uniform vec4 crop_color : source_color = vec4(0,0,0,1); uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap; +vec2 distort(vec2 p) +{ + float d = length(p); + float z = sqrt(distortion + d * d * -distortion); + float r = atan(d, z) / 3.1415926535; + float phi = atan(p.y, p.x); + return vec2(r * cos(phi) * (1.0 / aspect) + 0.5, r * sin(phi) + 0.5); +} + +void fragment() +{ + vec2 xy = (SCREEN_UV * 2.0 - 1.0); // move origin of UV coordinates to center of screen + + xy = vec2(xy.x * aspect, xy.y); // adjust aspect ratio + + float d = length(xy); // distance from center + + vec4 tex; + + if (d < radius) + { + xy = distort(xy); + tex = texture(SCREEN_TEXTURE, xy); + COLOR = tex; + COLOR.a = alpha; + } -uniform float effect_amount : hint_range(-2.5, 2.2) = 1.0; - -void fragment(){ - vec2 iResolution = 1.0 / SCREEN_PIXEL_SIZE; - vec4 fragCoord = FRAGCOORD; - - vec2 p = fragCoord.xy / iResolution.x; - - float prop = iResolution.x / iResolution.y; - - vec2 m = vec2(0.5, 0.5 / prop); - - vec2 d = p - m; - - float r = sqrt(dot(d, d)); - - float power = effect_amount; - - float bind; - - if (power > 0.0) - bind = sqrt(dot(m, m)); - else{ - if (prop < 1.0) - bind = m.x; - else - bind = m.y; + // radial crop + if (d > crop) + { + COLOR = crop_color; } - - vec2 uv; - - //fisheye - if (power > 0.0) - uv = m + normalize(d) * tan(r * power) * bind / tan(bind * power); - else if (power < 0.0) - uv = m + normalize(d) * atan(r * -power, 10.0) * bind / atan(-power * bind * 10.0); - //no effect for power = 1.0 - else - uv = p; - uv.y *= prop; - - vec3 col = texture(SCREEN_TEXTURE, uv).rgb; - - COLOR = vec4(col, 1.0); } \ No newline at end of file diff --git a/addons/post_processing/shaders/water.gdshader b/addons/post_processing/shaders/water.gdshader new file mode 100644 index 0000000..6c4a921 --- /dev/null +++ b/addons/post_processing/shaders/water.gdshader @@ -0,0 +1,48 @@ +shader_type canvas_item; + +uniform float first_stage : hint_range(0.0, 1.0) = 0.5; +uniform float first_smooth : hint_range(0.0, 1.0) = 0.0; // Lengthens the color transition +uniform float second_stage : hint_range(0.0, 1.0) = 0.0; // If left at 0, only level 1 is used. +uniform float second_smooth : hint_range(0.0, 1.0) = 0.0; +uniform float min_light : hint_range(0.0, 1.0) = 0.0; +uniform float mid_light : hint_range(0.0, 1.0) = 0.0; +uniform float max_light : hint_range(0.0, 1.0) = 1.0; +uniform float obj_light_add : hint_range(0.0, 1.0) = 0.0; + +float light_calc(float light_strength, float would_be_strength) { + float target_strength = light_strength + would_be_strength * obj_light_add; + if (target_strength == 0.0) {target_strength = 0.000001;} + if (would_be_strength == 0.0) {would_be_strength = 1.0;} + return(target_strength / would_be_strength); +} + +void light() { + float level_1 = first_stage; + float level_1_smooth = first_smooth; + float level_2 = second_stage; + float level_2_smooth = second_smooth; + + float mid_range_light = mid_light; + if (mid_light == 0.0) { mid_range_light = max_light * 0.5; } + vec3 light_normal = normalize(vec3(LIGHT_VEC, -LIGHT_HEIGHT)); + float would_be_strength = max(dot(-light_normal, NORMAL), 0.0); + if (would_be_strength > level_1 && level_2 == 0.0 ) { + float diff = smoothstep(level_1, (level_1 + level_1_smooth), would_be_strength) + min_light; + if (diff >= max_light) {diff = max_light;} + LIGHT *= light_calc(diff, would_be_strength); + } else if (would_be_strength > level_1 && would_be_strength < level_2 && level_2 != 0.0 ) { + float diff = smoothstep(level_1, (level_1 + level_1_smooth), would_be_strength) + min_light; + if (diff >= mid_range_light ) {diff = mid_range_light;} + LIGHT *= light_calc(diff, would_be_strength); + } else if (would_be_strength >= level_2 && level_2 != 0.0 ) { + float diff = smoothstep(level_2, (level_2 + level_2_smooth), would_be_strength) + mid_range_light; + if (diff < mid_range_light ) {diff = mid_range_light;} + if (diff >= max_light) {diff = max_light;} + LIGHT *= light_calc(diff, would_be_strength); + } else { + if (min_light != 0.0) { + LIGHT_VEC = -NORMAL.xy*length(LIGHT_VEC); + } + LIGHT *= min_light; + } +} \ No newline at end of file