Разработчик и энтузиаст Бен Картер добавил в Super NES аппаратный трассировщик лучей. Напомню что самой консоли уже 30 лет.
Для реализации этой идеи его надоумил друг и желание получше изучить Verilog и FPGA. Таким образом появился проект SuperRT. Блогер хотел сделать аналог чипа SuperFX - даже названия похожи. Чип SuperFX располагался в картридже и обрабатывал визуальные эффекты недоступные самой консоли из-за ограничения "железа".
В итоге, Картер собрал кастомную плату картриджа с тремя дополнительными вычислительными ядрами с частотой 50 МГц - они обеспечивают поддержку трассировки лучей и базовой геометрии недоступной обычной SNES. На КПДВ можно можно видеть их работу. Автор извиняется за качество видео - виновата плата видеозахвата.
На фото можно видеть снятый корпус для монтажа проводов, по словам автора, никаких изменений в железо не вносились. Для создания модифицированной платы, автор купил древний картридж с "ужасной игрой Pachinko", удалил ПЗУ с игрой и вставил туда кабели. Еще он использовал несколько логических преобразователей (level shifters) и программируемую схему (FPGA) DE10-Nano. Большинство проводов на снимке выше обеспечивают коммутацию логических преобразователей, необходимых для конвертации напряжения с 5В, передаваемых SNES, в 3,3В допустимых для современных чипов.
Получившееся в итоге произведение Франкенштейна, способно просчитывать и отображать геометрию, цвета, тени и отражения для примерно 50 миллионов базовых объектов: плоскостей, сфер и трёхмерных объёмов (AABB). Отрендеренное изображение конвертируется в пригодный для SNES формат и передаётся в видеопамять консоли, откуда выводится на экран с разрешением 200x160.
Чип вычисляет и записывает в буфер RAM результаты своей работы. Дизассемблированный командный буфер выглядит так:
0000 Start
0001 Plane 0, -1, 0, Dist=-2
0002 SphereSub OH 2, 1, 5, Rad=5
0003 SphereSub OH 4, 1, 4, Rad=4
0004 SphereSub OH 5, 1, 9, Rad=9
0005 SphereSub OH 2, 1, 2, Rad=2
0006 SphereSub OH -0.5, 1, 2, Rad=2
0007 RegisterHitNoReset 0, 248, 0, Reflectiveness=0
0008 Checkerboard ORH 48, 152, 48, Reflectiveness=0
0009 ResetHitState
0010 Plane 0, -1, 0, Dist=-2.150146
0011 RegisterHit 0, 0, 248, Reflectiveness=153
0012 AABB 4, -2.5, 11, 8, 3.5, 13
0013 ResetHitStateAndJump NH 44
0014 Origin 6, 2, 12
0015 Plane -0.2929688, 0, -0.9570313, Dist=0.2497559
0016 PlaneAnd OH 0.2919922, 0, 0.9560547, Dist=0.25
0017 PlaneAnd OH 0, 1, 0, Dist=1
0018 PlaneAnd OH 0, -1, 0, Dist=4
0019 PlaneAnd OH -0.9570313, 0, 0.2919922, Dist=-1
0020 PlaneAnd OH 0.9560547, 0, -0.2929688, Dist=1.499756
0021 RegisterHit 248, 0, 0, Reflectiveness=0
Максимально допустимая частота кадров - 30 FPS. Это связано с ограничением пропускной способности интерфейсов самой консоли. Каждый кадр с трассировкой "весит" 32 килобайта при ограничения интерфейса вывода в 16 килобайт, поэтому полное обновление картинки возможно только каждые два кадра. Автор планирует и дальше развивать свое детище, подробнее можно узнать в его личном блоге.
EvilGenius18
Жаль, что подобные хардкорные разработчики обычно не используют свои знания для улучшения опенсорсных продуктов вроде Blender.
Да это круто, что он смог внедрить ray tracing реального времени (30 FPS) на железе, которое в миллион раз слабее современного, но почему бы не применить эти знания на практике, и не сделать Blender Cycles рендерер настолько же быстрым на современном железе? А то что получается на 150 МГц процессоре мы можем достичь 30 FPS ray tracing, а на современном 16 ядерном 3 ГГц процессоре и 0.1 FPS недостижимо, рендерим 1 кадр по несколько минут / часов.
Такие исследования важны, но если их результаты не применять на практике, это пустая трата времени и потенциала
LoadRunner
Вы сравните разрешение экрана хотя бы, не говоря уже о количестве объектов в кадре.
perfect_genius
Про него тогда никто не узнает.
Gordon01
Так он не внедрил. Расчетом занимается внешняя FPGA "с тремя дополнительными вычислительными ядрами с частотой 50 МГц — они обеспечивают поддержку трассировку лучей"
Это почти то же, что и запуск дума на NES — всеми вычислениями занимается дополнительное железо, а от приставки остается только ввод/вывод.
NES здесь только для ретрохайпа.
corvair
Но в целом метод расширения аппаратуры вполне себе штатный, аналогичный использовавшемуся в период рыночной жизни консоли.
atri1
при чем тут вообще блендер?
не хочу быть токсиком… данная разработка это "трансляция видеопотока через разъем картриджа в SNES" туда хоть Киберпанк можно транслировать с ПК и назвать это "киберпанк работает на SNES" когда SNES только кодирует видео сигнал...
точно также сделали там где осенью была про "запуск Дума на тесте на беременность" когда там трансляция видеопотока через вайфай и отображение на экране устройства полученного видеопотока...
grvelvet Автор
Это особенность платформы. Разработчики тех лет тоже извращались как могли, добавляя в картридж дополнительные микросхемы.
0xd34df00d
Ух, люблю, когда одни люди рассказывают, как другие люди должны проводить свое свободное время.
ApeCoder
Люблю когда одни люди высказывают свое мнение о том, как другие люди высказывают свое мнение о том, как третьи люди проводят свое время.
Что является формой проведения свободного времни для меня.
megahertz
В статье четко указана цель автора:
а полученное устройство и заснятое видео — это всего лишь интересный побочный продукт