![]() |
Ambal-3D
Ambal-3D - единственный известный пример рейкастинга для обычного вектора (т.е. если не считать вольфа в эмуляторе спектрума).
Автор (Роман Кузнецов) сам написал в комментариях и по профайлеру видно, что заливку стен нужно ускорить. Попытался сделать это и попутно ускорил процедуры умножения, но основной эффект именно от оптимизации закраски. В версии для ВМ1 закраска еще чуть быстрее. Затронутые процедуры можно еще ускорить, но уже не так заметно. Неплохо бы еще оптимизировать деление. Больше всего напрягают видные в некоторых местах при определенных ракурсах "левые" вертикальные линии, но не знаю, можно ли это поправить малой кровью. Возможно автор найдет исходники, было бы здорово. |
Оптимизировал интерполяцию и деление, также вытащил из бинарника текст с комментариями и приложил в виде текстового файла.
|
Сколько весит в тактах сканирование, интерполяция и вывод?
У меня 1024 угла, 90 градусов обзор, 256 столбцов. По умолчанию сканируется только каждый 16-й столбец, но если соседние сканы попали на разные стены, то в середине снова сканируется, и так далее, рекурсивно. В среднем на экран получается 50 сканов. В среднем один экран обсчитывается 80000 тактов, выводится 160000 тактов. |
Quote:
Quote:
|
Интересно, сколько сожрёт на Векторе текстурирование стенок.
|
Wolf в векторовском эмуляторе спектрума дает 7-11 fps (в среднем ближе к 8-9, крайние взбрыки 6-12). Думаю при грамотном переводе на ВМ80 можно попытаться проиграть не более чем в 1,5-2 раза.
|
А как работает эмулятор?
|
Это аппаратно-программное решение - Кишиневский адаптер z80 + Эмулятор спека (последний вариант тут). В адаптере несколько программно активируемых заточек под спек, главные две из которых - NMI по обращению к ряду "околоспековских" портов и "перепутывание" адресов, чтобы строение векторовского экрана выглядело для процессора как спековское. Т.е. ничего сверхъестественного.
|
Немного цифр по результатам демонстрационного прогона (указано полное время расчета и отрисовки кадра, составляющие как-нибудь в другой раз):
Оригинал min 465064 тактов (6.45 FPS) max 1141092 тактов (2.63 FPS) p6 - версия для ВМ80 (вариант для ВМ1 быстрее, но количественно не измерял) min 364596 тактов (8.23 FPS) max примерно 866000 тактов (3.46 FPS) Понятное дело, что векторовские тормоза вносят свой вклад, на компе с прозрачным доступом ВМ80 к памяти было бы меньше тактов. |
Quote:
|
| All times are GMT +4. The time now is 23:40. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.