MIP-текстурування: відмінності між версіями
[неперевірена версія] | [неперевірена версія] |
Секіші (обговорення | внесок) мНемає опису редагування |
Erud (обговорення | внесок) оформлення, такі статті потрібні, варто витрати час на виправлення помилок |
||
Рядок 1: | Рядок 1: | ||
⚫ | |||
{{qd|неукраїномовний зміст — гидотний автопереклад}} |
|||
⚫ | |||
'''MIP-текстурування''' ({{lang-en|MIP mapping}}) |
'''MIP-текстурування''' ({{lang-en|MIP mapping}}) — метод текстурування, що використовує кілька копій однієї текстури з різною деталізацією. Назва походить від {{lang-lat|multum in parvo}} — «багато в одному». |
||
== Призначення == |
== Призначення == |
||
Зображення найкраще виглядає, коли деталізація текстури близька до |
[[Зображення]] найкраще виглядає, коли деталізація текстури близька до роздільності [[екран]]а. Якщо вона висока (текстура занадто маленька/об'єкт дуже близько), виходить розмите зображення. Якщо ж роздільність текстури дуже висока (текстура занадто велика/об'єкт дуже далеко), отримуємо випадкові [[пікселі]] — а значить, втрату дрібних деталей, мерехтіння і великий відсоток промахів в [[кеш]]. Виходить, що краще мати декілька текстур різної деталізації і накладати на об'єкт ту, яка найбільш підходить в даній ситуації. |
||
== Принцип дії == |
== Принцип дії == |
||
Створюється так звана '''MIP-піраміда''' |
Створюється так звана '''MIP-піраміда''' — послідовність текстур з дозволом від максимального до 1 × 1. Наприклад: 1 × 1, 2 × 2, 4 × 4, 8 × 8, 16 × 16, 32 × 32, 64 × 64, 128 × 128, 256 × 256, 512 × 512 і 1024 × 1024. Кожна з цих текстур називається '''MIP-рівнем''' ({{lang-en|MIP level}}) або '''рівнем деталізації''' ({{lang-en|[[level of detail]]}}). |
||
На всіх цих структурах знаходиться одне і те ж зображення. Таким чином, MIP-текстурування збільшує витрату відеопам'яті на третину: <math> |
На всіх цих структурах знаходиться одне і те ж зображення. Таким чином, MIP-текстурування збільшує витрату відеопам'яті на третину: <math>\sum_{i=0}^\infty \left( \frac 1 4 \right)^i = 1 \frac 1 3</math>. |
||
При накладенні текстур обчислюється відстань до об'єкта, відповідно знаходиться номер текстури як <math> |
При накладенні текстур обчислюється відстань до об'єкта, відповідно знаходиться номер текстури як <math>{miplevel} = \log_2 \left( \frac {{dist}} {{texelsize} \cdot {resolution}} \right) + {mipbias}</math>, де ''resolution'' — роздільність віртуальної камери (кількість пікселів, яке буде в об'єкті розміром в 1 од., розташованому в 1 од. від камери), ''texelsize'' — розмір текселя в одиницях тривимірного світу, ''dist'' — відстань до об'єкта в тих же одиницях, ''mip bias'' — число, що дозволяє вибирати більш-менш детальну текстуру, ніж дає формула. Ця цифра округляється до цілого, і текстура з відповідним номером (нульова — найдетальніша, перша — вдвічі менша і т. д.) накладається на об'єкт. |
||
== Недоліки, способи вирішення == |
== Недоліки, способи вирішення == |
||
Витрата [[відеопам'ять|відеопам'яті]] збільшується на третину. Втім, відеопам'ять зараз досить дешева. До того ж, якщо об'єкт далеко, його детальну текстуру можна і вивантажити в [[оперативна пам'ять|оперативну пам'ять]]. |
Витрата [[відеопам'ять|відеопам'яті]] збільшується на третину. Втім, відеопам'ять зараз досить дешева. До того ж, якщо об'єкт далеко, його детальну текстуру можна і вивантажити в [[оперативна пам'ять|оперативну пам'ять]]. |
||
MIP-текстурування не вирішує проблему текстур, що знаходяться під гострим кутом до глядача (наприклад, дорога в [[автосимулятор]]е). У таких текстур |
MIP-текстурування не вирішує проблему текстур, що знаходяться під гострим кутом до глядача (наприклад, дорога в [[автосимулятор]]е). У таких текстур роздільність по одній осі сильно відрізняється від дозволу за іншою — і, наприклад, по осі X зображення явно розмито, в той час як по осі Y видно мерехтіння, властиві завищеним вирішенню текстури. Є відразу кілька способів вирішення цього (починаючи з найменш якісного): |
||
# Встановити в відеодрайвер найбільш комфортне значення ''mip bias'' |
# Встановити в відеодрайвер найбільш комфортне значення ''mip bias'' — числа, яке відповідає за вибір номера текстури в піраміді. Якщо воно негативне, відеоплата бере більш детальні текстури, якщо позитивне — менш детальні. |
||
# Багато ігри самі встановлюють відповідний ''mip bias'' для різних типів об'єктів. Наприклад, в [[Live for Speed]] ''mip bias'' встановлюється користувачем окремо для автомобілів, перешкод і дороги. |
# Багато ігри самі встановлюють відповідний ''mip bias'' для різних типів об'єктів. Наприклад, в [[Live for Speed]] ''mip bias'' встановлюється користувачем окремо для автомобілів, перешкод і дороги. |
||
# Скористатися [[анізотропна фільтрація|анізотропної фільтрацією]] |
# Скористатися [[анізотропна фільтрація|анізотропної фільтрацією]] — методом текстурування, який спрямований саме на вирішення цієї проблеми. |
||
Нарешті, видно чітка межа між MIP-рівнями. Це вирішується [[трилинейная фільтрація|трилінійної фільтрацією]]. |
Нарешті, видно чітка межа між MIP-рівнями. Це вирішується [[трилинейная фільтрація|трилінійної фільтрацією]]. |
||
== Посилання == |
== Посилання == |
||
* {{Cite web|url = http://www.gamedev.ru/articles/?id=10101|title = Створення детальних текстур c допомогою mip-map рівнів у Direct3D8|author = Михайло Хабре|publisher = [[GameDev. ru]]|datepublished = 29 травня 2002|accessdate = 12 липня 2009}} |
* {{Cite web|url = http://www.gamedev.ru/articles/?id=10101|title = Створення детальних текстур c допомогою mip-map рівнів у Direct3D8|author = Михайло Хабре|publisher = [[GameDev. ru]]|datepublished = 29 травня 2002|accessdate = 12 липня 2009}} |
||
Версія за 09:43, 9 березня 2011
MIP-текстурування (англ. MIP mapping) — метод текстурування, що використовує кілька копій однієї текстури з різною деталізацією. Назва походить від лат. multum in parvo — «багато в одному».
Призначення
Зображення найкраще виглядає, коли деталізація текстури близька до роздільності екрана. Якщо вона висока (текстура занадто маленька/об'єкт дуже близько), виходить розмите зображення. Якщо ж роздільність текстури дуже висока (текстура занадто велика/об'єкт дуже далеко), отримуємо випадкові пікселі — а значить, втрату дрібних деталей, мерехтіння і великий відсоток промахів в кеш. Виходить, що краще мати декілька текстур різної деталізації і накладати на об'єкт ту, яка найбільш підходить в даній ситуації.
Принцип дії
Створюється так звана MIP-піраміда — послідовність текстур з дозволом від максимального до 1 × 1. Наприклад: 1 × 1, 2 × 2, 4 × 4, 8 × 8, 16 × 16, 32 × 32, 64 × 64, 128 × 128, 256 × 256, 512 × 512 і 1024 × 1024. Кожна з цих текстур називається MIP-рівнем (англ. MIP level) або рівнем деталізації (англ. level of detail).
На всіх цих структурах знаходиться одне і те ж зображення. Таким чином, MIP-текстурування збільшує витрату відеопам'яті на третину: .
При накладенні текстур обчислюється відстань до об'єкта, відповідно знаходиться номер текстури як , де resolution — роздільність віртуальної камери (кількість пікселів, яке буде в об'єкті розміром в 1 од., розташованому в 1 од. від камери), texelsize — розмір текселя в одиницях тривимірного світу, dist — відстань до об'єкта в тих же одиницях, mip bias — число, що дозволяє вибирати більш-менш детальну текстуру, ніж дає формула. Ця цифра округляється до цілого, і текстура з відповідним номером (нульова — найдетальніша, перша — вдвічі менша і т. д.) накладається на об'єкт.
Недоліки, способи вирішення
Витрата відеопам'яті збільшується на третину. Втім, відеопам'ять зараз досить дешева. До того ж, якщо об'єкт далеко, його детальну текстуру можна і вивантажити в оперативну пам'ять.
MIP-текстурування не вирішує проблему текстур, що знаходяться під гострим кутом до глядача (наприклад, дорога в автосимуляторе). У таких текстур роздільність по одній осі сильно відрізняється від дозволу за іншою — і, наприклад, по осі X зображення явно розмито, в той час як по осі Y видно мерехтіння, властиві завищеним вирішенню текстури. Є відразу кілька способів вирішення цього (починаючи з найменш якісного):
- Встановити в відеодрайвер найбільш комфортне значення mip bias — числа, яке відповідає за вибір номера текстури в піраміді. Якщо воно негативне, відеоплата бере більш детальні текстури, якщо позитивне — менш детальні.
- Багато ігри самі встановлюють відповідний mip bias для різних типів об'єктів. Наприклад, в Live for Speed mip bias встановлюється користувачем окремо для автомобілів, перешкод і дороги.
- Скористатися анізотропної фільтрацією — методом текстурування, який спрямований саме на вирішення цієї проблеми.
Нарешті, видно чітка межа між MIP-рівнями. Це вирішується трилінійної фільтрацією.
Посилання
- Михайло Хабре. Створення детальних текстур c допомогою mip-map рівнів у Direct3D8. GameDev. ru. Процитовано 12 липня 2009.
{{cite web}}
: Проігноровано невідомий параметр|datepublished=
(можливо,|publication-date=
?) (довідка)