Parallax occlusion mapping
- 1 year ago
- 0
- 0
Parallax mapping («параллактическое отображение», также известен как offset mapping , per-pixel displacement mapping или virtual displacement mapping ) — программная техника (методика) в трёхмерной компьютерной графике , усовершенствованный вариант техник bump mapping или normal mapping . Parallax mapping используется для процедурного создания трёхмерного описания текстурированной поверхности с использованием карт смещения (не путать с ) вместо непосредственного генерирования новой геометрии. Методику «Parallax mapping» условно можно назвать « 2.5D », так как она позволяет добавлять трёхмерную сложность в текстуры, не создавая реальные трёхмерные графические структуры. Например, текстура каменной стены будет иметь визуальную объемность, хотя на самом деле геометрически она будет плоской. Parallax mapping был представлен Томомити Канэко ( англ. Tomomichi Kaneko ) в 2001 году . Parallax mapping полностью исполняется на графических процессорах видеокарты как пиксельный шейдер .
Parallax mapping осуществляется смещением текстурных координат так, чтобы поверхность казалась объёмной . Главное отличие parallax mapping от displacement mapping в том, что в нём все расчеты попиксельные, а не повершинные. Идея метода состоит в том, чтобы возвращать текстурные координаты той точки, где видовой вектор пересекает поверхность. Это требует просчета лучей ( рейтрейсинг ) для карты высот, но если она не имеет слишком сильно изменяющихся значений («гладкая» или «плавная»), то можно обойтись аппроксимацией без использования рейтрейсинга. Если же в parallax mapping используется рейтрейсинг, то такой вариант называется « Parallax occlusion mapping ».
Таким образом, parallax mapping хорош для поверхностей с плавно изменяющимися высотами, без просчёта пересечений и больших значений смещения. Подобный простой алгоритм отличается от normal mapping всего тремя инструкциями пиксельного шейдера: две математические инструкции и одна дополнительная выборка из текстуры. После того, как вычислена новая текстурная координата, она используется дальше для чтения других текстурных слоев: базовой текстуры, карты нормалей и т. п. Такой метод parallax mapping на современных графических процессорах почти так же эффективен, как обычное наложение текстур, а его результатом является более реалистичное отображение поверхности по сравнению с простым normal mapping.