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. Кадровий буфер[en] може бути дещо ширшим, ніж екран, і довільно високим, за умови обмеження відеопам'яті.
  2. Позиція в цьому буфері, з якого виведений екран, може бути зміщена з кроком на 1 піксель — горизонтально або вертикально.
  3. У ньому достатньо відеопам'яті для зберігання двох таких буферних екранів, а ще залишається місце для тайлів[en] та спрайтів.

Кармак використовував ці можливості для створення буфера, який на 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 (August 1, 2002). The Video Game Software Wizardry of Id. IEEE Spectrum. Процитовано April 13, 2018. 
  3. Aycock, John. Retrogame Archeology: Exploring Old Computer Games (English). Springer. с. 45. ISBN 978-3-319-30004-7. doi:10.1007/978-3-319-30004-7. Процитовано November 27, 2017. 
  4. Super Mario Bros. 3 Demo (1990). John Romero. Процитовано December 15, 2015.
  5. Orland, Kyle (December 14, 2015). Here’s what id Software’s PC port of Mario 3 could have looked like. Ars Technica. Процитовано December 15, 2015.