2011-01-17 2 views
1

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

ответ

3

Ну, это может обеспечить более компактную структуру для рендеринга высокополигональных моделей. Карта перемещения может содержать всего 1 байт на пиксель. Если вы настроили это для отображения смещения, вы сохраняете ОГРОМНЫЙ объем полосы пропускания памяти на графическом процессоре.

Изображение на секунду простая структура вершин.

struct Vert 
{ 
    float x, y, z; 
    float nx, ny, nz; 
    float u, v; 
}; 

Эта структура имеет размер 32 байт. Итак, если вы представляете себе, что можете округлить число вершин (и вы должны иметь возможность сделать HELL намного больше), и заменить все остальные вершины на 1-байтовую карту высот, тогда вы используете объем используемой памяти следующим образом:

100,000 poly object = 3,200,000 bytes using vertex struct alone. 
25,000 polys + 100,000 entry height map = 900,000 bytes. 

т. е. отображение сопоставления данных дает вам те же данные в 28% от объема памяти. ВЫИГРАТЬ! : D

Если вы сохраняете нормальную карту и используете w/a компонент для высоты, то для текстуры вы используете до 400 000 байт, а теперь вы занимаете 1200 000 байт, размер которого равен STILL 37,5%. PLUS теперь вы можете удалить 12 байт для нормального хранения, и вы действительно достигли того же показателя в 900 000 байт.

Вы должны получить ЗНАЧИТЕЛЬНО более высокие коэффициенты сжатия геометрии, чем это. Итак, в общем, вы получаете более привлекательную модель для части данных хранилища.

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

+0

Спасибо! Раньше я об этом не думал. Кроме того, было бы неправильно предполагать, что скорость может быть немного быстрее, учитывая, что вы читаете текстуру и генерируете ее на gpu, а не передаете все данные вершин по шине? O.o – sringer

+1

@sringer: Это полностью зависит от того, где ваши ограничения происходят. Если вы ограничены в ЦП, то, очевидно, никакой скорости на GPU не будет иметь никакого значения. Точно так же, если вы ограничены шейдером, скорее всего, смещение будет еще хуже. С другой стороны, если у вас ограниченная пропускная способность памяти, это, скорее всего, будет иметь большое значение. Как всегда, профиль, чтобы вы знали, что ваши «оптимизации» на самом деле повлияют на что угодно. – Goz

Смежные вопросы