что такое параллакс маппинг

Тотальное 3D. Технологии рельефного текстурирования

что такое параллакс маппинг. Смотреть фото что такое параллакс маппинг. Смотреть картинку что такое параллакс маппинг. Картинка про что такое параллакс маппинг. Фото что такое параллакс маппингчто такое параллакс маппинг. Смотреть фото что такое параллакс маппинг. Смотреть картинку что такое параллакс маппинг. Картинка про что такое параллакс маппинг. Фото что такое параллакс маппинг что такое параллакс маппинг. Смотреть фото что такое параллакс маппинг. Смотреть картинку что такое параллакс маппинг. Картинка про что такое параллакс маппинг. Фото что такое параллакс маппинг

Компьютерная графика непрерывно развивается. Еще десять лет назад люди с замиранием сердца произносили магическое «3Dfx Voodoo», «затенение по Гуро», «сглаживание текстур». Тогда это были сверхсовременные технологии. Сегодня мы с тем же восторгом говорим «DirectX 10», «HDR», «шейдерная модель». Именно эти понятия ассоциируются с технологиями завтрашнего дня.

Быстрее всего среди современных 3D-технологий развивается направление, обеспечивающее максимальный объем картинки на экране, — это так называемое рельефное текстурирование. К сожалению, большинство геймеров либо вообще не представляют, что это такое, либо представляют, но очень-очень условно. Сегодня мы детально рассмотрим такие понятия, как Bump Mapping, Normal Mapping и Parallax Mapping, а также поговорим о технологии Displacement Mapping, про которую зачастую не знают даже разработчики компьютерных игр.

Предыстория

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

Разработчики, может, и рады были бы состряпать из полигонов трехмерные гайки, картины на стены, люстры и факелы, но вот только куда до таких излишеств, когда процессор и с проработкой основной геометрии не справляется? А ведь глубина пространства, его объем, во многом зависят именно от мелочей. Поступали просто: все мелкие элементы — тени, блики, шероховатости, износ и повреждения — рисовали кисточкой на текстурах. Получалось, конечно, плоско, но хоть как-то. Как говорится, не до жиру — быть бы хоть чуть-чуть объемным.

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

И были придуманы шейдеры — процедуры, определяющие способ визуализации поверхности объекта в зависимости от различных входных данных. Свет, маски прозрачности (задающие области применения шейдеров), карты отражения и карты рельефа — подо все были созданы свои шейдеры. Особое внимание разработчики стали уделять именно картам рельефа. Ведь раньше тень на текстуре зачастую рисовали кисточкой. А что это за тень, если она не меняет своего положения в зависимости от источника света? Карта рельефа сразу позволила рассчитывать тени в реальном времени. Да и детализация объектов заметно возросла: вроде бы полигонов столько же, а объемность пространства увеличилась на порядок.

Bump Mapping

Первым методом создания рельефности объекта стал Bump Mapping, в просторечии просто «бамп». Смысл технологии в том, что неровности объекта задаются одной-единственной картинкой (она называется бамп-картой), состоящей из градаций серого цвета (от 0 до 255). Чем белее пиксель (ближе к коду 255), тем больше он «приподнят» над поверхностью, более темному пикселю (ближе к 0) соответствует более «углубленное» положение.

Для своего времени бамп был очень хорош, но требования геймеров к изображению неумолимо росли. И вот уже технология, которая учитывает только направление света и степень приподнятости/углубленности пикселей, не может обеспечить нужного качества картинки. Да еще и «пластиковость», присущая бампу, давала о себе знать. Как, скажите, делать игру про Вторую мировую, если все помещения выглядят словно их отлили из цельного куска пластмассы?

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

Normal Mapping

В Crysis объемность достигается за счет сочетания бампа, нормалей и параллакса.

На смену бампу пришло второе поколение алгоритмов рельефного текстурирования. Оно получило название Normal Mapping (иногда, хотя и довольно редко, его называют «нормалом» или «нормалями»). Главное отличие Normal Mapping от бампа — более высокая точность вычисления, которая достигается за счет добавления в карту данных об ориентации нормалей (перпендикуляров) поверхности. Еще одна важная особенность: Normal Mapping карты можно генерировать в автоматическом режиме, а не рисовать длинными зимними вечерами в Photoshop.

