Самая главная штука, которую все любят забывать: глазные яблоки крутятся.
И если мы смотрим на двигающийся объект, то можно на него смотреть так, чтобы его проекция на сетчатку двигалась, а можно так, что его проекция на сетчатке будет неподвижна — если мы будем сопровождать двигающийся объект взглядом.
И вот здесь — когда мы сопровождаем взглядом двигающиеся объекты, например, пролистываемый текст, перетаскиваемое окно или бегущего чувака в игре — и проявляется существенная разница между 60, 120 и 500 Гц.
Потому что если мозг рассчитал примерно линейную скорость объекта и начинает вращать глазное яблоко, пытаясь сопроводить объект, он ожидает, что с сетчатки пойдёт неподвижная картинка. А если герц мало, то будет дерганая непонятная фигня, а не статичный объект. И чем выше скорость и больше экран, тем больше нужно герц.
Поэтому плавная прокрутка зависит от того, сколько промежуточных состояний объекта показывается в единицу времени → насколько легко «зацепиться за него взглядом», то есть, начать сопровождать его, поворачивая глазные яблоки. А это уже обеспечивается слаженной работой GPU, экрана, интерфейса передачи и прочих штук.
PS. Да, особенностей зрения очень много, сетчатка обладает многослойной обработкой и распознаёт оптический поток ещё до попадания в зрительную кору, а ещё можно делать фичи с мерцанием картинки, чтобы спровоцировать мозг достраивать кадры (привет кинескопы и плазмы) и т. д., но информации, от которой мозг может отталкиваться для всего этого, всё равно должно быть достаточно.
PPS. Сам работаю (в т.ч. CAD и кодинг) и играю за 120 Гц экранами. Вкусно.
Подкину идею: если я хочу что‑то напечатать в чат, то мне не надо переводить в него фокус мышкой/клавишей, я просто сразу печатаю прямо в игре и жму Enter. То, что пробел в тексте одновременно будет с выстрелом из танка — проблема тех кто перед танком :)
У меня как раз параллельный битбанг получился, просто руками за раз не одна, а сразу 16 ног переключается. Три переключения = передали по 1 разному биту сразу на 16 лент.
Имхо главная проблема не в загрузке CPU, а в том, что выдерживание таких точных интервалов на CPU задача не очень приятная, и по возможности её лучше скидывать на более специализированные железяки
Вот да. Насчёт есть — не уверен, по крайней мере, в стоковом Дебиане я такового не нашёл, пришлось писать самостоятельно. И всё ради возможности лочить прерывания.
Хотя лучше, конечно, просто накатить ОС реального времени.
3D принтер, способный одновременно печатать и пластиком, и металлом с вменяемым качеством — это почти революция 3D печати, существенно расширяющая сферу применимости 3D принтеров и очень сильно меняющая подход к формату приобретения бытовых устройств.
Решается. Но ИМХО было очень интересно узнать, как подобная задача решается с помощью аппаратных таймеров STM32. В своё время я делал подобное на STM32 Discovery, но интервалы в 400 нс выдерживал с помощью тучи asm("nop"). Без циклов.
В комментариях умные люди мне объяснили про эти таймеры, а в данной статье ещё и наглядный пример, как с ними управляться в задаче, подобной той, что я решал. И хотя это не совсем мой случай, всё равно, информация очень полезная.
Аппаратные таймеры STM32 очень навороченные, с кучей разных флагов и режимов, и примеры работы с ними — это хорошо. А уж с Bluetooth — вдвойне.
Имхо это из пушки по воробьям. У меня была схожая задача, только лента была не одна а 17. Я пытался, в том числе, решать её и малинкой, т.к. опыта не было, а классические подходы не срабатывали.
И даже с учётом этого всего малинка — это перебор. А уж для одной ленты тем более. В итоге я остановился как раз на STM32.
Я не специалист, но имхо тут фокус в том, что на аналоговой оптике можно сделать высокопроизводительный ускоритель нейросетей. И вот нейросети, которые мы будем гонять на этом ускорителе, могут быть вполне себе универсальны.
Например, вместо того, чтобы устанавливать ОС и софт для 3д моделирования, мы просто запихиваем на этот ускоритель сетку на 400 триллионов параметров, которой на вход даются нажатия клавиш, движения мышки и голос пользователя, а на выходе она дает готовую картинку, чертежи, текст, видео и всё что нужно в реалтайме.
То есть ПО вообще нет, есть сетка, которая слушает клавиши/голос и сразу выводит готовую картинку.
То же самое касается VR/AR гарнитур. Вместо того, чтобы отдельно 3д сканировать окружающее пространство, реконструировать облако точек, считать модели и делать ещё кучу всего, мы просто натягиваем одну большую сетку (или сеть менее больших сеток), пихаем ей на вход картинку + голос пользователя, и она сразу на линзы/имплант в сетчатке глаза/фемтопроектор выводит готовую дополненную/виртуальную реальность.
Иными словами, мы (почти) весь стек технологий заменяем одним жирным ИИ. Тогда узкоспециализированный ускоритель становится универсальным.
Условно говоря, зачем вам какие‑то процессоры, джаваскрипты и операционные системы, если у вас есть кристалл 1×1 см за 20$ с сеткой 200T параметров, который жрёт 10 ватт и без программирования спокойно управляет этим роботом, да еще и сам разбирается где какие у него актуаторы, датчики и обратные связи.
Имхо именно за этой штукой будущее. Оптика снимает проблему ограничения частоты, а аналоговость позволяет не тратить гору ключей на расчёты вещественных чисел. И вместе две этих особенности позволяют преодолеть тот тупик, куда сейчас пришло железо. С огромными видеокартами с ручками для переноски и всё менее заметным приростом скорости с каждым поколением CPU/GPU.
На заре эпохи компы пытались делать аналоговыми, но гонку выиграли цифровые. С появлением нейросетей ситуация должна начать меняться :)
Самая главная штука, которую все любят забывать: глазные яблоки крутятся.
И если мы смотрим на двигающийся объект, то можно на него смотреть так, чтобы его проекция на сетчатку двигалась, а можно так, что его проекция на сетчатке будет неподвижна — если мы будем сопровождать двигающийся объект взглядом.
И вот здесь — когда мы сопровождаем взглядом двигающиеся объекты, например, пролистываемый текст, перетаскиваемое окно или бегущего чувака в игре — и проявляется существенная разница между 60, 120 и 500 Гц.
Потому что если мозг рассчитал примерно линейную скорость объекта и начинает вращать глазное яблоко, пытаясь сопроводить объект, он ожидает, что с сетчатки пойдёт неподвижная картинка. А если герц мало, то будет дерганая непонятная фигня, а не статичный объект. И чем выше скорость и больше экран, тем больше нужно герц.
Поэтому плавная прокрутка зависит от того, сколько промежуточных состояний объекта показывается в единицу времени → насколько легко «зацепиться за него взглядом», то есть, начать сопровождать его, поворачивая глазные яблоки. А это уже обеспечивается слаженной работой GPU, экрана, интерфейса передачи и прочих штук.
PS. Да, особенностей зрения очень много, сетчатка обладает многослойной обработкой и распознаёт оптический поток ещё до попадания в зрительную кору, а ещё можно делать фичи с мерцанием картинки, чтобы спровоцировать мозг достраивать кадры (привет кинескопы и плазмы) и т. д., но информации, от которой мозг может отталкиваться для всего этого, всё равно должно быть достаточно.
PPS. Сам работаю (в т.ч. CAD и кодинг) и играю за 120 Гц экранами. Вкусно.
Спасибо, рад что Вам понравилось!)
Спасибо)
Подкину идею: если я хочу что‑то напечатать в чат, то мне не надо переводить в него фокус мышкой/клавишей, я просто сразу печатаю прямо в игре и жму Enter. То, что пробел в тексте одновременно будет с выстрелом из танка — проблема тех кто перед танком :)
У меня как раз параллельный битбанг получился, просто руками за раз не одна, а сразу 16 ног переключается. Три переключения = передали по 1 разному биту сразу на 16 лент.
Имхо шикарно. Единственное — не хватает ботов, чтобы если сервер пустой, было с кем играть. Для такой игры бота написать не сложно.
Эм. Если брать протокол WS2812b, то мы на 1 диод тратим
Плюс ещё время на приём с компа и обработку.
Так точно. Светодиодов там правда не десятки тысяч, а всего чуть больше 2к. Это подсветка вокруг видеостены.
Надо было получить в играх низкий лаг и быстрое обновление. При стандартном подходе это давало 1–2 фпс.
Ток в пике 90А, просто ленты низковольтовые, а БП подобраны с запасом.
Имхо главная проблема не в загрузке CPU, а в том, что выдерживание таких точных интервалов на CPU задача не очень приятная, и по возможности её лучше скидывать на более специализированные железяки
Вот да. Насчёт есть — не уверен, по крайней мере, в стоковом Дебиане я такового не нашёл, пришлось писать самостоятельно. И всё ради возможности лочить прерывания.
Хотя лучше, конечно, просто накатить ОС реального времени.
3D принтер, способный одновременно печатать и пластиком, и металлом с вменяемым качеством — это почти революция 3D печати, существенно расширяющая сферу применимости 3D принтеров и очень сильно меняющая подход к формату приобретения бытовых устройств.
Решается. Но ИМХО было очень интересно узнать, как подобная задача решается с помощью аппаратных таймеров STM32. В своё время я делал подобное на STM32 Discovery, но интервалы в 400 нс выдерживал с помощью тучи
asm("nop"). Без циклов.В комментариях умные люди мне объяснили про эти таймеры, а в данной статье ещё и наглядный пример, как с ними управляться в задаче, подобной той, что я решал. И хотя это не совсем мой случай, всё равно, информация очень полезная.
Аппаратные таймеры STM32 очень навороченные, с кучей разных флагов и режимов, и примеры работы с ними — это хорошо. А уж с Bluetooth — вдвойне.
Имхо это из пушки по воробьям. У меня была схожая задача, только лента была не одна а 17. Я пытался, в том числе, решать её и малинкой, т.к. опыта не было, а классические подходы не срабатывали.
И даже с учётом этого всего малинка — это перебор. А уж для одной ленты тем более. В итоге я остановился как раз на STM32.
Ходят слухи что 128 гб уже втыкать начали
Интересно, а можно ссылку?)
Я не специалист, но имхо тут фокус в том, что на аналоговой оптике можно сделать высокопроизводительный ускоритель нейросетей. И вот нейросети, которые мы будем гонять на этом ускорителе, могут быть вполне себе универсальны.
Например, вместо того, чтобы устанавливать ОС и софт для 3д моделирования, мы просто запихиваем на этот ускоритель сетку на 400 триллионов параметров, которой на вход даются нажатия клавиш, движения мышки и голос пользователя, а на выходе она дает готовую картинку, чертежи, текст, видео и всё что нужно в реалтайме.
То есть ПО вообще нет, есть сетка, которая слушает клавиши/голос и сразу выводит готовую картинку.
То же самое касается VR/AR гарнитур. Вместо того, чтобы отдельно 3д сканировать окружающее пространство, реконструировать облако точек, считать модели и делать ещё кучу всего, мы просто натягиваем одну большую сетку (или сеть менее больших сеток), пихаем ей на вход картинку + голос пользователя, и она сразу на линзы/имплант в сетчатке глаза/фемтопроектор выводит готовую дополненную/виртуальную реальность.
Иными словами, мы (почти) весь стек технологий заменяем одним жирным ИИ. Тогда узкоспециализированный ускоритель становится универсальным.
Условно говоря, зачем вам какие‑то процессоры, джаваскрипты и операционные системы, если у вас есть кристалл 1×1 см за 20$ с сеткой 200T параметров, который жрёт 10 ватт и без программирования спокойно управляет этим роботом, да еще и сам разбирается где какие у него актуаторы, датчики и обратные связи.
Наконец‑то хоть кто‑то всерьёз взялся за это.
Имхо именно за этой штукой будущее. Оптика снимает проблему ограничения частоты, а аналоговость позволяет не тратить гору ключей на расчёты вещественных чисел. И вместе две этих особенности позволяют преодолеть тот тупик, куда сейчас пришло железо. С огромными видеокартами с ручками для переноски и всё менее заметным приростом скорости с каждым поколением CPU/GPU.
На заре эпохи компы пытались делать аналоговыми, но гонку выиграли цифровые. С появлением нейросетей ситуация должна начать меняться :)
Фокус в том что у них имена — это запахи, а не звуки :)
Не задумывались вместо двух мониторов поставить один большой 50 дюймов? :)
Тогда проблемы «выше‑ниже» не будет потому что картинка будет везде, и можно будет окна на любой удобной высоте ставить.
ЕМНИП эти функции были ещё в Windows 3.1 :)
Есть мультимеднйные таймеры работающие на уровне ядра ОС, можно получить точность порядка 1 мс