ПрограммированиеТерминыГрафикаГрафика

Текстурный атлас

Текстурный атлас - это большое изображение или "атлас", который содержит много изображений меньшего размера, каждое из которых является текстурой для какой-то части объекта.

Подтекстуры можно накладывать путём указания текстурных координат на атласе, то есть выбирая только определённую часть изображения. В приложениях, в которых часто используются мелкие текстуры, более эффективно хранить текстуры в текстурном атласе, так как:

  1. Позволяет сократить количество смен состояний до одного для всего атласа.
  2. Уменьшает количество занятых текстурных слотов до одного для всего атласа.
  3. Минимизируется фрагментация видеопамяти.
  4. Появляется возможность использования NPOT "текстур" (Т.е. атлас будет соблюдать Power of Two, а его элементы можно делать произвольного размера).

Однако, использование атласов может приводить к возникновению новых проблем:
  1. Cовмещение краёв подтекстур становится нетривиальной задачей.
  2. Становится сложно или невозможно использовать мипмаппинг
  3. При использовании фильтрации текстуры необходимо добавлять отступы, чтобы соседние подтекстуры не смешивалась с нужной.
  4. Создание атласов вручную может быть трудоёмко, поэтому потребуется использовать специальные программы для генерирования атласов.
  5. Возникают небольшие потери памяти, так как часть атласа может быть не занята текстурами.

Типичным примером текстурного алтаса является текстура со шрифтом:
texture atlas | Текстурный атлас
В ней все символы имеют одинаковую форму и размер (так называемые тайлы), однако, подтекстуры в общем случае могут располагаться произвольно.



По материалам Википедии. Изображение взято из этой темы: http://www.gamedev.ru/projects/forum/?id=152527

Что такое Текстурный атлас?

#графика, #текстурирование

19 сентября 2011 (Обновление: 4 окт 2011)

Комментарии [60]

Страницы: 1 2 3 4 5 Следующая »
#1
15:26, 19 сен 2011

Спасибо, волновал этот вопрос!

#2
15:53, 19 сен 2011

Эм... его еще двести лет назад изобрели, че нового?

#3
16:00, 19 сен 2011

> так как копирование текстуры из ОЗУ в память видеокарты является дорогой операцией
Где ты такое вообще вычитал в "по материалам Википедии"? Или это перевод "because there are less rendering state changes by binding once"?

#4
16:05, 19 сен 2011

nes
>Эм... его еще двести лет назад изобрели, че нового?
Термина не было на геймдеве. Я читаю на форуме про атлас и не могу понять, о чём идёт речь.

entryway
> Что за чушь? Где ты такое вообще вычитал в "по материалам Википедии"? Или это
> перевод "because there are less rendering state changes by binding once"?
1. Перевод не дословный.
2. Это предложение я написал на основе вот этой статьи: http://blog.wonderville.ru/texture-atlas/ Думаю, мысль передал верно. Если нет, всегда рад уточнить и дополнить термин.

#5
16:18, 19 сен 2011

Skyblade
> 2. Это предложение я написал на основе вот этой статьи:
> http://blog.wonderville.ru/texture-atlas/ Думаю, мысль передал верно. Если нет,
> всегда рад уточнить и дополнить термин.
Вопрос один - в каком месте ты нашел копирование?

#6
16:22, 19 сен 2011

-Eugene-
> Вопрос один - в каком месте ты нашел копирование?
В первом абзаце.

#7
16:42, 19 сен 2011

entryway
Я ему.

#8
17:54, 19 сен 2011

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

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

#9
18:31, 19 сен 2011

-Eugene-
> Вопрос один - в каком месте ты нашел копирование?
В первом:

постоянное переключение текстур в виде копирования их из ОЗУ в память видеокарты

clc
> переключение на текстуру сведено к 1
1 чего? Какая единица измерения?

>один текстурный слот
Следующая фраза это подразумевает, может быть, раскрою чуть подробнее.

Кроме того, видеокарта может хранить только ограниченное количество текстур.

> в некоторых случаях смена текстуры производиться сдвигом текстурных координат
Я так и написал, только доступнее:

Подтекстуры можно накладывать путём указания текстурных координат на атласе, то есть выбирая только определённую часть изображения.

>минимизирована фрагментация видеопамяти
Добавим.

#10
18:40, 19 сен 2011

Skyblade
> 1 чего? Какая единица измерения?
Единица измерения - "Раз".

> В первом:
Я не про текст, а про АПИ. Где там ты нашел частое копирование?

#11
18:55, 19 сен 2011

Skyblade
> Я читаю на форуме про атлас и не могу понять, о чём идёт речь.
Skyblade
> Думаю, мысль передал верно.
Плохая идея писать о том, чего не знаешь, не понимаешь, ввиду того, что введешь в заблуждение других...

#12
18:57, 19 сен 2011

Skyblade
> Кроме того, видеокарта может хранить только ограниченное количество текстур.
видеокарта может одновременно использовать ограниченное число текстур (текстурных слотов)

> Подтекстуры можно накладывать путём указания текстурных координат на атласе....
наложение участка текстуры и быстрая смена не одно и то же
техника одна, но способы разные
сами текстурные координаты могут не изменяться, но могут обрабатываться

#13
19:05, 19 сен 2011

-Eugene-
> Я не про текст, а про АПИ. Где там ты нашел частое копирование?
Если у нас текстурных слотов меньше, чем мы хотим использовать текстур в кадре, то приходится часто (то есть на каждом кадре) копировать текстуры в видеокарту, разве не так?

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

#14
19:10, 19 сен 2011

Skyblade
> Если у нас текстурных слотов меньше, чем мы хотим использовать текстур в кадре, то приходится часто (то есть на каждом кадре) копировать текстуры в видеокарту,
> разве не так?
То есть по-твоему в видюху может быть загружено одновременно лишь 8 (или сколько там слотов) текстур?

Страницы: 1 2 3 4 5 Следующая »
ПрограммированиеТерминыГрафикаГрафика

Тема в архиве.