Смысл нормаля довольно прост: на основе текстуры высокополигональной модели строится так называемая карта разности, которая, будучи наложенной на низкополигональный объект, делает его необычайно похожей на многополигональный. Вроде бы треугольников мало, а картинка выглядит так, словно их многие миллионы. В карте нормалей цвет каждого пикселя задает ориентацию нормали в данной точке поверхности. Пространственным координатам (X, Y, Z) соответствует тройка цветов (R, G, B).

Значения R, G, B варьируются в пределах от 0 до 255, причем 127 соответствует нулю. То есть голубой цвет (127, 127, 255) описывает просто гладкую поверхность, а они на низкополигональной и высокополигональной модельке одинаковы. Это объясняет, почему карты нормалей имеют в основном голубой цвет, а детали выделяются другими цветами. Обратите внимание, в карте нормалей альфа-канал изображения содержит стандартную карту Bump Mapping. В компьютерных играх карты нормалей совершили настоящий переворот.

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

И хотя преимущество Normal Mapping очевидно, приходит время, когда и он перестает устраивать девелоперов. И им на помощь готовы придти технологии завтрашнего дня.

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

Parallax Mapping

Главный недостаток бампа и нормалей в том, что рельефные детали, описываемые соответствующими картами, на самом деле плоские. Они не меняют своих очертаний, под каким бы углом игрок на них ни посмотрел. Когда персонаж стоит на месте, все здорово, картинка выглядит объемной, но стоит ему немного пошевелиться, сместиться буквально на полметра в сторону, и иллюзия глубины рассеивается — глаз человека ловит несоответствие освещения и изменившейся перспективы.

С пришествием новых шейдерных моделей и графических ускорителей стало возможным усложнить сами шейдеры и улучшить графическое представление рельефных поверхностей. Одна из новых технологий называется Parallax MappingUnreal Engine 3.0 он именуется Virtual Displacement Mapping). Ее главное новшество — она заставляет мелкие детали выглядеть по-настоящему объемными. Параллакс имитирует объемность за счет пространственного искажения рельефа относительно камеры (то есть главной оси взгляда).

Relief Mapping

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

Проблему сумел решить бразильский аспирант Мануэль Оливейр и его коллеги (www.inf.ufrgs.br/

oliveira). Новую разработку назвали Relief Mapping или Per-Pixel Displacement Mapping, она включает в себя целых три алгоритма визуализации поверхности.

Простой Relief Mapping. Это самый простой из новых алгоритмов Relief Mapping. Он разработан как оптимальная замена Normal / Parallax Mapping. Как и предшественники, Relief Mapping не меняет очертаний самого объекта, зато делает детали на 100% объемными, способными отбрасывать тень друг на друга. Наиболее эффективное применение данного шейдера (а Relief Mapping, по сути своей, именно шейдер) — поверхности, которые не позволяют напрямую увидеть их контуры. Например, стены зданий и коридоров, поверхности скал и открытых площадок: вы же не можете погрузиться в трещину скалы, чтобы понять, что она на самом деле плоская, а не объемная. Это стало очевидно и для коллеги Оливейра по имени Фабио Поликарпо — именно он создал графические модификации для DOOM 3 и Quake 4, заменяющие там Normal Mapping на Relief Mapping.

Relief Mapping, меняющий очертания объекта. Второй алгоритм Relief Mapping рванул как атомная бомба: это самый реалистичный эффект рельефной поверхности, рассчитанный в реальном времени. Причем полностью меняющий очертания самого объекта, поэтому его еще называют True Per-Pixel Displacement Mapping. Абсолютно недостижимый ранее фокус, реализованный теперь с помощью высокоуровневого языка шейдеров DirectX 9.0c.

Уже сейчас ясно, что Displacement Mapping выведет графику компьютерных игр на новый уровень всего через два-три года. Главная проблема всех игр — пресловутая угловатость, которая всегда бросается в глаза, будет полностью побеждена.

Многослойный Relief Mapping. Третий, самый невероятный алгоритм — Quad Depth Relief Mapping (также называемый Multilayer Relief Mapping) — делает то, что кажется вообще невозможным. Представьте себе простой прямоугольный полигон, на него накладывается несколько особых текстур рельефа, обрабатываемых специальным шейдером. При этом почти со всех сторон (кроме вида, когда полигон проецируется в линию) вместо полигона вы видите совершенно правильный объемный объект!

