in OgreGpuProgramParams.cpp, method GpuSharedParametersUsage::_copySharedParamsToTargetParams()
Code: Select all
...
// target params may be padded to 4 elements, shared params are packed
assert(e.dstDefinition->elementSize % 4 == 0);
size_t iterations = e.dstDefinition->elementSize / 4
* e.dstDefinition->arraySize;
assert(iterations > 0);
size_t valsPerIteration = e.srcDefinition->elementSize / iterations; // <-- BUG, valsPerIteration computes to zero
for (size_t l = 0; l < iterations; ++l)
{
memcpy(pDst, pSrc, sizeof(float) * valsPerIteration);
pSrc += valsPerIteration;
pDst += 4;
}
Clearly, division by iterations is a mistake here. I will put up a patch.