This media is not supported in your browser
VIEW IN TELEGRAM
На днях мне скинули канал "Ворожба над тёмной водой". И хотя моей первой реакцией было что-то вроде опять мемы про астрологию, когда я туда зашёл, я был приятно удивлён — это оказалась очень прикольно подобранная метафора для фронтенд магии, а сам канал посвящён креативной разработке 💪
Там меньше моих любимых шейдеров, но более простые для понимания эксперименты и очень много не слишком сложных но классных штук. Кроме того, у него больше конвенциональной разработки: тулинг, библиотеки, вёрстка, вот это вот всё без чего в реальных проектах не обойтись.
Подписывайтесь тоже — @vorozhba
Очень рад что наше коммьюнити растёт и диверсифицируется 😊
Там меньше моих любимых шейдеров, но более простые для понимания эксперименты и очень много не слишком сложных но классных штук. Кроме того, у него больше конвенциональной разработки: тулинг, библиотеки, вёрстка, вот это вот всё без чего в реальных проектах не обойтись.
Подписывайтесь тоже — @vorozhba
Очень рад что наше коммьюнити растёт и диверсифицируется 😊
This media is not supported in your browser
VIEW IN TELEGRAM
House of Maserati
https://houseof.maserati.com/ — сайт посвящённый оффлайновым презентациям новых автомобилей Мазерати.
Очень жирный графоний, классная работа со светом, материалами, композицией ну и классные машины само собой (а я их очень люблю). Resn как обычно на высоте 😍
#reference
https://houseof.maserati.com/ — сайт посвящённый оффлайновым презентациям новых автомобилей Мазерати.
Очень жирный графоний, классная работа со светом, материалами, композицией ну и классные машины само собой (а я их очень люблю). Resn как обычно на высоте 😍
#reference
Forwarded from Denis Sexy IT 🤖
Media is too big
VIEW IN TELEGRAM
Наткнулся на забавный ML-эксперимент от Google:
Мини-игра которая показывает вам emoji и просит найти этот объект камерой, работает в вебе – https://emojiscavengerhunt.withgoogle.com/
P.S. Убираться лень
Мини-игра которая показывает вам emoji и просит найти этот объект камерой, работает в вебе – https://emojiscavengerhunt.withgoogle.com/
P.S. Убираться лень
This media is not supported in your browser
VIEW IN TELEGRAM
В наших рядах креативных разработчиков со своими каналами прибыло :)
Несколько дней назад появился канал, автор которого делаем демки на codepen и записывает их на видео. Так что можно сразу посмотреть код любого приглянувшегося эффекта и поменять что-то на свой вкус.
Подписывайтесь — @mathimages
Кроме того он создал полезную библиотеку для бутстраппинга простых демок на фрагментных шейдерах на 1 треугольнике. Полезная штука, позволяет сразу записывать видео с вашим шотом 😉
Несколько дней назад появился канал, автор которого делаем демки на codepen и записывает их на видео. Так что можно сразу посмотреть код любого приглянувшегося эффекта и поменять что-то на свой вкус.
Подписывайтесь — @mathimages
Кроме того он создал полезную библиотеку для бутстраппинга простых демок на фрагментных шейдерах на 1 треугольнике. Полезная штука, позволяет сразу записывать видео с вашим шотом 😉
This media is not supported in your browser
VIEW IN TELEGRAM
http://julieguzal.fr — сайт-портфолио интерактивного дизайнера.
Прикольный эффект взлетающих от курсора частиц и в целом симпатично всё.
#reference
Прикольный эффект взлетающих от курсора частиц и в целом симпатично всё.
#reference
История одного эффекта
Часть 1. Реверс-инжиниринг, интриги, расследования
Несколько недель назад я увидел классную подборку логотипов от Martin Naumann и подумал а что если сделать такое на WebGL и оживить? Выглядит не сложно, будто выдавленный вперёд логотип, отражающий окружение. Задача сводится к построить текстуру с расстоянием до контура (называется это SDF), по SDF определить высоту пикселя, посчитать направление отражения и взять какой-то хитрый градиент собственно для окружения. Ну что же, поехали! За пару вечеров справлюсь (ага, конечно :)
Для начала я сделал кружок прямо в шейдере, поигрался с градиентами и почти сразу получил неплохой результат (видео 2). Градиент вычислялся из двух кольцевых градиентов с линейной интерполяцией между ними в зависимости от высоты нормали, по сути цилиндр. Вдохновившись, я решил повторить эффект на букве D. У неё есть и углы и скруглённая часть, то что нужно для теста. Чтобы сильно не заморачиваться в качестве SDF я использовал outer glow в ФШ, градиент теперь строился в зависимости от положения курсора для интерактивности (видео 3). Ага, тоже прикольно, но как-то уже не то. Ну что же, начало положено, завтра продолжу – решил я и ушёл спать.
На следующий день я подумал что было бы неплохо взять всё же сразу какую-то надпись и работать с ней, например, название своей студии :) Дело в том, что до этого для определения горизонтальной составляющей нормали я брал вектор из центра экрана, но это работало бы только с кругом или с близкими к нему формами. А я же хочу впоследствии масштабировать эффект на угодно. Решение простое — для каждого пикселя текстуры с символом находим ближайший пиксель его контура и в rg каналах храним направление от него, в b — расстояние.
Довольно быстро накатал генератор таких картинок (4), отдельно внешнее поле, отдельно внутреннее. Заблюрил rg каналы в фш, чтобы не было видно совсем уж ступенек, быстренько адаптировал шейдер и вуаля, картинка 5 готова :D Отсутствие активации - это мой ответ Биллу Гейтсу за чипирование 5g ковида.
Гейтс Гейтсом, а результат по меньшей мере выглядит странно и нужно с этим что-то делать. Сейчас, в ретроспективе, очевидно, что с добавлением фич я мелкими шажками уходил в сторону от решения, но в процессе реализации одной фичи мне было сложно понять где я косячу с второй. Пришлось взять паузу, чтобы помедитировать на исходные логотипы.
После вечера раздумий, я переделал градиент ближе к начальному и решил брать какую-то нелинейную функцию от расстояния, чтобы получить собственно ту самую красоту на краях символов. Для того чтобы иметь возможность поиграть с этими функциями я и не генерировал карту нормалей изначально. Считать нормали в шейдере стало резко сложнее, но благо нормаль это перпендикуляр к касательной функции, а касательная функции это её производная. Производные за нас отлично считает WolframAlpha (особенно когда пробуешь взять что-то типа производной expSustainedImpulse). Получилось как-то так:
В общем, спустя неделю экспериментов я сдался. И написал автору эффекта :) Он не хотел делиться своими секретами, но его наводок оказалось достаточно чтобы на следующий же день получить классный результат. О том, как это у меня получилось я напишу позже, а вы пока попробуйте догадаться как это в итоге устроено 😉
#my #tutorial
Часть 1. Реверс-инжиниринг, интриги, расследования
Несколько недель назад я увидел классную подборку логотипов от Martin Naumann и подумал а что если сделать такое на WebGL и оживить? Выглядит не сложно, будто выдавленный вперёд логотип, отражающий окружение. Задача сводится к построить текстуру с расстоянием до контура (называется это SDF), по SDF определить высоту пикселя, посчитать направление отражения и взять какой-то хитрый градиент собственно для окружения. Ну что же, поехали! За пару вечеров справлюсь (ага, конечно :)
Для начала я сделал кружок прямо в шейдере, поигрался с градиентами и почти сразу получил неплохой результат (видео 2). Градиент вычислялся из двух кольцевых градиентов с линейной интерполяцией между ними в зависимости от высоты нормали, по сути цилиндр. Вдохновившись, я решил повторить эффект на букве D. У неё есть и углы и скруглённая часть, то что нужно для теста. Чтобы сильно не заморачиваться в качестве SDF я использовал outer glow в ФШ, градиент теперь строился в зависимости от положения курсора для интерактивности (видео 3). Ага, тоже прикольно, но как-то уже не то. Ну что же, начало положено, завтра продолжу – решил я и ушёл спать.
На следующий день я подумал что было бы неплохо взять всё же сразу какую-то надпись и работать с ней, например, название своей студии :) Дело в том, что до этого для определения горизонтальной составляющей нормали я брал вектор из центра экрана, но это работало бы только с кругом или с близкими к нему формами. А я же хочу впоследствии масштабировать эффект на угодно. Решение простое — для каждого пикселя текстуры с символом находим ближайший пиксель его контура и в rg каналах храним направление от него, в b — расстояние.
Довольно быстро накатал генератор таких картинок (4), отдельно внешнее поле, отдельно внутреннее. Заблюрил rg каналы в фш, чтобы не было видно совсем уж ступенек, быстренько адаптировал шейдер и вуаля, картинка 5 готова :D Отсутствие активации - это мой ответ Биллу Гейтсу за чипирование 5g ковида.
Гейтс Гейтсом, а результат по меньшей мере выглядит странно и нужно с этим что-то делать. Сейчас, в ретроспективе, очевидно, что с добавлением фич я мелкими шажками уходил в сторону от решения, но в процессе реализации одной фичи мне было сложно понять где я косячу с второй. Пришлось взять паузу, чтобы помедитировать на исходные логотипы.
После вечера раздумий, я переделал градиент ближе к начальному и решил брать какую-то нелинейную функцию от расстояния, чтобы получить собственно ту самую красоту на краях символов. Для того чтобы иметь возможность поиграть с этими функциями я и не генерировал карту нормалей изначально. Считать нормали в шейдере стало резко сложнее, но благо нормаль это перпендикуляр к касательной функции, а касательная функции это её производная. Производные за нас отлично считает WolframAlpha (особенно когда пробуешь взять что-то типа производной expSustainedImpulse). Получилось как-то так:
float slope = 1. - pow(1. - dist, 8.);
float slopeDerivative = 8. * pow(1. - dist, 7.);
if (slopeDerivative > 0.) {
normal = normalize(vec3(direction, 1. / slopeDerivative));
}
И вот мы уже на картинке 6, а до красоты ещё ооочень далеко. Проделывая кучу экспериментов с формой спусков у букв, цилиндрическими и куполообразными градиентами, с использованием источников света вместо градиентов (получив кстати в процессе тот самый баг), я отдалялся от исходной картинки всё дальше и дальше. Лучшим что у меня получилось была картинка 7 (наверное потому что на ней почти ничего нет 😄), но если включить окружение получалась картинка 8. И дело было даже не столько в корявости поля направлений или градиентов, сколько в некорректности моих решений на уровне идеи.В общем, спустя неделю экспериментов я сдался. И написал автору эффекта :) Он не хотел делиться своими секретами, но его наводок оказалось достаточно чтобы на следующий же день получить классный результат. О том, как это у меня получилось я напишу позже, а вы пока попробуйте догадаться как это в итоге устроено 😉
#my #tutorial
This media is not supported in your browser
VIEW IN TELEGRAM
Поставил себе десяток редакторов видео чтобы быстро обрезать видео, ни в одном это не удобно, в большинстве нельзя без плясок сделать нестандартное разрешение на выходе.
В итоге оказалось на 777й странице выдачи гугла есть онлайн тулза которая делает именно и только то что мне нужно — https://online-video-cutter.com/
Ох уж это SEO...
На видео пример интерполяции между скелетными анимациями, одна из AnimationMixer, вторая из положения курсора. Мой великолепный костыль для mav.farm
#tool #my
В итоге оказалось на 777й странице выдачи гугла есть онлайн тулза которая делает именно и только то что мне нужно — https://online-video-cutter.com/
Ох уж это SEO...
На видео пример интерполяции между скелетными анимациями, одна из AnimationMixer, вторая из положения курсора. Мой великолепный костыль для mav.farm
#tool #my