Вот только системные требования новой технологии пока еще довольно высоки. У нас в редакции на Pentium 4 3,2 ГГц с 1 Гб DDR-2 и GeForce 6600GT PCI-E простенькие демки выдавали около 75 кадров в секунду, но вот если речь идет о полноценной игре. Современные компьютеры пока не готовы к пришествию Relief Mapping, однако через один-два года ситуация должна измениться.

Ведь для разработчиков игр карты рельефа — это не какое-то туманное будущее, а суровая реальность. Уже сейчас весь арсенал Relief Mapping доступен в виде плагинов для 3DS Max 6—9 (за исключением плагина многослойной рельефности, который создан пока только для Max 6—8).

Будущее однозначно принадлежит новым технологиям рельефного текстурирования. Увеличивать в разы число полигонов, чтобы добиться должного уровня реалистичности, слишком ресурсоемко, а вот добавить несколько новых шейдеров могут практически все разработчики, была бы программная база. С теми технологиями, которые есть в загашнике у геймдева, мы будем очень скоро со снисходительной улыбкой смотреть на графику современных игр: «Десять баллов? Полно те, это же примитив».

На этом наш экскурс в мир полного 3D не заканчивается. В самом ближайшем будущем мы вместе с вами изучим и другие, не менее новаторские разработки.

Источник

Parallax occlusion mapping

что такое параллакс маппинг. Смотреть фото что такое параллакс маппинг. Смотреть картинку что такое параллакс маппинг. Картинка про что такое параллакс маппинг. Фото что такое параллакс маппинг

что такое параллакс маппинг. Смотреть фото что такое параллакс маппинг. Смотреть картинку что такое параллакс маппинг. Картинка про что такое параллакс маппинг. Фото что такое параллакс маппинг

Parallax occlusion mapping (сокращённо POM) — программная техника (методика) в трёхмерной компьютерной графике, усовершенствованный вариант техники «parallax mapping». Parallax occlusion mapping используется для процедурного создания трёхмерного описания текстурированной поверхности с использованием карт смещения (en:Displacement mapping) вместо непосредственного генерирования новой геометрии. [1] Методику «Parallax occlusion mapping» условно можно назвать «2.5D», так как она позволяет добавлять трёхмерную сложность в текстуры, не создавая реальные трёхмерные графические структуры. В отличие от более простых методик рельефного текстурирования вроде bump mapping, normal mapping или parallax mapping, данная техника позволяет корректное определение перспективы и самозатенение в реальном времени, не требуя исполнения проходов рендеринга графического процессора для создания такого же эффекта с геометрическими вычислениями. [2]

Содержание

История создания и использование

Первая работа, посвященная данной методике, появилась в 2004 году на «ShaderX3», её авторами были Зоя Броули (англ. Zoe Brawley ) и Наталия Татарчук (англ. Natalya Tatarchuk ). [1] Наталия Татарчук провела презентацию технологии на мероприятии SIGGRAPH 2005, которое проводилось в Лос-Анджелесе в конце лета 2005 года. [3] Далее техника «Parallax occlusion mapping» использовалась компанией ATI в демонстрации «Toy Shop Demo» для презентации возможностей третьей версии шейдерной модели в новейшей на то время видеокарте Radeon X1800. [4]

Первым игровым движком, в котором использовался Parallax occlusion mapping, стал CryEngine 2 от немецкого разработчика Crytek, который впервые использовался в компьютерной ПК-игре Crysis 2007 года выпуска. [5] Также эта технология очень интенсивно используется в популярном графическом бенчмарке 3DMark Vantage от компании Futuremark. [6]

Методика «Parallax occlusion mapping» может использоваться в интерактивной компьютерной графике реального времени (графические движки для компьютерных игр и другие интерактивные приложения), для оффлайн-рендеринга (редакторы трёхмерной графики) и для генерации отдельных стереоскопических изображений. [7]

Описание

Parallax Occlusion Mapping является усовершенствованной, и в то же время одной из наиболее вычислительно сложных разновидностей Parallax Mapping. «Parallax Occlusion Mapping» полностью обрабатывается и исполняется на графическом процессоре (англ. GPU ) видеокарты как пиксельный шейдер. Фактически представляет собой форму локального рейтрейсинга (трассировка лучей) в пиксельном шейдере. Трассировка лучей используется для определения высот и учета видимости текселей. Иными словами, данный метод может позволить создавать еще большую глубину рельефа при небольших затратах полигонов и применении сложной геометрии. Недостаток метода — невысокая детализация силуэтов и граней. Реализовать Parallax Occlusion Mapping возможно в рамках функционала API DX9 SM3 как пиксельный шейдер, однако для получения оптимальной производительности видеокарта должна обеспечивать надлежащий уровень скорости исполнения операций ветвления в пиксельном шейдере. [5]

