- mDefaultUniformBlock.size = mDefaultUniformBlock.members.back().offset + uniformSize[mDefaultUniformBlock.members.back().location];
-
- mUniformBlocks.push_back(mDefaultUniformBlock);
+ if(mDefaultUniformBlock.members.size() > 0)
+ {
+ uint32_t lastUniformLocation = mDefaultUniformBlock.members.back().location;
+ auto lastUniform = std::find_if(mStandaloneUniformExtraInfos.begin(), mStandaloneUniformExtraInfos.end(), [&lastUniformLocation](const UniformExtraInfo& iter) { return iter.location == lastUniformLocation; });
+ if(lastUniform != mStandaloneUniformExtraInfos.end())
+ {
+ mDefaultUniformBlock.size = mDefaultUniformBlock.members.back().offset + (lastUniform->size * lastUniform->arraySize);
+ mUniformBlocks.push_back(mDefaultUniformBlock);
+ }
+ }
+ else
+ {
+ mDefaultUniformBlock.size = 0;
+ }