Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Вектор (http://zx-pk.ru/forumdisplay.php?f=55)
-   -   Ambal-3D (http://zx-pk.ru/showthread.php?t=21073)

ivagor 6th April 2013 09:23

Ambal-3D
 
Ambal-3D - единственный известный пример рейкастинга для обычного вектора (т.е. если не считать вольфа в эмуляторе спектрума).
Автор (Роман Кузнецов) сам написал в комментариях и по профайлеру видно, что заливку стен нужно ускорить. Попытался сделать это и попутно ускорил процедуры умножения, но основной эффект именно от оптимизации закраски. В версии для ВМ1 закраска еще чуть быстрее. Затронутые процедуры можно еще ускорить, но уже не так заметно. Неплохо бы еще оптимизировать деление.
Больше всего напрягают видные в некоторых местах при определенных ракурсах "левые" вертикальные линии, но не знаю, можно ли это поправить малой кровью.
Возможно автор найдет исходники, было бы здорово.

ivagor 7th April 2013 09:53

Оптимизировал интерполяцию и деление, также вытащил из бинарника текст с комментариями и приложил в виде текстового файла.

alone 7th April 2013 13:27

Сколько весит в тактах сканирование, интерполяция и вывод?
У меня 1024 угла, 90 градусов обзор, 256 столбцов.
По умолчанию сканируется только каждый 16-й столбец, но если соседние сканы попали на разные стены, то в середине снова сканируется, и так далее, рекурсивно.
В среднем на экран получается 50 сканов.
В среднем один экран обсчитывается 80000 тактов, выводится 160000 тактов.

ivagor 7th April 2013 17:14

Quote:

Originally Posted by alone (Post 590123)
Сколько весит в тактах сканирование, интерполяция и вывод?

Сейчас не готов ответить, если еще буду копать эту штуку - попробую измерить.

Quote:

Originally Posted by alone (Post 590123)
У меня 1024 угла, 90 градусов обзор, 256 столбцов.
По умолчанию сканируется только каждый 16-й столбец, но если соседние сканы попали на разные стены, то в середине снова сканируется, и так далее, рекурсивно.

В Ambal3D.txt есть информация от автора о практически всех этих характеристиках.

PPC 7th April 2013 18:06

Интересно, сколько сожрёт на Векторе текстурирование стенок.

ivagor 7th April 2013 18:45

Wolf в векторовском эмуляторе спектрума дает 7-11 fps (в среднем ближе к 8-9, крайние взбрыки 6-12). Думаю при грамотном переводе на ВМ80 можно попытаться проиграть не более чем в 1,5-2 раза.

alone 7th April 2013 19:44

А как работает эмулятор?

ivagor 7th April 2013 21:04

Это аппаратно-программное решение - Кишиневский адаптер z80 + Эмулятор спека (последний вариант тут). В адаптере несколько программно активируемых заточек под спек, главные две из которых - NMI по обращению к ряду "околоспековских" портов и "перепутывание" адресов, чтобы строение векторовского экрана выглядело для процессора как спековское. Т.е. ничего сверхъестественного.

ivagor 8th April 2013 19:39

Немного цифр по результатам демонстрационного прогона (указано полное время расчета и отрисовки кадра, составляющие как-нибудь в другой раз):

Оригинал
min 465064 тактов (6.45 FPS)
max 1141092 тактов (2.63 FPS)

p6 - версия для ВМ80 (вариант для ВМ1 быстрее, но количественно не измерял)
min 364596 тактов (8.23 FPS)
max примерно 866000 тактов (3.46 FPS)

Понятное дело, что векторовские тормоза вносят свой вклад, на компе с прозрачным доступом ВМ80 к памяти было бы меньше тактов.

ivagor 10th April 2013 20:34

Quote:

Originally Posted by ivagor (Post 589780)
Затронутые процедуры можно еще ускорить, но уже не так заметно.

Надо признать - тут я погорячился, можно и заметно. Но наличие визуальных артефактов сильнее портит впечатление, чем недостаточная скорость


All times are GMT +4. The time now is 23:40.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.