Як працює Megatexture?


21

Я думав над тим, щоб розробити маленький двигун не тільки для розробки невеликих експериментальних ігор, але і для того, щоб послужити основою для тестування різних технік візуалізації та подібних речей. Зараз я багато думав про те, як обробити текстури і натрапив на мегатекстуру, але це щось трохи спантеличує. Є багато розмов про те, що це краще, ніж про традиційний підхід, щоб мати безліч текстур і завантажувати їх у міру необхідності, але як мегатекстур цього уникає, я читав, що вони використовують потокове, і ви можете просто передавати біти і шматочки його на відміну від завантаження кожної текстури окремо, але як це забезпечує кращі показники, і чи не це просто ще одна форма обробітку?

Як ми вибираємо таку текстуру, коли в шейдері ми передаємо частину її в пам'ять, а потім працюємо над нею. Я бачив останні відеоролики Rage, і їх текстура виглядає чудово, але це лише результат великих виконавців або те, що техніка вступає в гру.

Підводячи підсумок, як це працює, чому це здорово і як я можу зробити щось подібне.

Відповіді:


15

Основна ідея мега текстур - це використання текстурного атласу, в якому ви упакуєте всі свої різні текстури у великий і використовуєте УФ-випромінювання для індексації цього зображення. Хороша евристика потрібна, щоб знати, яку частину текстури потрібно вводити з диска на основі того, що ви бачите на екрані. Перевершення полягає в тому, що ви можете мати абсолютно унікальні текстури у всьому світі гри і зберігати лише видимі дані в оперативній пам'яті. Для того, щоб зробити це доступним, потрібна хороша система потокового передавання та кешування.

Рекомендую ознайомитись з матеріалами на цій сторінці для отримання більш детальної інформації про один підхід: http://silverspaceship.com/src/svt/


4

Перевірте кліппінг на наявну технічну реалізацію SGI.

З недавніх пір Megatexture використовується як прізвище для розрідженої віртуальної текстуризації (SVT)

SVT надає камеру невеликої роздільної здатності, зазначаючи, яка текстура та карта карти потрібні. Тоді звичайний процесор видає завантаження на дискову систему, щоб принести ці фрагменти текстури / міп в пам'ять (якщо не в пам'яті), а потім завантажений фрагмент текстури поміщається в розділ великого атласу текстури (як правило, в шматках, скажімо, 128x128)

По мірі введення фрагментів текстури оновлюється текстура переспрямування (віртуальна карта сторінки), яка приймає необхідні текстури для моделей і перенаправляє її до певної частини великої текстури, де вона фактично зберігається.


Це пояснює зовсім небагато. Мені було цікаво, якщо йде лише потокова передача, як їм вдалося випромінювати шматки такої масивної текстури, або на HDD, або на диску досить швидко, щоб бути корисним, проміжний атлас відповідає на це досить добре. Також зараз я бачу, чому це ефективніше пам'яті, ніж традиційні методи. Я роздивлюсь детальніше про SVT (посилання Флоу виглядає як хороша відправна точка для цього)
Daemoniorum

1

Ви можете розглядати Megatexture як якусь "потокову" текстуру. Потрібно відобразити одне масивне, повністю детальне текстурне зображення (простіше кажучи), яке читається у вигляді його розділів. Я впевнений, що в цьому є пекло набагато більше, ніж це, як, наприклад, LOD / міп-карта, завантаження та управління ресурсами серед очевидних речей.

У Вікіпедії є стаття про це.


2
Я читав статтю раніше, але це трохи світла на деталі. Трохи важко отримати фактичні деталі цієї техніки. Я хотів би, щоб ID склав папір з цього
приводу
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.