Что именно составляет вихри в OpenGL ES 2.0? (PowerVR SGX специально.)

PowerVR говорит

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

Что именно извергает?

color.brg  // This fits the definition I'm familiar with.

Но что насчет vec3(color.b, color.r, color.g), или же vec3(color)когда цвет vec4?

Доступ к одному компоненту или его изменение представляют собой мошенничество? Я бы на самом деле так не думал, но если нет, то вы можете обойтись без излишеств, просто выполнив еще несколько операций присваивания вручную. У меня нет проблем с этим, но для меня это кажется волшебством, если бы вы могли получить тот же эффект на более высокой скорости, просто написав код без излишней нотации.

2 ответа

Решение

В соответствии со спецификацией GLSL "маски Swizzle" определяются как селекторы полей компонента для векторных типов. .brg это маска изгиба, как есть .rgba или же .b, Все из них пьяные.

Что касается того, о чем говорит PowerVR, это их дело. Может быть .rgb хорошо, так как он выбирает компоненты в том же порядке. Или, может быть, это не так.

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

векторы lowp являются 8-битными плавающими на канал, я не уверен насчет Powervr, но, вообще говоря, передача движущихся данных между плавающим 32-битным регистром (или 16-битным, опять же в зависимости от архитектуры) более эффективна в отличие от плавающего 8-битного, потому что это не требует дополнительных инструкций маскировки / перемещения. В основном память GPU выравнивается таким образом.

Что именно извергает?

Проще говоря,

Swizzle говорит, что какой канал источника (или комбинация источников) должен идти в какой канал назначения

пример:

vec3 dest.rgb = vec3(src1.r, src2.r, src3.r);

переместит канал src1.r в канал dest.r, канал src2.r в канал dest.g и канал src3.r в канал dest.b.

использование swizzle более эффективно, чем перемещение каналов вручную, поскольку графические процессоры поддерживают это аппаратно (опять же, некоторые компиляторы GPU могут это обнаруживать и оптимизировать также и перемещения).

Другие вопросы по тегам