From d86a9bfb1018b572e17a30bc037bd409b19b3e4e Mon Sep 17 00:00:00 2001 From: Matteo Sonaglioni Date: Wed, 18 Mar 2026 15:23:50 +0100 Subject: [PATCH] improve lighting - grass shader --- Assets/Textures/noise.tres | 1 + Materials/Grass2.tres | 17 ++- Materials/House.tres | 7 +- Materials/Legno.tres | 7 +- Materials/Water.tres | 26 ++-- Scenes/Chunk_Rotaie/chunk_curva_1.tscn | 32 +++++ Scenes/Chunk_Rotaie/chunk_rettilineo_1.tscn | 13 +- .../Chunk/Campagna/Chunk_C_L_2.tscn | 11 +- .../Chunk/Foresta/Chunk_F_L_2.tscn | 10 ++ Scenes/Gameplay.tscn | 44 +++--- Scenes/MainMap.tscn | 14 +- Shaders/grass_leaves.gdshader | 133 ++++++++++++++++++ Shaders/grass_leaves.gdshader.uid | 1 + Shaders/stylized.gdshader | 109 ++++++++++++++ Shaders/stylized.gdshader.uid | 1 + Shaders/tree_leaves.gdshader | 1 + Shaders/trunk_shader.gdshader | 87 ++++++------ project.godot | 1 - 18 files changed, 419 insertions(+), 96 deletions(-) create mode 100644 Shaders/grass_leaves.gdshader create mode 100644 Shaders/grass_leaves.gdshader.uid create mode 100644 Shaders/stylized.gdshader create mode 100644 Shaders/stylized.gdshader.uid diff --git a/Assets/Textures/noise.tres b/Assets/Textures/noise.tres index fbb1f68..f5c4098 100644 --- a/Assets/Textures/noise.tres +++ b/Assets/Textures/noise.tres @@ -3,6 +3,7 @@ [sub_resource type="FastNoiseLite" id="FastNoiseLite_xa3jw"] noise_type = 3 seed = 1 +frequency = 0.0158 metadata/_preview_in_3d_space_ = true [resource] diff --git a/Materials/Grass2.tres b/Materials/Grass2.tres index df70b4f..d76f4ea 100644 --- a/Materials/Grass2.tres +++ b/Materials/Grass2.tres @@ -1,8 +1,17 @@ [gd_resource type="ShaderMaterial" format=3 uid="uid://cabv225thcqi3"] -[ext_resource type="Shader" uid="uid://co2jw3fnyc6aa" path="res://Shaders/tree_leaves.gdshader" id="1_b31b8"] +[ext_resource type="Shader" uid="uid://cjratw2ndyu8x" path="res://Shaders/grass_leaves.gdshader" id="1_b31b8"] [ext_resource type="Texture2D" uid="uid://32bpa4nk3av1" path="res://Assets/Textures/grass_round.png" id="2_b31b8"] +[sub_resource type="FastNoiseLite" id="FastNoiseLite_xa3jw"] +noise_type = 3 +seed = 1 +metadata/_preview_in_3d_space_ = true + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_0rbw3"] +noise = SubResource("FastNoiseLite_xa3jw") +seamless = true + [resource] render_priority = 0 shader = ExtResource("1_b31b8") @@ -14,11 +23,15 @@ shader_parameter/leaves_scale = 0.65 shader_parameter/rotation_degrees = 180.0 shader_parameter/texture_offset = Vector2(0, 0) shader_parameter/opacity = 1.0 +shader_parameter/color_variance_noise = SubResource("NoiseTexture2D_0rbw3") +shader_parameter/variance_scale = 0.05 +shader_parameter/variance_color = Color(0.3, 0.5, 0.2, 1) +shader_parameter/variance_intensity = 0.4 shader_parameter/snow_color = Color(0.85, 0.9, 0.95, 1) shader_parameter/height_min = 0.0 shader_parameter/height_max = 5.0 shader_parameter/shadow_intensity = 0.6000000285 shader_parameter/highlight_intensity = 0.10000000475 -shader_parameter/light_steps = 10.0 +shader_parameter/light_steps = 8.582000360144999 shader_parameter/random_mix = 0.0150000007125 shader_parameter/cast_shadow_strength = 0.6 diff --git a/Materials/House.tres b/Materials/House.tres index f7ad607..14d925e 100644 --- a/Materials/House.tres +++ b/Materials/House.tres @@ -18,8 +18,9 @@ shader_parameter/step_softness = 0.1 shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1) shader_parameter/shadow_offset = 0.0 shader_parameter/cast_shadow_strength = 0.6 -shader_parameter/specular_size = 20.000000475 -shader_parameter/specular_softness = 0.10000000149012 -shader_parameter/specular_intensity_multiplier = 1.0000000475 +shader_parameter/use_ghibli_glint = true +shader_parameter/glint_color = Color(1, 0.95, 0.85, 1) +shader_parameter/glint_intensity = 3.0000001425 +shader_parameter/glint_sharpness = 7.000000285 shader_parameter/emission_color = Color(0, 0, 0, 1) shader_parameter/emission_energy = 0.0 diff --git a/Materials/Legno.tres b/Materials/Legno.tres index b8dd9f4..513246c 100644 --- a/Materials/Legno.tres +++ b/Materials/Legno.tres @@ -16,8 +16,9 @@ shader_parameter/step_softness = 0.1 shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1) shader_parameter/shadow_offset = 0.0 shader_parameter/cast_shadow_strength = 0.6 -shader_parameter/specular_size = 60.0 -shader_parameter/specular_softness = 0.01 -shader_parameter/specular_intensity_multiplier = 0.5 +shader_parameter/use_ghibli_glint = true +shader_parameter/glint_color = Color(1, 0.95, 0.85, 1) +shader_parameter/glint_intensity = 1.0 +shader_parameter/glint_sharpness = 32.0 shader_parameter/emission_color = Color(0, 0, 0, 1) shader_parameter/emission_energy = 0.0 diff --git a/Materials/Water.tres b/Materials/Water.tres index f46f85d..2a3294c 100644 --- a/Materials/Water.tres +++ b/Materials/Water.tres @@ -2,27 +2,25 @@ [ext_resource type="Shader" uid="uid://cglb64vpwpgpu" path="res://Shaders/Water2.gdshader" id="1_7u5yi"] -[sub_resource type="FastNoiseLite" id="FastNoiseLite_80fwj"] -noise_type = 2 -frequency = 0.0073 -fractal_type = 0 +[sub_resource type="FastNoiseLite" id="FastNoiseLite_7u5yi"] +frequency = 0.0006 -[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_xjipq"] -noise = SubResource("FastNoiseLite_80fwj") +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_1eskk"] +noise = SubResource("FastNoiseLite_7u5yi") seamless = true [resource] render_priority = 0 shader = ExtResource("1_7u5yi") -shader_parameter/deep_water_color = Color(3.272891e-06, 0.45801657, 0.7807932, 1) +shader_parameter/deep_water_color = Color(0.14384246, 0.38601622, 1, 1) shader_parameter/shallow_water_color = Color(1.6171933e-05, 0.4858659, 0.8463654, 1) -shader_parameter/beer_law_factor = 5.0 +shader_parameter/beer_law_factor = 0.170000008075 shader_parameter/shore_foam_color = Color(1, 1, 1, 1) -shader_parameter/crest_foam_color = Color(0.5127949, 0.7491377, 1, 1) -shader_parameter/shore_foam_distance = 2.15600010241 +shader_parameter/crest_foam_color = Color(0.9, 0.95, 1, 1) +shader_parameter/shore_foam_distance = 3.0000001425 shader_parameter/wave_rotation = 3.154000149815 -shader_parameter/wave_height = 0.50000002375 -shader_parameter/wave_frequency = 5.0 +shader_parameter/wave_height = 0.5 +shader_parameter/wave_frequency = 5.485 shader_parameter/wave_speed = 2.0 -shader_parameter/wave_distortion = 0.400000019 -shader_parameter/noise_texture = SubResource("NoiseTexture2D_xjipq") +shader_parameter/wave_distortion = 1.226000058235 +shader_parameter/noise_texture = SubResource("NoiseTexture2D_1eskk") diff --git a/Scenes/Chunk_Rotaie/chunk_curva_1.tscn b/Scenes/Chunk_Rotaie/chunk_curva_1.tscn index 24f78d7..5b7f8e6 100644 --- a/Scenes/Chunk_Rotaie/chunk_curva_1.tscn +++ b/Scenes/Chunk_Rotaie/chunk_curva_1.tscn @@ -7,6 +7,8 @@ [ext_resource type="PackedScene" uid="uid://bfvtlpkcnbgke" path="res://Scenes/Chunk_Scene/BordiSentiero/Bordi_sentiero_Rettilineo.tscn" id="5_nw560"] [ext_resource type="Material" uid="uid://bjrb33qwp1p43" path="res://Materials/Grass3.tres" id="5_one63"] [ext_resource type="Material" uid="uid://0x17mj2v807r" path="res://Materials/Grass4.tres" id="6_nw560"] +[ext_resource type="PackedScene" uid="uid://4iye3qapad4y" path="res://Scenes/Test/Colonnina_Blockout.tscn" id="8_ubxrb"] +[ext_resource type="PackedScene" uid="uid://h63qncgtdqpi" path="res://Scenes/Test/Casetta_Blockout.tscn" id="9_fuvrv"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_rsn8b"] render_priority = 0 @@ -25,6 +27,12 @@ shader_parameter/cast_shadow_strength = 0.6 shader_parameter/specular_size = 60.0 shader_parameter/specular_softness = 0.01 shader_parameter/specular_intensity_multiplier = 0.5 +shader_parameter/rim_color = Color(1, 1, 1, 1) +shader_parameter/rim_size = 0.4 +shader_parameter/rim_softness = 0.05 +shader_parameter/rim_intensity = 1.0 +shader_parameter/rim_spread = 0.5 +shader_parameter/rim_ambient = 0.1 shader_parameter/emission_color = Color(0, 0, 0, 1) shader_parameter/emission_energy = 0.0 @@ -51,6 +59,12 @@ shader_parameter/cast_shadow_strength = 0.6 shader_parameter/specular_size = 60.0 shader_parameter/specular_softness = 0.01 shader_parameter/specular_intensity_multiplier = 0.5 +shader_parameter/rim_color = Color(1, 1, 1, 1) +shader_parameter/rim_size = 0.4 +shader_parameter/rim_softness = 0.05 +shader_parameter/rim_intensity = 1.0 +shader_parameter/rim_spread = 0.5 +shader_parameter/rim_ambient = 0.1 shader_parameter/emission_color = Color(0, 0, 0, 1) shader_parameter/emission_energy = 0.0 @@ -197,3 +211,21 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0951338, 0) material_override = ExtResource("6_nw560") cast_shadow = 0 multimesh = SubResource("MultiMesh_stvfq") + +[node name="ArtTest3" parent="." index="27" unique_id=143340255 instance=ExtResource("8_ubxrb")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.1854491, 0.19475889, -0.71178675) + +[node name="ArtTest4" parent="." index="28" unique_id=803997176 instance=ExtResource("8_ubxrb")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.012503, 0.19475889, -17.45206) + +[node name="ArtTest5" parent="." index="29" unique_id=378316020 instance=ExtResource("8_ubxrb")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -17.189882, 0.19475889, 9.40596) + +[node name="ArtTest6" parent="." index="30" unique_id=1285357086 instance=ExtResource("8_ubxrb")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.47019768, 0.19475889, 21.547256) + +[node name="ArtTest7" parent="." index="31" unique_id=1569496797 instance=ExtResource("8_ubxrb")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20.470198, 0.19475889, 0.54725647) + +[node name="ArtTest34" parent="." index="32" unique_id=534731899 instance=ExtResource("9_fuvrv")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28.513657, 0, 16.740269) diff --git a/Scenes/Chunk_Rotaie/chunk_rettilineo_1.tscn b/Scenes/Chunk_Rotaie/chunk_rettilineo_1.tscn index ebbf618..a4ded25 100644 --- a/Scenes/Chunk_Rotaie/chunk_rettilineo_1.tscn +++ b/Scenes/Chunk_Rotaie/chunk_rettilineo_1.tscn @@ -8,9 +8,10 @@ [ext_resource type="Material" uid="uid://cabv225thcqi3" path="res://Materials/Grass2.tres" id="5_egosm"] [ext_resource type="Material" uid="uid://bjrb33qwp1p43" path="res://Materials/Grass3.tres" id="7_qrnbh"] [ext_resource type="Material" uid="uid://0x17mj2v807r" path="res://Materials/Grass4.tres" id="8_8w7k2"] -[ext_resource type="Shader" uid="uid://co2jw3fnyc6aa" path="res://Shaders/tree_leaves.gdshader" id="9_8w7k2"] +[ext_resource type="Shader" uid="uid://cjratw2ndyu8x" path="res://Shaders/grass_leaves.gdshader" id="9_8w7k2"] [ext_resource type="Texture2D" uid="uid://3cj462y71s5w" path="res://Assets/Textures/leaf_alpha.png" id="10_fjjk2"] [ext_resource type="SphereMesh" uid="uid://d008b0x0810qh" path="res://Assets/Meshes/Bush.tres" id="11_eamw4"] +[ext_resource type="PackedScene" uid="uid://4iye3qapad4y" path="res://Scenes/Test/Colonnina_Blockout.tscn" id="12_fjjk2"] [sub_resource type="BoxShape3D" id="BoxShape3D_h6p6r"] size = Vector3(20, 10, 20) @@ -47,6 +48,9 @@ shader_parameter/leaves_scale = 0.5 shader_parameter/rotation_degrees = 180.0 shader_parameter/texture_offset = Vector2(0, 0.155) shader_parameter/opacity = 1.0 +shader_parameter/variance_scale = 0.1 +shader_parameter/variance_color = Color(0.3, 0.5, 0.2, 1) +shader_parameter/variance_intensity = 0.4 shader_parameter/snow_color = Color(0.85, 0.9, 0.95, 1) shader_parameter/height_min = 0.6 shader_parameter/height_max = 1.415 @@ -178,5 +182,12 @@ skeleton = NodePath("../..") [node name="MeshInstance3D" type="MeshInstance3D" parent="." index="18" unique_id=392190665] transform = Transform3D(1, 0, 0, 0, -4.371139e-08, 1, 0, -1, -4.371139e-08, 0, 1.7709007, 0) +visible = false mesh = SubResource("PlaneMesh_eamw4") skeleton = NodePath("../Chunk_020") + +[node name="ArtTest3" parent="." index="19" unique_id=143340255 instance=ExtResource("12_fjjk2")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.535887, 0.20021093, 0.7700391) + +[node name="ArtTest4" parent="." index="20" unique_id=1061271863 instance=ExtResource("12_fjjk2")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.170193, 0.20021093, 0.7700391) diff --git a/Scenes/Chunk_Scene/Chunk/Campagna/Chunk_C_L_2.tscn b/Scenes/Chunk_Scene/Chunk/Campagna/Chunk_C_L_2.tscn index 7ba2ef9..440fa70 100644 --- a/Scenes/Chunk_Scene/Chunk/Campagna/Chunk_C_L_2.tscn +++ b/Scenes/Chunk_Scene/Chunk/Campagna/Chunk_C_L_2.tscn @@ -19,6 +19,7 @@ [ext_resource type="Material" uid="uid://wkegx4a21x7u" path="res://Materials/Staccionata.tres" id="10_is3ra"] [ext_resource type="PackedScene" uid="uid://co3scydwgpvgc" path="res://Scenes/Chunk_Scene/Orto/test_orto_big.tscn" id="11_is3ra"] [ext_resource type="PackedScene" uid="uid://mj15bepbgy02" path="res://Scenes/house_test_4.tscn" id="18_26pld"] +[ext_resource type="PackedScene" uid="uid://4iye3qapad4y" path="res://Scenes/Test/Colonnina_Blockout.tscn" id="20_raxwl"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_e6du4"] render_priority = 0 @@ -98,9 +99,10 @@ shader_parameter/step_softness = 0.1 shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1) shader_parameter/shadow_offset = 0.0 shader_parameter/cast_shadow_strength = 0.6 -shader_parameter/specular_size = 60.0 -shader_parameter/specular_softness = 0.01 -shader_parameter/specular_intensity_multiplier = 0.5 +shader_parameter/use_ghibli_glint = true +shader_parameter/glint_color = Color(1, 0.95, 0.85, 1) +shader_parameter/glint_intensity = 3.0 +shader_parameter/glint_sharpness = 7.0 shader_parameter/emission_color = Color(0, 0, 0, 1) shader_parameter/emission_energy = 0.0 @@ -460,6 +462,9 @@ multimesh = SubResource("MultiMesh_6bpc0") [node name="HouseTest_4" parent="." index="35" unique_id=1727780766 instance=ExtResource("18_26pld")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.123956, 0, 5.567298) +[node name="ArtTest3" parent="." index="36" unique_id=143340255 instance=ExtResource("20_raxwl")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.3400893, 0, 0.8650651) + [editable path="Grass4"] [editable path="Grass2"] [editable path="Grass6"] diff --git a/Scenes/Chunk_Scene/Chunk/Foresta/Chunk_F_L_2.tscn b/Scenes/Chunk_Scene/Chunk/Foresta/Chunk_F_L_2.tscn index 804a78b..211244b 100644 --- a/Scenes/Chunk_Scene/Chunk/Foresta/Chunk_F_L_2.tscn +++ b/Scenes/Chunk_Scene/Chunk/Foresta/Chunk_F_L_2.tscn @@ -18,6 +18,7 @@ [ext_resource type="Material" uid="uid://wkegx4a21x7u" path="res://Materials/Staccionata.tres" id="15_u5vqi"] [ext_resource type="PackedScene" uid="uid://d12t04rs47jq3" path="res://Scenes/Test/Tree_V1.tscn" id="16_w82ua"] [ext_resource type="PackedScene" uid="uid://mj15bepbgy02" path="res://Scenes/house_test_4.tscn" id="17_r7got"] +[ext_resource type="PackedScene" uid="uid://4iye3qapad4y" path="res://Scenes/Test/Colonnina_Blockout.tscn" id="19_jqp0n"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_xt73x"] render_priority = 0 @@ -100,6 +101,12 @@ shader_parameter/cast_shadow_strength = 0.6 shader_parameter/specular_size = 60.0 shader_parameter/specular_softness = 0.01 shader_parameter/specular_intensity_multiplier = 0.5 +shader_parameter/rim_color = Color(1, 1, 1, 1) +shader_parameter/rim_size = 0.4 +shader_parameter/rim_softness = 0.05 +shader_parameter/rim_intensity = 1.0 +shader_parameter/rim_spread = 0.5 +shader_parameter/rim_ambient = 0.1 shader_parameter/emission_color = Color(0, 0, 0, 1) shader_parameter/emission_energy = 0.0 @@ -432,6 +439,9 @@ transform = Transform3D(1.1937449, 0, 1.0893248, 0, 1.768, 0, -1.210361, 0, 1.07 [node name="HouseTest_4" parent="." index="40" unique_id=1727780766 instance=ExtResource("17_r7got")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.7327065, 0, 5.388262) +[node name="ArtTest3" parent="." index="41" unique_id=143340255 instance=ExtResource("19_jqp0n")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5760078, 4.7683716e-07, 1.1974034) + [editable path="Grass4"] [editable path="Grass2"] [editable path="Grass6"] diff --git a/Scenes/Gameplay.tscn b/Scenes/Gameplay.tscn index 786ce8a..9599c1f 100644 --- a/Scenes/Gameplay.tscn +++ b/Scenes/Gameplay.tscn @@ -54,7 +54,6 @@ [ext_resource type="PackedScene" uid="uid://xebpudhewwwj" path="res://Scenes/Chunk_Scene/Chunk/Campagna/Chunk_C_L_2.tscn" id="35_n33lw"] [ext_resource type="Shader" uid="uid://bl1dwh2k06yy5" path="res://Shaders/Blur.gdshader" id="46_nonqo"] [ext_resource type="Shader" uid="uid://bttmyh64kihyr" path="res://Shaders/Nebbia2D.gdshader" id="47_7j5hj"] -[ext_resource type="SphereMesh" uid="uid://d008b0x0810qh" path="res://Assets/Meshes/Bush.tres" id="55_qdxup"] [sub_resource type="NoiseTexture2D" id="NoiseTexture2D_10fbe"] noise = ExtResource("6_00nhk") @@ -95,8 +94,12 @@ sky = SubResource("Sky_dhgqn") ambient_light_source = 2 tonemap_mode = 2 ssao_enabled = true +ssao_radius = 0.5 +ssao_intensity = 14.0 +ssao_detail = 0.0 ssil_enabled = true glow_enabled = true +glow_levels/4 = 1.0 glow_intensity = 0.4 glow_strength = 0.65 glow_bloom = 1.0 @@ -493,9 +496,10 @@ shader_parameter/step_softness = 0.1 shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1) shader_parameter/shadow_offset = 0.0 shader_parameter/cast_shadow_strength = 0.6 -shader_parameter/specular_size = 60.0 -shader_parameter/specular_softness = 0.01 -shader_parameter/specular_intensity_multiplier = 0.5 +shader_parameter/use_ghibli_glint = true +shader_parameter/glint_color = Color(1, 0.95, 0.85, 1) +shader_parameter/glint_intensity = 1.0 +shader_parameter/glint_sharpness = 32.0 shader_parameter/emission_color = Color(0, 0, 0, 1) shader_parameter/emission_energy = 0.0 @@ -513,9 +517,10 @@ shader_parameter/step_softness = 0.1 shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1) shader_parameter/shadow_offset = 0.0 shader_parameter/cast_shadow_strength = 0.6 -shader_parameter/specular_size = 60.0 -shader_parameter/specular_softness = 0.01 -shader_parameter/specular_intensity_multiplier = 0.5 +shader_parameter/use_ghibli_glint = true +shader_parameter/glint_color = Color(1, 0.95, 0.85, 1) +shader_parameter/glint_intensity = 1.0 +shader_parameter/glint_sharpness = 32.0 shader_parameter/emission_color = Color(0, 0, 0, 1) shader_parameter/emission_energy = 0.0 @@ -633,9 +638,10 @@ shader_parameter/step_softness = 0.1 shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1) shader_parameter/shadow_offset = 0.0 shader_parameter/cast_shadow_strength = 0.6 -shader_parameter/specular_size = 60.0 -shader_parameter/specular_softness = 0.01 -shader_parameter/specular_intensity_multiplier = 0.5 +shader_parameter/use_ghibli_glint = true +shader_parameter/glint_color = Color(1, 0.95, 0.85, 1) +shader_parameter/glint_intensity = 1.0 +shader_parameter/glint_sharpness = 32.0 shader_parameter/emission_color = Color(0, 0, 0, 1) shader_parameter/emission_energy = 0.0 @@ -653,9 +659,10 @@ shader_parameter/step_softness = 0.1 shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1) shader_parameter/shadow_offset = 0.0 shader_parameter/cast_shadow_strength = 0.6 -shader_parameter/specular_size = 60.0 -shader_parameter/specular_softness = 0.01 -shader_parameter/specular_intensity_multiplier = 0.5 +shader_parameter/use_ghibli_glint = true +shader_parameter/glint_color = Color(1, 0.95, 0.85, 1) +shader_parameter/glint_intensity = 1.0 +shader_parameter/glint_sharpness = 32.0 shader_parameter/emission_color = Color(0, 0, 0, 1) shader_parameter/emission_energy = 0.0 @@ -780,7 +787,7 @@ rotazione_sole_pomeriggio = Vector3(-150, 8, 0) rotazione_sole_notte = Vector3(-66, 85, 0) esposizione_mattina = 0.8 esposizione_pomeriggio = 0.7 -esposizione_notte = 0.9 +esposizione_notte = 0.7 sky_top_mattina = Color(0.11613401, 0.35679278, 0.54143786, 1) sky_horizon_mattina = Color(0.4636712, 0.67270684, 0.86346304, 1) sky_horizon_pomeriggio = Color(0.93524647, 0.5983081, 0.8058805, 1) @@ -797,7 +804,7 @@ densita_nebbia_mattina = 0.02 densita_nebbia_pomeriggio = 0.02 bloom_mattina = 0.4 bloom_notte = 0.6 -energia_luce_notte = 0.6 +energia_luce_notte = 1.0 materiale_nebbia = ExtResource("2_4xv0h") materiale_pioggia_gocce = ExtResource("3_4wepm") materiale_nuvole = ExtResource("4_00nhk") @@ -870,7 +877,7 @@ shadow_enabled = true shadow_bias = 0.2 shadow_normal_bias = 0.0 shadow_opacity = 0.97 -shadow_blur = 0.4 +shadow_blur = 2.0 directional_shadow_mode = 0 directional_shadow_fade_start = 0.9 @@ -891,6 +898,7 @@ mouse_target = true [node name="SubViewport" type="SubViewport" parent="SubViewportContainer" unique_id=1099909885] handle_input_locally = false +use_taa = true canvas_item_default_texture_filter = 2 size = Vector2i(1920, 1080) render_target_update_mode = 4 @@ -20967,6 +20975,7 @@ mouse_filter = 2 [node name="ScreenEffect2" type="CanvasLayer" parent="SubViewportContainer/SubViewport" unique_id=2088057254] layer = 3 +visible = false follow_viewport_scale = 0.001 [node name="Nebbia" type="ColorRect" parent="SubViewportContainer/SubViewport/ScreenEffect2" unique_id=1102385319] @@ -20990,9 +20999,6 @@ grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 -[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=416394629] -mesh = ExtResource("55_qdxup") - [editable path="SubViewportContainer/SubViewport/World/Blockout_1/Mare/rock25"] [editable path="SubViewportContainer/SubViewport/World/Blockout_1/Tree2/Trees/tree2"] [editable path="SubViewportContainer/SubViewport/World/Blockout_1/Tree2/Trees/tree3"] diff --git a/Scenes/MainMap.tscn b/Scenes/MainMap.tscn index 48c3399..8cd7065 100644 --- a/Scenes/MainMap.tscn +++ b/Scenes/MainMap.tscn @@ -28,9 +28,10 @@ shader_parameter/step_softness = 0.1 shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1) shader_parameter/shadow_offset = 0.0 shader_parameter/cast_shadow_strength = 0.6 -shader_parameter/specular_size = 60.0 -shader_parameter/specular_softness = 0.01 -shader_parameter/specular_intensity_multiplier = 0.5 +shader_parameter/use_ghibli_glint = true +shader_parameter/glint_color = Color(1, 0.95, 0.85, 1) +shader_parameter/glint_intensity = 3.0 +shader_parameter/glint_sharpness = 7.0 shader_parameter/emission_color = Color(0, 0, 0, 1) shader_parameter/emission_energy = 0.0 @@ -82,9 +83,10 @@ shader_parameter/step_softness = 0.1 shader_parameter/shadow_color = Color(0.4, 0.4, 0.6, 1) shader_parameter/shadow_offset = 0.0 shader_parameter/cast_shadow_strength = 0.6 -shader_parameter/specular_size = 60.0 -shader_parameter/specular_softness = 0.01 -shader_parameter/specular_intensity_multiplier = 0.5 +shader_parameter/use_ghibli_glint = true +shader_parameter/glint_color = Color(1, 0.95, 0.85, 1) +shader_parameter/glint_intensity = 3.0 +shader_parameter/glint_sharpness = 7.0 shader_parameter/emission_color = Color(0, 0, 0, 1) shader_parameter/emission_energy = 0.0 diff --git a/Shaders/grass_leaves.gdshader b/Shaders/grass_leaves.gdshader new file mode 100644 index 0000000..7e737fc --- /dev/null +++ b/Shaders/grass_leaves.gdshader @@ -0,0 +1,133 @@ +shader_type spatial; + +render_mode specular_disabled, cull_disabled, ambient_light_disabled; + +// --- GLOBAL UNIFORMS (Vento e Neve) --- +global uniform float wind_scale; +global uniform float wind_speed; +global uniform float wind_strength; +global uniform vec3 wind_direction; +global uniform sampler2D wind_noise : filter_linear_mipmap; +global uniform float global_snow_amount; + +// --- PARAMETRI ESTETICI --- +uniform bool billboard_enabled = true; +uniform bool wind_enabled = true; +uniform vec4 base_color : source_color = vec4(0.2, 0.6, 0.3, 1.0); +uniform sampler2D alpha_texture : source_color, filter_nearest; +uniform float leaves_scale = 1.0; +uniform float rotation_degrees = 0.0; +uniform vec2 texture_offset = vec2(0.0, 0.0); +uniform float opacity : hint_range(0.0, 1.0) = 1.0; + +// ---> NUOVI PARAMETRI PER VARIAZIONE ERBA <--- +group_uniforms Grass_Variance; +uniform sampler2D color_variance_noise : filter_linear_mipmap; // Trascina qui un FastNoiseLite +uniform float variance_scale = 0.1; // Grandezza delle chiazze (più basso = chiazze più grandi) +uniform vec4 variance_color : source_color = vec4(0.3, 0.5, 0.2, 1.0); // Colore delle chiazze (es: verde più scuro o giallastro) +uniform float variance_intensity : hint_range(0.0, 1.0) = 0.4; // Quanto si vedono le chiazze + +uniform vec4 snow_color : source_color = vec4(0.85, 0.9, 0.95, 1.0); + +// --- CONTROLLO GRADIENTE E RANDOM --- +uniform float height_min = 0.0; +uniform float height_max = 5.0; +uniform float shadow_intensity : hint_range(0.0, 1.0) = 0.5; +uniform float highlight_intensity : hint_range(0.0, 1.0) = 0.3; +uniform float light_steps : hint_range(1.0, 10.0) = 4.0; +uniform float random_mix : hint_range(0.0, 1.0) = 0.3; + +uniform float cast_shadow_strength : hint_range(0.0, 1.0) = 0.6; + +varying vec3 v_final_color; +varying float v_shade_factor; +varying vec3 v_world_pos; // Passiamo la posizione mondo per il rumore + +float hash(vec3 p) { + p = fract(p * 0.1031); + p += dot(p, p.yzx + 33.33); + return fract((p.x + p.y) * p.z); +} + +void vertex() { + vec3 instance_pos = MODEL_MATRIX[3].xyz; + v_world_pos = instance_pos; // Salviamo la posizione dell'istanza + + // --- LOGICA VENTO --- + float total_angle = radians(rotation_degrees); + if (wind_enabled) { + float time = TIME * wind_speed; + vec2 noise_uv = (instance_pos.xz * wind_scale) + (time * wind_direction.xz * 0.5); + float noise_val = textureLod(wind_noise, noise_uv, 2.0).r; + float sway = sin(time + (noise_val * 10.0)); + total_angle += (sway * wind_strength); + } + + // --- CALCOLO COLORE --- + float h_factor = clamp((instance_pos.y - height_min) / (height_max - height_min), 0.0, 1.0); + float leaf_rand = hash(instance_pos); + float combined_factor = mix(h_factor, leaf_rand, random_mix); + combined_factor = ceil(combined_factor * light_steps) / light_steps; + + v_shade_factor = combined_factor; + + vec3 dark_color = base_color.rgb * (1.0 - shadow_intensity); + vec3 light_color = base_color.rgb + (vec3(1.0) - base_color.rgb) * highlight_intensity; + v_final_color = mix(dark_color, light_color, combined_factor); + + // --- LOGICA TRASFORMAZIONE --- + if (billboard_enabled) { + vec3 view_pos_origin = (VIEW_MATRIX * vec4(instance_pos, 1.0)).xyz; + vec2 offset = (UV - 0.5) * leaves_scale; + + float c = cos(total_angle); + float s = sin(total_angle); + vec2 rotated_offset = vec2(offset.x * c - offset.y * s, offset.x * s + offset.y * c); + + vec3 final_pos = view_pos_origin + vec3(rotated_offset.x, rotated_offset.y, 0.0); + + MODELVIEW_MATRIX = mat4(1.0); + MODELVIEW_MATRIX[3].xyz = final_pos; + VERTEX = vec3(0.0); + } else { + float c = cos(total_angle); + float s = sin(total_angle); + + vec2 local_v = (VERTEX.xy) * leaves_scale; + VERTEX.x = local_v.x * c - local_v.y * s; + VERTEX.y = local_v.x * s + local_v.y * c; + } +} + +void fragment() { + vec2 shifted_uv = UV + texture_offset; + vec4 tex = texture(alpha_texture, shifted_uv); + + // ---> LOGICA VARIAZIONE COLORE MONDO <--- + // Usiamo la posizione XZ del mondo per campionare il rumore + float noise_sample = texture(color_variance_noise, v_world_pos.xz * variance_scale).r; + // Applichiamo la variazione al colore finale dell'erba + vec3 varied_grass_color = mix(v_final_color, variance_color.rgb, noise_sample * variance_intensity); + + float top_mask = 1.0 - shifted_uv.y; + float snow_mask = smoothstep(1.0 - global_snow_amount, 1.2 - global_snow_amount, top_mask); + snow_mask *= step(0.01, global_snow_amount); + + vec3 dark_snow = snow_color.rgb * (1.0 - shadow_intensity); + vec3 shaded_snow = mix(dark_snow, snow_color.rgb, v_shade_factor); + + // Mescoliamo il colore variato con la neve + vec3 final_albedo = mix(varied_grass_color, shaded_snow, snow_mask); + + ALBEDO = final_albedo; + ALPHA = tex.r * opacity; + ALPHA_SCISSOR_THRESHOLD = 0.5; + + ROUGHNESS = 0.02; +} + +void light() { + float shadow_factor = mix(1.0 - cast_shadow_strength, 1.0, ATTENUATION); + float cutoff_mask = smoothstep(0.0, 0.05, ATTENUATION); + DIFFUSE_LIGHT += (shadow_factor * LIGHT_COLOR) * cutoff_mask; +} \ No newline at end of file diff --git a/Shaders/grass_leaves.gdshader.uid b/Shaders/grass_leaves.gdshader.uid new file mode 100644 index 0000000..50359e3 --- /dev/null +++ b/Shaders/grass_leaves.gdshader.uid @@ -0,0 +1 @@ +uid://cjratw2ndyu8x diff --git a/Shaders/stylized.gdshader b/Shaders/stylized.gdshader new file mode 100644 index 0000000..2e6562e --- /dev/null +++ b/Shaders/stylized.gdshader @@ -0,0 +1,109 @@ +shader_type spatial; + +group_uniforms Shader.Albedo; +uniform vec4 albedo_color : source_color = vec4(1.0); +uniform sampler2D albedo_texture; +uniform float albedo_affect : hint_range(0.0, 1.0, 0.05) = 0.0; + +group_uniforms Shader.Light; +uniform bool use_stepped = true; +uniform float steps = 3.0; +uniform float step_smoothness : hint_range(0.0, 1.0, 0.05) = 0.3; +uniform vec4 shadow_tint : source_color; +uniform float shadow_tint_amount : hint_range(0.0, 1.0, 0.1) = 0.4; + +group_uniforms Shader.Specular; +uniform float specular : hint_range(0.0, 1.0, 0.05) = 0.0; + +group_uniforms Shader.Normal; +uniform float normal_strength : hint_range(0.0, 1.0, 0.05) = 0.0; +uniform sampler2D normal_texture; + +group_uniforms Shader.Rim; +uniform bool use_rim = true; +uniform vec4 rim_color : source_color = vec4(1.0); +uniform float rim_amount = 2.0; +uniform float rim_smoothness = 0.2; +uniform float rim_mask_shadow : hint_range(0.0, 1.0, 0.05) = 1.0; +uniform float rim_blend : hint_range(0.0, 1.0, 0.05) = 1.0; + +group_uniforms Shader.Pattern; +uniform bool use_pattern = true; +uniform sampler2D pattern_texture; +uniform int pattern_uv_mode : hint_enum("UV", "Screen", "Local Screen") = 2; +uniform float pattern_tiling = 32.0; +uniform float pattern_amount : hint_range(0.0, 1.0, 0.05) = 0.5; +uniform float pattern_smoothness : hint_range(0.0, 1.0, 0.05) = 0.5; +uniform float pattern_blend : hint_range(0.0, 1.0, 0.05) = 0.2; + +varying vec4 node_position; + +float fresnel(float amount, vec3 normal, vec3 view) +{ + return pow((1.0 - clamp(dot(normalize(normal), normalize(view)), 0.0, 1.0 )), amount); +} + +vec2 pattern_uv(vec2 uv, vec2 screen_uv){ + vec2 p_uv = uv; + if(pattern_uv_mode == 1) { p_uv = screen_uv; } + if(pattern_uv_mode == 2) { p_uv = (screen_uv * 2.0 - 1.0) * node_position.w - node_position.xy; } + return p_uv; +} + +float shape_value(float value, vec2 uv, vec2 screen_size){ + float aspect = screen_size.y / screen_size.x; + vec2 pattern_uv = uv * pattern_tiling * vec2(1.0, aspect); + float shadow_pattern = texture(pattern_texture, pattern_uv).r; + shadow_pattern = clamp(smoothstep(shadow_pattern - pattern_smoothness, shadow_pattern + pattern_smoothness, value + pattern_amount), 0.0, value + pattern_amount); + return shadow_pattern; +} + +void vertex() { + node_position = (PROJECTION_MATRIX * vec4(NODE_POSITION_VIEW, 1.0)); +} + +void fragment() { + vec4 albedo = texture(albedo_texture, UV) * albedo_color; + vec4 normal_map = texture(normal_texture, UV); + + ALBEDO = albedo.rgb; + + NORMAL_MAP = mix(vec3(0.5,0.5,1.0), normal_map.rgb, normal_strength); + + SPECULAR = specular; +} + +void light () { + float ndotl = clamp(dot(NORMAL,LIGHT),0.0,1.0) * ATTENUATION; + + float light = ndotl; + + if(use_stepped){ + float light_mult = light * steps; + float step_base = floor(light_mult); + float light_factor = light_mult - step_base; + + light_factor = smoothstep(0.5 - step_smoothness, 0.5 + step_smoothness, light_factor); + light = (step_base + light_factor) / steps; + } + + if(use_pattern){ + vec2 p_uv = pattern_uv(UV, SCREEN_UV); + + light = mix(light, shape_value(light, p_uv, VIEWPORT_SIZE), pattern_blend); + } + + vec3 diffuse = vec3(light) * (LIGHT_COLOR / PI); + diffuse = (shadow_tint.rgb * (1.0 - (light)) * shadow_tint_amount) + diffuse * light; + + if(use_rim){ + float rim_value = fresnel(rim_amount, NORMAL, VIEW); + rim_value = smoothstep(0.5 - (rim_smoothness / 2.0), 0.5 + (rim_smoothness / 2.0), rim_value); + rim_value = mix(rim_value, rim_value * light, rim_mask_shadow); + + diffuse += rim_color.rgb * rim_value * rim_blend; + } + + DIFFUSE_LIGHT += mix(diffuse, ALBEDO * diffuse, albedo_affect); + SPECULAR_LIGHT += vec3(pow(light, 50.0)) * specular; +} \ No newline at end of file diff --git a/Shaders/stylized.gdshader.uid b/Shaders/stylized.gdshader.uid new file mode 100644 index 0000000..8aaf47b --- /dev/null +++ b/Shaders/stylized.gdshader.uid @@ -0,0 +1 @@ +uid://bkb1f7plk6r1j diff --git a/Shaders/tree_leaves.gdshader b/Shaders/tree_leaves.gdshader index 69b75fa..64971e0 100644 --- a/Shaders/tree_leaves.gdshader +++ b/Shaders/tree_leaves.gdshader @@ -95,6 +95,7 @@ void vertex() { } void fragment() { + vec2 shifted_uv = UV + texture_offset; vec4 tex = texture(alpha_texture, shifted_uv); diff --git a/Shaders/trunk_shader.gdshader b/Shaders/trunk_shader.gdshader index 6ca83c6..687f630 100644 --- a/Shaders/trunk_shader.gdshader +++ b/Shaders/trunk_shader.gdshader @@ -1,7 +1,5 @@ shader_type spatial; -// Aggiunto 'ambient_light_disabled' per proteggere i colori piatti -// Mantenuto 'diffuse_toon' per ottimizzare i calcoli della luce interna di Godot render_mode diffuse_toon, specular_disabled, ambient_light_disabled; group_uniforms Albedo_Settings; @@ -11,14 +9,13 @@ uniform bool use_texture = true; uniform vec2 uv_scale = vec2(1.0, 1.0); uniform float palette_shift_y : hint_range(0.0, 1.0) = 0.0; -// --- PARAMETRI GRADIENTE GLOBALE --- group_uniforms Height_Gradient; global uniform vec4 global_gradient_color_top; global uniform vec4 global_gradient_color_bot; global uniform float global_gradient_intensity; -uniform float gradient_start_y = 0.0; // Altezza MONDO dove il gradiente è 100% Bottom -uniform float gradient_end_y = 10.0; // Altezza MONDO dove il gradiente è 100% Top +uniform float gradient_start_y = 0.0; +uniform float gradient_end_y = 10.0; group_uniforms Toon_Lighting; uniform float light_steps : hint_range(1.0, 10.0, 1.0) = 3.0; @@ -27,10 +24,15 @@ uniform vec4 shadow_color : source_color = vec4(0.4, 0.4, 0.6, 1.0); uniform float shadow_offset : hint_range(-1.0, 1.0) = 0.0; uniform float cast_shadow_strength : hint_range(0.0, 1.0) = 0.6; -// ---> NUOVI PARAMETRI TOON SPECULAR <--- -uniform float specular_size : hint_range(10.0, 200.0) = 60.0; // Più è alto, più il punto luce è piccolo -uniform float specular_softness : hint_range(0.0, 0.1) = 0.01; // Morbidezza del bordo del punto luce -uniform float specular_intensity_multiplier : hint_range(0.0, 2.0) = 0.5; // Forza del riflesso +// ---> NUOVO SISTEMA: GHIBLI DIRECTIONAL GLINT <--- +group_uniforms Ghibli_Directional_Glint; +uniform bool use_ghibli_glint = true; +// Colore del bagliore (consigliato: panna caldo o albicocca desaturato) +uniform vec4 glint_color : source_color = vec4(1.0, 0.95, 0.85, 1.0); +// Quanta luce extra vogliamo (es: 1.0 = colora, >1.0 = fa brillare, ideale per Bloom) +uniform float glint_intensity : hint_range(0.0, 10.0) = 1.0; +// DEFINIZIONE DELL'ANGOLO: Più è alto, più la fascia di luce è stretta e netta (HArd Step) +uniform float glint_sharpness : hint_range(1.0, 128.0) = 32.0; group_uniforms Emission_Settings; uniform vec4 emission_color : source_color = vec4(0.0, 0.0, 0.0, 1.0); @@ -49,14 +51,8 @@ void fragment() { vec3 base_color = albedo_color.rgb; if (use_texture) base_color *= tex.rgb; - // --- APPLICAZIONE GRADIENTE B我們 --- - // Calcoliamo il mix tra l'altezza minima e massima (0.0 = Bottom, 1.0 = Top) float grad_factor = smoothstep(gradient_start_y, gradient_end_y, world_y); - - // Ricaviamo il colore attuale del gradiente per questa specifica altezza vec3 current_gradient_color = mix(global_gradient_color_bot.rgb, global_gradient_color_top.rgb, grad_factor); - - // Miscela il colore base con il gradiente ottenuto, usando l'intensità globale base_color = mix(base_color, current_gradient_color, global_gradient_intensity); ALBEDO = base_color; @@ -64,41 +60,44 @@ void fragment() { } void light() { + // GESTIONE ATTENUAZIONE E OMBRE (Anti-frittura con dither) float shadow_factor = mix(1.0 - cast_shadow_strength, 1.0, ATTENUATION); + float cutoff_mask = smoothstep(0.0, 0.1, ATTENUATION); + float n_dot_l = dot(NORMAL, LIGHT); - float intensity = clamp((n_dot_l * shadow_factor) + shadow_offset, 0.0, 1.0); + // Anti-frittura dither + float dither = fract(sin(dot(FRAGCOORD.xy, vec2(12.9898, 78.233))) * 43758.5453); + float intensity = (clamp(n_dot_l, 0.0, 1.0) * shadow_factor) + (dither - 0.5) * 0.02; - float raw_step = intensity * light_steps; + float raw_step = (intensity + shadow_offset) * light_steps; float lower_step = floor(raw_step); float fract_step = fract(raw_step); - float lerp_step = smoothstep(0.5 - step_softness, 0.5 + step_softness, fract_step); - float stepped_intensity = (lower_step + lerp_step) / light_steps; + float soft_lerp = smoothstep(0.5 - step_softness, 0.5 + step_softness, fract_step); + float stepped_intensity = (lower_step + soft_lerp) / light_steps; - vec3 light_part = vec3(1.2); - vec3 shaded_part = shadow_color.rgb; + // Colori finali Toon + vec3 light_color_final = mix(shadow_color.rgb, vec3(1.1), clamp(stepped_intensity, 0.0, 1.0)); + DIFFUSE_LIGHT += (light_color_final * LIGHT_COLOR) * cutoff_mask; - vec3 final_toon_light = mix(shaded_part, light_part, clamp(stepped_intensity, 0.0, 1.0)); - - float cutoff_mask = smoothstep(0.0, 0.05, ATTENUATION); - - DIFFUSE_LIGHT += (final_toon_light * LIGHT_COLOR) * cutoff_mask; - - // ---> AGGIUNTA TOON SPECULAR (Metodo 1) <--- - // Calcoliamo la direzione a metà strada tra la vista e la luce - vec3 half_direction = normalize(VIEW + LIGHT); - float n_dot_h = max(0.0, dot(NORMAL, half_direction)); - - // Applichiamo la potenza (shininess) per definire la dimensione del punto luce - float spec_power = pow(n_dot_h, specular_size); - - // Creiamo un gradino netto (Toon) invece della sfumatura classica PBR - float toon_specular = smoothstep(0.5 - specular_softness, 0.5 + specular_softness, spec_power); - - // Moltiplichiamo il riflesso per il colore della luce (Sole o Luna) - vec3 specular_highlight = LIGHT_COLOR * toon_specular * specular_intensity_multiplier; - - // Sommiamo il punto luce finale alla diffusione, mascherandolo con "cutoff_mask" - // per evitare che il riflesso brilli anche nelle zone in ombra profonda. - DIFFUSE_LIGHT += (specular_highlight * cutoff_mask); + // ---> GHIBLI DIRECTIONAL GLINT (Il segreto dei tetti) <--- + // Sfrutta solo la direzione del sole e la normale dell'oggetto, NON la telecamera. + if (use_ghibli_glint) { + // Calcoliamo un'area di "massima luce" molto aggressiva rivolta perpendicolarmente al sole + // Più 'glint_sharpness' è alto, più la fascia si stringe e diventa selettiva + float glint_raw = pow(max(0.0, n_dot_l), glint_sharpness); + + // Toon-ifichiamo l'area con un taglio netto ma pulito + float glint_mask = smoothstep(0.5 - step_softness*0.5, 0.5 + step_softness*0.5, glint_raw); + + // Mascheriamo per evitare che appaia nelle ombre proiettate dagli alberi (ATTENUATION) + // e puliamo i bordi laterali (cutoff a 0.0) + glint_mask *= smoothstep(0.0, 0.1, n_dot_l); + + // Calcoliamo la luce extra finale + vec3 extra_sun_glint = glint_mask * glint_color.rgb * LIGHT_COLOR * glint_intensity * ATTENUATION; + + // Aggiungiamo questa "botta" di luce extra direzionale + DIFFUSE_LIGHT += extra_sun_glint; + } } \ No newline at end of file diff --git a/project.godot b/project.godot index c8bd506..6369ea0 100644 --- a/project.godot +++ b/project.godot @@ -32,7 +32,6 @@ window/stretch/aspect="expand" [rendering] textures/canvas_textures/default_texture_filter=2 -lights_and_shadows/directional_shadow/soft_shadow_filter_quality=1 anti_aliasing/quality/use_taa=true [shader_globals]