Источник

VJ Софт

Содержание материала

Parallax Mapping/Offset Mapping

После нормалмаппинга, разработанного еще в 1984 году, последовало рельефное текстурирование (Relief Texture Mapping), представленное Olivera и Bishop в 1999 году. Это метод для наложения текстур, основанный на информации о глубине. Метод не нашел применения в играх, но его идея способствовала продолжению работ над параллаксмаппингом и его улучшении. Kaneko в 2001 представил parallax mapping, который стал первым эффективным методом для попиксельного отображения эффекта параллакса. В 2004 году Welsh продемонстрировал применение параллаксмаппинга на программируемых видеочипах.

Техника сдвигает текстурные координаты (поэтому технику иногда называют offset mapping) так, чтобы поверхность выглядела более объемной. Идея метода состоит в том, чтобы возвращать текстурные координаты той точки, где видовой вектор пересекает поверхность. Это требует просчета лучей (рейтрейсинг) для карты высот, но если она не имеет слишком сильно изменяющихся значений («гладкая» или «плавная»), то можно обойтись аппроксимацией. Такой метод хорош для поверхностей с плавно изменяющимися высотами, без просчета пересечений и больших значений смещения. Подобный простой алгоритм отличается от нормалмаппинга всего тремя инструкциями пиксельного шейдера: две математические инструкции и одна дополнительная выборка из текстуры. После того, как вычислена новая текстурная координата, она используется дальше для чтения других текстурных слоев: базовой текстуры, карты нормалей и т.п. Такой метод параллаксмаппинга на современных видеочипах почти также эффективен, как обычное наложение текстур, а его результатом является более реалистичной отображение поверхности, по сравнению с простым нормалмаппингом.

что такое параллакс маппинг. Смотреть фото что такое параллакс маппинг. Смотреть картинку что такое параллакс маппинг. Картинка про что такое параллакс маппинг. Фото что такое параллакс маппинг

Но использование обычного параллаксмаппинга ограничено картами высот с небольшой разницей значений. «Крутые» неровности обрабатываются алгоритмом некорректно, появляются различные артефакты, «плавание» текстур и пр. Было разработано несколько модифицированных методов для улучшения техники параллаксмаппинга. Несколько исследователей (Yerex, Donnelly, Tatarchuk, Policarpo) описали новые методы, улучшающие начальный алгоритм. Почти все идеи основаны на трассировке лучей в пиксельном шейдере для определения пересечений деталей поверхностей друг другом. Модифицированные методики получили несколько разных названий: Parallax Mapping with Occlusion, Parallax Mapping with Distance Functions, Parallax Occlusion Mapping. Для краткости будем их все называть Parallax Occlusion Mapping.

что такое параллакс маппинг. Смотреть фото что такое параллакс маппинг. Смотреть картинку что такое параллакс маппинг. Картинка про что такое параллакс маппинг. Фото что такое параллакс маппинг

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

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

Источник

Урок №35. Эффект параллакса в OpenGL

Обновл. 13 Дек 2020 |

На этом уроке мы рассмотрим эффект параллакса в OpenGL.

Эффект параллакса

Параллакс — это метод, аналогичный методу наложения карты нормалей, но основанный на других принципах. Так же, как и в случае с картами нормалей, это — техника, которая значительно повышает детализацию текстурированной поверхности, придающая ей ощущение глубины. Хотя параллакс также является иллюзией, он намного лучше передает ощущение глубины, и в сочетании с нормальным отображением (или «наложением карты нормалей») дает невероятно реалистичные результаты. Метод параллакса является логическим продолжением метода наложения карты нормалей, а поэтому перед изучением параллакса настоятельно рекомендуется получить представление о нормальном отображении, в частности — о касательном пространстве.

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

что такое параллакс маппинг. Смотреть фото что такое параллакс маппинг. Смотреть картинку что такое параллакс маппинг. Картинка про что такое параллакс маппинг. Фото что такое параллакс маппинг

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

что такое параллакс маппинг. Смотреть фото что такое параллакс маппинг. Смотреть картинку что такое параллакс маппинг. Картинка про что такое параллакс маппинг. Фото что такое параллакс маппинг

