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).