Adaptive tile refresh

Adaptive tile refresh — це техніка комп'ютерної графіки для сайд-скролерів. Ця техніка найбільше використовувалася Джоном Кармаком id Software у таких іграх, як Commander Keen, щоб компенсувати низьку графічну продуктивність ПК на початку 1990-х. Його основна інновація полягає в новому використанні декількох апаратних функцій EGA для виконання прокрутки в апаратному обладнанні. Метод названий для іншого аспекту — відстежував переміщення графічних елементів, щоб мінімізувати кількість перемальовування, необхідного у кожному кадрі. Разом комбінація економить час обробки, який інакше був би необхідний для перемальовування всього екрана.[1] Кармак розробив програмний механізм на основі прокручування дисплея для великих зображень 1970-х років.[2]

Оскільки CGA (попереднє покоління графічного обладнання ПК) не має можливостей для прокручування за допомогою апаратних засобів, прокрутку раніше потрібно було робити в програмному забезпеченні, перемальовуючи весь екран для кожного кадру — завдання, в якому ПК не вистачає часу для виконання. Adaptive tile refresh мінімізує обчислювальну потужність, необхідну для ігор з прокруткою, в межах досяжності доступного обладнання. Це працює за допомогою позначення растрових плиток та перемальовування лише графіки на екрані, яка фактично оновлюється.[3]

Історія[ред. | ред. код]

Adaptive tile refresh з підтримкою апаратної прокрутки вперше з'явилось у невідомій тестовій грі, яка отримала назву Dangerous Dave in Copyright Infringement. Назва «Dangerous Dave[en]» раніше використовувалася Джоном Ромеро під час програмування ігор для Softdisk[en]. Нова гра — це відтворення першого рівня Nintendo Super Mario Bros. 3, призначена для демонстрації реалістичної пробної лінійки для концепції Adaptive tile refresh, була розроблена протягом тижня. Команда майбутніх розробників id Software, що ще працювали в Softdisk, потім відтворила всю гру Mario, сподіваючись, що Nintendo отримає ліцензію на цю гру для ПК. Nintendo відмовився від пропозиції випустити гру після того, як id Software закінчила її.[4][5][1]

Перша ринкова поява Carmack's adaptive tile refresh з'явилася в першому випуску ігрової серії Commander Keen, Marooned on Mars.

Технічні деталі[ред. | ред. код]

EGA має кілька функцій, які дозволяють адаптувати ефект оновлення плитки:

  1. Кадровий буфер може бути дещо ширшим, ніж екран, і довільно високим, за умови обмеження відеопам'яті.
  2. Позиція в цьому буфері, з якого виведений екран, може бути зміщена з кроком на 1 піксель — горизонтально або вертикально.
  3. У ньому достатньо відеопам'яті для зберігання двох таких буферних екранів, а ще залишається місце для тайлів та спрайтів.

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

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

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

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

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

  1. а б Kushner, David (2004). Masters of Doom: how two guys created an empire and transformed pop culture. New York, NY: Random House, Inc. ISBN 9780375505249. OCLC 50129329.
  2. Kushner, David (1 серпня 2002). The Video Game Software Wizardry of Id. IEEE Spectrum. Архів оригіналу за 14 квітня 2018. Процитовано 13 квітня 2018.
  3. Aycock, John. Retrogame Archeology: Exploring Old Computer Games (English) . Springer. с. 45. doi:10.1007/978-3-319-30004-7. ISBN 978-3-319-30004-7. Архів оригіналу за 29 вересня 2019. Процитовано 27 листопада 2017.
  4. Super Mario Bros. 3 Demo (1990). John Romero. 1990. Процитовано 15 грудня 2015. Архівована копія. Архів оригіналу за 15 грудня 2015. Процитовано 6 грудня 2019.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  5. Orland, Kyle (14 грудня 2015). Here’s what id Software’s PC port of Mario 3 could have looked like. Ars Technica. Архів оригіналу за 10 березня 2016. Процитовано 15 грудня 2015.