Проблема со смещением вершин при использовании данного метода заключается в том, что плоскость должна содержать огромное количество треугольников, чтобы результат смещения выглядел реалистичным, иначе объект будет выглядеть блочным. Поскольку для каждой плоской поверхности может потребоваться более 10000 вершин, то мы получаем вычислительно неосуществимую задачу. Что, если бы мы могли каким-то образом достичь подобного реализма без необходимости в дополнительных вершинах? А если бы я сказал вам, что ранее показанная смещенная поверхность на самом деле визуализируется только при помощи всего 2 треугольников? Кирпичная поверхность, показанная на рисунке, визуализируется с помощью параллакса — метода смещения, который не требует дополнительных вершин для передачи глубины объекта, но (подобно наложению карты нормалей) использует хитроумную технику, чтобы обмануть пользователя.

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

что такое параллакс маппинг. Смотреть фото что такое параллакс маппинг. Смотреть картинку что такое параллакс маппинг. Картинка про что такое параллакс маппинг. Фото что такое параллакс маппинг

Ломаная красная линия изображает значения карты высот в виде геометрического представления поверхности кирпича, а вектор V представляет направление визирования от поверхности к наблюдателю ( viewDir ). Если бы плоскость была объемной, то наблюдатель увидел бы поверхность в точке B . Однако, поскольку наша плоскость не имеет реального объема, направление взгляда вычисляется из точки A . Параллакс стремится сместить текстурные координаты в точке A таким образом, чтобы мы получили текстурные координаты точки B . Затем мы используем текстурные координаты точки B для всех последующих подвыборок текстуры, создавая впечатление, что наблюдатель действительно смотрит в точку B .

Хитрость заключается в том, чтобы выяснить, как, находясь в точке A , получить координаты текстуры точки B . Параллакс пытается решить эту проблему путем масштабирования вектора направления фрагмент-наблюдатель V на высоту фрагмента A . Таким образом, мы масштабируем длину вектора V , чтобы она была равна значению выборки H(A) из карты высот в точке A . На следующем рисунке показан масштабированный вектор P :

что такое параллакс маппинг. Смотреть фото что такое параллакс маппинг. Смотреть картинку что такое параллакс маппинг. Картинка про что такое параллакс маппинг. Фото что такое параллакс маппинг

Затем мы берем этот вектор P и используем его векторные координаты, лежащие в плоскости, в качестве смещения текстурных координат. Это работает, потому что вектор P вычисляется с использованием значения высоты из карты высот. Таким образом, чем выше высота фрагмента, тем большее смещение он получает.

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

что такое параллакс маппинг. Смотреть фото что такое параллакс маппинг. Смотреть картинку что такое параллакс маппинг. Картинка про что такое параллакс маппинг. Фото что такое параллакс маппинг

Еще одна проблема с параллаксом заключается в том, что трудно определить, какие координаты получать из вектора P , когда поверхность произвольно поворачивается каким-либо образом. Мы бы предпочли сделать это в другом координатном пространстве, в котором x- и y- компоненты вектора P ориентированы вдоль поверхности текстуры. Если вы внимательно читали предыдущий урок, то, вероятно, уже догадались, как мы можем это сделать. И да, мы будем выполнять параллакс в касательном пространстве.

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

Но хватит теории, давайте перейдем к практике…

Отображение параллакса

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

что такое параллакс маппинг. Смотреть фото что такое параллакс маппинг. Смотреть картинку что такое параллакс маппинг. Картинка про что такое параллакс маппинг. Фото что такое параллакс маппинг

что такое параллакс маппинг. Смотреть фото что такое параллакс маппинг. Смотреть картинку что такое параллакс маппинг. Картинка про что такое параллакс маппинг. Фото что такое параллакс маппинг

что такое параллакс маппинг. Смотреть фото что такое параллакс маппинг. Смотреть картинку что такое параллакс маппинг. Картинка про что такое параллакс маппинг. Фото что такое параллакс маппинг

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

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

что такое параллакс маппинг. Смотреть фото что такое параллакс маппинг. Смотреть картинку что такое параллакс маппинг. Картинка про что такое параллакс маппинг. Фото что такое параллакс маппинг

У нас снова есть точки A и B , но на этот раз мы получаем вектор P , вычитая вектор V из текстурных координат в точке A . Вместо значений высоты мы можем получить значения глубины, вычитая в шейдерах значения выборки глубины из 1.0 или просто инвертируя его значения текстуры в любом графическом редакторе.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *