Changed the way materials are stored on some dev models
- also adjusted some stuff and added a few passivestar plugins/tools.
@ -37,6 +37,29 @@ import_script/path=""
|
|||||||
materials/extract=0
|
materials/extract=0
|
||||||
materials/extract_format=0
|
materials/extract_format=0
|
||||||
materials/extract_path=""
|
materials/extract_path=""
|
||||||
_subresources={}
|
_subresources={
|
||||||
|
"materials": {
|
||||||
|
"Material": {
|
||||||
|
"use_external/enabled": false,
|
||||||
|
"use_external/fallback_path": "res://_development/ayuroo/levels/_experimental/Material.tres",
|
||||||
|
"use_external/path": "uid://bke0ojvbhqtnt"
|
||||||
|
},
|
||||||
|
"prototype_grid_dark": {
|
||||||
|
"use_external/enabled": true,
|
||||||
|
"use_external/fallback_path": "res://_development/ayuroo/levels/_experimental/prototype_grid_dark.tres",
|
||||||
|
"use_external/path": "uid://bye8jd50tg7wl"
|
||||||
|
},
|
||||||
|
"prototype_grid_orange": {
|
||||||
|
"use_external/enabled": true,
|
||||||
|
"use_external/fallback_path": "res://_development/ayuroo/levels/_experimental/prototype_grid_orange.tres",
|
||||||
|
"use_external/path": "uid://uejce7ra2gcy"
|
||||||
|
},
|
||||||
|
"prototype_grid_red": {
|
||||||
|
"use_external/enabled": true,
|
||||||
|
"use_external/fallback_path": "res://_development/ayuroo/levels/_experimental/prototype_grid_red.tres",
|
||||||
|
"use_external/path": "uid://lvm62memxs5k"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
gltf/naming_version=2
|
gltf/naming_version=2
|
||||||
gltf/embedded_image_handling=1
|
gltf/embedded_image_handling=0
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=11 format=3 uid="uid://srvm3v1grugk"]
|
[gd_scene load_steps=13 format=3 uid="uid://srvm3v1grugk"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cigop0ivp5vvu" path="res://src/core/world/level/level.gd" id="1_0kdur"]
|
[ext_resource type="Script" uid="uid://cigop0ivp5vvu" path="res://src/core/world/level/level.gd" id="1_0kdur"]
|
||||||
[ext_resource type="Material" uid="uid://c38215ysnknyk" path="res://assets/materials/dev/dark/dark_01.tres" id="2_cxrf3"]
|
[ext_resource type="Material" uid="uid://c38215ysnknyk" path="res://assets/materials/dev/dark/dark_01.tres" id="2_cxrf3"]
|
||||||
@ -9,12 +9,15 @@
|
|||||||
[ext_resource type="PackedScene" uid="uid://do54no1h1pv8i" path="res://_development/ayuroo/models/circus_tent/circus_tent_inside.glb" id="6_kb2k5"]
|
[ext_resource type="PackedScene" uid="uid://do54no1h1pv8i" path="res://_development/ayuroo/models/circus_tent/circus_tent_inside.glb" id="6_kb2k5"]
|
||||||
[ext_resource type="LightmapGIData" uid="uid://c0mcaeg0ikvmo" path="res://_development/ayuroo/levels/_experimental/_layout_test.lmbake" id="7_cv3fe"]
|
[ext_resource type="LightmapGIData" uid="uid://c0mcaeg0ikvmo" path="res://_development/ayuroo/levels/_experimental/_layout_test.lmbake" id="7_cv3fe"]
|
||||||
[ext_resource type="Script" uid="uid://dbcy7qdq4hqlg" path="res://addons/lightmap_probe_grid/lightmap_probe_grid.gd" id="9_p8lkr"]
|
[ext_resource type="Script" uid="uid://dbcy7qdq4hqlg" path="res://addons/lightmap_probe_grid/lightmap_probe_grid.gd" id="9_p8lkr"]
|
||||||
|
[ext_resource type="Material" uid="uid://c4uudb0m5p048" path="res://tools/lightbeam/lightbeam_material.tres" id="10_283a8"]
|
||||||
|
|
||||||
[sub_resource type="Environment" id="Environment_cv3fe"]
|
[sub_resource type="Environment" id="Environment_cv3fe"]
|
||||||
tonemap_mode = 2
|
tonemap_mode = 2
|
||||||
glow_strength = 1.25
|
glow_strength = 1.25
|
||||||
glow_bloom = 1.0
|
glow_bloom = 1.0
|
||||||
|
|
||||||
|
[sub_resource type="PlaneMesh" id="PlaneMesh_vl7nw"]
|
||||||
|
|
||||||
[node name="LayoutTest" type="Node3D"]
|
[node name="LayoutTest" type="Node3D"]
|
||||||
script = ExtResource("1_0kdur")
|
script = ExtResource("1_0kdur")
|
||||||
metadata/_custom_type_script = "uid://cigop0ivp5vvu"
|
metadata/_custom_type_script = "uid://cigop0ivp5vvu"
|
||||||
@ -353,23 +356,24 @@ omni_range = 83.0
|
|||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0)
|
||||||
|
|
||||||
[node name="ReflectionProbe" type="ReflectionProbe" parent="LightmapGI/ReflectionProbes"]
|
[node name="ReflectionProbe" type="ReflectionProbe" parent="LightmapGI/ReflectionProbes"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 2.6, 3.35)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 2.6, 3.5)
|
||||||
size = Vector3(14, 6.8, 5.3)
|
size = Vector3(14, 6.8, 5)
|
||||||
interior = true
|
interior = true
|
||||||
|
|
||||||
[node name="ReflectionProbe2" type="ReflectionProbe" parent="LightmapGI/ReflectionProbes"]
|
[node name="ReflectionProbe2" type="ReflectionProbe" parent="LightmapGI/ReflectionProbes"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.049999952, 4.2, -2.0000005)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.2, -2.0000005)
|
||||||
size = Vector3(6.1, 10, 16)
|
size = Vector3(6, 10, 16)
|
||||||
interior = true
|
interior = true
|
||||||
|
|
||||||
[node name="ReflectionProbe3" type="ReflectionProbe" parent="LightmapGI/ReflectionProbes"]
|
[node name="ReflectionProbe3" type="ReflectionProbe" parent="LightmapGI/ReflectionProbes"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.3999996, 6.0999994, -13)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.8999996, 5.999999, -13.5)
|
||||||
size = Vector3(15, 6.2000003, 10)
|
size = Vector3(16.2, 6, 11)
|
||||||
|
origin_offset = Vector3(0, 0, -1.42)
|
||||||
interior = true
|
interior = true
|
||||||
|
|
||||||
[node name="ReflectionProbe4" type="ReflectionProbe" parent="LightmapGI/ReflectionProbes"]
|
[node name="ReflectionProbe4" type="ReflectionProbe" parent="LightmapGI/ReflectionProbes"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.8999996, 6.2, -22.5)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 6.2, -23)
|
||||||
size = Vector3(16, 6, 13)
|
size = Vector3(16, 6, 12)
|
||||||
interior = true
|
interior = true
|
||||||
|
|
||||||
[node name="LightmapProbeGrid" type="Node3D" parent="LightmapGI"]
|
[node name="LightmapProbeGrid" type="Node3D" parent="LightmapGI"]
|
||||||
@ -1079,3 +1083,8 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.042128, -1.8584228, -4.24
|
|||||||
|
|
||||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||||
environment = SubResource("Environment_cv3fe")
|
environment = SubResource("Environment_cv3fe")
|
||||||
|
|
||||||
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||||
|
transform = Transform3D(44, 0, 0, 0, -4.371139e-08, -31, 0, 1, -1.3550531e-06, 0, 48, -51.4)
|
||||||
|
material_override = ExtResource("10_283a8")
|
||||||
|
mesh = SubResource("PlaneMesh_vl7nw")
|
||||||
|
|||||||
@ -38,15 +38,16 @@ materials/extract=0
|
|||||||
materials/extract_format=0
|
materials/extract_format=0
|
||||||
materials/extract_path=""
|
materials/extract_path=""
|
||||||
_subresources={
|
_subresources={
|
||||||
"meshes": {
|
"materials": {
|
||||||
"Main_Cylinder": {
|
"prototype_grid_dark": {
|
||||||
"generate/lightmap_uv": 2,
|
"use_external/enabled": true,
|
||||||
"generate/lods": 2,
|
"use_external/fallback_path": "res://_development/ayuroo/levels/_experimental/prototype_grid_dark.tres",
|
||||||
"generate/shadow_meshes": 0,
|
"use_external/path": "uid://bye8jd50tg7wl"
|
||||||
"lods/normal_merge_angle": 20.0,
|
},
|
||||||
"save_to_file/enabled": false,
|
"prototype_grid_orange": {
|
||||||
"save_to_file/fallback_path": "",
|
"use_external/enabled": true,
|
||||||
"save_to_file/path": ""
|
"use_external/fallback_path": "res://_development/ayuroo/levels/_experimental/prototype_grid_orange.tres",
|
||||||
|
"use_external/path": "uid://uejce7ra2gcy"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nodes": {
|
"nodes": {
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 9.6 KiB |
@ -1,44 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://dputr5bj2tbgh"
|
|
||||||
path.s3tc="res://.godot/imported/_test_level_texture_13.png-a0514b44f564dc67d27b95473e4540f6.s3tc.ctex"
|
|
||||||
metadata={
|
|
||||||
"imported_formats": ["s3tc_bptc"],
|
|
||||||
"vram_texture": true
|
|
||||||
}
|
|
||||||
generator_parameters={
|
|
||||||
"md5": "5220913b82328d262f5516be440341d3"
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://_development/ayuroo/levels/_experimental/_test_level_texture_13.png"
|
|
||||||
dest_files=["res://.godot/imported/_test_level_texture_13.png-a0514b44f564dc67d27b95473e4540f6.s3tc.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=2
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/uastc_level=0
|
|
||||||
compress/rdo_quality_loss=0.0
|
|
||||||
compress/hdr_compression=1
|
|
||||||
compress/normal_map=0
|
|
||||||
compress/channel_pack=0
|
|
||||||
mipmaps/generate=true
|
|
||||||
mipmaps/limit=-1
|
|
||||||
roughness/mode=0
|
|
||||||
roughness/src_normal=""
|
|
||||||
process/channel_remap/red=0
|
|
||||||
process/channel_remap/green=1
|
|
||||||
process/channel_remap/blue=2
|
|
||||||
process/channel_remap/alpha=3
|
|
||||||
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=0
|
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://bye8jd50tg7wl"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://dw3af4ir446rk" path="res://assets/materials/dev/dark/texture_13.png" id="1_pfrvh"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
resource_name = "prototype_grid_dark"
|
||||||
|
albedo_texture = ExtResource("1_pfrvh")
|
||||||
|
roughness = 0.5
|
||||||
|
uv1_scale = Vector3(2, 2, 1)
|
||||||
|
uv1_offset = Vector3(0, -1, 0)
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://uejce7ra2gcy"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://12e0onm52r6b" path="res://assets/materials/dev/orange/texture_02.png" id="1_67eg5"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
resource_name = "prototype_grid_orange"
|
||||||
|
albedo_texture = ExtResource("1_67eg5")
|
||||||
|
roughness = 0.5
|
||||||
|
uv1_scale = Vector3(2, 2, 1)
|
||||||
|
uv1_offset = Vector3(0, -1, 0)
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://lvm62memxs5k"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bwo1s4wl34tyt" path="res://assets/materials/dev/red/texture_02.png" id="1_vv0ty"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
resource_name = "prototype_grid_red"
|
||||||
|
albedo_texture = ExtResource("1_vv0ty")
|
||||||
|
roughness = 0.5
|
||||||
|
uv1_scale = Vector3(2, 2, 1)
|
||||||
|
uv1_offset = Vector3(0, -1, 0)
|
||||||
@ -40,16 +40,21 @@ materials/extract_path=""
|
|||||||
_subresources={
|
_subresources={
|
||||||
"materials": {
|
"materials": {
|
||||||
"prototype_grid_orange": {
|
"prototype_grid_orange": {
|
||||||
"use_external/enabled": false,
|
"use_external/enabled": true,
|
||||||
"use_external/fallback_path": "",
|
"use_external/fallback_path": "res://_development/ayuroo/models/circus_tent/prototype_grid_orange.tres",
|
||||||
"use_external/path": ""
|
"use_external/path": "uid://dknefw4cwovq"
|
||||||
},
|
},
|
||||||
"prototype_grid_red": {
|
"prototype_grid_red": {
|
||||||
"use_external/enabled": true,
|
"use_external/enabled": true,
|
||||||
"use_external/fallback_path": "res://assets/materials/cloth/red_cloth.tres",
|
"use_external/fallback_path": "res://assets/materials/cloth/red_cloth.tres",
|
||||||
"use_external/path": "uid://coc0q5sjnejkb"
|
"use_external/path": "uid://d2wd6sxagg32u"
|
||||||
|
},
|
||||||
|
"skylight": {
|
||||||
|
"use_external/enabled": false,
|
||||||
|
"use_external/fallback_path": "res://_development/ayuroo/models/circus_tent/skylight.tres",
|
||||||
|
"use_external/path": ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
gltf/naming_version=0
|
gltf/naming_version=0
|
||||||
gltf/embedded_image_handling=1
|
gltf/embedded_image_handling=0
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.7 KiB |
@ -1,44 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://bxipfm03yci3a"
|
|
||||||
path.s3tc="res://.godot/imported/circus_tent_inside_texture_02.png-bf8619fb6ee6cd04a4b97816e89764fe.s3tc.ctex"
|
|
||||||
metadata={
|
|
||||||
"imported_formats": ["s3tc_bptc"],
|
|
||||||
"vram_texture": true
|
|
||||||
}
|
|
||||||
generator_parameters={
|
|
||||||
"md5": "a4091b6db3fc67af97a848a98d5046da"
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://_development/ayuroo/models/circus_tent/circus_tent_inside_texture_02.png"
|
|
||||||
dest_files=["res://.godot/imported/circus_tent_inside_texture_02.png-bf8619fb6ee6cd04a4b97816e89764fe.s3tc.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=2
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/uastc_level=0
|
|
||||||
compress/rdo_quality_loss=0.0
|
|
||||||
compress/hdr_compression=1
|
|
||||||
compress/normal_map=0
|
|
||||||
compress/channel_pack=0
|
|
||||||
mipmaps/generate=true
|
|
||||||
mipmaps/limit=-1
|
|
||||||
roughness/mode=0
|
|
||||||
roughness/src_normal=""
|
|
||||||
process/channel_remap/red=0
|
|
||||||
process/channel_remap/green=1
|
|
||||||
process/channel_remap/blue=2
|
|
||||||
process/channel_remap/alpha=3
|
|
||||||
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=0
|
|
||||||
@ -1,44 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://b1ap5aiudw4xe"
|
|
||||||
path.s3tc="res://.godot/imported/circus_tent_inside_texture_02_1.png-d0f41eb5896b9fac8cfbc4d5ec507d5f.s3tc.ctex"
|
|
||||||
metadata={
|
|
||||||
"imported_formats": ["s3tc_bptc"],
|
|
||||||
"vram_texture": true
|
|
||||||
}
|
|
||||||
generator_parameters={
|
|
||||||
"md5": "671c567d75d6cffe7d16440771c026c5"
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://_development/ayuroo/models/circus_tent/circus_tent_inside_texture_02_1.png"
|
|
||||||
dest_files=["res://.godot/imported/circus_tent_inside_texture_02_1.png-d0f41eb5896b9fac8cfbc4d5ec507d5f.s3tc.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=2
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/uastc_level=0
|
|
||||||
compress/rdo_quality_loss=0.0
|
|
||||||
compress/hdr_compression=1
|
|
||||||
compress/normal_map=0
|
|
||||||
compress/channel_pack=0
|
|
||||||
mipmaps/generate=true
|
|
||||||
mipmaps/limit=-1
|
|
||||||
roughness/mode=0
|
|
||||||
roughness/src_normal=""
|
|
||||||
process/channel_remap/red=0
|
|
||||||
process/channel_remap/green=1
|
|
||||||
process/channel_remap/blue=2
|
|
||||||
process/channel_remap/alpha=3
|
|
||||||
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=0
|
|
||||||
@ -52,4 +52,4 @@ _subresources={
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
gltf/naming_version=2
|
gltf/naming_version=2
|
||||||
gltf/embedded_image_handling=1
|
gltf/embedded_image_handling=0
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.7 KiB |
@ -1,44 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://bve8ckrjjnnl6"
|
|
||||||
path.s3tc="res://.godot/imported/circus_tent_outside_texture_02.png-a2700e20b834c39be78b89df01505add.s3tc.ctex"
|
|
||||||
metadata={
|
|
||||||
"imported_formats": ["s3tc_bptc"],
|
|
||||||
"vram_texture": true
|
|
||||||
}
|
|
||||||
generator_parameters={
|
|
||||||
"md5": "a4091b6db3fc67af97a848a98d5046da"
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://_development/ayuroo/models/circus_tent/circus_tent_outside_texture_02.png"
|
|
||||||
dest_files=["res://.godot/imported/circus_tent_outside_texture_02.png-a2700e20b834c39be78b89df01505add.s3tc.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=2
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/uastc_level=0
|
|
||||||
compress/rdo_quality_loss=0.0
|
|
||||||
compress/hdr_compression=1
|
|
||||||
compress/normal_map=0
|
|
||||||
compress/channel_pack=0
|
|
||||||
mipmaps/generate=true
|
|
||||||
mipmaps/limit=-1
|
|
||||||
roughness/mode=0
|
|
||||||
roughness/src_normal=""
|
|
||||||
process/channel_remap/red=0
|
|
||||||
process/channel_remap/green=1
|
|
||||||
process/channel_remap/blue=2
|
|
||||||
process/channel_remap/alpha=3
|
|
||||||
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=0
|
|
||||||
|
Before Width: | Height: | Size: 2.7 KiB |
@ -1,44 +0,0 @@
|
|||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://gfin457shn1d"
|
|
||||||
path.s3tc="res://.godot/imported/circus_tent_outside_texture_02_1.png-6cf227f1bd9069a72d323a69b9e2a746.s3tc.ctex"
|
|
||||||
metadata={
|
|
||||||
"imported_formats": ["s3tc_bptc"],
|
|
||||||
"vram_texture": true
|
|
||||||
}
|
|
||||||
generator_parameters={
|
|
||||||
"md5": "671c567d75d6cffe7d16440771c026c5"
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://_development/ayuroo/models/circus_tent/circus_tent_outside_texture_02_1.png"
|
|
||||||
dest_files=["res://.godot/imported/circus_tent_outside_texture_02_1.png-6cf227f1bd9069a72d323a69b9e2a746.s3tc.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=2
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/uastc_level=0
|
|
||||||
compress/rdo_quality_loss=0.0
|
|
||||||
compress/hdr_compression=1
|
|
||||||
compress/normal_map=0
|
|
||||||
compress/channel_pack=0
|
|
||||||
mipmaps/generate=true
|
|
||||||
mipmaps/limit=-1
|
|
||||||
roughness/mode=0
|
|
||||||
roughness/src_normal=""
|
|
||||||
process/channel_remap/red=0
|
|
||||||
process/channel_remap/green=1
|
|
||||||
process/channel_remap/blue=2
|
|
||||||
process/channel_remap/alpha=3
|
|
||||||
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=0
|
|
||||||
@ -1,10 +1,10 @@
|
|||||||
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://dknefw4cwovq"]
|
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://dknefw4cwovq"]
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://bve8ckrjjnnl6" path="res://_development/ayuroo/models/circus_tent/circus_tent_outside_texture_02.png" id="1_52pi3"]
|
[ext_resource type="Texture2D" uid="uid://12e0onm52r6b" path="res://assets/materials/dev/orange/texture_02.png" id="1_8tkn2"]
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
resource_name = "prototype_grid_orange"
|
resource_name = "prototype_grid_orange"
|
||||||
albedo_texture = ExtResource("1_52pi3")
|
albedo_texture = ExtResource("1_8tkn2")
|
||||||
roughness = 0.97
|
roughness = 0.97
|
||||||
uv1_scale = Vector3(2, 2, 1)
|
uv1_scale = Vector3(2, 2, 1)
|
||||||
uv1_offset = Vector3(0, -1, 0)
|
uv1_offset = Vector3(0, -1, 0)
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://dictg13b71nlf"]
|
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://dictg13b71nlf"]
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://gfin457shn1d" path="res://_development/ayuroo/models/circus_tent/circus_tent_outside_texture_02_1.png" id="1_g6aqn"]
|
[ext_resource type="Texture2D" uid="uid://bwo1s4wl34tyt" path="res://assets/materials/dev/red/texture_02.png" id="1_gjyc6"]
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
resource_name = "prototype_grid_red"
|
resource_name = "prototype_grid_red"
|
||||||
albedo_texture = ExtResource("1_g6aqn")
|
albedo_texture = ExtResource("1_gjyc6")
|
||||||
roughness = 0.97
|
roughness = 0.97
|
||||||
uv1_scale = Vector3(2, 2, 1)
|
uv1_scale = Vector3(2, 2, 1)
|
||||||
uv1_offset = Vector3(0, -1, 0)
|
uv1_offset = Vector3(0, -1, 0)
|
||||||
|
|||||||
83
source/addons/accelerator_keys/accelerator_keys.gd
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
@tool
|
||||||
|
extends EditorPlugin
|
||||||
|
|
||||||
|
var _popup_data: Dictionary[PopupMenu, Dictionary] = {}
|
||||||
|
var _opened_popups: Array[PopupMenu] = []
|
||||||
|
|
||||||
|
func _enter_tree() -> void:
|
||||||
|
get_tree().node_added.connect(_on_node_added)
|
||||||
|
for popup in get_tree().root.find_children("", "PopupMenu", true, false):
|
||||||
|
_setup_popup(popup)
|
||||||
|
|
||||||
|
func _exit_tree() -> void:
|
||||||
|
get_tree().node_added.disconnect(_on_node_added)
|
||||||
|
for popup in get_tree().root.find_children("", "PopupMenu", true, false):
|
||||||
|
_cleanup_popup(popup)
|
||||||
|
|
||||||
|
func _on_node_added(node: Node) -> void:
|
||||||
|
if node is PopupMenu and not (node in _popup_data):
|
||||||
|
_setup_popup(node)
|
||||||
|
|
||||||
|
func _setup_popup(popup: PopupMenu) -> void:
|
||||||
|
var data := {
|
||||||
|
"popup_callable": _on_popup.bind(popup),
|
||||||
|
"input_callable": _on_input.bind(popup),
|
||||||
|
"letter_indices": {},
|
||||||
|
"number_indices": []
|
||||||
|
}
|
||||||
|
popup.about_to_popup.connect(data.popup_callable)
|
||||||
|
popup.window_input.connect(data.input_callable)
|
||||||
|
popup.allow_search = false
|
||||||
|
_popup_data[popup] = data
|
||||||
|
|
||||||
|
func _cleanup_popup(popup: PopupMenu) -> void:
|
||||||
|
var data = _popup_data.get(popup, null)
|
||||||
|
if data:
|
||||||
|
popup.about_to_popup.disconnect(data.popup_callable)
|
||||||
|
popup.window_input.disconnect(data.input_callable)
|
||||||
|
popup.allow_search = true
|
||||||
|
_popup_data.erase(popup)
|
||||||
|
|
||||||
|
func _on_popup(popup: PopupMenu) -> void:
|
||||||
|
var data = _popup_data[popup]
|
||||||
|
data.letter_indices.clear()
|
||||||
|
data.number_indices.clear()
|
||||||
|
|
||||||
|
for i in popup.get_item_count():
|
||||||
|
if popup.is_item_separator(i):
|
||||||
|
continue
|
||||||
|
var text := popup.get_item_text(i).remove_char(0x0332)
|
||||||
|
for j in text.length():
|
||||||
|
var char := text[j].to_lower()
|
||||||
|
if char >= "a" and char <= "z" and not char in data.letter_indices:
|
||||||
|
data.letter_indices[char] = i
|
||||||
|
popup.set_item_text(i, text.insert(j + 1, "\u0332"))
|
||||||
|
break
|
||||||
|
data.number_indices.append(i)
|
||||||
|
|
||||||
|
func _on_input(event: InputEvent, popup: PopupMenu) -> void:
|
||||||
|
if not (event is InputEventKey and event.is_pressed()):
|
||||||
|
return
|
||||||
|
|
||||||
|
var data = _popup_data[popup]
|
||||||
|
var idx := -1
|
||||||
|
if event.keycode >= KEY_0 and event.keycode <= KEY_9:
|
||||||
|
var num = (event.keycode - KEY_1) % 10 + (10 if event.shift_pressed else 0)
|
||||||
|
if num >= 0 and num < data.number_indices.size():
|
||||||
|
idx = data.number_indices[num]
|
||||||
|
elif event.keycode >= KEY_A and event.keycode <= KEY_Z:
|
||||||
|
idx = data.letter_indices.get(char(event.keycode).to_lower(), -1)
|
||||||
|
if idx < 0:
|
||||||
|
return
|
||||||
|
|
||||||
|
popup.index_pressed.emit(idx)
|
||||||
|
popup.id_pressed.emit(popup.get_item_id(idx))
|
||||||
|
|
||||||
|
_opened_popups.append(popup)
|
||||||
|
var submenu = popup.get_item_submenu_node(idx)
|
||||||
|
if submenu:
|
||||||
|
submenu.popup(Rect2(popup.position + Vector2i(popup.size.x, 0), Vector2.ZERO))
|
||||||
|
else:
|
||||||
|
for opened_popup in _opened_popups:
|
||||||
|
opened_popup.hide()
|
||||||
|
_opened_popups.clear()
|
||||||
1
source/addons/accelerator_keys/accelerator_keys.gd.uid
Normal file
@ -0,0 +1 @@
|
|||||||
|
uid://dov6u0npmv86o
|
||||||
7
source/addons/accelerator_keys/plugin.cfg
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
[plugin]
|
||||||
|
|
||||||
|
name="Accelerator Keys"
|
||||||
|
description="Adds support for accelerator keys (digits and letters) for all Godot menus with visual highlighting"
|
||||||
|
author=""
|
||||||
|
version=""
|
||||||
|
script="accelerator_keys.gd"
|
||||||
7
source/addons/reflection_probe_preview/plugin.cfg
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
[plugin]
|
||||||
|
|
||||||
|
name="Reflection Probe Preview"
|
||||||
|
description="Draws a preview of the selected reflection probe in the 3D viewport"
|
||||||
|
author=""
|
||||||
|
version=""
|
||||||
|
script="reflection_probe_preview.gd"
|
||||||
@ -0,0 +1,56 @@
|
|||||||
|
@tool
|
||||||
|
extends EditorPlugin
|
||||||
|
|
||||||
|
var _instance: RID
|
||||||
|
var _mesh: Mesh
|
||||||
|
var _probe: ReflectionProbe
|
||||||
|
|
||||||
|
func _enter_tree() -> void:
|
||||||
|
EditorInterface.get_selection().selection_changed.connect(_update_preview)
|
||||||
|
_create_instance()
|
||||||
|
|
||||||
|
func _exit_tree() -> void:
|
||||||
|
EditorInterface.get_selection().selection_changed.disconnect(_update_preview)
|
||||||
|
_clear_instance()
|
||||||
|
|
||||||
|
func _create_instance() -> void:
|
||||||
|
_instance = RenderingServer.instance_create()
|
||||||
|
|
||||||
|
_mesh = SphereMesh.new()
|
||||||
|
_mesh.radius = 0.5
|
||||||
|
_mesh.height = _mesh.radius * 2.0
|
||||||
|
|
||||||
|
var material = StandardMaterial3D.new()
|
||||||
|
material.roughness = 0
|
||||||
|
material.metallic = 1
|
||||||
|
_mesh.surface_set_material(0, material)
|
||||||
|
|
||||||
|
RenderingServer.instance_geometry_set_cast_shadows_setting(_instance, RenderingServer.SHADOW_CASTING_SETTING_OFF)
|
||||||
|
RenderingServer.instance_set_base(_instance, _mesh)
|
||||||
|
|
||||||
|
func _clear_instance() -> void:
|
||||||
|
if _instance:
|
||||||
|
RenderingServer.free_rid(_instance)
|
||||||
|
if _mesh:
|
||||||
|
RenderingServer.free_rid(_mesh)
|
||||||
|
|
||||||
|
func _update_preview() -> void:
|
||||||
|
var selection = EditorInterface.get_selection().get_selected_nodes()
|
||||||
|
if selection.size() == 1 and selection[0] is ReflectionProbe:
|
||||||
|
_probe = selection[0]
|
||||||
|
var scenario: RID = EditorInterface.get_edited_scene_root().get_world_3d().scenario
|
||||||
|
RenderingServer.instance_set_scenario(_instance, scenario)
|
||||||
|
RenderingServer.instance_set_visible(_instance, true)
|
||||||
|
return
|
||||||
|
|
||||||
|
RenderingServer.instance_set_visible(_instance, false)
|
||||||
|
_probe = null
|
||||||
|
|
||||||
|
func _process(_delta: float) -> void:
|
||||||
|
if not _instance.is_valid() or not _probe:
|
||||||
|
return
|
||||||
|
|
||||||
|
var probe_transform = _probe.global_transform
|
||||||
|
var origin_offset = _probe.origin_offset
|
||||||
|
var instance_transform = probe_transform * Transform3D(Basis(), origin_offset)
|
||||||
|
RenderingServer.instance_set_transform(_instance, instance_transform)
|
||||||
@ -0,0 +1 @@
|
|||||||
|
uid://s872hv3tf78c
|
||||||
@ -3,19 +3,20 @@
|
|||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://dw3af4ir446rk"
|
uid="uid://dw3af4ir446rk"
|
||||||
path="res://.godot/imported/texture_13.png-0710b1716fe2c46a85d4d21fb66c969c.ctex"
|
path.s3tc="res://.godot/imported/texture_13.png-0710b1716fe2c46a85d4d21fb66c969c.s3tc.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://assets/materials/dev/dark/texture_13.png"
|
source_file="res://assets/materials/dev/dark/texture_13.png"
|
||||||
dest_files=["res://.godot/imported/texture_13.png-0710b1716fe2c46a85d4d21fb66c969c.ctex"]
|
dest_files=["res://.godot/imported/texture_13.png-0710b1716fe2c46a85d4d21fb66c969c.s3tc.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
compress/mode=0
|
compress/mode=2
|
||||||
compress/high_quality=false
|
compress/high_quality=false
|
||||||
compress/lossy_quality=0.7
|
compress/lossy_quality=0.7
|
||||||
compress/uastc_level=0
|
compress/uastc_level=0
|
||||||
@ -23,7 +24,7 @@ compress/rdo_quality_loss=0.0
|
|||||||
compress/hdr_compression=1
|
compress/hdr_compression=1
|
||||||
compress/normal_map=0
|
compress/normal_map=0
|
||||||
compress/channel_pack=0
|
compress/channel_pack=0
|
||||||
mipmaps/generate=false
|
mipmaps/generate=true
|
||||||
mipmaps/limit=-1
|
mipmaps/limit=-1
|
||||||
roughness/mode=0
|
roughness/mode=0
|
||||||
roughness/src_normal=""
|
roughness/src_normal=""
|
||||||
@ -37,4 +38,4 @@ process/normal_map_invert_y=false
|
|||||||
process/hdr_as_srgb=false
|
process/hdr_as_srgb=false
|
||||||
process/hdr_clamp_exposure=false
|
process/hdr_clamp_exposure=false
|
||||||
process/size_limit=0
|
process/size_limit=0
|
||||||
detect_3d/compress_to=1
|
detect_3d/compress_to=0
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.7 KiB |
@ -2,20 +2,17 @@
|
|||||||
|
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://cno3emivftt23"
|
uid="uid://bwo1s4wl34tyt"
|
||||||
path.s3tc="res://.godot/imported/_test_level_texture_02.png-229502b47aa79be08819e18707cdd050.s3tc.ctex"
|
path.s3tc="res://.godot/imported/texture_02.png-a575a005feaf2109519dd64e306c6d0b.s3tc.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"imported_formats": ["s3tc_bptc"],
|
"imported_formats": ["s3tc_bptc"],
|
||||||
"vram_texture": true
|
"vram_texture": true
|
||||||
}
|
}
|
||||||
generator_parameters={
|
|
||||||
"md5": "a4091b6db3fc67af97a848a98d5046da"
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://_development/ayuroo/levels/_experimental/_test_level_texture_02.png"
|
source_file="res://assets/materials/dev/red/texture_02.png"
|
||||||
dest_files=["res://.godot/imported/_test_level_texture_02.png-229502b47aa79be08819e18707cdd050.s3tc.ctex"]
|
dest_files=["res://.godot/imported/texture_02.png-a575a005feaf2109519dd64e306c6d0b.s3tc.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
@ -42,7 +42,7 @@ settings/addon_root_folder="res://addons/debug_draw_3d"
|
|||||||
|
|
||||||
[editor_plugins]
|
[editor_plugins]
|
||||||
|
|
||||||
enabled=PackedStringArray("res://addons/Todo_Manager/plugin.cfg", "res://addons/bbcode_edit.editor/plugin.cfg", "res://addons/boxconstructor/plugin.cfg", "res://addons/controller_icons/plugin.cfg", "res://addons/godot_3d_cursor/plugin.cfg", "res://addons/lightmap_probe_grid/plugin.cfg", "res://addons/logger/plugin.cfg", "res://addons/panku_console/plugin.cfg", "res://addons/proto_shape/plugin.cfg", "res://addons/run-configs/plugin.cfg", "res://addons/version_display/plugin.cfg")
|
enabled=PackedStringArray("res://addons/Todo_Manager/plugin.cfg", "res://addons/accelerator_keys/plugin.cfg", "res://addons/bbcode_edit.editor/plugin.cfg", "res://addons/boxconstructor/plugin.cfg", "res://addons/controller_icons/plugin.cfg", "res://addons/godot_3d_cursor/plugin.cfg", "res://addons/lightmap_probe_grid/plugin.cfg", "res://addons/logger/plugin.cfg", "res://addons/panku_console/plugin.cfg", "res://addons/proto_shape/plugin.cfg", "res://addons/reflection_probe_preview/plugin.cfg", "res://addons/run-configs/plugin.cfg", "res://addons/version_display/plugin.cfg")
|
||||||
|
|
||||||
[file_customization]
|
[file_customization]
|
||||||
|
|
||||||
|
|||||||
@ -28,9 +28,9 @@ extends Marker3D
|
|||||||
func _process(_delta: float) -> void:
|
func _process(_delta: float) -> void:
|
||||||
if Engine.is_editor_hint():
|
if Engine.is_editor_hint():
|
||||||
# For some reason, Godot doesn't like this when exporting the game...
|
# For some reason, Godot doesn't like this when exporting the game...
|
||||||
#var editor_selection: EditorSelection = EditorInterface.get_selection()
|
var editor_selection: Object = Engine.get_singleton(&"EditorInterface").get_selection()#EditorInterface.get_selection()
|
||||||
#
|
|
||||||
#if editor_selection.get_selected_nodes().has(self):
|
if editor_selection.get_selected_nodes().has(self):
|
||||||
DebugDraw3D.draw_sphere(global_position, min_radius, Color.RED)
|
DebugDraw3D.draw_sphere(global_position, min_radius, Color.RED)
|
||||||
DebugDraw3D.draw_sphere(global_position, max_radius, Color.SKY_BLUE)
|
DebugDraw3D.draw_sphere(global_position, max_radius, Color.SKY_BLUE)
|
||||||
elif continues_shake:
|
elif continues_shake:
|
||||||
|
|||||||
104
source/tools/lightbeam/lightbeam.gdshader
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
shader_type spatial;
|
||||||
|
render_mode unshaded, blend_add;
|
||||||
|
|
||||||
|
uniform vec4 color : source_color = vec4(1.0, 1.0, 1.0, 1.0);
|
||||||
|
uniform bool use_second_color = false;
|
||||||
|
uniform vec4 second_color : source_color = vec4(1.0, 1.0, 1.0, 1.0);
|
||||||
|
uniform float cone_start_width : hint_range(0.0, 1.0, 0.01) = 0.02;
|
||||||
|
uniform float cone_curve : hint_range(0, 1.0, 0.01) = 0.3;
|
||||||
|
uniform float beam_sharpness : hint_range(0.01, 1.0, 0.01) = 0.25;
|
||||||
|
uniform float beam_fade : hint_range(0.1, 10.0, 0.1) = 4.0;
|
||||||
|
uniform bool use_gradient = false;
|
||||||
|
uniform sampler2D gradient: source_color, repeat_disable;
|
||||||
|
uniform float proximity_fade_distance : hint_range(0.0, 4096.0, 0.01) = 0.75;
|
||||||
|
uniform sampler2D depth_texture : hint_depth_texture, repeat_disable, filter_nearest;
|
||||||
|
|
||||||
|
uniform float z_fade_start : hint_range(0.0, 1.0, 0.01) = 0.5;
|
||||||
|
uniform float z_fade_end : hint_range(0.0, 1.0, 0.01) = 0.8;
|
||||||
|
|
||||||
|
uniform bool use_noise = false;
|
||||||
|
uniform sampler2D noise_texture : source_color, filter_linear_mipmap, repeat_enable;
|
||||||
|
uniform float noise_scale : hint_range(0.1, 10.0, 0.1) = 1.0;
|
||||||
|
uniform float noise_intensity : hint_range(0.0, 1.0, 0.01) = 0.5;
|
||||||
|
uniform vec2 noise_scroll_speed = vec2(0.01, 0.01);
|
||||||
|
uniform float noise_distortion_intensity : hint_range(0.0, 0.1, 0.001) = 0.01;
|
||||||
|
uniform vec2 noise_distortion_scroll_speed = vec2(-0.02, -0.01);
|
||||||
|
|
||||||
|
varying float z_axis_fade;
|
||||||
|
|
||||||
|
void vertex() {
|
||||||
|
vec3 local_z = normalize(MODEL_MATRIX[2].xyz);
|
||||||
|
vec3 to_camera = normalize(CAMERA_POSITION_WORLD - NODE_POSITION_WORLD);
|
||||||
|
vec3 local_x = normalize(cross(to_camera, local_z));
|
||||||
|
vec3 local_y = normalize(cross(local_z, local_x));
|
||||||
|
|
||||||
|
MODELVIEW_MATRIX = VIEW_MATRIX * mat4(
|
||||||
|
vec4(local_x * length(MODEL_MATRIX[0].xyz), 0.0),
|
||||||
|
vec4(local_y * length(MODEL_MATRIX[1].xyz), 0.0),
|
||||||
|
MODEL_MATRIX[2],
|
||||||
|
MODEL_MATRIX[3]
|
||||||
|
);
|
||||||
|
|
||||||
|
z_axis_fade = smoothstep(z_fade_end, z_fade_start, abs(dot(to_camera, local_z)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void fragment() {
|
||||||
|
vec2 uv = UV;
|
||||||
|
|
||||||
|
vec3 input_color;
|
||||||
|
float input_alpha;
|
||||||
|
if (use_second_color) {
|
||||||
|
input_color = mix(color.rgb, second_color.rgb, uv.y);
|
||||||
|
input_alpha = mix(color.a, second_color.a, uv.y);
|
||||||
|
} else {
|
||||||
|
input_color = color.rgb;
|
||||||
|
input_alpha = color.a;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculate cone width at current position along the cone length
|
||||||
|
float cone_progress_y = pow(uv.y, 1.0 - cone_curve);
|
||||||
|
float width = mix(cone_start_width, 1.0, cone_progress_y);
|
||||||
|
float half_width = width * 0.5;
|
||||||
|
|
||||||
|
// Create horizontal mask
|
||||||
|
float distance_from_center_x = abs(uv.x - 0.5);
|
||||||
|
float beam_edge_start = half_width - (half_width * (1.0 - beam_sharpness));
|
||||||
|
float horizontal_mask = 1.0 - smoothstep(beam_edge_start, half_width, distance_from_center_x);
|
||||||
|
|
||||||
|
// Create vertical mask
|
||||||
|
float vertical_mask = pow(max(1.0 - uv.y, 0.001), beam_fade);
|
||||||
|
vertical_mask *= smoothstep(0.0, cone_start_width * 0.5, uv.y);
|
||||||
|
|
||||||
|
// Overlay gradient
|
||||||
|
if (use_gradient) {
|
||||||
|
float gradient_coord = distance_from_center_x / half_width;
|
||||||
|
float gradient_value = texture(gradient, vec2(gradient_coord, 0.5)).r;
|
||||||
|
horizontal_mask *= mix(1.0, gradient_value, 1.0 - (vertical_mask * vertical_mask));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Overlay noise
|
||||||
|
if (use_noise) {
|
||||||
|
vec2 distortion_offset = noise_distortion_scroll_speed * TIME + NODE_POSITION_WORLD.xz;
|
||||||
|
vec2 distortion_sample = texture(noise_texture, uv * noise_scale + distortion_offset).rg;
|
||||||
|
vec2 distortion_uv = uv + (distortion_sample - 0.5) * 2.0 * noise_distortion_intensity;
|
||||||
|
|
||||||
|
vec2 scroll_offset1 = noise_scroll_speed * TIME + NODE_POSITION_WORLD.xz;
|
||||||
|
vec2 scroll_offset2 = vec2(-noise_scroll_speed.x * 0.7, noise_scroll_speed.y * 1.3) * TIME + NODE_POSITION_WORLD.xz;
|
||||||
|
|
||||||
|
float noise_sample1 = texture(noise_texture, distortion_uv * noise_scale + scroll_offset1).r;
|
||||||
|
float noise_sample2 = texture(noise_texture, distortion_uv * noise_scale + scroll_offset2).r;
|
||||||
|
float combined_noise = mix(1.0, noise_sample1 * noise_sample2, 1.0 - vertical_mask);
|
||||||
|
|
||||||
|
horizontal_mask *= mix(1.0, combined_noise, noise_intensity);
|
||||||
|
}
|
||||||
|
|
||||||
|
ALBEDO = input_color;
|
||||||
|
|
||||||
|
ALPHA = horizontal_mask * vertical_mask * input_alpha * z_axis_fade;
|
||||||
|
|
||||||
|
// Proximity Fade
|
||||||
|
float proximity_depth_tex = textureLod(depth_texture, SCREEN_UV, 0.0).r;
|
||||||
|
vec4 proximity_view_pos = INV_PROJECTION_MATRIX * vec4(SCREEN_UV * 2.0 - 1.0, proximity_depth_tex, 1.0);
|
||||||
|
proximity_view_pos.xyz /= proximity_view_pos.w;
|
||||||
|
ALPHA *= clamp(1.0 - smoothstep(proximity_view_pos.z + proximity_fade_distance, proximity_view_pos.z, VERTEX.z), 0.0, 1.0);
|
||||||
|
}
|
||||||
1
source/tools/lightbeam/lightbeam.gdshader.uid
Normal file
@ -0,0 +1 @@
|
|||||||
|
uid://c77hfyht2fpxt
|
||||||
44
source/tools/lightbeam/lightbeam_material.tres
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
[gd_resource type="ShaderMaterial" load_steps=6 format=3 uid="uid://c4uudb0m5p048"]
|
||||||
|
|
||||||
|
[ext_resource type="Shader" uid="uid://c77hfyht2fpxt" path="res://tools/lightbeam/lightbeam.gdshader" id="1_4nd3r"]
|
||||||
|
|
||||||
|
[sub_resource type="Gradient" id="Gradient_h2jn1"]
|
||||||
|
interpolation_mode = 2
|
||||||
|
offsets = PackedFloat32Array(0.004115226, 0.11728395, 0.18724279, 0.28189301, 0.38477367, 0.4341564, 0.63786006, 1)
|
||||||
|
colors = PackedColorArray(1, 1, 1, 1, 0.923899, 0.9239001, 0.9238985, 1, 0.90349716, 0.90349704, 0.90349674, 1, 0.8460438, 0.846044, 0.84604335, 1, 0.696885, 0.6968867, 0.6968853, 1, 0.6556004, 0.6556013, 0.65559965, 1, 0.6364806, 0.63648057, 0.6364794, 1, 0.061926693, 0.061926708, 0.061926648, 1)
|
||||||
|
|
||||||
|
[sub_resource type="GradientTexture1D" id="GradientTexture1D_0fp8q"]
|
||||||
|
gradient = SubResource("Gradient_h2jn1")
|
||||||
|
|
||||||
|
[sub_resource type="FastNoiseLite" id="FastNoiseLite_h2jn1"]
|
||||||
|
noise_type = 0
|
||||||
|
fractal_weighted_strength = 0.3
|
||||||
|
domain_warp_enabled = true
|
||||||
|
domain_warp_frequency = 0.01
|
||||||
|
|
||||||
|
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_0fp8q"]
|
||||||
|
noise = SubResource("FastNoiseLite_h2jn1")
|
||||||
|
seamless = true
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
render_priority = 0
|
||||||
|
shader = ExtResource("1_4nd3r")
|
||||||
|
shader_parameter/color = Color(0.8084624, 0.97797644, 1.0627335, 1)
|
||||||
|
shader_parameter/use_second_color = true
|
||||||
|
shader_parameter/second_color = Color(0.637, 0.6734, 0.91, 1)
|
||||||
|
shader_parameter/cone_start_width = 0.02
|
||||||
|
shader_parameter/cone_curve = 0.0999999977648
|
||||||
|
shader_parameter/beam_sharpness = 0.00999999977648
|
||||||
|
shader_parameter/beam_fade = 3.0000000447036004
|
||||||
|
shader_parameter/use_gradient = true
|
||||||
|
shader_parameter/gradient = SubResource("GradientTexture1D_0fp8q")
|
||||||
|
shader_parameter/proximity_fade_distance = 1.499999966472
|
||||||
|
shader_parameter/z_fade_start = 0.499999988824
|
||||||
|
shader_parameter/z_fade_end = 0.8
|
||||||
|
shader_parameter/use_noise = true
|
||||||
|
shader_parameter/noise_texture = SubResource("NoiseTexture2D_0fp8q")
|
||||||
|
shader_parameter/noise_scale = 1.0000000149012
|
||||||
|
shader_parameter/noise_intensity = 0.5
|
||||||
|
shader_parameter/noise_scroll_speed = Vector2(0.01, 0.01)
|
||||||
|
shader_parameter/noise_distortion_intensity = 0.01
|
||||||
|
shader_parameter/noise_distortion_scroll_speed = Vector2(-0.02, -0.01)
|
||||||