diff --git a/core/project_settings.cpp b/core/project_settings.cpp
index 54ee100dde0..88086d0552a 100644
--- a/core/project_settings.cpp
+++ b/core/project_settings.cpp
@@ -1024,6 +1024,7 @@ ProjectSettings::ProjectSettings() {
if (Engine::get_singleton()->has_singleton("GodotSharp")) {
extensions.push_back("cs");
}
+ extensions.push_back("gdshader");
extensions.push_back("shader");
GLOBAL_DEF("editor/main_run_args", "");
diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml
index aebe194033b..cbef5d45eb2 100644
--- a/doc/classes/ProjectSettings.xml
+++ b/doc/classes/ProjectSettings.xml
@@ -528,7 +528,7 @@
Search path for project-specific script templates. Godot will search for script templates both in the editor-specific path and in this project-specific path.
-
+
Text-based file extensions to include in the script editor's "Find in Files" feature. You can add e.g. [code]tscn[/code] if you wish to also parse your scene files, especially if you use built-in scripts which are serialized in the scene files.
diff --git a/editor/editor_asset_installer.cpp b/editor/editor_asset_installer.cpp
index 315ba776250..91853632f92 100644
--- a/editor/editor_asset_installer.cpp
+++ b/editor/editor_asset_installer.cpp
@@ -156,6 +156,7 @@ void EditorAssetInstaller::open(const String &p_path, int p_depth) {
extension_guess["glb"] = tree->get_icon("PackedScene", "EditorIcons");
extension_guess["gdshader"] = tree->get_icon("Shader", "EditorIcons");
+ extension_guess["shader"] = tree->get_icon("Shader", "EditorIcons");
extension_guess["gd"] = tree->get_icon("GDScript", "EditorIcons");
if (Engine::get_singleton()->has_singleton("GodotSharp")) {
extension_guess["cs"] = tree->get_icon("CSharpScript", "EditorIcons");
diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp
index d735b60cc0c..eadfba21fc5 100644
--- a/editor/plugins/script_editor_plugin.cpp
+++ b/editor/plugins/script_editor_plugin.cpp
@@ -2975,7 +2975,7 @@ void ScriptEditor::_on_find_in_files_result_selected(String fpath, int line_numb
if (ResourceLoader::exists(fpath)) {
RES res = ResourceLoader::load(fpath);
- if (fpath.get_extension() == "shader") {
+ if (fpath.get_extension() == "gdshader" || fpath.get_extension() == "shader") {
ShaderEditorPlugin *shader_editor = Object::cast_to(EditorNode::get_singleton()->get_editor_data().get_editor("Shader"));
shader_editor->edit(res.ptr());
shader_editor->make_visible(true);
diff --git a/misc/dist/linux/org.godotengine.Godot.xml b/misc/dist/linux/org.godotengine.Godot.xml
index 2f647f71a64..e51179cd617 100644
--- a/misc/dist/linux/org.godotengine.Godot.xml
+++ b/misc/dist/linux/org.godotengine.Godot.xml
@@ -21,6 +21,12 @@
+
+ Godot Engine shader
+
+
+
+
GDScript script
diff --git a/scene/resources/shader.cpp b/scene/resources/shader.cpp
index b23cb98ef56..581deb80842 100644
--- a/scene/resources/shader.cpp
+++ b/scene/resources/shader.cpp
@@ -204,6 +204,7 @@ RES ResourceFormatLoaderShader::load(const String &p_path, const String &p_origi
}
void ResourceFormatLoaderShader::get_recognized_extensions(List *p_extensions) const {
+ p_extensions->push_back("gdshader");
p_extensions->push_back("shader");
}
@@ -213,7 +214,7 @@ bool ResourceFormatLoaderShader::handles_type(const String &p_type) const {
String ResourceFormatLoaderShader::get_resource_type(const String &p_path) const {
String el = p_path.get_extension().to_lower();
- if (el == "shader") {
+ if (el == "gdshader" || el == "shader") {
return "Shader";
}
return "";
@@ -244,10 +245,12 @@ Error ResourceFormatSaverShader::save(const String &p_path, const RES &p_resourc
void ResourceFormatSaverShader::get_recognized_extensions(const RES &p_resource, List *p_extensions) const {
if (const Shader *shader = Object::cast_to(*p_resource)) {
if (shader->is_text_shader()) {
+ p_extensions->push_back("gdshader");
p_extensions->push_back("shader");
}
}
}
+
bool ResourceFormatSaverShader::recognize(const RES &p_resource) const {
return p_resource->get_class_name() == "Shader"; //only shader, not inherited
}