Дивні та давно забуті техніки рендерингу зображення у відеоіграх, які колись були проривом

Render/Unreal Engine 5 Game Developer відомий в соцмережах за ніком Капітан GPU опублікував новий цікавий тред про дивні та давно забуті техніки рендеру зображення в іграх. З дозволу автора публікуємо його на форумі, аби інформацію змогли побачити більше людей.

Далі — пряма мова автора (з косметичним редагуванням)



Розповім про дивні та давно забуті техніки рендерінгу зображення в відеоіграх. Більшість з них свого часу була проривом, більшість не дожила до сьогодення, а деякі — були перехідним етапом чи знайшли себе в indie-розробці.

Рендеринг чотирикутниками

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

Це була кілер фіча Sega Saturn, яка ні до чого не привела і яка, по суті, вбила цю консоль. Розробникам було не так просто розробляти та портувати ігри та контент для них, тому вони обирали платформи, на яких «трикутники» вже були стандартом.


Тому, груди Лари були не зовсім трикутними. Нсправді трикутними вони були лише на PSOne.

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


Рендеринг еліпсоїдами

Напевно, однією з найдивніших технік рендерингу є гра Ecstatica, де замість полігонів використовувалися еліпсоїди. Весь світ, все оточення, усі деталі — все виглядає, як сфери, еліпси та круги. Це, насправді, дуже круто, хоча і дивно.


Таж сама техніка використовувалась і в інших іграх компанії Psygnosis (це ті, що потім зроблять Syphon Filter, WipeOut, Лемінгів) — Ballz, а ще в серії ігор Pets.

Золоті часи ellipsoid-рендерингу...


Race with beam

Ще дуже цікавою технікою рендерінгу була так звана «Гонка з Промінням» (Race with beam), а точніше Atari 2000. В цієї консолі було всього 128 байтів оперативної памʼяті, та вона підтримувала роздільність екрану у 160×192 пікселів.


Не складно порахувати що памʼяті не вистачало для формування цілого кадру, тому, єдиним рішенням було генерувати кадр зображення «у польоті», поки промінь світла у телевізорі іде построково. Саме тому це назвали «Гонкою з Промінням», тому що зображення формувалось під час його візуалізації.

Розробники буквально під час візуалізації зображення на телевізорі казали телевізору яким саме кольором зараз світити через катодну трубку. У маленький 128 байтній пам’яті створювались регіони 8×8, яки відповідали за колір проміння, що рухався построково.


Саме це назовуть «Спрайтом» (Sprite). Для прикладу, Space Invaders. В грі було всього декілька спрайтів, з яких обирався колір проміння, який построково йшов по ламповому екрану.


Насправді, це був один з перших алгоритмів візуалізації у відеоіграх. Більш пізніше він еволюціонував, а ще пізніше — його замінили інші техніки. Якщо комусь цікаво, рекомендую книгу «Racing the Beam». Там детально описують, як рендерилось зображення у перших відеоіграх.

Рендеринг трикутниками з величезним АЛЕ

Один із моїх найулюбленіших прикладів незвичайної техніки рендерінгу був у моїй найулюбленіший грі — Crash Bandicoot. Саме через цю гру та її розробника @asgavin я почав займатися розробкою відеоігор. В цій грі все рендерилось трикутниками, але було одне величезне АЛЕ...


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


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

Алгоритм сортування на PSOne був дуже не чітким і дуже дорогим. Думаю ви дуже часто бачили артефакти сортування трикутників.


А у Crash Bandicoot усі моделі на рівні вже були замоделені відносно положення камери так, щоб їх не треба було сортувати. Це дало додаткові ресурси і процесорний час, який можна було витратити на ще більш красиве зображення в грі.

Це можна перевірити в емуляторах, в яких можна змінити View Matrix камери, та експортувати геометрію у тривимірний редактор. Crash Bandicoot, не дивлячись на тривимірну графіку, не зовсім був тривимірним. В ньому просто не було повноцінного коду тривимірних трансформацій.

У другій частині все було так само. Фіксована траєкторія камери та моделювання трикутників відносно камери, але зʼявилися перші натяки на повне 3D. Ніколи не помічали, яке там було дивне лобі? Саме в ньому камеру дозволили крутити, як заманеться.


У третій частині вже зʼявилися повноцінні тривимірні рівні, в яких у камери вже не було траєкторії, та її можна було обертати, як заманеться. Але геометрії на тих рівнях майже не було, порівняно з рівнями, де камера рухалася за траєкторією.

Ще з цікавого, в другий частині для рендерінгу дзеркальних поверхонь, використовували давно застарілу техніку — дублювання сцени. За «дзеркалом» буквально створювалась копія сцени. Зараз ця техніка застаріла, тому що не завжди є простір, в якому можна дублювати частину сцени.


У Crash Team Racing вже повністю реалізували тривимірну камеру та оточення. Але, деякі елементи залишили двовимірними, наприклад, колеса картів. Це намальовані на екрані 2D спрайти. Само колесо — це масив текстур, в якому колесо відрендерено під різними кутами повороту.




Vertex Color

Також у CTR була реалізована ще одна цікава техніка рендерінгу, яка з часом еволюціонувала, та яка називається «Vertex Color». Кожна вершина трикутника, окрім атрибуту позиції, має ще атрибут кольору та дає можливість малювати затекстурені трикутники або кольорові.




Якщо хтось колись пробував щось програмувати за допомогою OpenGL, DirectX та сучасних графічних API, то 100% натикалися на цю техніку рендерингу. За допомогою якої відмальовуються кольорові трикутники та барицентрична інтерполяція між кольорами вершин трикутника.

