Предварительно умноженная альфа, да или нет?


10

Должен ли я использовать предварительно умноженную альфу? Читая статью Тома Форсайта, он, похоже, не разбирается. Предварительно умноженная альфа (добавка AKA) превосходна во всех смыслах.
Тем не менее, у предварительно умноженной альфы, похоже, есть один существенный недостаток: она плохо поддерживается инструментами.

Используете ли вы / есть предварительно умноженную альфу?

Как поддерживается инструмент?

В частности, я не думаю, что gimp будет хорошо редактировать предварительно умноженные альфа-изображения. Есть ли какие-нибудь плагины gimp для экспорта предварительно умноженной альфы? Как насчет внешнего инструмента?


Я нахожусь в той же позиции, что и вы - я хочу использовать его повсюду, но не уверен, насколько легко я смогу редактировать свои активы с ним, если мне потребуется разработать для него дополнительные инструменты.
Kylotan

Ответы:


4

В настоящее время я использую XNA 3.1 с предварительно умноженной альфой (в 4.0 была добавлена ​​встроенная поддержка Premultiplied Alpha).

В основном это экономит мое время и позволяет убедиться, что прозрачные области моих изображений имеют правильные цвета. Я также портирую на Silverlight, который по умолчанию выполняет предварительное умножение.

У XNA есть конвейер контента, который делает добавление предварительно обработанной предварительной обработки альфа очень простым.

Эта ссылка содержит код для преобразования. Для каждого пикселя:

c.R = (byte)(c.R * c.A / 255);
c.G = (byte)(c.G * c.A / 255);
c.B = (byte)(c.B * c.A / 255);

Многое можно сказать о наличии конвейера контента. Если вы не используете XNA, но используете Visual Studio, вы можете собрать его самостоятельно . Любые другие IDE / процессы сборки также должны быть в состоянии.

И, наконец, если у вас нет шага обработки контента в вашей сборке (и, скорее всего, у вас не так много контента в любом случае), вы можете так же легко выполнить предварительное умножение во время выполнения при загрузке текстур. Это добавит некоторый постоянный фактор к времени загрузки вашей текстуры.

(Если смысл не ясен: вам, вероятно, не следует редактировать предварительно умноженные альфа-изображения. Экспортируйте их, если можете, предварительно умножив, или, что еще лучше, предварительно обработайте их.)


Спасибо. Следует помнить, что предварительно умноженная альфа достаточно хорошо поддерживается в XNA (или скоро будет). Я все еще ищу не-XNA инструменты для создания моего конвейера.
deft_code

3

Если вы используете XNA, есть небольшая поддержка предварительно умноженной альфы. Обычно преобразование выполняется в конвейере содержимого, но ничто не мешает вам сделать это самостоятельно.


1

Я использую предварительно умноженную альфа по умолчанию в своем движке (художник может принудительно не умножить в файле определения материала, если это необходимо для какого-то специального эффекта)

Инструменты, как вы заметили, плохо справляются с предварительно умноженным альфа-каналом - художник может устанавливать цвет и альфа-каналы совершенно независимо. Я настроил все так, чтобы мой художник мог создавать текстурные изображения с предварительной премией альфа (что, по-видимому, легче для ума художника), а инструмент, который конвертирует в формат текстур движка, умножает альфа по умолчанию. Там есть переключатель, поэтому без предварительного умножения может быть сгенерирован, если это абсолютно необходимо.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.