diff --git a/src/bgfx_p.h b/src/bgfx_p.h index a771a30bd..879729a34 100644 --- a/src/bgfx_p.h +++ b/src/bgfx_p.h @@ -4103,7 +4103,7 @@ namespace bgfx PredefinedUniform::Enum predefined = nameToPredefinedUniformEnum(name); if (PredefinedUniform::Count == predefined && UniformType::End != UniformType::Enum(type) ) { - uniforms[sr.m_num] = createUniform(name, UniformType::Enum(type), regCount); + uniforms[sr.m_num] = createUniform(name, UniformType::Enum(type), num); sr.m_num++; } } diff --git a/tools/shaderc/shaderc_glsl.cpp b/tools/shaderc/shaderc_glsl.cpp index 9bb46202f..269c58fd0 100644 --- a/tools/shaderc/shaderc_glsl.cpp +++ b/tools/shaderc/shaderc_glsl.cpp @@ -207,6 +207,18 @@ namespace bgfx { namespace glsl un.num = num; un.regIndex = 0; un.regCount = num; + switch (un.type) + { + case UniformType::Mat3: + un.regCount *= 3; + break; + case UniformType::Mat4: + un.regCount *= 4; + break; + default: + break; + } + uniforms.push_back(un); }