HLSL: Índice de flotadores no alineados / empaquetados

Tengo un sombreador de vértices (2.0) haciendo algunas instancias: cada vértice especifica un índice en una matriz.

Si tengo una matriz como esta:

float instanceData[100];

El compilador le asigna 100 registros constantes. Cada registro constante es unfloat4, por lo que está asignando 4 veces más espacio del necesario.

Necesito una forma de asignar solo 25 registros constantes y almacenar cuatro valores en cada uno de ellos.

Idealmente, me gustaría un método donde todavía se vea como unfloat[] tanto en la CPU como en la GPU (en este momento estoy llamandoEffectParamter.SetValue(Single[]), Estoy usando XNA). Pero empacar y desempacar manualmente unfloat4[] También es una opción.

Además: ¿cuáles son las implicaciones de rendimiento para hacer esto? ¿Realmente vale la pena? (Para mí, esto ahorrará aproximadamente un lote de cada cuatro o cinco).

Respuestas a la pregunta(1)

Su respuesta a la pregunta