HLSL: Índice para flutuadores desalinhados / compactados

Eu tenho um vertex shader (2.0) fazendo algumas instâncias - cada vértice especifica um índice em uma matriz.

Se eu tiver uma matriz como esta:

float instanceData[100];

O compilador aloca 100 registros constantes. Cada registro constante é umfloat4, portanto, aloca 4 vezes o espaço necessário.

Eu preciso de uma maneira de fazê-lo alocar apenas 25 registros constantes e armazenar quatro valores em cada um deles.

Idealmente, eu gostaria de um método em que ele ainda pareça umfloat[] na CPU e na GPU (agora estou chamandoEffectParamter.SetValue(Single[]), Eu estou usando XNA). Mas embalar e desembalar manualmente umfloat4[] também é uma opção.

Além disso: quais são as implicações de desempenho para fazer isso? Realmente vale a pena? (Para mim, isso economizará cerca de um lote a cada quatro ou cinco).

questionAnswers(1)

yourAnswerToTheQuestion