Changed the way materials are stored on some dev models

- also adjusted some stuff and added a few passivestar plugins/tools.
This commit is contained in:
SchimmelSpreu83 2025-10-14 20:15:05 +02:00
parent 2981b94b26
commit 7e8f8a1d4d
35 changed files with 419 additions and 269 deletions

View File

@ -37,6 +37,29 @@ import_script/path=""
materials/extract=0
materials/extract_format=0
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/embedded_image_handling=1
gltf/embedded_image_handling=0

View File

@ -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="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="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="Material" uid="uid://c4uudb0m5p048" path="res://tools/lightbeam/lightbeam_material.tres" id="10_283a8"]
[sub_resource type="Environment" id="Environment_cv3fe"]
tonemap_mode = 2
glow_strength = 1.25
glow_bloom = 1.0
[sub_resource type="PlaneMesh" id="PlaneMesh_vl7nw"]
[node name="LayoutTest" type="Node3D"]
script = ExtResource("1_0kdur")
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)
[node name="ReflectionProbe" type="ReflectionProbe" parent="LightmapGI/ReflectionProbes"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 2.6, 3.35)
size = Vector3(14, 6.8, 5.3)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4, 2.6, 3.5)
size = Vector3(14, 6.8, 5)
interior = true
[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)
size = Vector3(6.1, 10, 16)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.2, -2.0000005)
size = Vector3(6, 10, 16)
interior = true
[node name="ReflectionProbe3" type="ReflectionProbe" parent="LightmapGI/ReflectionProbes"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.3999996, 6.0999994, -13)
size = Vector3(15, 6.2000003, 10)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.8999996, 5.999999, -13.5)
size = Vector3(16.2, 6, 11)
origin_offset = Vector3(0, 0, -1.42)
interior = true
[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)
size = Vector3(16, 6, 13)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 6.2, -23)
size = Vector3(16, 6, 12)
interior = true
[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="."]
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")

View File

@ -38,15 +38,16 @@ materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={
"meshes": {
"Main_Cylinder": {
"generate/lightmap_uv": 2,
"generate/lods": 2,
"generate/shadow_meshes": 0,
"lods/normal_merge_angle": 20.0,
"save_to_file/enabled": false,
"save_to_file/fallback_path": "",
"save_to_file/path": ""
"materials": {
"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"
}
},
"nodes": {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -40,16 +40,21 @@ materials/extract_path=""
_subresources={
"materials": {
"prototype_grid_orange": {
"use_external/enabled": false,
"use_external/fallback_path": "",
"use_external/path": ""
"use_external/enabled": true,
"use_external/fallback_path": "res://_development/ayuroo/models/circus_tent/prototype_grid_orange.tres",
"use_external/path": "uid://dknefw4cwovq"
},
"prototype_grid_red": {
"use_external/enabled": true,
"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/embedded_image_handling=1
gltf/embedded_image_handling=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -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

View File

@ -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

View File

@ -52,4 +52,4 @@ _subresources={
}
}
gltf/naming_version=2
gltf/embedded_image_handling=1
gltf/embedded_image_handling=0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -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

View File

@ -1,10 +1,10 @@
[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_name = "prototype_grid_orange"
albedo_texture = ExtResource("1_52pi3")
albedo_texture = ExtResource("1_8tkn2")
roughness = 0.97
uv1_scale = Vector3(2, 2, 1)
uv1_offset = Vector3(0, -1, 0)

View File

@ -1,10 +1,10 @@
[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_name = "prototype_grid_red"
albedo_texture = ExtResource("1_g6aqn")
albedo_texture = ExtResource("1_gjyc6")
roughness = 0.97
uv1_scale = Vector3(2, 2, 1)
uv1_offset = Vector3(0, -1, 0)

View 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()

View File

@ -0,0 +1 @@
uid://dov6u0npmv86o

View 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"

View 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"

View File

@ -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)

View File

@ -0,0 +1 @@
uid://s872hv3tf78c

View File

@ -3,19 +3,20 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dw3af4ir446rk"
path="res://.godot/imported/texture_13.png-0710b1716fe2c46a85d4d21fb66c969c.ctex"
path.s3tc="res://.godot/imported/texture_13.png-0710b1716fe2c46a85d4d21fb66c969c.s3tc.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
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]
compress/mode=0
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
@ -23,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@ -37,4 +38,4 @@ 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
detect_3d/compress_to=0

View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -2,20 +2,17 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cno3emivftt23"
path.s3tc="res://.godot/imported/_test_level_texture_02.png-229502b47aa79be08819e18707cdd050.s3tc.ctex"
uid="uid://bwo1s4wl34tyt"
path.s3tc="res://.godot/imported/texture_02.png-a575a005feaf2109519dd64e306c6d0b.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "a4091b6db3fc67af97a848a98d5046da"
}
[deps]
source_file="res://_development/ayuroo/levels/_experimental/_test_level_texture_02.png"
dest_files=["res://.godot/imported/_test_level_texture_02.png-229502b47aa79be08819e18707cdd050.s3tc.ctex"]
source_file="res://assets/materials/dev/red/texture_02.png"
dest_files=["res://.godot/imported/texture_02.png-a575a005feaf2109519dd64e306c6d0b.s3tc.ctex"]
[params]

View File

@ -42,7 +42,7 @@ settings/addon_root_folder="res://addons/debug_draw_3d"
[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]

View File

@ -28,9 +28,9 @@ extends Marker3D
func _process(_delta: float) -> void:
if Engine.is_editor_hint():
# For some reason, Godot doesn't like this when exporting the game...
#var editor_selection: EditorSelection = EditorInterface.get_selection()
#
#if editor_selection.get_selected_nodes().has(self):
var editor_selection: Object = Engine.get_singleton(&"EditorInterface").get_selection()#EditorInterface.get_selection()
if editor_selection.get_selected_nodes().has(self):
DebugDraw3D.draw_sphere(global_position, min_radius, Color.RED)
DebugDraw3D.draw_sphere(global_position, max_radius, Color.SKY_BLUE)
elif continues_shake:

View 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);
}

View File

@ -0,0 +1 @@
uid://c77hfyht2fpxt

View 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)