Всеволод Плетнев


Channel's geo and language: World, Russian
Category: Technologies


IT НИГИЛИЗМ | Ламповое болото цифрового пиздеца, где код встречается с экзистенциальным ужасом, а здравый смысл идёт нахуй

Related channels  |  Similar channels

Channel's geo and language
World, Russian
Statistics
Posts filter


Video is unavailable for watching
Show in Telegram
134 217 728 вокселей, 48к лучей, 60 fps на CPU air m5

И все это работает на тормозном JavaScirpt

Так вот, кто-то хотел глянуть код и я попросил нейронку вырезать рейкастер вокселей, получилось всего ~500 строк кода

Демо + Исходники


Video is unavailable for watching
Show in Telegram
На этой ноте я с рендерами на CPU заканчиваю, доотлаживался


Video is unavailable for watching
Show in Telegram
Да, SDF поражает своими возможностями. Уверен, что на пару с генетическими алгоритмами и инверсной кинематикой получатся какие-то совершенно невообразимые варианты

(братану на видео местами плохо, но от этого он выглядит только страшнее)


Я думаю о том, чтобы взять какую-то старую аркадную или около того игру и просто форкнуть ее ИИшкой, переписав под мой рендер

В общем, жду идеи/предложения)


Video is unavailable for watching
Show in Telegram
Я заебу вокселями, но это очень красиво, особенно с элементами разрушаемости


Video is unavailable for watching
Show in Telegram
Какая-то безумная красота получается, пока я играюсь с гауссино-вокселями и картой освещенности пустых вокселей в своем движке для рендерига вокселей, sdf и так далее на лучах. Пока это все отлаживатеся и оптимизируется на CPU, потому работает не слишком быстро


Video is unavailable for watching
Show in Telegram
До сих пор не верю, что мой последний пост в тви про трассировку лучей собрал больше трех тысяч лайков, принес более 400 подписчиков и просто был добавлен в закладки более тысячи раз

Ну и раз эта тема столь интересна, я считаю, что должен продолжить. В прошлом посте я рассказывал о гибриде разных методов бросания лучей для отрисовки в один проход вокселей, SDF, гауссин и так далее. В этом посте я коротко поясню о том, как это работает (в приложенном видео анимация работы алгоритма) + дам необходимые ссылки ниже

1. Видимый мир

В данном на видео демо все, что мы рисуем, состоит из двух вещей: воксели и sdf (гладкие формы, шары, скругленные тела и не только). Мир гибридный — кубики и гладкие фигуры живут вместе в одной сетке. И на первом шаге мы строим эту сетку, определяя в какой клетке какие воксели или фигуры находятся. Важно заметить, что одна фигура может занимать несколько клеток, а несколько фигур могут занять одну клетку


2. Пирамида

Чтобы не проверять каждую клетку по отдельности (их миллионы), мы строим над сеткой пирамиду. Делим мир на более крупные ячейки и для каждой запоминаем всего одно: есть внутри хоть что-нибудь или там пусто. Потом объединяем ячейки по четыре в более крупные, и так уровень за уровнем. Получается "карта заполненности", где пустые области отваливаются целыми кусками, а в заполненных ячейках могут содержаться воксели и/или фигуры

3. Лучи

Теперь пускаем луч. Луч идет по пирамиде сверху вниз: попал в крупную пустую ячейку — перепрыгнул ее целиком одним шагом, не тратя время. Попал в заполненную — спускаемся на уровень мельче и смотрим внимательнее. Дошли до вокселей — включаем ray casting. Дошли до гладкой фигуры — включаем ray marching, пока не приблизимся на минимальную необходимую дистанцию или пролетим мимо. Так луч быстро проскакивает пустоту и быстро находит воксель или фигуру, в которую вероятнее всего упрется

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

В демо на видео мне удалось в 60fps отрисовывать 1 073 741 824 цветных вокселя и около 100 простых sdf без использования GPU на обычном canvas 2d context (javascript)


Кароче, приходите в 21.15 по мск на канал Разрабы

Я и Фил @ranzhin будем пиздеть про то, как три года дружить, много чего хотеть и нихуя не сделать


Video is unavailable for watching
Show in Telegram
Мне удалось нащупать сочетание разных методов бросания лучей, которое рисует в реальном времени воксели, объемные гауссианы и сложные гладкие поверхности (SDF) — все сразу, в одном кадре, с отражениями, преломлениями и освещением

Скорее всего, я не открыл Америку. Но картинка получается непривычная: объемный дым, который отбрасывает тень и сам освещается, лиминальные пространства, фракталы, довольно странные существа

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

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


