Сразу оговорюсь,что для текстур я всегда использую формат PNG. Как по мне, он даёт хорошее соотношение между качеством и размером файла, поддерживает 8 и 16 бит на канал, легко редактировать и его поддерживают все. Можете со мной не соглашаться, но бОльшая часть поста завязана именно на PNG и тонкости работы с ним.
Как извлечь альфа-канал из PNG?
Часто бывает такое, что нужно разделить альфа-канал (прозрачность) и RGB-каналы. Например, извлечь Smoothness из карты Metallic/Smoothness или извлечь прозрачность из декали, для более точного редактирования.
Эту задачу можно легко решить с помощью Adobe Photoshop.
1. Открываем PNG в Photoshop и выбираем наш слой.

2. Нажимаем на пункт меню Layer -> Layer Mask -> From Transparency. Это команда конвертирует альфа канал в маску слоя, с которой удобно работать.

3. Альфа-канал (прозрачность) будет конвертирован в альфа-маску слоя.

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

Этот контур возникает из-за того, что альфа не может идеально совпадать с изображением в RGB канале. По мере уменьшения MipMap уровней, контур будет только увеличиваться. Схожая ситуация случается, когда острова развёртки на текстуре не имеют запаса по отношению к островам на модели и появляются швы в движке.
В обоих случаях проблема решается одинаково – с помощью Dilation’а текстуры.
Что такое Dilation можно прочитать в статье “Substance Painter. Параметры запекания. Полный разбор”
В случае текстур с прозрачностью Dilation применяется к RGB составляющей текстуры, а альфа остаётся в исходном виде.
Теперь рассмотрим как это сделать в Adobe Photoshop.
1. Скачиваем и устанавливаем Action тут или тут.
2. Открываем изображение и дублируем слой.

3. Выбираем нижний слой и выбираем функцию Layer->Matting->Defringe со значением по умолчанию (1 пиксель). Это позволит нам избавится от мусора на Diation.

4. Выбираем нижний слой и запускаем Action “Dilate many times“.

5. Будет создано несколько слоёв. Выделяем все слои, кроме верхнего (исходного) слоя и сливаем в один (Ctrl+E).

6. Повторяем нужное количество раз шаги 4 и 5. Пока размер Dilation’a не будет достаточно большим. Чем выше разрешение текстуры, тем бОльшее количество раз придётся повторить эти шаги.

7. Теперь необходимо перенести альфу с исходного слоя на слой с Dilation. Для этого выбираем верхний слой и извлекаем прозрачность в маску слоя (Layer -> Layer Mask -> From Transparency).

8. Копируем маску слоя из верхнего в нижний.

9. Скрываем верхний слой и сохраняем в PNG.

Проблема с сохранением чёрного в альфе из Photoshop
Ещё один очень важный момент. Photophop при сохранении PNG любит думать, что в местах изображения, где прозрачность равна 100% (альфа абсолютно чёрная), информация о цвете не нужна и он делает эти пиксели белыми (или чёрными).


Как же решить эту проблему?
1. Нажимаем с зажатым Alt по маске слоя, чтобы перейти в редактирование маски.

2. Нажимаем Ctrl+L для редактирования уровней. Устанавливаем в Outputl Levels значение 2 вместо 0.

3. Сохраняем в PNG.
Смысл в том, что мы незначительно высветляем чёрный (с #000000 до #020202). Визуально это совершенно не заметно, а для Photoshop это является знаком, что пиксели под прозрачностью удалять не стоит.
