Мне очень любопытно, какие различия между GLSL/GLSL и NEON
Я знаю, что GLSL использует ядра GPU, а NEON использует ядра CPU.
Однако я смущен, когда я умножаю матрицу на матрицу с помощью инструкции NEON, я не уверен, что это действительно лучший способ, чем умножение матрицы на матрицу в шейдерных кодах, потому что, как вы знаете, GPU имеет гораздо больше ядер, чем процессор даже если NEON существует, чтобы ускорить вычисление.
Кто-нибудь знает, какая разница между двумя способами?
Сложно сказать, так как вы обсуждаете набор инструкций процессора, предназначенный главным образом для встроенных приложений (ARM NEON). Это означает, что вы имеете дело со встроенным графическим процессором, который может быть или не быть скалярным по своей природе. Новые графические процессоры являются скалярными, но более старые архитектуры представляют собой векторные и встроенные архитектуры, которые часто имеют более старый дизайн. Поэтому, хотя вы точно знаете, что умножение Matrix на основе NEON является SIMD, в конце концов GLSL оно может быть скалярным или вектором в зависимости от основного GPU.
Но все это обсуждение того, как операции фактически реализованы, не имеет значения в великой схеме вещей. Что действительно важно, так это то, почему вы выполняете матричное умножение. Если это то, что не зависит от вершин или фрагментов, тогда вам обычно лучше делать это на процессоре. В противном случае, несмотря на то, что у графического процессора может быть больше функциональных блоков, вы тратите впустую вычислительные ресурсы, повторяя один и тот же расчет снова и снова.
Ваш вопрос, кажется, подразумевает, что это то, что можно было сделать один раз на процессоре и использовать несколько раз во время затенения, и это будет лучшим подходом к принятию в целом.