Swizzling компоненты векторов 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 более эффективно, чем ручное перемещение каналов, поскольку графические процессоры поддерживают это аппаратно (опять же, некоторые компиляторы графических процессоров могут это обнаруживать и оптимизировать также и перемещения).