Картирование смещения — это альтернативный метод компьютерной графики, в отличие от картирования рельефа , нормалей и параллакса , использующий текстуру или карту высот для создания эффекта, при котором фактическое геометрическое положение точек на текстурированной поверхности смещается , часто вдоль локальной нормали поверхности , в соответствии со значением, которое вычисляет функция текстуры в каждой точке поверхности. [1] Он придает поверхностям большое ощущение глубины и детализации, допуская, в частности, самозатенение, самозатенение и силуэты; с другой стороны, это самый дорогостоящий из этого класса методов из-за большого количества дополнительной геометрии.
В течение многих лет отображение смещения было особенностью высокопроизводительных систем рендеринга, таких как PhotoRealistic RenderMan , в то время как API реального времени , такие как OpenGL и DirectX , только начинали использовать эту функцию. Одна из причин этого заключается в том, что первоначальная реализация отображения смещения требовала адаптивной тесселяции поверхности для получения достаточного количества микрополигонов , размер которых соответствовал размеру пикселя на экране. [ необходима цитата ]
Displacement mapping включает в себя термин mapping, который относится к текстурной карте , используемой для модуляции силы смещения. Направление смещения обычно является локальной нормалью поверхности. Сегодня многие рендереры допускают программируемое затенение , которое может создавать высококачественные (многомерные) процедурные текстуры и узоры на произвольно высоких частотах. Использование термина mapping становится тогда спорным, поскольку больше не задействована никакая текстурная карта. Поэтому более широкий термин offset часто используется сегодня для обозначения суперконцепции, которая также включает смещение, основанное на текстурной карте.
Рендереры, использующие алгоритм REYES или аналогичные подходы, основанные на микрополигонах , позволили выполнять отображение смещения на произвольно высоких частотах с тех пор, как они стали доступны почти 20 лет назад.
Первым коммерчески доступным рендерером, реализовавшим подход к отображению смещения микрополигонов через REYES, был PhotoRealistic RenderMan от Pixar . Рендереры микрополигонов обычно сами тесселят геометрию с гранулярностью, подходящей для рендеринга изображения. То есть: приложение для моделирования предоставляет рендереру примитивы высокого уровня. Примерами служат настоящие NURBS - или поверхности подразделения . Затем рендерер тесселит эту геометрию в микрополигоны во время рендеринга, используя ограничения на основе вида, полученные из рендеринга изображения.
Другие рендереры, которым требуется приложение моделирования для доставки объектов, предварительно разбитых на произвольные полигоны или даже треугольники, определили термин «картирование смещения» как перемещение вершин этих полигонов. Часто направление смещения также ограничено нормалью поверхности в вершине. Хотя концептуально они похожи, эти полигоны обычно намного больше микрополигонов. Таким образом, качество, достигаемое при таком подходе, ограничивается плотностью тесселяции геометрии задолго до того, как рендерер получит к ней доступ.
Это различие между картированием смещения в рендерерах микрополигонов и картированием смещения в рендерерах не тесселяционных (макро)полигонов часто может приводить к путанице в разговорах между людьми, чье знакомство с каждой технологией или реализацией ограничено. Тем более, что в последние годы многие рендереры не микрополигонов добавили возможность делать картирование смещения качества, аналогичного тому, которое рендерер микрополигонов может предоставить естественным образом. Чтобы отличить грубое смещение на основе пре-тесселляции, которое эти рендереры делали раньше, был введен термин субпиксельное смещение для описания этой функции. [ необходима цитата ]
Субпиксельное смещение обычно относится к более тонкой повторной тесселяции геометрии, которая уже была тесселяционной в полигоны. Эта повторная тесселяция приводит к микрополигонам или часто микротреугольникам. Затем их вершины перемещаются вдоль их нормалей для достижения отображения смещения.
Настоящие микрополигональные рендереры всегда могли делать то, чего субпиксельное смещение достигло лишь недавно, но с более высоким качеством и в произвольных направлениях смещения.
Недавние разработки, похоже, указывают на то, что некоторые из рендереров, использующих субпиксельное смещение, также движутся в сторону поддержки геометрии более высокого уровня. Поскольку поставщики этих рендереров, вероятно, продолжат использовать термин субпиксельное смещение, это, вероятно, приведет к еще большей запутанности того, что на самом деле означает отображение смещения в трехмерной компьютерной графике .
В отношении собственного языка шейдеров высокого уровня Microsoft отображение смещения можно интерпретировать как своего рода «отображение вершин-текстур», где значения текстурной карты не изменяют цвета пикселей (как это гораздо более распространено), а вместо этого изменяют положение вершин. В отличие от отображения рельефа, нормали и параллакса, которые, можно сказать, «подделывают» поведение отображения смещения, таким образом из текстуры может быть получена действительно грубая поверхность. Его необходимо использовать в сочетании с методами адаптивной тесселяции (которые увеличивают количество визуализированных полигонов в соответствии с текущими настройками просмотра) для создания высокодетализированных сеток. [ необходима цитата ]