Энтузиаст FPGA и ретро-компьютеров Понгсагон Вичит (Pongsagon Vichit) представил TinyGPU v2.0 — самостоятельный графический процессор, способный осуществлять весь спектр базового 3D-рендеринга: от геометрических преобразований и расчёта освещения до растеризации. Проект запущен в производство через инициативу Tiny Tapeout и планируется к выпуску в виде микросхемы с примерно 200 000 транзисторов в максимальной конфигурации из 4×4 тайлов. Для сравнения: флагманская видеокарта Nvidia GeForce RTX 5090 содержит свыше 92,2 млрд транзисторов, однако TinyGPU изначально создавался не для максимальной производительности, а для минимализма.
Вичит (известный в сети как @MattDIYgraphics) демонстрирует TinyGPU v2.0 на FPGA-плате Basys3: загруженный в чип дизайн выводит 3D-модели из встроенной памяти, позволяя вращать их в реальном времени с помощью геймпада Super Nintendo. Тем же контроллером пользователь может изменять положение источника света. Такая демонстрация подчёркивает идею проекта — реализовать полноценный 3D-конвейер в условиях жёсткого транзисторного бюджета.
Технически TinyGPU v2.0 работает на частоте 25 МГц и обеспечивает от 7,5 до 15 fps. Рендер осуществляется в разрешении до 320×240 пикселей с 4-битной палитрой, то есть до 16 одновременно отображаемых оттенков. Разработчик подчёркивает, что кремниевая версия на базе Tiny Tapeout не превзойдёт скорость демонстрации на Basys3, так что рассчитывать на «игровую» производительность не стоит.

Несмотря на характеристики, близкие к домашним компьютерам начала 1980-х, внутри TinyGPU v2.0 присутствуют функции, присущие более поздним поколениям графики. Он выполняет интерактивное преобразование 3D-векторов в растр и задействует аппаратные блоки трансформации и освещения — то, что массово появилось в потребительских видеокартах с выходом Nvidia GeForce 256 в октябре 1999 года. Под трансформацией понимаются операции вращения, масштабирования и проекции модели на экран, а освещение отвечает за расчёт яркости поверхности с учётом источника света.
Среди возможностей TinyGPU v2.0:
— 4-битный двойной буфер кадра для плавного вывода;
— 8-битный буфер глубины в QSPI RAM для хранения данных о дистанции до пикселей;
— поддержка до 1 000 треугольников в сцене;
— отсечение невидимых граней (backface culling);
— один динамический направленный источник света;
— плоское закрашивание, когда цвет задаётся целому треугольнику.
.
Проект заявлен для следующего раунда Tiny Tapeout: полная конфигурация из 16 тайлов обойдётся автору примерно в $1 500. Исходные коды на Verilog и документация опубликованы в репозитории на GitHub, что делает TinyGPU v2.0 полностью открытой платформой для изучения и модификации. Ранее Вичит участвовал в Tiny Tapeout 7 с проектом Tiniest GPU, умеющим обрабатывать лишь два полигона, но работавшим на частоте 50 МГц с выводом 640×480 пикселей, 6-битным цветом и до 60 fps.
Основная ценность TinyGPU v2.0 заключается не в конкуренции с коммерческими графическими ускорителями, а в демонстрации того, как полноценный аппаратный 3D-конвейер можно воплотить в условиях предельной экономии транзисторов, предоставив при этом платформу для глубокого изучения и экспериментов.
Источник: iXBT

