diff options
author | tetrapod00 <145553014+tetrapod00@users.noreply.github.com> | 2024-09-19 13:44:08 -0700 |
---|---|---|
committer | tetrapod00 <145553014+tetrapod00@users.noreply.github.com> | 2024-10-08 11:02:45 -0700 |
commit | 12d2c05936500dd95d8bab748c5530045a39ebc8 (patch) | |
tree | ed3df179dd9b381422c473c41bcf0400ac3876bc /scene | |
parent | 0a4aedb36065f66fc7e99cb2e6de3e55242f9dfb (diff) | |
download | redot-engine-12d2c05936500dd95d8bab748c5530045a39ebc8.tar.gz |
Add "Inspect Native Shader Code" to shader resource and shader editor
Diffstat (limited to 'scene')
-rw-r--r-- | scene/resources/shader.cpp | 12 | ||||
-rw-r--r-- | scene/resources/shader.h | 2 |
2 files changed, 14 insertions, 0 deletions
diff --git a/scene/resources/shader.cpp b/scene/resources/shader.cpp index 46d38146a6..fd9695dc43 100644 --- a/scene/resources/shader.cpp +++ b/scene/resources/shader.cpp @@ -32,6 +32,7 @@ #include "shader.compat.inc" #include "core/io/file_access.h" +#include "scene/main/scene_tree.h" #include "servers/rendering/shader_language.h" #include "servers/rendering/shader_preprocessor.h" #include "servers/rendering_server.h" @@ -124,6 +125,14 @@ String Shader::get_code() const { return code; } +void Shader::inspect_native_shader_code() { + SceneTree *st = SceneTree::get_singleton(); + RID _shader = get_rid(); + if (st && _shader.is_valid()) { + st->call_group_flags(SceneTree::GROUP_CALL_DEFERRED, "_native_shader_source_visualizer", "_inspect_shader", _shader); + } +} + void Shader::get_shader_uniform_list(List<PropertyInfo> *p_params, bool p_get_groups) const { _update_shader(); @@ -248,6 +257,9 @@ void Shader::_bind_methods() { ClassDB::bind_method(D_METHOD("get_shader_uniform_list", "get_groups"), &Shader::_get_shader_uniform_list, DEFVAL(false)); + ClassDB::bind_method(D_METHOD("inspect_native_shader_code"), &Shader::inspect_native_shader_code); + ClassDB::set_method_flags(get_class_static(), _scs_create("inspect_native_shader_code"), METHOD_FLAGS_DEFAULT | METHOD_FLAG_EDITOR); + ADD_PROPERTY(PropertyInfo(Variant::STRING, "code", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR), "set_code", "get_code"); BIND_ENUM_CONSTANT(MODE_SPATIAL); diff --git a/scene/resources/shader.h b/scene/resources/shader.h index 682fbd7ea6..ca376ad1f4 100644 --- a/scene/resources/shader.h +++ b/scene/resources/shader.h @@ -84,6 +84,8 @@ public: void set_code(const String &p_code); String get_code() const; + void inspect_native_shader_code(); + void get_shader_uniform_list(List<PropertyInfo> *p_params, bool p_get_groups = false) const; void set_default_texture_parameter(const StringName &p_name, const Ref<Texture> &p_texture, int p_index = 0); |