web analytics

«Смертна кара» — щоденник розробки #3

Автор: Будеркевич Іван

Минулого разу ми розмовляли про ландшафт. Тепер його потрібно розмалювати. Тож розберімося, що таке графічні шейдери та текстури.

11
Текстура нашої головної героїні

Дуже часто можна почути „мильні текстури“, „текстури гамно“, „на текстурах драбинка“ і решту схожих висловів. Так що ж це таке? Текстури — це квадратна картинка. Здебільшого це просто фотографія, допиляна в графічному редакторі. Або просто картинка, яку малює художник. У нас усі текстури розміром 2048х2048px. Займають вони біля 2-х Мб. Тепер логічне запитання. Невже в таких компаніях як Ubisoft працюють такі погані художники, що навіть картинку не можуть намалювати людську? Чи проблема в чомусь іншому?

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

Графічний шейдер — це програма, яка визначає остаточний вигляд об’єкту. Тобто за допомогою шейдерів і створюється ефект металу, прозорості, свічення і навіть зміни геометрії моделі. Насправді можливості доволі великі. Але це все добро обчислюється графічним процесором. Тому й на слабких відеокартах гра може підвисати „на рівному місці“, коли ніби немає ніяких ефектів. До прикладу, у нас було просідання fps до 0. А все через те, що забагато текстур було в межах одного шейдера. Крім того, ще й зміна геометрії будинка =)

Текстури й шейдери

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

У нас є текстура асфальту без розмітки.

11

Також маємо Normal Map. Це теж по суті текстура, але вона використовується для визначення глибини. Тобто асфальт не рівний. У нього є багато маленьких камінчиків, кожний з яких виступає на певну висоту. Такий ефект добивається за допомогою Normal Map.

11

Тепер нам потрібна ще одна текстура, яку можна розкласти на канали відповідно до кольорів.

11

В цьому випадку нас цікавить саме червоний колір.

Далі потрібно зробити інтерполяцію. Інтерполяція текстур — це накладання однієї текстури на іншу в певних координатах. Тобто. Ми беремо текстуру з асфальтом і накладаємо на неї білий колір у координатах червоного альфа-каналу.

11

Це доволі простий приклад використання шейдерів. У цьому випадку виходить ефект намальованої розмітки. Видно камінчики та потертості фарби.  

Для ландшафту все значно складніше. До прикладу. У нас ландшафт площею 8 квадратних кілометрів. Якщо у випадку з дорогою все просто, достатньо кілька метрів зробити, а далі просто розмножити, то тут так не вийде.

Потрібно написати алгоритм, згідно з яким ландшафт буде розмальовуватися автоматично. Тобто потрібно знаходити кут підйому і якщо той кут більший за заданий, потрібно накласти текстуру скелі (а точніше цілу низку текстур та Normal Map). Якщо той кут менший, але то не рівна площина, то потрібно накласти зовсім іншу низку текстур. І так далі.

11

Більше того, коли в нас є ландшафт, розбитий по текстурах, та це зроблено саме за допомогою програмних засобів — маємо простір для уяви та можливості використати це. Наприклад для накладання трави. Тобто трава буде накладатися на конкретні місця автоматично. Це дуже сильно полегшує роботу. Найкраще це видно у FarCry 3. Де трава накладається деколи з баґами. =)

small_FC3-Rock[1]

Де живе „мильце“?

Шейдери також можна використати для налаштовування графіки. Найчастіше використовується саме для компресії текстур (яких є не мало). Після компресії, зображення стають меншими. Аби не було „сходинок“ на самій текстурі, апаратними методами її „замилюють“. Але, це не те „мильце“, за яке так часто критикують розробників. Хоча комп’ютери, які є в простих людей не потягнуть фотореалістичну графіку. Адже тоді текстури будуть дуже великого розміру та споживатимуть багато ресурсів.

Звісно, такі технології полегшують роботу. Але це тільки трава. Крім неї мають бути дерева, камені, якісь кущі, споруди і ще велика купа всякого. Це все треба рзставити вручну. Кожний камінчик, кожне деревце — усе має бути розкладене. На це треба чимало часу й сил. Мені страшно уявити, що абсолютно все в тій же GTA5  було розкладене вручну.

Також, хочу подякувати всім, хто нас підтримував. Наша гра отримала зелене світло!
Сподіваюся, ця стаття була цікавою, до зустрічі!

«Смертна кара» — щоденник розробки #2

TMNT Donatello

Cподобалася стаття? Підтримай PlayUA

На платформі Donatello ви можете підтримати нас як одноразовим донатом, так і оформити щомісячну підписку. Усі наші підписники на Donatello отримують цифрові або фізичні приємнощі залежно від суми донату. Долучайтеся до нашої спільноти!

Підтримати

Останні статті

Тренуємося у CS2 на своєму VPS сервері

Автор: PlayUA

sidata 01

Усі досягнення S.T.A.L.K.E.R. 2 — що потрібно для проходження на 100%?

Автор: Олег Куліков

stalker 2 achievements 03

УСЯ українська музика у S.T.A.L.K.E.R. 2: Heart of Chornobyl (Radio MIX)

Автор: PlayUA

stalker radio

Чорна п’ятниця: найкращі пропозиції для геймерів

Автор: PlayUA

playstation 5 pro

Артефакти та інші скарби Зони у S.T.A.L.K.E.R. 2

Автор: Андрій Присяжний

p.ua.s.t.a.l.k.e.r.2 артефакти

Українська музика в S.T.A.L.K.E.R. 2: від Мозгового до ZWYNTAR

Автор: Андрій Присяжний

s.t.a.l.k.e.r. 2 heart of chornobyl

Apple iPhone 16 Pro Max: занурення у світ нових можливостей

Автор: PlayUA

iphone 16 pro max 02

S.T.A.L.K.E.R. 2, Lego Horizon, Farming Simulator 25 — Порадник Ґеймера: Листопад 2024

Автор: PlayUA

S.T.A.L.K.E.R. 2: Heart of Chornobyl