123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- [gd_scene load_steps=11 format=4 uid="uid://dhxp5shmhixr3"]
- [ext_resource type="Script" path="res://sources/effects/Lighting.gd" id="1_75w83"]
- [sub_resource type="Shader" id="Shader_ypmb7"]
- resource_local_to_scene = true
- code = "shader_type canvas_item;
- render_mode unshaded;
- uniform mat4 global_transform;
- uniform int n_lights = 0;
- uniform vec4 dark_color : source_color = vec4(0.1, 0.08, 0.15, 1.0);
- uniform vec4 default_light_color : source_color;
- uniform float light_level : hint_range(0.0, 1.0) = 0.0;
- uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap;
- varying vec2 world_position;
- #define MAX_LIGHTS 64
- uniform vec4 light_data[MAX_LIGHTS];
- uniform vec4 color_data[MAX_LIGHTS];
- void vertex()
- {
- world_position = (global_transform * vec4(VERTEX, 0.0, 1.0)).xy;
- }
- void fragment()
- {
- vec2 frag_position = floor(world_position);
- float m_value = 1.0; // 1.0 == dark, 0.0 == light
- vec4 light_color = default_light_color;
- for (int i = 0; i < n_lights; ++i)
- {
- vec4 light_instance = light_data[i];
- vec2 normalized_position = light_instance.xy - frag_position;
- normalized_position.y *= 1.3;
- float squared_dist = dot(normalized_position, normalized_position);
- float squared_radius = light_instance.w * light_instance.w;
- if (squared_dist < squared_radius)
- {
- float dist = squared_dist / squared_radius;
- float value = dist < light_instance.z ? 0.0 : 1.0/light_instance.z*(dist-light_instance.z);
- if (value < m_value)
- {
- vec4 new_color = color_data[i];
- light_color.rgb = mix(light_color.rgb, new_color.rgb, m_value);
- light_color.a = max(light_color.r, new_color.r);
- }
- m_value *= value;
- if (m_value <= 0.0)
- break;
- }
- }
- light_color.rgb = mix(light_color.rgb, dark_color.rgb, max(-0.2, (m_value - 0.5) / 0.5));
- vec4 ambient_color = mix(light_color, dark_color, m_value);
- ambient_color.a *= 1.0 - light_level;
- vec4 screen_color = texture(SCREEN_TEXTURE, SCREEN_UV);
- COLOR = screen_color * ambient_color;
- }
- "
- [sub_resource type="ShaderMaterial" id="ShaderMaterial_os3j6"]
- resource_local_to_scene = true
- shader = SubResource("Shader_ypmb7")
- shader_parameter/global_transform = null
- shader_parameter/n_lights = 0
- shader_parameter/dark_color = Color(0.1, 0.08, 0.15, 1)
- shader_parameter/default_light_color = Color(1, 0.878431, 0.741176, 1)
- shader_parameter/light_level = 0.5
- shader_parameter/light_data = PackedVector4Array()
- shader_parameter/color_data = PackedVector4Array()
- [sub_resource type="ShaderMaterial" id="ShaderMaterial_w6cvu"]
- resource_local_to_scene = true
- shader = SubResource("Shader_ypmb7")
- shader_parameter/global_transform = null
- shader_parameter/n_lights = 0
- shader_parameter/dark_color = Color(0.1, 0.08, 0.15, 1)
- shader_parameter/default_light_color = Color(1, 0.878431, 0.741176, 1)
- shader_parameter/light_level = 0.5
- shader_parameter/light_data = PackedVector4Array()
- shader_parameter/color_data = PackedVector4Array()
- [sub_resource type="ShaderMaterial" id="ShaderMaterial_r5sve"]
- resource_local_to_scene = true
- shader = SubResource("Shader_ypmb7")
- shader_parameter/global_transform = null
- shader_parameter/n_lights = 0
- shader_parameter/dark_color = Color(0.1, 0.08, 0.15, 1)
- shader_parameter/default_light_color = Color(1, 0.878431, 0.741176, 1)
- shader_parameter/light_level = 0.5
- shader_parameter/light_data = PackedVector4Array()
- shader_parameter/color_data = PackedVector4Array()
- [sub_resource type="ShaderMaterial" id="ShaderMaterial_2ll4b"]
- resource_local_to_scene = true
- shader = SubResource("Shader_ypmb7")
- shader_parameter/global_transform = null
- shader_parameter/n_lights = 0
- shader_parameter/dark_color = Color(0.1, 0.08, 0.15, 1)
- shader_parameter/default_light_color = Color(1, 0.878431, 0.741176, 1)
- shader_parameter/light_level = 0.5
- shader_parameter/light_data = PackedVector4Array()
- shader_parameter/color_data = PackedVector4Array()
- [sub_resource type="ShaderMaterial" id="ShaderMaterial_30lle"]
- resource_local_to_scene = true
- shader = SubResource("Shader_ypmb7")
- shader_parameter/global_transform = null
- shader_parameter/n_lights = 0
- shader_parameter/dark_color = Color(0.1, 0.08, 0.15, 1)
- shader_parameter/default_light_color = Color(1, 0.878431, 0.741176, 1)
- shader_parameter/light_level = 0.5
- shader_parameter/light_data = PackedVector4Array()
- shader_parameter/color_data = PackedVector4Array()
- [sub_resource type="ShaderMaterial" id="ShaderMaterial_68mh6"]
- resource_local_to_scene = true
- shader = SubResource("Shader_ypmb7")
- shader_parameter/global_transform = null
- shader_parameter/n_lights = 0
- shader_parameter/dark_color = Color(0.1, 0.08, 0.15, 1)
- shader_parameter/default_light_color = Color(1, 0.878431, 0.741176, 1)
- shader_parameter/light_level = 0.5
- shader_parameter/light_data = PackedVector4Array()
- shader_parameter/color_data = PackedVector4Array()
- [sub_resource type="ShaderMaterial" id="ShaderMaterial_ighdq"]
- resource_local_to_scene = true
- shader = SubResource("Shader_ypmb7")
- shader_parameter/global_transform = null
- shader_parameter/n_lights = 0
- shader_parameter/dark_color = Color(0.1, 0.08, 0.15, 1)
- shader_parameter/default_light_color = Color(1, 0.878431, 0.741176, 1)
- shader_parameter/light_level = 0.5
- shader_parameter/light_data = PackedVector4Array()
- shader_parameter/color_data = PackedVector4Array()
- [sub_resource type="ShaderMaterial" id="ShaderMaterial_ebkb4"]
- resource_local_to_scene = true
- shader = SubResource("Shader_ypmb7")
- shader_parameter/global_transform = null
- shader_parameter/n_lights = 0
- shader_parameter/dark_color = Color(0.1, 0.08, 0.15, 1)
- shader_parameter/default_light_color = Color(1, 0.878431, 0.741176, 1)
- shader_parameter/light_level = 0.5
- shader_parameter/light_data = PackedVector4Array()
- shader_parameter/color_data = PackedVector4Array()
- [node name="LightingLayer" type="CanvasLayer"]
- script = ExtResource("1_75w83")
- [node name="GridContainer" type="VBoxContainer" parent="."]
- anchors_preset = 15
- anchor_right = 1.0
- anchor_bottom = 1.0
- grow_horizontal = 2
- grow_vertical = 2
- theme_override_constants/separation = 0
- [node name="HBoxContainer" type="HBoxContainer" parent="GridContainer"]
- layout_mode = 2
- size_flags_vertical = 3
- theme_override_constants/separation = 0
- [node name="ColorRect" type="ColorRect" parent="GridContainer/HBoxContainer"]
- material = SubResource("ShaderMaterial_os3j6")
- layout_mode = 2
- size_flags_horizontal = 3
- size_flags_vertical = 3
- color = Color(0, 0, 0, 1)
- [node name="ColorRect2" type="ColorRect" parent="GridContainer/HBoxContainer"]
- material = SubResource("ShaderMaterial_w6cvu")
- layout_mode = 2
- size_flags_horizontal = 3
- size_flags_vertical = 3
- color = Color(0, 0, 0, 1)
- [node name="ColorRect3" type="ColorRect" parent="GridContainer/HBoxContainer"]
- material = SubResource("ShaderMaterial_r5sve")
- layout_mode = 2
- size_flags_horizontal = 3
- size_flags_vertical = 3
- color = Color(0, 0, 0, 1)
- [node name="ColorRect4" type="ColorRect" parent="GridContainer/HBoxContainer"]
- material = SubResource("ShaderMaterial_2ll4b")
- layout_mode = 2
- size_flags_horizontal = 3
- size_flags_vertical = 3
- color = Color(0, 0, 0, 1)
- [node name="HBoxContainer2" type="HBoxContainer" parent="GridContainer"]
- layout_mode = 2
- size_flags_vertical = 3
- theme_override_constants/separation = 0
- [node name="ColorRect5" type="ColorRect" parent="GridContainer/HBoxContainer2"]
- material = SubResource("ShaderMaterial_30lle")
- layout_mode = 2
- size_flags_horizontal = 3
- size_flags_vertical = 3
- color = Color(0, 0, 0, 1)
- [node name="ColorRect6" type="ColorRect" parent="GridContainer/HBoxContainer2"]
- material = SubResource("ShaderMaterial_68mh6")
- layout_mode = 2
- size_flags_horizontal = 3
- size_flags_vertical = 3
- color = Color(0, 0, 0, 1)
- [node name="ColorRect7" type="ColorRect" parent="GridContainer/HBoxContainer2"]
- material = SubResource("ShaderMaterial_ighdq")
- layout_mode = 2
- size_flags_horizontal = 3
- size_flags_vertical = 3
- color = Color(0, 0, 0, 1)
- [node name="ColorRect8" type="ColorRect" parent="GridContainer/HBoxContainer2"]
- material = SubResource("ShaderMaterial_ebkb4")
- layout_mode = 2
- size_flags_horizontal = 3
- size_flags_vertical = 3
- color = Color(0, 0, 0, 1)
|