/ / 4-поплавковите цветове по-бързи ли са от 4-байтовите? - производителност, кеширане, графика

Имат ли цветовете с 4 цвята по-бързи от 4-байтовите цветове? - производителност, кеширане, графика

Нека кажем, че аз определям структура на върха. Мога да поддържам връхната структура малка, като опаковам RGBA цвета на върха в един неподписан инт. Така:

struct Vertex
{
float pos[3];
float normal[3];
float texcoord[2];
unsigned int color;    // RGBA
};

Но когато вертексът пристигне в моята вершина шейдър, той ще бъде преобразуван в 4-плаваща стойност: vec4 в GLSL или float4 в HLSL. Вероятно този тип преобразуване отнема известно време на графичния процесор.

Следователно би ли било по-бързо да определим атрибута на цвета на върха като 4-поплавък, като по този начин избягваме преобразуването?

...
float color[4];
...

Или по-големият размер на паметта на този цвят ще направи графичния кеш по-малко ефективен и да доведе до по-бавно изобразяване?

Отговори:

4 за отговор № 1

Съвременните графични процесори имат специален хардуер за разопакованепакетирани формати при зареждане, така че преобразуването е ефективно безплатно. Намалените изисквания за честотна лента на паметта и по-ефективната употреба на кеш на вершината ще подобрят производителността, така че като правило трябва да пакетирате всички връхни атрибути възможно най-плътно, като все пак поддържате достатъчна точност за вашите цели.