Я вообще-то плачу за слейва-блоуджобера, а не за обидчивую девочку. Треш блять


Купил себе невесомые, простейшие и почти уебищные наушники от moondrop

И это оказалось охуенно. Я забыл уже, что наушники могут не давить на голову, не давить на сосуды, от них могут не болеть уши, что про них можно вообще забыть

Да, звук у них не супер, но стоят они копейки и для работы/ютуба подходят отлично

А ведь когда-то это было вполне себе нормой...

Да, в них нет шумодава/изоляции, беспровода, всякой hi-fi хуеты и прочей нанотехнологичной маркетинговой дресни. Но как разница, если они удобны и ими хочется пользоваться?


Около 2-3 месяцев работал над довольно странным, но интересным сочетанием технологий в рамках одного прототипа

Я попытался срастить самописный mesh vpn на базе wireguard, dns для поддержки доменов в рамках этого vpn, OCID провайдер в каждой ноде, чтобы любой пользователь vpn'а мог получить доступ к ресурсам в сети по факту своего участия в ней (хостинги кода, документации и прочие вещи), звонилку для p2p или групповых звонков + некий аналог слалака/ноушена с каналами, через которые раздаются доступы ко всем перечисленным выше ресурсам

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

Опыт получился до жути интересным:
в пару кликов я получил доступ к разного рода зарубежным ресурсам, возможность поиграть с другом в Quake3 из-за границы, устойчивые туннели к своим серверам, потрясающе стабильные звук и видео в созвонах с коллегами, а развернуть хостинг для гита, раннеры, стенды и прочие вещи с разрагничение доступов ко всему этому теперь можно в несколько кликов

Проект очень быстро приобрел явный инфраструктурный уклон, я увидел в этом большую пользу для небольших компаний и команд. Раньше чтобы все это сделать требовался аж целый админ или девопс (а может и несколько), кучу времени на стройку и администрирование после. Обычно таким занимаются только в компаниях, где есть какой-то штат, время и деньги, пока маленькие команды довольствуются просто кучей разрозненных подписок на гитхабы и ноушены, где OIDC работать не будет в принципе

А тут пожалуйста: поставил клиент на мак, настроил ноду на малине с гитей, дал доступ другу и оно просто работает. Абсолютно бесплатно

Но "федеративность" в базовом устройстве все же подвела, это оказалось не слишком удобно для централизованной настройки и поддержки, хотя идей на бумаге была красивой. Скорее всего я начну в скором времени пилить версию 2.0 с полноценным SaaS и подписками, где можно будет все это сконфигурировать один раз в одном месте

Надеюсь, что это принесет огромную пользу отдельным командам и небольшим компаниям на практике)


Вполне себе неплохой кейс для отладки ввод клавиш


Video is unavailable for watching
Show in Telegram
А получилось-то по итогу заебись. Адаптировал захват экрана/инпута под win+amd и steamos, в локальной сети или через 5G можно даже в шутер простенький поиграть, ведь задержка минимальная при стабильных 60 FPS

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

При этом никаких уебанских подписок, тормозов через промежуточные сервера, сложных установок и настроек

Я просто запускаю команду на хосте и открываю ссылку в любом браузере — готово, стрим есть, ввод работает, а плавность и отклик дают в рот всяким тимвюверам и парсекам

Особенно круто это выглядит на мобильных и планшетах, хотя над вводом еще работать и работать


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


Деление мейлсру на ноль я одобряю. Эта компания уничтожает все, до чего может дотянуться, ее существование просто неприемлемо


Я как-то шабашил месяц в конторе, где клод ревьювил код, ставил оценку и не апрувил MR, пока ты не удовлетворишь все его больные хотелки. Задачи там тож ставились ИИшкой. А через месяц меня уволили за некомпетентность, ибо клод конечно знает больше, глючит лучше и вообще профессионал своего дела, а я только правками одного MR'а мозг заниматься неделю. Большего маразма я в разработке не видал наверное


Кстати, браузерный клиент одного известного мессенджера отлично модифицируется. Легко разворачивается на любом российском VPS, а HTTPS трафик из него тривиально перенапраляется на любой другой зарубежный VPS

В результате все отлично работает без каких-либо VPN'ов


Я считаю всех, кто критикует гос приложения за слежку – дегенератами, клоунами и просто долбаебами

700 0 1 19 21

Чую, что теперь anisotropic и openai будут конкурировать по уровню тупости новых моделей

20 last posts shown.