diff options
author | Yuri Roubinsky <chaosus89@gmail.com> | 2021-10-17 14:38:26 +0300 |
---|---|---|
committer | Yuri Roubinsky <chaosus89@gmail.com> | 2021-11-12 12:53:40 +0300 |
commit | 826e781bfa90f55eed579e9b512a19b0c1c19ba4 (patch) | |
tree | 5c6f1a88cfed28ab09ff3e959e1c724dcdbebae1 /servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp | |
parent | 13769aebe9d435b9041f4ec8dc6f4b277a87b444 (diff) | |
download | redot-engine-826e781bfa90f55eed579e9b512a19b0c1c19ba4.tar.gz |
Fix default_texture_param in shader pipeline to support uniform arrays
Diffstat (limited to 'servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp')
-rw-r--r-- | servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp b/servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp index 13a3e814f6..81a662c6eb 100644 --- a/servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp +++ b/servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp @@ -2120,11 +2120,20 @@ void RendererCanvasRenderRD::ShaderData::set_code(const String &p_code) { valid = true; } -void RendererCanvasRenderRD::ShaderData::set_default_texture_param(const StringName &p_name, RID p_texture) { +void RendererCanvasRenderRD::ShaderData::set_default_texture_param(const StringName &p_name, RID p_texture, int p_index) { if (!p_texture.is_valid()) { - default_texture_params.erase(p_name); + if (default_texture_params.has(p_name) && default_texture_params[p_name].has(p_index)) { + default_texture_params[p_name].erase(p_index); + + if (default_texture_params[p_name].is_empty()) { + default_texture_params.erase(p_name); + } + } } else { - default_texture_params[p_name] = p_texture; + if (!default_texture_params.has(p_name)) { + default_texture_params[p_name] = Map<int, RID>(); + } + default_texture_params[p_name][p_index] = p_texture; } } |