Teksturovanije
January 30

Перевод: Оптимизация 3D текстурования для мобильных игр: Градиентное текстурование и его эффективность

Оригинал. Автор: Vicente Moscardo Ribes (@Sr_Jueves3D)

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

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

3D визуализация (3D Rendering)

Процесс 3D визуализации в игровых движках потребен для преобразования 3D моделей в видимые изображения в режиме реального времени. Этот процесс содержит в себе несколько основных этапов, кои выполняются в постоянном цикле с заданной частотой в таких движках как: Unity или Unreal Engine. Сначала 3D модели создаются и правятся с помощью преобразования геометрии, чтобы правильно расположить их в игровом пространстве. После, на поверхности моделей накладываются текстуры, а шейдеры обрабатывают отображение цветов и деталей, определяя конечный вид каждого пикселя.

После наложения текстур, треугольники модели преобразуются в пиксели с помощью растеризации, а буферизация глубины управляет глубиной для избежания визуального перекрытия объектов. На этапе освещения и затенения движок рассчитывает, как свет взаимодействует с объектами в сцене, применяя такие эффекты как: тени, отражения или более сложные техники освещения. Наконец, перед выводом конечного изображения на экран, додаются эффекты постобработки: сглаживание или размытие движения.

Каждый из этих этапов требует эффективного управления графическими ресурсами. Два основных фактора в оптимизации 3D моделей - сложность геометрии и разрешение текстур. Высокое количество полигонов может нагрузить графический процессор и сменьшить производительность игры, а текстуры высокого разрешения занимают большой объём графической памяти, замедляя визуализацию. В этом месте оптимизация текстур с помощью градиентного текстурования оказывается более эффективной, чем уменьшение геометрии модели. Так как сжатая текстура размером в 1К может занимать тоже самое количество памяти, сколько более 40 000 вершин, то уменьшение размера текстуры сменьшает нагрузку на графическую память и повышает скорость соединения ЦПУ-ГПУ без ущерба для визуального качества.

Текстурование простыми цветами (Flat Color Texturing)

Текстурование простыми цветами - это предшественник градиентного текстурования, цель коего - уменьшить размер текстуры с помощью упрощенного подхода. Хотя оно также использует цветопалитру, как и традиционное Hand-Paint (ручное) текстурование, оно отличается крайне сменьшенным разрешением текстуры, около 32х32 или 64х64. Эта текстура работает как цветовой атлас, в коем UV острова смещаются в сторону потребных базовых цветов, устанавливая тона для каждой части модели без потребности в сложных деталях.

В следующем примере видно, как этот метод может быть объединен с искусственным освещением, либо с помощью направленного света или точечных источников света в игровом движке, дабы улучшить взаимодействие света с моделью и улучшить общий вид.

Когда используется этот метод, очень важно обратить внимание на сжатие текстур в движке. Уменьшение размера текстуры может размыть границы между цветами, влияя на резкость и вид модели в игре.

В другом примере, в карте цветов используется большая цветопалитра для имитации светоэффектов без использования внешнего освещения. Модель обрабатывается в конвейере визуализатора движка с помощью шейдера Unlit, что исключает расчёт света и теней в реальном времени, отображая только базовые цвета для ручной настройки желаемого света и темноты на разных частях модели. Хотя управление UV карты с высоким количеством цветов, потребных для покрытия возможных вариаций света и тени, может быть сложным, этот метод эффективно справляется со своей задачей.

Особенность этого метода в том, что он может усложнить процесс моделования, когда требуется высокий уровень детализации. В противоположность от традиционного ручного текстурования, где детали наносятся непосредственно на текстуру, с этим методом детали должна обеспечивать геометрия. По этой причине необходимо увеличить количество полигонов в геометрии и модифицировать модель, добавляя вершины и грани, кои в противном случае были бы ненужными, но здесь они необходимы для разделения цветов и создания конкретных деталей на каждой части модели. Хотя такая зависимость от геометрии может выглядеть как недостаток по сравнению с моделью, сделанной для традиционного текстурования, это не большая проблема. Так как этот метод позволяет уменьшить размер текстуры, невысокое увеличение количества полигонов не производит высокого влияния на производительность. Как было написано ранее, геометрия производит меньшее влияние на движок, чем текстуры более высокого разрешения, что делает этот баланс жизнеспособным и эффективным для оптимизации графики.

