Есть ли какое-то ограничение по скорости для использования ** упакованной ** структуры вершин? - PullRequest
0 голосов
/ 26 октября 2019

У меня есть это объявление в моей реализации металлического шейдера:

    struct InVertex {
      packed_float3 pos;
      packed_float2 textureCoord;
      packed_uchar4 color;
    };

Есть ли какое-либо ограничение по скорости для использования упакованного объявления? Если да, то как это измерить?

1 Ответ

1 голос
/ 27 октября 2019

На основании этой Спецификации языка металлического затенения

  • Вы не можете использовать атрибут stage_in для объявления элементов структуры, которые упакованные векторы, матрицы, структуры, битовые поля, ссылки или указатели на тип или массивы скаляров, векторов или матриц.

  • Функции и аргументы MSL имеют эти дополнительные ограничения: Возвращаемый тип функции вершины или фрагмента не может включать в себя элемент, который является упакованным векторным типом, типом матрицы, типом структуры, ссылкой или указателем на тип.

  • Вы можете использовать индекс массива для доступа к компонентам упакованного типа векторных данных. Однако вы не можете использовать синтаксис выбора .xyzw или .rgba для доступа к компонентам упакованного типа векторных данных.

Есть ли какое-либо ухудшение скорости дляиспользовать упакованную структуру вершин?

Это очень хорошо описано в этом ответе , короче говоря, вы бы выиграли от его использования, с точки зрения скорости, особенно когдапередавая много данных.

...