diff options
author | Rémi Verschelde <remi@verschelde.fr> | 2021-11-26 08:25:14 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-26 08:25:14 +0100 |
commit | 4813abc6e7168e8fdc6c30c23f9c26fb0a2d00af (patch) | |
tree | 43d80e8ab09b34bd7a7d97937e2417915fc45d42 /servers/rendering/renderer_rd/shader_compiler_rd.cpp | |
parent | 3a0a935fccf13df3c1117d3d5bee7836c7546109 (diff) | |
parent | 43d999e346f5a4b5ea813b63d157725d3f84335e (diff) | |
download | redot-engine-4813abc6e7168e8fdc6c30c23f9c26fb0a2d00af.tar.gz |
Merge pull request #55311 from Chaosus/fix_uniform_array
Fix uniform array alignment to fix a bug
Diffstat (limited to 'servers/rendering/renderer_rd/shader_compiler_rd.cpp')
-rw-r--r-- | servers/rendering/renderer_rd/shader_compiler_rd.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/servers/rendering/renderer_rd/shader_compiler_rd.cpp b/servers/rendering/renderer_rd/shader_compiler_rd.cpp index f7c8ca1487..77d3a2e766 100644 --- a/servers/rendering/renderer_rd/shader_compiler_rd.cpp +++ b/servers/rendering/renderer_rd/shader_compiler_rd.cpp @@ -661,6 +661,7 @@ String ShaderCompilerRD::_dump_node_code(const SL::Node *p_node, int p_level, Ge uniform_sizes.write[uniform.order] = _get_datatype_size(ShaderLanguage::TYPE_UINT); uniform_alignments.write[uniform.order] = _get_datatype_alignment(ShaderLanguage::TYPE_UINT); } else { + // The following code enforces a 16-byte alignment of uniform arrays. if (uniform.array_size > 0) { int size = _get_datatype_size(uniform.type) * uniform.array_size; int m = (16 * uniform.array_size); @@ -668,10 +669,11 @@ String ShaderCompilerRD::_dump_node_code(const SL::Node *p_node, int p_level, Ge size += m - (size % m); } uniform_sizes.write[uniform.order] = size; + uniform_alignments.write[uniform.order] = 16; } else { uniform_sizes.write[uniform.order] = _get_datatype_size(uniform.type); + uniform_alignments.write[uniform.order] = _get_datatype_alignment(uniform.type); } - uniform_alignments.write[uniform.order] = _get_datatype_alignment(uniform.type); } } |