YouTube
Animation vs. Coding
/(^∇^) ╯ https://brilliant.org/alanbecker
30-day free trial and 20% off 👍
🖐 ASK ME ANYTHING! ► https://www.youtube.com/noogai89/join
👕 MERCH! ► https://alanbecker.shop
💬DISCORD SERVER ► https://discord.gg/alanbecker
🕹️ANIMATORS VS GAMES ► @AnimatorsVSGames…
30-day free trial and 20% off 👍
🖐 ASK ME ANYTHING! ► https://www.youtube.com/noogai89/join
👕 MERCH! ► https://alanbecker.shop
💬DISCORD SERVER ► https://discord.gg/alanbecker
🕹️ANIMATORS VS GAMES ► @AnimatorsVSGames…
Очередная серия Animations vs, теперь про кодинг
Как сказали в комментариях:
https://www.youtube.com/watch?v=EFmxPMdBqmU
Как сказали в комментариях:
Episode 4 of the "I don't understand much of it but it looks amazing"
https://www.youtube.com/watch?v=EFmxPMdBqmU
❤3💘2
Forwarded from SPB Frontend
Саша, Паша и Маша едут на HolyJS!
Команда SPB Frontend будет читать доклады и помогать проводить конференцию. С ними можно будет встретиться, чтобы обсудить: какие технологии сейчас в тренде, как использовать AI на закрытых проектах и как использовать JavaScript для искусства!
На конференции будут и другие сообщества — полный список на сайте Холи.
Кто еще едет на Холи — признавайтесь?)
Команда SPB Frontend будет читать доклады и помогать проводить конференцию. С ними можно будет встретиться, чтобы обсудить: какие технологии сейчас в тренде, как использовать AI на закрытых проектах и как использовать JavaScript для искусства!
На конференции будут и другие сообщества — полный список на сайте Холи.
Кто еще едет на Холи — признавайтесь?)
❤8💘1
Media is too big
VIEW IN TELEGRAM
Молнии и магнетизм
Точки магнитятся друг к другу, если находят соседей, но иногда начинают искать себе пару сильно дальше.
Чтобы это вообще хоть как-то успевало считаться за один кадр использую паттерн Spatial partitioning (пространственное разделение), о котором прочел довольно давно, не самый эффективный зато пишется в 10 строчек:
Ради эксперимента добавил еще динамическую смену размера "клетки" по которой ищутся соседи, потому раз в пару секунд все поле разбегается на поиски новых клубков с которыми можно подвигаться.
https://codepen.io/lekzd/pen/xbxQyGO
Точки магнитятся друг к другу, если находят соседей, но иногда начинают искать себе пару сильно дальше.
Чтобы это вообще хоть как-то успевало считаться за один кадр использую паттерн Spatial partitioning (пространственное разделение), о котором прочел довольно давно, не самый эффективный зато пишется в 10 строчек:
const getKey = (x, y) => `${grid(x, 100)},${grid(y, 100)}`
const spatial = {}
points.forEach((point, index) => {
const key = getKey(point.x, point.y)
if (!spatial[key]) {
spatial[key] = [point]
} else {
spatial[key].push(point)
}
})Ради эксперимента добавил еще динамическую смену размера "клетки" по которой ищутся соседи, потому раз в пару секунд все поле разбегается на поиски новых клубков с которыми можно подвигаться.
https://codepen.io/lekzd/pen/xbxQyGO
❤3👍3🔥3💘1
Media is too big
VIEW IN TELEGRAM
Luma + Three.js = 1 апрельский пост
Давно не было такого, чтобы прямо увидел что-то и побежал сразу играться откинув все остальное.
Luma WebGL Library — это библиотека которая позволяет вставить 3д снимок из приложения Luma в сцену на Three.js вообще без каких-либо приседаний.
А после того как я увидел, что там можно инжектить в шейдеры свой код, вообще не осталось сомнений, что вот прямо сейчас хочу пустить синусоидальную волну по европейскому пейзажу.
https://lekzd.github.io/demo/luma/dancing_castle.html
Давно не было такого, чтобы прямо увидел что-то и побежал сразу играться откинув все остальное.
Luma WebGL Library — это библиотека которая позволяет вставить 3д снимок из приложения Luma в сцену на Three.js вообще без каких-либо приседаний.
А после того как я увидел, что там можно инжектить в шейдеры свой код, вообще не осталось сомнений, что вот прямо сейчас хочу пустить синусоидальную волну по европейскому пейзажу.
https://lekzd.github.io/demo/luma/dancing_castle.html
❤13❤🔥1💘1
Мемарт 1 апреля
Я уже ранее рассказывал про Генклуб, но есть отдельный чатик Свидетели Генклуба, такое сообщество в сообществе, где можно флудить, но помимо обсуждения собак там еще нередко выкладывают свои работы.
Вчера, 1 апреля, там решили обновить аватарку и начали генерить арт со свидетелем из Фрязино. Получилось настолько весело, что в дело впряглись несколько человек и нагенерили пару десятков работ)
Я уже ранее рассказывал про Генклуб, но есть отдельный чатик Свидетели Генклуба, такое сообщество в сообществе, где можно флудить, но помимо обсуждения собак там еще нередко выкладывают свои работы.
Вчера, 1 апреля, там решили обновить аватарку и начали генерить арт со свидетелем из Фрязино. Получилось настолько весело, что в дело впряглись несколько человек и нагенерили пару десятков работ)
🔥7😁4❤1😍1😈1💘1
Media is too big
VIEW IN TELEGRAM
🔥10❤3🏆2💘1
Forwarded from Павел Мажуга | Frontend Developer
Media is too big
VIEW IN TELEGRAM
Шары с физикой на компьютах
600 объектов, 1 draw call без учета пост процессинга благодаря инстансингу. Физика притяжения к аттрактору и калькуляция коллизий на видеокарте с помощью компьют шейдеров.
Просто залипательная штука. В сафари тоже работает :)
Эта демка - часть моего завтрашнего доклада на HolyJS. Буду вещать про то какой TSL классный, даже несмотря на то что еще сыроват.
Live: https://pavelmazhuga.com/lab/attractor-collisions/webgpu
Source code: https://github.com/pavel-mazhuga/portfolio/tree/main/src/app/lab/attractor-collisions/webgpu
600 объектов, 1 draw call без учета пост процессинга благодаря инстансингу. Физика притяжения к аттрактору и калькуляция коллизий на видеокарте с помощью компьют шейдеров.
Просто залипательная штука. В сафари тоже работает :)
Эта демка - часть моего завтрашнего доклада на HolyJS. Буду вещать про то какой TSL классный, даже несмотря на то что еще сыроват.
Live: https://pavelmazhuga.com/lab/attractor-collisions/webgpu
Source code: https://github.com/pavel-mazhuga/portfolio/tree/main/src/app/lab/attractor-collisions/webgpu
🔥9😍3💘1
Первый русскоязычный доклад про TSL уже завтра на HolyJS!
GitHub
Three.js Shading Language
JavaScript 3D Library. Contribute to mrdoob/three.js development by creating an account on GitHub.
🔥9💯1💘1
This media is not supported in your browser
VIEW IN TELEGRAM
Кто такой этот TSL и почему это важно
Threejs Shading Language это новое апи, позволяющее декларативно описать флоу течения данных из одних переменных в другие, используя узлы и связи, как на гифке выше, но кодом. Ну и где там революция?, поясню:
— это все исполняется на видеокарте
— это замена GLSL
— просто пишешь ноды, а Threejs генерит два шейдера на GLSL из этого
— теперь чтобы поменять что-то в материалах Threejs не нужно делать string.replace() 🤦
— туда завезли кроссбраузерные вычисления на видеокарте
Только посмотрите какой путь предлагал Threejs ранее:
И документации не было, все копали в исходниках сами. Короче ура
Threejs Shading Language это новое апи, позволяющее декларативно описать флоу течения данных из одних переменных в другие, используя узлы и связи, как на гифке выше, но кодом. Ну и где там революция?, поясню:
— это все исполняется на видеокарте
— это замена GLSL
— просто пишешь ноды, а Threejs генерит два шейдера на GLSL из этого
— теперь чтобы поменять что-то в материалах Threejs не нужно делать string.replace() 🤦
— туда завезли кроссбраузерные вычисления на видеокарте
Только посмотрите какой путь предлагал Threejs ранее:
var myMaterial = new THREE.MeshStandardMaterial()
myMaterial.onBeforeCompile = shader => {
shader.fragmentShader = //this is the fragment program string in the template format
shader.fragmentShader.replace( //we have to transform the string
'#include <alphamap_fragment>', //we will swap out this chunk
require('my_alphamap_fragment.glsl') //with our own
)
}
И документации не было, все копали в исходниках сами. Короче ура
❤11⚡5💘1
HolyJS Spring 2025
— Здравствуйте, Александр, вот вы очередной раз поучаствовали в организации крупной конференции, что чувствуете?
— Как же я задолбался...
Вот и прошли 2 дня встреч и долгожданных докладов, которые готовились последние 4 месяца, а некоторых спикеров я убеждал выступить с докладами на протяжении года. А другие буквально за 6 часов согласились выступить на открытом микрофоне, в конце первого дня.
Вот в эти дни довольно трудно было, но без них было бы еще труднее.
— Здравствуйте, Александр, вот вы очередной раз поучаствовали в организации крупной конференции, что чувствуете?
— Как же я задолбался...
Вот и прошли 2 дня встреч и долгожданных докладов, которые готовились последние 4 месяца, а некоторых спикеров я убеждал выступить с докладами на протяжении года. А другие буквально за 6 часов согласились выступить на открытом микрофоне, в конце первого дня.
Вот в эти дни довольно трудно было, но без них было бы еще труднее.
🎉30❤14🔥2💘1
This media is not supported in your browser
VIEW IN TELEGRAM
Прорыв в блюре, свечении и тенях
Rive выкатили большой пост о том, как сделали ускоренные расчеты для техники сглаживания векторных объектов.
Ну сделали и сделали, а что раньше было не так?
Все дело, в том, что тени, антиалисинг и размытие реализованы на всех популярных платформах, которые могут выводить анимации Lottie и Rive, но вот беда: реализации везде разные, а значит с разными ограничениями.
— только на iPhone есть нативный блюр фона,
— на Android тени рассчитываются строго по гайдам Material Design и никак больше,
— на вебе есть Box Shadow.
При этом на каждой платформе можно самостоятельно взять и нарисовать тени и блюр, но здесь кроется главная проблема — производительность.
Вот пример кода, который нужен, чтобы получить R из RGB для центрального пиксела в сетке 3x3, где в
и что это даст? сглаживание размером в 1 пиксел! Никто даже не заметит разницы на современных экранах, чтобы она была заметна нужно хотя бы повторить это 16 раз, последовательно, так и реализуется размытие по Гауссу.
Вот и выходит, что эффект динамического свечения вокруг некого тела, который рассчитывается в реальном времени натурально заставляет попотеть, чтобы вписаться в бюджет производительности. Так как эффект надо скорее правильно изобразить, а не рассчитать.
Так что же сделали в Rive?
Во-первых, хороший рендер SVG который отлично разбивает полигоны на треугольники, для того, чтобы эффективнее рисовать это на GPU. (подробнее про Триангуляцию)
Во-вторых, добавляют дополнительный слой треугольников по краям ради мягких граней, которые в итоге просто реализуются через градиенты, что куда быстрее метода Гаусса.
И вот, придумали, что можно взять эти треугольники, увеличить слой и посчитать наложения градиентов, таким образом вышел быстрый блюр.
Про свой метод поиска пересечений и особенности триангуляции, конечно же, умолчали)
Rive выкатили большой пост о том, как сделали ускоренные расчеты для техники сглаживания векторных объектов.
...our first priority had to be glows and shadows, or Guido would start flipping tables. (╯°□°)╯︵ ┻━┻
Ну сделали и сделали, а что раньше было не так?
Все дело, в том, что тени, антиалисинг и размытие реализованы на всех популярных платформах, которые могут выводить анимации Lottie и Rive, но вот беда: реализации везде разные, а значит с разными ограничениями.
— только на iPhone есть нативный блюр фона,
— на Android тени рассчитываются строго по гайдам Material Design и никак больше,
— на вебе есть Box Shadow.
При этом на каждой платформе можно самостоятельно взять и нарисовать тени и блюр, но здесь кроется главная проблема — производительность.
Вот пример кода, который нужен, чтобы получить R из RGB для центрального пиксела в сетке 3x3, где в
с уже матрица со средним арифметическим соседних пикселей всего изображения (называется Convolution)float r = c[0][0]
+ c[1][0] + c[2][0]
+ c[0][1] + c[1][1]
+ c[2][1] + c[0][2]
+ c[1][2] + c[2][2];
и что это даст? сглаживание размером в 1 пиксел! Никто даже не заметит разницы на современных экранах, чтобы она была заметна нужно хотя бы повторить это 16 раз, последовательно, так и реализуется размытие по Гауссу.
Вот и выходит, что эффект динамического свечения вокруг некого тела, который рассчитывается в реальном времени натурально заставляет попотеть, чтобы вписаться в бюджет производительности. Так как эффект надо скорее правильно изобразить, а не рассчитать.
Так что же сделали в Rive?
Во-первых, хороший рендер SVG который отлично разбивает полигоны на треугольники, для того, чтобы эффективнее рисовать это на GPU. (подробнее про Триангуляцию)
Во-вторых, добавляют дополнительный слой треугольников по краям ради мягких граней, которые в итоге просто реализуются через градиенты, что куда быстрее метода Гаусса.
И вот, придумали, что можно взять эти треугольники, увеличить слой и посчитать наложения градиентов, таким образом вышел быстрый блюр.
Про свой метод поиска пересечений и особенности триангуляции, конечно же, умолчали)
❤10💘2
CodeFest 15 / 31 мая-1 июня 2025
Зачем мы делаем сообщества
Квартирники. Александр Коротаев, BeerJS. Иван Углянский, Huawei. Наталья Косинова, Московское общество аналитиков
Новосибирск, 31 мая, попробую замотивировать людей создавать сообщества.
Начиная с пандемии многие люди, которые буквально создавали все события на которые я ходил отошли от дел или уехали. Последние два года, я рассказываю обо всем что было ранее публике, чтобы хоть что-то из старого продолжалось, вот доклад на TbilisiJS.
Надеюсь, все не зря
https://15.codefest.ru/lecture/2831
Начиная с пандемии многие люди, которые буквально создавали все события на которые я ходил отошли от дел или уехали. Последние два года, я рассказываю обо всем что было ранее публике, чтобы хоть что-то из старого продолжалось, вот доклад на TbilisiJS.
Надеюсь, все не зря
https://15.codefest.ru/lecture/2831
❤7🔥4💘3👍1