From 7ecdfc8b5289722f53dc46be8a7d54e7a692a8d9 Mon Sep 17 00:00:00 2001 From: Chaosus Date: Sun, 24 Nov 2024 14:18:53 +0300 Subject: [PATCH] Add `samplerExternalOES` type to shader globals --- editor/shader_globals_editor.cpp | 9 +++++++++ scene/main/shader_globals_override.cpp | 5 +++++ servers/rendering_server.cpp | 2 ++ 3 files changed, 16 insertions(+) diff --git a/editor/shader_globals_editor.cpp b/editor/shader_globals_editor.cpp index a53b621097b..2b368d0c908 100644 --- a/editor/shader_globals_editor.cpp +++ b/editor/shader_globals_editor.cpp @@ -65,6 +65,7 @@ static const char *global_var_type_names[RS::GLOBAL_VAR_TYPE_MAX] = { "sampler2DArray", "sampler3D", "samplerCube", + "samplerExternalOES", }; class ShaderGlobalsEditorInterface : public Object { @@ -232,6 +233,11 @@ protected: pinfo.hint = PROPERTY_HINT_RESOURCE_TYPE; pinfo.hint_string = "Cubemap,CompressedCubemap"; } break; + case RS::GLOBAL_VAR_TYPE_SAMPLEREXT: { + pinfo.type = Variant::OBJECT; + pinfo.hint = PROPERTY_HINT_RESOURCE_TYPE; + pinfo.hint_string = "ExternalTexture"; + } break; default: { } break; } @@ -339,6 +345,9 @@ static Variant create_var(RS::GlobalShaderParameterType p_type) { case RS::GLOBAL_VAR_TYPE_SAMPLERCUBE: { return ""; } + case RS::GLOBAL_VAR_TYPE_SAMPLEREXT: { + return ""; + } default: { return Variant(); } diff --git a/scene/main/shader_globals_override.cpp b/scene/main/shader_globals_override.cpp index 41e0aa739ee..4007cd58e94 100644 --- a/scene/main/shader_globals_override.cpp +++ b/scene/main/shader_globals_override.cpp @@ -197,6 +197,11 @@ void ShaderGlobalsOverride::_get_property_list(List *p_list) const pinfo.hint = PROPERTY_HINT_RESOURCE_TYPE; pinfo.hint_string = "Cubemap"; } break; + case RS::GLOBAL_VAR_TYPE_SAMPLEREXT: { + pinfo.type = Variant::OBJECT; + pinfo.hint = PROPERTY_HINT_RESOURCE_TYPE; + pinfo.hint_string = "ExternalTexture"; + } break; default: { } break; } diff --git a/servers/rendering_server.cpp b/servers/rendering_server.cpp index 2051d0caac0..fa52d2025ed 100644 --- a/servers/rendering_server.cpp +++ b/servers/rendering_server.cpp @@ -1868,6 +1868,8 @@ int RenderingServer::global_shader_uniform_type_get_shader_datatype(GlobalShader return ShaderLanguage::TYPE_SAMPLER3D; case RS::GLOBAL_VAR_TYPE_SAMPLERCUBE: return ShaderLanguage::TYPE_SAMPLERCUBE; + case RS::GLOBAL_VAR_TYPE_SAMPLEREXT: + return ShaderLanguage::TYPE_SAMPLEREXT; default: return ShaderLanguage::TYPE_MAX; // Invalid or not found. }