607
Кріплення на осилле
Quake 1 відео графіка гри на екрані Hitachi V-422
Для роботи над цим проектом Pekku Väanänen надихнула відеопоказ на екрані грибного осцилографа та широко відомого Youscope. Якщо це можливо, чому не кладуть тривимірну графіку на екрані?
Малювання на осцилографі відбувається в режимі XY, в якому напруга визначають координати точок на екрані. Досить варіювати їх як функцію часу для малювання рядків. У той же час, швидкість зміни повинна бути лівою приблизно однаковою, інакше будуть отримані лінії з різною яскравістю. Згідно з відмінним напрямком від Jed Margolin, спеціальна точність при визначенні довжини лінії не потрібна. Щоб намалювати незрівняний відрізок, промінь необхідно швидко переміщати, залишаючи видиму лінію.
Для початку, в процесі обробки, Пекка створювала просте моделювання режиму XY осцилоскопа. Виоскоп відмінно подається після додавання особливостей фосфору.
Для виходу використовується аудіовихід комп'ютера - досить типове рішення, яке було прийнято для того ж Youscope.
Quake є 1996 гра, яка грає дуже швидко на сучасному обладнанні. І генерація сигналу теж краще робити швидко. В першу чергу, вибір впав на ASIO SDK, але після пари вечірок спроб, Väanänen вирішив використовувати PortAudio, який був ідеальним для завдання. Проте не було зібрано бібліотечну бібліотеку.
Всі доступні звукові картки, що використовуються низькопрохідний фільтр, тому обмежена пропускна здатність. Це означає, що вона виходить, щоб зробити кілька рядків, ніж у Youscope, творець якого знайшов звукову картку з бажаними характеристиками. Не допоміг багато, і збільшення частоти до максимальної доступності 96 кГц.
Процес генерації ділиться на дві частини: ігровий двигун Darkplaces та синтезатор аудіо, які спілкуються один з одним за допомогою WinAPI.
У модифікації Darkplaces оригінального двигуна Quake передбачено деталі геометрії, зокрема, переведені краї трикутників. Не всі були зняті, тільки видимі і неруйновані.
Аудіо потік має чергу ліній для рендерингу, які просуються від ігрового двигуна. Потім, в власний темп, процес працює на карті цих ліній, що виробляють 32-бітний потік даних 96 кГц.
В середньому передається 1 800 ліній. Якщо немає нових даних, буде намальовано попередній кадр. Для кожної лінії на демонстрації несе відповідальність за 5-20 зразків. Якість картинки підвищується з уповільненням рендерингу.
генерація звукового сигналу бере на себе переробну потужність, але більшість з них витрачається на растрову глибину буфера ігрового двигуна. У зв'язку з підбором параметрів сигналу, завершальним виконанням та кількістю затримки дозволяють комфортно відтворювати за допомогою клавіатури та миші, а не просто відтворювати демо.
За словами В’яньянена, продуктивність залишилась незадовільною. Можна одночасно набрати менше 1000 ліній. Більша кількість вимагає більшої частоти звуку, ніж вихід струму.
Прискорюючи малюнок знижує якість картинки, і якщо ви залишите більше часу для кожного з ліній, то відповідь буде постраждати.
Існує також низькочастотний шум, особливо помітний при швидкому русі при оновленні всього екрану. Ймовірно, це від підвищення рівня бас-рівняльізатора в аудіокарті, але автор проекту не обов'язково його вгадати.
Дані можна переглянути на сторінці звіту. У статті використовуються зображення з lofibucket.com.
Джерело: geektimes.ru/post/243699/