Итак, как же достичь минимального веса игры путем сжатия текстур? Я долго эксперементировал, и, наконец, нашел этому решение. Даже несжимаемые форматы tga и pcx, которые и поддерживаются UDK можно сжать в несколько раз!
1. Для этого открываем в Photoshop'е (далее PS), который, естественно, нам необходим, нашу текстуру. Вот мой пример: (Текстура размером 940x1600)
Сейчас вес в несжатом состоянии составляет 4,3 MB 2. Теперь щелкаем в PS: Изображение -> Режим -> Индексированные цвета И тут подбираем количество цветов, содержащихся в нашей сжатой текстуре. Подбираем на глаз - как вас устроит. Все зависит от цветности изображения. Чем более текстура однородная, тем меньше она потеряет в качестве. В моем случае текстуру без заметных потерь качества можно было сжать аж до 32 цветов. 3. Теперь осталось сохранить наш файл. Крайне рекомендую именно PCX формат! Т.к. после такого способа сжатия, UDK часто не хочет правильно отображать текстуру. Эффект оказался не супер-мега-круто-сжимаемым, но весьма заметен.
MyPackage.upk - Пак с несжатой текстурой. MyPackage2.upk - Пак со сжатой текстурой. Кто знает еще возможные способы сжатия - пишите, буду крайне благодарен!
_SIM_, рассматривать вопрос экономии памяти за счет текстур лучше - комплексно, а не применительно к одной конкретной текстуре. Если у текстуры 4 канала, то можно считать что имеются четыре массива с данными которые можно использовать. Т.е. их можно рассматривать как четыре текстуры. И мы вольны сами решать что мы в них поместим. Не всегда оправданно уменьшать качество цвета. Но иногда можно, особенно в темноте. Можно сделать черно-белую текстуру, в которой передадим детали изображения, а что-бы разукрасить ее, использовать цветную текстуру меньшего разрешения. Так в свое время поступили телевизионщики, когда делали телевидение цветным и пытались впихнуть информацию о цветах в существующие телевизионные стандарты. Так, теперь, часто делают и игроделы. В зависимости от материала, шейдера - можно использовать и более хитрые приемы - была бы фантазия.
Не "мороки", а "работы". Много "мороки" будет у тех, кто не захочет работать. (Морока будет, а результата - нет). А работы тут не много. Сделать одноцветную текстуру. И сделать уменьшенную, пусть в два раза по длине и высоте, цветную текстуру. Одноцветная будет занимать 1/3 от трехцветной, а цветная - 1/4 от первоначальной. Осталось их смешать в шейдере - и получим в два раза меньшую занимаемую видеопамять практически не теряя в качестве. А если учитывать, что ту уменьшенную текстуру можно использовать без изменений при удалении от объекта (или для системы лодов), то в этом случае - при подсчете выигрыша в комплексе - цветную текстуру можно совсем не считать и получим трехкратный выигрыш на пустом месте.