Parallax occlusion mapping

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

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

Історія створення і використання[ред. | ред. код]

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

Першим ігровим рушієм, у якому використовувався Parallax occlusion mapping, став CryEngine 2 від німецького розробника Crytek. Він вперше використовувався у комп'ютерній ПК-грі Crysis 2007 року виходу. Також ця технологія дуже інтенсивно використовується у популярному графічному бенчмарку 3DMark Vantage від компанії Futuremark[ru], та в іграх Unigine[en][6], CryEngine 2[7], і CryEngine 3[8].

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

Опис[ред. | ред. код]

Parallax Occlusion Mapping є удосконаленою і в той же час однією з найважчих у обчисленні різновидів Parallax Mapping. «Parallax Occlusion Mapping» повністю оброблюється і виконується на графічному процесорі (англ. GPU) відеокарти як піксельний шейдер. Фактично являє собою форму локального рейтрейсинга (трасування променів) у піксельному шейдері. Трасування променів використовується для визначення висот і врахування видимості текселей. Іншими словами, цей метод дозволяє створити ще більш глибокий рельєф при невеликих витратах полігонів і використанні складної геометрії. Недолік методу — невисока деталізація силуетів і граней. Реалізувати Parallax Occlusion Mapping можливо в рамках функціоналу API DirectX 9 SM3 як піксельний шейдер, однак для отримання оптимальної продуктивності відеокарта повинна забезпечувати належний рівень швидкості виконання операцій розгалуження у піксельному шейдері.

Примітки[ред. | ред. код]

  1. а б Brawley, Z., and Tatarchuk, N. 2004. Parallax Occlusion Mapping: Self-Shadowing, Perspective-Correct Bump Mapping Using Reverse Height Map Tracing. In ShaderX3: Advanced Rendering with DirectX and OpenGL, Engel, W., Ed., Charles River Media, pp. 135–154. http://books.google.ca/books?id=DgMSb_10l7IC&pg=PA135&dq=parallax+occlusion [Архівовано 22 жовтня 2012 у Wayback Machine.]
  2. Dynamic Parallax Occlusion Mapping with Approximate Soft Shadows — Tatarchuk (PDF). Архів оригіналу (PDF) за 8 вересня 2008. Процитовано 10 квітня 2015.
  3. Архівована копія. Архів оригіналу за 21 лютого 2015. Процитовано 10 квітня 2015.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  4. Sketches | Conference: SIGGRAPH 2005. Архів оригіналу за 21 лютого 2015. Процитовано 10 квітня 2015.
  5. Архівована копія. Архів оригіналу за 15 січня 2008. Процитовано 14 квітня 2015.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  6. Архівована копія. Архів оригіналу за 10 квітня 2015. Процитовано 14 квітня 2015.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  7. Архівована копія. Архів оригіналу за 30 листопада 2009. Процитовано 14 квітня 2015.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  8. Архівована копія. Архів оригіналу за 17 жовтня 2009. Процитовано 14 квітня 2015.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)

Посилання[ред. | ред. код]