Підвищення якості dxt-стислих текстур

Іноді буває що стиснення дуже небажано, або дає дуже поганий результат. Можна змириться і зберігати текстуру в BMP, а можна використовувати той факт, що альфа канал стискається з більшою точністю.

Трюк полягає в поділі текстури на кольоровість і на яскравість, яка буде зберігається в альфа каналі. Найпростіший спосіб так зробити - завантажити плагін для фотошопа FilterMeister і запустити в ньому цей скрипт:

Прихований текст: показати


ForEveryTile: int r_, g_, b_;
int max_;
int mul_;


if # 40; planes - planesWithoutAlpha == 0 # 41; Info # 40; "Please select RGB and Alpha channels in Photoshop's Channel palette. Then restart this plugin." # 41 ;;
return false;
>


if # 40; imageMode == 11 # 41; mul_ = 32768;
else if # 40; imageMode == 3 # 41; mul_ = 255;
else return false;


for # 40; y = y_start; y for # 40; x = x_start; x r_ = src # 40; x, y, 0 # 41 ;;
g_ = src # 40; x, y, 1 # 41 ;;
b_ = src # 40; x, y, 2 # 41 ;;
max_ = max # 40; max # 40; r_, g_ # 41;, b_ # 41 ;;

r_ = # 40; r_ * mul_ # 41; / Max_;
g_ = # 40; g_ * mul_ # 41; / Max_;
b_ = # 40; b_ * mul_ # 41; / Max_;

pset # 40; x, y, 0, r_ # 41 ;;
pset # 40; x, y, 1, g_ # 41 ;;
pset # 40; x, y, 2, b_ # 41 ;;
pset # 40; x, y, 3, max_ # 41 ;;


Для "розпакування" такої текстури треба всього-лише написати в шейдера Combine texture * texture alpha

100 текстурок 1024х1024 в БМП і 100 текстурок 1024х1024 наприклад ПНГ / тга / ДДС різниця буде величезною


Після того як ЮНИТИ скомпресіла ці текстурки - різниці таки не буде, правильно? (Якщо без хитрих маніпуляцій з dds як писали вище)


Так як DXT - стиснення з втратами, то трюк з альфа-каналом дозволяє зменшити артефакти стиснення.

Схожі статті