Naughty Dog у серії Crash Bandicoot дуже часто використовувала цю техніку. В більшості випадків персонажі не мали текстур, а їх трикутники малювалися певним кольором, окрім деталей, де вже використовувались текстури.


Також, «Vertex Color» використовувався для тіней та світла у грі. У кожну вершину трикутника замість кольору записувався колір освітлення моделі, який під час рендерингу помножувався з кольором текстури, і так створювався ефект освітлення.


За допомогою Vertex Color, окрім персонажів, так само рендерилися задні фони та хмари у CTR.




Ця техніка дуже сильно еволюціонувала, та зараз атрибут «Vertex Color» використовують для змішування матеріалів, або більш складніших ефектів.


Vertex Color тіні та освітлення, були дуже розповсюджені на PSOne. Їх можна побачити у Alien Resurrection, Spyro the Dragon, Gex..



Один з найулюбленіших прикладів використання Vertex Color освітлення — Alien Resurrection, якщо в емуляторі вимкнути текстури.

2.5D

Наступна дуже цікава техніка рендерінгу має назву 2.5D. З нею все малювалося за допомогою двовимірних спрайтів, на які накладалася перспективна проєкція (x/z, y/z). Оточення не було тривимірним, але за допомогою перспективної трансформації складалося враження глибини.


2.5D була перехідним періодом між двовимірною графікою та повноцінною 3D-графікою. Відеоігор з такою технікою рендерингу свого часу було дуже багато. А зараз її дуже часто використовують у інді-іграх, щоб реалізувати ефект псевдотривимірності.

Попередньо відрендерене оточення

І як не згадати ще про техніку рендерингу зображення у відеоіграх з використанням попередньо відрендереного оточення. У часи пʼятого покоління консолей RAM не вистачало для насиченого оточення. Проте було дуже багато ROM памʼяті (на PSOne цілих 700mb, у 300 разів більше за RAM).


Техніка полягає в тому, що поверх статичного зображення рендерилися тривимірні елементи, частіше за все, це були персонажі та деякі ігрові елементи. Таких статичних зображень можна було створити дуже багато, зважаючи на те, що PSOne працювала з кадром розміром 320×240 на 700 mb CD-ROM.




Ця техніка використовувалась в іграх, починаючи від Resident Evil та Dino Crisis, закінчуючи Final Fantasy, та теж була перехідним періодом, яка закінчилась на шостому поколінні ігрових консолей, коли відеопамʼяті почало вистачати на повноцінне тривимірне оточення.




Ray-Casting

Ще одна застаріла техніка, але яка у свій час була дуже проривною, та на зараз вже вимерла, називалась Ray-Casting. Стала дуже популярною після виходу Wolfenstein 3D та Doom.

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


З цікавого, ця техніка рендерингу, по суті, створила жанр First Person Shooter. Майже усі старі FPS відеоігри використовували цю техніку.

Також, цю техніку використовували старі покрокові RPG відеоігри.




Ця техніка у свій час була дуже проривною. Технічно, Ray Casting — це один з алгоритмів трасування променів (Ray Tracing), на ряду з Path Tracing. Тількі в одній площі та в одній ітерації.




ASCII-рендеринг

Закінчу цю частину так званим ASCII-рендерингом. Він був дуже популярним у часи телетексту та текстового режиму роботи моніторів. Кадр гри в ньому формувався за допомогою ASCII-символів.


У часи, коли монітори могли відображати лише текстову інформацію, він був дуже популярним. Перші RPG, перші квест ігри, перші стратегії — всі вони використовували ASCII рендеринг. Навіть зараз він використовується у сучасних проєктах, таких як Dwarf Fortress.




Та усі відеоігри, які доступні на телетексті, використовували ASCII рендеринг.

Підписуйтеся на Telegram-канал @gamedev_dou, щоб не пропустити найважливіші статті і новини про геймдев

👍ПодобаєтьсяСподобалось14
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Ray-Casting jочкень интересная техгология была. Ведь мощностей того же 386SX просто не хватало для реализации этого алгоритма «в лоб». Помнится, я в «Доме Книги» купил толстую книгу, которая рассказывала про нестандартные оптимизации и подходы, которые позволяли рей-кастингу вообще работать на тогдашних процессорах.

эх. жаль что воксели и 2.5д толком не взлетело. we can’t have nice things.

майнкампф це всеж таки outstanding явище. хоч особисто я непереварюю кубічну естетику. а загалом на рубежі віків я як рядовий геймер мав надію, що псевдо3д буде розвиватись паралельно з 3д і буде багато красивого, а не тільки треба_більше_полігонів. але ні.

пререндренные задники использовались не из-за того, что видеопамяти было мало, а из-за того, что не хвтало производительности, чтобы честно их рендрить в реальном времени

Розкажіть про Minecraft, чому там така примітивна кубічна візуалізація в наш час GPU?

Бо створений для дітей. Їм тре простір для уяви, а не крута графа. Дорослі цього не розуміють, але один здогадався, дав їм це і озолотився

Я думав апаратні обмеження. Квадратні Місяць і Сонце страшнуваті чесно кажучи.

Перші версії майнкрафту вийшли у 2011 році. Які там апаратні обмеження?
Хоча після покупки Microsoft якість графи там ще значно виросла, але атмосферу залишили такою ж

Мені від тих кубиків очі робляться кубічні і колять, що зі мною не так?

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

Це скоріше питання гейм дизайну. Розробник надихався dwarf fortress де весь світ так само з тайлів складається. Маючи мінімальною одиницею цілий блок метр на метр значно простіше рахувати та моделювати світ

Трикутні цицьки Лари то була травма на усе життя

Підписатись на коментарі