Железо
Опубликовано в Железо
avatar
31 секунд читать

Программист создал 3D-графику и физический движок с нуля и демонстрирует его с помощью самодельного GPU

Программист-самоучка Алекс Фиш опубликовал демонстрацию движка для 3D-графики и физики, который он сделал полностью с нуля - он работает на GPU, который он сделал из базовых деталей. В сам GPU встроен экран со стиками для управления экранной графикой.

Эта история очень похожа на самодельный FuryGPU, о котором я рассказывал неделю назад. Но этот самодельный GPU от Алекса Фиша ориентирован на программную сторону разработки GPU, а не только на аппаратную часть GPU.

Для создания аппаратной части использовались различные готовые детали, которые можно купить самостоятельно. Эти детали состоят из 1,91-дюймового AMOLED-дисплея с подключенным к нему беспроводным модулем платы разработки, джойстиков SparkFun и макетной платы SparkFun Qwiic Mux.

Хотя аппаратное обеспечение не является полностью индивидуальным, 3D-движок Алекса, используемый на самодельном GPU, является таковым. Программист создал 3D-графику и физический движок (получивший название ESPescado) полностью с нуля, используя C++ и OpenGL. Даже библиотеки, содержащие векторную и матричную математику, были написаны с нуля. Физика и геометрия отображаются в 3D - однако, чтобы изображения действительно выглядели 3D, движок использует матрицу перспективной проекции и перспективное деление, чтобы превратить 3D-объекты в 2D-изображения. Это основы 3D-графики.

Самодельный 3D-движок также использует сетки. Сетки создаются из точек и линий, которые группируются в треугольники, которые затем группируются в сетки. По терминологии видеоигр, сетки составляют основу объектов и местности, которые мы видим в игре, и именно они придают им фотореалистичные характеристики. Эти сетки помещаются в "мир" с помощью матрицы "модель-мир" (TRS). Система TRS может масштабировать, вращать и переводить каждую видимую точку из локального пространства в мир.

Алекс смог продемонстрировать вживую, как этот самодельный графический движок работает на его крошечном 1,91-дюймовом наборе для разработки GPU. В видеоролике на YouTube показано, как графический процессор отображает зеленый треугольный объект на черном фоне. С помощью двух джойстиков, которые он подключил к GPU, он смог перемещать объект, подобно точке зрения от третьего лица в видеоигре.

Сама по себе демонстрация не является чем-то революционным, но она доказывает, что 3D-графические движки ручной работы могут быть созданы с нуля. Если у Алекса есть связи с Диланом Барри - создателем FuryGPU, - мы можем увидеть полноценную 3D-видеоигру, полностью основанную на самодельном оборудовании и программном обеспечении. Если вы хотите ознакомиться с 3D-движком Алекса, он создал несколько страниц на GitHub с подробным описанием 3D-движка, а также оборудования, которое он использовал для его работы.

Источник: tomshardware.com

8 Комментарии

avatar
Kai
3 месяца назад

"использовались различные готовые детали, которые можно купить самостоятельно"

слабак, мог бы сам выращивать кристаллы

avatar
_42
3 месяца назад

Я видел чела на Ютубе, который делал транзисторы с нуля..

avatar
Саша Алексеева
3 месяца назад

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

avatar
_42
3 месяца назад

А мог бы и собрать видеокарту с нуля..
https://www.youtube.com/watch?v=l7rce6IQDWs&t=1s

купить контроллер с алика esp32 назвать его самодельным гпу. Хьтьфу ему в лицо.

avatar
Shamble Автор
3 месяца назад

Ну програмную часть написал с нуля, уже не тьфу.

Мне пожигает жопу надпись "самодельное гпу", по факту он написал Api под микроконтроллер или граф библиотеку. А само гпу разработали китайцы, у него и озу свое и прочее. Пы сы, сам пишу код под есп)

avatar
Onni
3 месяца назад

Там очень простая математика. В основном сложение и умножение. Редко синусы косинусы, но ничего сложного.

У меня на втором курсе был предмет компьютерная графика. Дали тонкий справочник страниц на 50. Через неделю я рисовал линиями и точками на экране вращающуюся 3д модель.

Про физику не могу сказать и про электронную часть -- это я плохо понимаю, особенно последнее. Поэтому восхищаюсь.