Какая минимум битность вычислительного устройства должна быть для рендеринга 3d моделей?

подскажите какая минимум битность вычислительного устройства должна быть для рендеринга 3d моделей. Просто я хочу попробовать отрендерить 3d модель на ардуино nano, понимаю что на это уйдет несколько дней или месяцев, и множество костылей для преобразования расчетов, но подскажите насколько это реально и в какую сторону с математикой копать.


Ответы (2 шт):

Автор решения: xmikex

У тебя не хватит оперативной памяти для вычислений.

Возможность реализации машины Тьюринга на конкретном языке
 программирования можно грубо описать как перечень требований, которым
 этот язык должен для этого удовлетворять:

Конечность (нет бесконечных символьных множеств и пр.).
Фиксированное описание (формальность).


Всегда достаточный объём доступной памяти — в идеале
 здесь имеется в виду неограниченная память,
 однако физические рамки не позволяют сделать
 память ЭВМ бесконечной, поэтому она просто
 должна быть "always big enough".


Неограниченность времени выполнения — любая программа
 в должна иметь возможность
 работать до тех пор, пока не завершится.
Возможность функциональной композиции
 (вызов одной функции из другой, рекурсия).
Наличие циклов while с прерыванием или 
эквивалентных им конструкций.
Возможность останавливать выполнение 
(halt) или каким-то образом подавать
 сигнал о результатах выполнения.
Представление множества натуральных
 чисел, понятие нуля и следующего 
числа. Возможны другие подобные системы.
Поддержка входных и выходных данных (I/O),
 причём без формальных ограничений в объёме.
 Очевидно, что если любая программа,
 написанная на каком-то языке программирования,
 принимает на вход не более фиксированного n бит
 данных и возвращает не более n бит, 
этот язык не может быть Тьюринг-полным.
→ Ссылка
Автор решения: gbg

Собственно, такой проект уже есть, так что остальное - лирическое отступление с пояснениями:

Строго говоря, рендеринг - это получение значания вычислимой функции. Поэтому, любой тьюринг-полный драндулет любой разрядности с этим справится - не в разрядности дело. AVR умеет эмулировать вычисления с плавающей точкой, например, а вот тут вообще запустили на AVR эмулятор ARM, в котором запустили linux и bash (Что? Да!). Правда там можно придраться, что автор использует внешнюю RAM и SD-карту.

И даже ограничение на память можно обойти, если готовое изображение отдавать через последовательный порт, а исходные данные закачивать через него же.

Так что фактически, это вопрос времени, упорства и желания. А в качестве теории и кусков кода рекомендую вот это, просто потому что я там соавтор - там не про рейтрейсинг, а про классическую отрисовку треугольниками с текстурами, так что это как раз повод поработать над вариантом реализации этого на ардуине, раз рейтрейс уже есть.

Также в качестве веселых картинок рекомендую посмотреть демосцену на AVR. Там и анимация в реальном времени, и музыка.

Дополнительно. К контроллеру можно приколхозить обычную писюковую видеокарту (раритентную разумеется, под шину ISA). Тогда у вас будет достаточно видеопамяти под результат и заодно устройство отображения.

Процесс рендеринга с текстурами существенно отличается, например, компиляции ядра линукса, потому что его можно производить попиксельно, следовательно, на выход нужен один байт. Так что если хранить входную модель и текстуру на SD карте, ну или сильно постараться и упихать ее во флеш, пожав все что только можно - можно отрендерить и с текстурами и с примитивным светом.

Вот как раз скриншот из видео: введите сюда описание изображения

Вверху видно время - 293 секунды на отрисовку 320x240 в 16 цветах. Очень достойный результат на мой взгляд.

→ Ссылка