Как стать автором
Обновить
1

WebGL *

Программная библиотека для JavaScript

Сначала показывать
Порог рейтинга
Уровень сложности

Математика наклона в картах, или как мы сделали небо

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 7.7K

Недавно в карте 2ГИС появились небо и туман, которые можно увидеть, увеличив масштаб и наклон. 

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

Читать далее
Всего голосов 59: ↑59 и ↓0 +59
Комментарии 16

Новости

Оптимизация js/WebGL/Web Assembly

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 3K

Не так давно я писал про свой 2d движок jsge. При написании рендера, делал оптимизацию кода, а также экспериментировал с web assembly. Как и обещал, написал отдельную статью про результаты.

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 4

Как я участвовал в геймджеме | Pixel New Year Jam

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 1.1K

Если тебе удобнее смотреть видео, то вот.

А это то же видео, только в текстовом формате, что кому-то может быть удобнее.

Читать далее
Всего голосов 4: ↑3 и ↓1 +2
Комментарии 2

2d движок для игр Javascript Game Engine (JsGE)

Уровень сложности Средний
Время на прочтение 7 мин
Количество просмотров 6.5K

Привет всем. Меня зовут Артурас, я пишу на Javascript. Полтора года назад я уволился из оффшорной компании и решил написать свой движок для браузерных 2d игр. Сегодня - делюсь результатами.

Читать далее
Всего голосов 11: ↑11 и ↓0 +11
Комментарии 15

Истории

Виртуальная камера для WebRTC

Время на прочтение 5 мин
Количество просмотров 4.4K

Технология работы персонифицированной виртуальной вебкамеры для WebRTC: анимирование 3D модели пользователя в браузере для создания видеотрека, заменяющего камеру пользователя и синхронного с аудио от микрофона.

Читать далее
Всего голосов 18: ↑17 и ↓1 +16
Комментарии 15

Скрытие POI за зданиями

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 2.2K

C 2018 года карта веб-версии 2ГИС рендерится при помощи WebGL — API для рисования трехмерной графики. Сначала мы в команде веб-карт использовали эту технологию просто как очень быструю рисовалку двухмерных данных с небольшими исключениями в виде 3D-домов и моделей.

Приход в карту иммерсивных возможностей начал менять сложившееся положение вещей — моделей стало больше, они стали красивее и детальнее, их больше хочется рассматривать.

И тут возникла проблема
Всего голосов 16: ↑16 и ↓0 +16
Комментарии 0

Эксперимент Штерна-Герлаха, сфера Блоха и квантовые вращения

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 3.3K

В 1921 году Отто Штерн приехал в город Франкфурт, где познакомился в уроженцем этого города и сотрудником местного университета Вальтером Герлахом, вместе с которым они в том же году и провели прославивший их опыт. Впоследствии выяснилось, что почти всю математику описывающую, спин отдельного электрона, можно вывести из этого эксперимента. Читая описание эксперимента, такой вывод совершенно не кажется очевидным. Хотя бы, например, с какой стати в математике спина электрона появляются комплексные числа?

Чтобы прояснить связь математики спина с экспериментом Штерна‑Герлаха (Ш‑Г) мной была сделана его программная модель. При описании спина электрона очень часто используется сфера Блоха. В программной модели эксперимент Ш‑Г, можно сказать, был совмещен со сферой Блоха. При таком подходе можно визуально увидеть геометрию некоторых соотношений описывающих спин электрона. Увидеть несколько интерактивных программ можно в браузере на сайте Bloch sphere online.

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

Как производится возведение числа в степень, когда в качестве показателя степени выступает матрица, рассматривается непосредственно в тексте на сайте.

При рассмотрении примеров из четвертой части требуется понимание того, чем являются собственные числа и собственные векторы. Но четвертая часть фактически является факультативным дополнением к первым трем частям и читать ее необязательно.

Читать далее
Всего голосов 15: ↑15 и ↓0 +15
Комментарии 0

Любите ли вы Rust, как люблю его я?

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 6.4K

Привет, коллеги.

На самом деле ещё несколько месяцев назад я ненавидел Rust и задавался лишь одним вопросом: какого чёрта я вообще с ним связался? Но сегодня - сегодня всё иначе. И про это я хочу предложить немного доводов разобрать с ним.

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

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

Он необычный. Уверен, вы сталкивались со странными языками программирования. Такими, которые ломают привычную парадигму и заставляют мыслить иначе. Например, люди, всю жизнь работающие с объектно-ориентированным подходом, нередко, теряются, когда сталкиваются с функциональным программированием, т.к. там иной подход. Да даже далеко ходить не надо; столкновение с попыткой воспользоваться OpenGL из привычного C++, в какой-то момент, рвёт все шаблоны и в воздухе повисает лишь два вопроса: "какого..." и "зачем вы так со мной". Это, разумеется, проходит, но не сразу.

Читать далее
Всего голосов 25: ↑19 и ↓6 +13
Комментарии 110

taichi.js: Программируем на WebGPU без боли

Уровень сложности Средний
Время на прочтение 10 мин
Количество просмотров 3.1K