Градиентное текстурование (Gradient Texturing)

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

Для реализации градиентного текстурования первым шагом является создание текстуры низкого разрешения без сжатия, желательно с использованием цветового профиля sRGB для сохранения точности цвета. Потом определяется желаемая цветопалитра. После, палитра организуется в столбцы. После того как палитра определена, создаются градиенты путем применения маски слоя к каждой строке группы цветов в графическом редакторе с помощью инструмента градиента.

Важно разместить самые насыщенные и яркие цвета вверху, а более тёмные и менее насыщенные - внизу. Когда текстура и 3D модель готовы, можно приступать к изменению UV. Сначала делается общая проекция модели на текстуру. Потом разделяются UV острова и назначаются соответствующим столбцам в зависимости от желаемого цвета для каждой части модели. После того как цвета назначены, UV острова растягиваются вдоль градиентных рядов, чтобы визуализировать эффекты освещения и тени на модели. Грани, образующие углы примерно в 90 градусов по отношению к остальным, необходимо корректировать, разделяя и растягивая UV острова в градиенте по мере необходимости, чтобы они выглядели освещенными и затененными. Наконец, углы модели, кои были предварительно скошены в процессе моделования, растягиваются вверх по градиенту, чтобы создать более яркий эффект в этих местах.

Одно из главных преимуществ градиентного текстурования - возможность генерировать цветопереходы, кои лучше имитируют освещение, не прибегая к освещению в реальном времени. Благодаря возможности градации цвета непосредственно на текстуре, эта техника позволяет реализовать мягкие тени или изменения тона на изогнутых поверхностях без изменения размера файла текстуры. В этом примере яркость краёв достигается разделением и перемещением угловых граней модели вверх по UV карте, что приводит к плавному эффекту блеска.

Упорядоченное расположение цветов в градиентах облегчает работу с UV, что повышает контроль и точность в процессе текстурования. Предоставляя универсальность в изменении цветовой палитры, выражающейся в легкости изменять градиент в рядах текстуры, этот метод лучше жёсткости текстурования простыми цветами. Это позволяет создавать всевозможные цветовые вариации цвета на одной и той же модели без необходимости переделывать UV.

Как и текстурование простыми цветами, этот метод может усложнить процесс моделования в тех случаях, когда требуется высокий уровень детализации, поскольку точность зависит от геометрии, а не от текстуры. Для достижения определённых эффектов может потребоваться увеличение количества полигонов в геометрии. Но влияние на производительность при этом останется минимальным, так как уменьшение размера текстуры компенсирует увеличение геометрии.

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

Оптимизированное градиентное текстурование (Optimized Gradient Texturing)

Оптимизированное градиентное текстурование - это развитие обычного метода градиентного текстурования, призванное довести оптимизацию до экстремального уровня без ущерба для визуала. Основная разница в значительном уменьшении размера текстуры, где каждый столбец градиента сжимается до одной пиксельной строки. Этот метод организовывает текстуру по горизонтали, одной строкой на градиент. UV модели масштабуется до 0 по горизонтали, выравниваясь в этихрядах. Несмотря на то, что изменение UV подобно обычному градиентному текстурованию, эта версия позволяет значительно сократить потребление памяти, сохраняя функциональность и контроль над отображением света и теней на модели.

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

Градиентное текстурование даёт множество преимуществ как разработчикам так и игрокам мобильных видеоигр. Оно позволяет малым и средним студиям, с ограниченными ресурсами, облегчить разработку, сменьшив затраты, связанные с созданием сложной графики, упрощая производство за счёт повышения эффективности использования графических ресурсов (уменьшением размера файлов текстур, оптимизацией использования памяти, ускорением разработки).

Для игроков этот метод оптимизировать производительность, позволяя на низкоклассовых устройствах запускать игры с высококачественной графикой без ущерба визуалу.