the assertion is raised in GpuProgramParameters::_writeRawConstants here
assert(physicalIndex + count <= mFloatConstants.size());
it seems the physical index is 36 and the count is 16 so the add is bigger than 48. This error is given when the prgram packs inverse world matrix parameter into the float array (the vertex shader is nothing unusual and it worked ok with the former version
What could it happen?
i use jaiqua.mesh with shader.
- Code: Select all
void vs( float4 iPos : POSITION,
float2 iTex0 : TEXCOORD0,
float4 blendIdx : BLENDINDICES,
float4 blendWgt : BLENDWEIGHT,
out float4 oColor : COLOR,
out float4 oPos : POSITION,
out float2 oTex0 : TEXCOORD0,
uniform float3x4 worldMatrix3x4Array[60],
uniform float4x4 viewProjectionMatrix )
{
float4 blendPos = float4(0,0,0,0);
int i;
for (i = 0; i < 4; ++i)
{
blendPos += float4(mul(worldMatrix3x4Array[blendIdx[i]], iPos).xyz, 1.0) * blendWgt[i];
}
// view / projection
oPos = mul(viewProjectionMatrix, blendPos);
oTex0 = iTex0;
oColor = float4(1,0,0,1);
}
- Code: Select all
vertex_program Ogre/VS hlsl
{
source vs.hlsl
entry_point vs
target vs_2_0
includes_skeletal_animation true
default_params
{
param_named_auto worldMatrix3x4Array world_matrix_array_3x4
param_named_auto viewProjectionMatrix viewproj_matrix
}
}
1.6.0is fine, 1.6.1 - 1.6.4 are bad.
any advices?