Привет, Хабр! Сегодня хочу предложить вашему вниманию перевод на русский язык статьи моего коллеги и хорошего приятеля Dunfan Lu. Он создал taichi.js - open-source фреймворк для программирования графики на WebGPU, и написал подробный туториал как его использовать на примере знаменитой "Игры жизни". Уверен, эта сложная и красивая работа на стыке технологий рендеринга и компиляции не оставит вас равнодушными. - пр. переводчика.

Читать далее
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 1

Солитоны. Модель Френкеля-Конторовой

Уровень сложности Сложный
Время на прочтение 18 мин
Количество просмотров 8.7K

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

Но можно ли представить простейшую и наглядную модель, из которой выводятся все эти свойства разом?

Одной из таких моделей является модель Френкеля-Конторовой, которую мы рассмотрим в рамках истории теории солитонов.

Читать далее
Всего голосов 41: ↑41 и ↓0 +41
Комментарии 17

«Йо-хо-хо»-2 или перевозка рабов и трупов оппозиционеров

Время на прочтение 6 мин
Количество просмотров 37K

Я продолжаю работу над своей браузерной игрой про пиратов на Three.js. Пришло время добавить торговлю. Я подумал, раз у нас тут век пиратов, то и в политическом смысле обстановка должна быть весьма фривольной, то есть, без всякой богомерзкой демократии. А чего стесняться? Заходим в порт, а там нам, пиратам, сразу же предлагают приобрести пушечные ядра и выполнить заказы на транспортировку трупов оппозиционеров и доставку рабов. Еще можно отвезти ром на Тортугу или подбросить губернаторскую дочь на вечеринку на Райский остров. Или тайно эвакуировать беглого губернатора за хорошую плату. Действительно, для подобных дел правительству идеально использовать пиратов. В конце концов, рабы сами себе билет на регулярный рейс не купят, а оппозиционеры сами себя не похоронят. А проблему решать надо... Короче говоря, перевозить древесину и шелк, как в обычных играх - это скучно. Пусть будут этакие «девяностые», но в эпоху пиратов. Пираты выполняют не совсем законные задания правительства, а последнее закрывает глаза на их не совсем законные методы обогащения.

Читать далее
Всего голосов 105: ↑95 и ↓10 +85
Комментарии 59

Three.js, квантовый спин, сфера Блоха и квантовые вращения

Время на прочтение 5 мин
Количество просмотров 3.4K

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

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 0

Unity: Выбор и загрузка файлов пользователем на WebGL сборке

Время на прочтение 7 мин
Количество просмотров 4.6K

В этой статье мы рассмотрим способ как дать пользователю возможность загружать какие-либо файлы, к примеру текстуры. И немного затронем тему запуска JS функций из C# в рамках Unity. В результате мы сможем открывать окно выбора файлов всего одним вызовом функции.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 0

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн

Эволюция игрового фреймворка. Клиент 2. Менеджеры и другие классы

Время на прочтение 18 мин
Количество просмотров 2K

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

Все вместе уже можно будет считать вполне оформившимся игровым фреймворком.

Читать далее
Рейтинг 0
Комментарии 0

Браузерная игра про пиратов

Время на прочтение 10 мин
Количество просмотров 9.8K

«Йо-хо-хо!» - невольно приходит на ум при любом взаимодействии с морем, передвигаешься ли на речном трамвайчике или же сидишь в баре круизного корабля. В последнем случае еще можно приобрести бутылку рому. Море привлекает своими волнами, закатами и рассветами. А особенно прикольно, когда на море завелись злые пираты. Ну... если это мы, конечно же.

Возьмем шейдер неба и шейдер воды - атмосфера готова! Что может быть проще. И да, я буду писать игру под браузер на Javascript с использованием библиотек Three.js и Cannon.js. Первую я использую для отображения 3D графики, а вторую - в качестве легковесного скриптового физического движка.

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

Читать далее
Всего голосов 39: ↑39 и ↓0 +39
Комментарии 35

Футбольный симулятор в 30 строк кода

Время на прочтение 2 мин
Количество просмотров 4.6K

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

Читать далее
Всего голосов 15: ↑5 и ↓10 -5
Комментарии 15

Вангеры 3D: пример использования Emscripten в Rust

Время на прочтение 5 мин
Количество просмотров 9.6K

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

Читать далее
Всего голосов 22: ↑22 и ↓0 +22
Комментарии 7

Аутентичный фрактальный город или программируем вид за окном

Время на прочтение 2 мин
Количество просмотров 4.1K

Экспериментируя с фрактальными функциями, я визуализировал 2д изображение, которое внешне мне очень напоминало мне обычный спальный район или строительные леса. Для glsl это будет примерно такая функция:

Читать далее
Всего голосов 27: ↑20 и ↓7 +13
Комментарии 2

Как сегодня делают игры в браузере? Часть 3

Время на прочтение 3 мин
Количество просмотров 3.7K

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

Читать далее
Всего голосов 7: ↑4 и ↓3 +1
Комментарии 0

Оживляем картинку шейдерами или программирование абстрактного текста

Время на прочтение 1 мин
Количество просмотров 4.6K

Пару лет назад я наткнулся на одну картинку с простой геометрией:

Читать далее
Всего голосов 14: ↑13 и ↓1 +12
Комментарии 4

Вклад авторов