public static int GetElementSize(GpuConstantType ctype, bool padToMultiplesOf4)
{
if (padToMultiplesOf4)
{
switch (ctype)
{
case GpuConstantType.Float1:
case GpuConstantType.Float2:
case GpuConstantType.Float3:
case GpuConstantType.Float4:
case GpuConstantType.Int1:
case GpuConstantType.Int2:
case GpuConstantType.Int3:
case GpuConstantType.Int4:
case GpuConstantType.Sampler1D:
case GpuConstantType.Sampler2D:
case GpuConstantType.Sampler3D:
case GpuConstantType.Sampler1DShadow:
case GpuConstantType.Sampler2DShadow:
case GpuConstantType.SamplerCube:
return 4;
case GpuConstantType.Matrix_2X2:
case GpuConstantType.Matrix_2X3:
case GpuConstantType.Matrix_2X4:
return 8; // 2 float4s
case GpuConstantType.Matrix_3X2:
case GpuConstantType.Matrix_3X3:
case GpuConstantType.Matrix_3X4:
return 12; //3 float4s
case GpuConstantType.Matrix_4X2:
case GpuConstantType.Matrix_4X3:
case GpuConstantType.Matrix_4X4:
return 16; //4 float4s
default:
return 4;
}
}
// else
{
switch (ctype)
{
case GpuConstantType.Float1:
case GpuConstantType.Int1:
case GpuConstantType.Sampler1D:
case GpuConstantType.Sampler2D:
case GpuConstantType.Sampler3D:
case GpuConstantType.Sampler1DShadow:
case GpuConstantType.Sampler2DShadow:
case GpuConstantType.SamplerCube:
return 1;
case GpuConstantType.Float2:
case GpuConstantType.Int2:
return 2;
case GpuConstantType.Float3:
case GpuConstantType.Int3:
return 3;
case GpuConstantType.Float4:
case GpuConstantType.Int4:
return 4;
case GpuConstantType.Matrix_2X2:
return 4;
case GpuConstantType.Matrix_2X3:
case GpuConstantType.Matrix_3X2:
return 6;
case GpuConstantType.Matrix_2X4:
case GpuConstantType.Matrix_4X2:
return 8;
case GpuConstantType.Matrix_3X3:
return 9;
case GpuConstantType.Matrix_3X4:
case GpuConstantType.Matrix_4X3:
return 12;
case GpuConstantType.Matrix_4X4:
return 16;
default:
return 4;
}
}
}