This media is not supported in your browser
VIEW IN TELEGRAM
Это просто must see.
Найс техника размытия в 10 проходов ренедерера. И отличное внимание к мелочам в целом.
https://fwa100.jam3.com/
#reference
Найс техника размытия в 10 проходов ренедерера. И отличное внимание к мелочам в целом.
https://fwa100.jam3.com/
#reference
Стоит ли расписывать как сделаны или как бы я делал на WebGL различные анимации, которые я выкладываю?
Anonymous Poll
91%
Да, это очень интересно
1%
Как хочешь, всё равно
3%
Нет, интересно разбираться самостоятельно
4%
Нет, я тут просто смотрю видосики
Не ожидал такого стопроцентного фидбека, спасибо всем кто принял участие в голосовании! Да, "интересно разбираться самостоятельно" это тоже положительный ответ 😉
Сегодня разберу вот эту анимацию:
https://dribbble.com/shots/10879124-Morphing-Geometry
Есть 4 варианта как это сделать, я распишу самый производительный и неточный. Буду использовать терминологию ThreeJS. Решения чисто из головы, могут быть ошибки, на них можно указать мне в чате @creativecoders или обсудить в сообщетсве @webgl_ru 😊
Работа с геометрией
Куб превращается в сферу и наоборот начиная с рёбер, по сути bevel фильтр. Чтобы это реализовать, нужно создать геометрию куба и для каждой вершины посчитать её расстояние до центра грани в диапазоне 0..1. Запишу это как атрибут геометрии float faceDistance.
Для морфинга нужна uniform переменная float morphPower в диапазоне 0..1, где 0 – куб, 1 – сфера. В вершинном шейдере перенормирую линейный морфинг в
Внутренний кубошар
Прозрачный материал, который просто выводит envMap. Для аббераций (цветные разводы) берётся значение какого-то канала со сдвигом, например
Ну и чтение текстуры конкретно из cubeMap я не помню, нужно посмотреть в примерах.
Сам кубошар отрендерю в текстуру.
Внешний кубошар
Вот тут уже всё гораздо сложнее. Буду использовать path tracing для отражений.
Чтобы получить отражения вычислю нормаль, она морфится так же как и позиция.
Теперь я могу получить преломлённый вектор используя коэффициент преломления float refractionPower:
Остальные решения:
2. Вместо path tracing отражения отрендерить каждую грань внешней кубосферы в текстуру перенормируя viewMatrix (очень сложно, задача для гениев аналитической геометрии)
3. Ray marching внутри внешней кубосферы
4. Ray marching всей сцены
Как вам? Стоит ли делать проще / сложнее, подробнее, и т.д.?
#my #tutorial #inspiration
Сегодня разберу вот эту анимацию:
https://dribbble.com/shots/10879124-Morphing-Geometry
Есть 4 варианта как это сделать, я распишу самый производительный и неточный. Буду использовать терминологию ThreeJS. Решения чисто из головы, могут быть ошибки, на них можно указать мне в чате @creativecoders или обсудить в сообщетсве @webgl_ru 😊
Работа с геометрией
Куб превращается в сферу и наоборот начиная с рёбер, по сути bevel фильтр. Чтобы это реализовать, нужно создать геометрию куба и для каждой вершины посчитать её расстояние до центра грани в диапазоне 0..1. Запишу это как атрибут геометрии float faceDistance.
Для морфинга нужна uniform переменная float morphPower в диапазоне 0..1, где 0 – куб, 1 – сфера. В вершинном шейдере перенормирую линейный морфинг в
float bevelPower = clamp((morphPower + faceDistance - 1.) / faceDistance, 0., 1.);Теперь я могу интерполировать положение вершины между кубом и сферой
vec3 pos = mix(position, normalize(position), bevelPower);Создам 2 таких куба – внешний и внутренний. Размерами и поворотами проще манипулировать из JS при помощи scale и rotation.
Внутренний кубошар
Прозрачный материал, который просто выводит envMap. Для аббераций (цветные разводы) берётся значение какого-то канала со сдвигом, например
vec4 color = texture2D(tMap, uv);C shift нужно будет поэкспериментировать чтобы сделать абберации как в референсе. Вычислять его из uv нельзя, потому что изначально у меня геометрия куба. Хотя почему бы и нет, креативные эффекты должны быть креативными)
color.r = texture2D(tMap, uv + shift).r;
color.g = texture2D(tMap, uv - shift).g;
Ну и чтение текстуры конкретно из cubeMap я не помню, нужно посмотреть в примерах.
Сам кубошар отрендерю в текстуру.
Внешний кубошар
Вот тут уже всё гораздо сложнее. Буду использовать path tracing для отражений.
Чтобы получить отражения вычислю нормаль, она морфится так же как и позиция.
vec3 morphedNormal = mix(normal, normalize(position), bevelPower);Чтобы перевести её в пространство мира, использую такой костыль
vec4 worldPosition = modelMatrix * vec4(pos, 1.);Если кто-то знает, как это сделать красивее – пишите.
vec3 worldNormal = (modelMatrix * vec4(pos + morphedNormal, 1.) - worldPosition).xyz;
Теперь я могу получить преломлённый вектор используя коэффициент преломления float refractionPower:
vec3 ray = normalize(worldPosition - cameraPosition) - worldNormal * refractionPower;И найдя пересечение прямой заданной worldPosition и ray с плоскостью заданной cameraPosition и vec3(0.), я получу uv координаты для отрисовки внутреннего кубошара на внешнем. Как именно не помню точно, но это гуглится. Если поставить камеру на ось z, xy координаты пересечения будут сдвинутым uv координатами тексуры отрисованной ранее:
ray = normalize(ray);
vec3 planeHit = worldPosition.xyz + ray * dot(cameraPosition, -worldPosition.xyz) / dot(cameraPosition, ray);После чего цвет смешивается с отражением из envMap и сцена готова 😊
vec4 screenSpaceReflection = projectionMatrix * viewMatrix * vec4(planeHit, 1.);
vec2 uv = screenSpaceReflection.xy / screenSpaceReflection.w;
Остальные решения:
2. Вместо path tracing отражения отрендерить каждую грань внешней кубосферы в текстуру перенормируя viewMatrix (очень сложно, задача для гениев аналитической геометрии)
3. Ray marching внутри внешней кубосферы
4. Ray marching всей сцены
Как вам? Стоит ли делать проще / сложнее, подробнее, и т.д.?
#my #tutorial #inspiration
Dribbble
Morphing Geometry
Morphing Geometry designed by Nathan Riley for Unseen Studio®. Connect with them on Dribbble; the global community for designers and creative professionals.
This media is not supported in your browser
VIEW IN TELEGRAM
Красивый UI. Интересно как бы такое смотрелось в контексте декстоп версии сайта.
https://www.instagram.com/p/B-RzjwjgyTO/
Как сделать – ничего необычного за рамками обычного строения 3D сцены.
Мягкие тени можно посмотреть тут https://threejs.org/examples/?q=shadow#webgl_shadow_contact
Тень на поворачивающейся перпендикулярно грани можно легко сделать в шейдере типа 1. - dot(normal, cameraPosition - modelViewPosition)
#inspiration
https://www.instagram.com/p/B-RzjwjgyTO/
Как сделать – ничего необычного за рамками обычного строения 3D сцены.
Мягкие тени можно посмотреть тут https://threejs.org/examples/?q=shadow#webgl_shadow_contact
Тень на поворачивающейся перпендикулярно грани можно легко сделать в шейдере типа 1. - dot(normal, cameraPosition - modelViewPosition)
#inspiration
This media is not supported in your browser
VIEW IN TELEGRAM
https://www.curtainsjs.com/ — небольшая библиотека, позволяющая быстро обрабатывать DOM элементы при помощи шейдеров. При этом она автоматически позиционирует их где нужно, давая адаптивность из коробки. Искривляющиеся картинки при скролле и анаглифные эффекты это сюда 💪
Пример на видео:
https://codepen.io/martinlaxenaire/full/OJVKVYa от https://twitter.com/webdesign_ml
#tool
Пример на видео:
https://codepen.io/martinlaxenaire/full/OJVKVYa от https://twitter.com/webdesign_ml
#tool
Media is too big
VIEW IN TELEGRAM
Коллекция интерфейсов различных игр. Отличный источник вдохновения, особенно для 3D сайтов.
https://interfaceingame.com/
#reference
https://interfaceingame.com/
#reference
Очень крутая коллекция. Чтобы понять как это работает идём на https://threejs.org/examples/?q=matcap#webgl_materials_matcap и кидаем картиночки на бюст
За наводку спасибо @munrocket
#tool
За наводку спасибо @munrocket
#tool
Forwarded from Владимир Красносельский
Собрал на досуге небольшую коллекцию кастомных маткапов. 120 штук - найдётся на любой вкус!😁
забирайте: https://yadi.sk/d/BolhapRpdukdow
забирайте: https://yadi.sk/d/BolhapRpdukdow
This media is not supported in your browser
VIEW IN TELEGRAM
Вдогонку пример использования и репозиторий с огромным количеством подобных материалов
https://github.com/nidorx/matcaps
https://github.com/nidorx/matcaps
Forwarded from Creative Motion
This media is not supported in your browser
VIEW IN TELEGRAM
Web design UI/UX Inspiration
Рубрика почитать на выходных:
Исследование читаемости шрифтов
Засечки вс гротески. Если вкратце – по читаемости шрифты без засечек чуть-чуть лучше, шрифты с засечками вызывают чуть-чуть более выраженный эмоциональный отклик.
https://habr.com/ru/company/tinkoff/blog/498878/
#article
Исследование читаемости шрифтов
Засечки вс гротески. Если вкратце – по читаемости шрифты без засечек чуть-чуть лучше, шрифты с засечками вызывают чуть-чуть более выраженный эмоциональный отклик.
https://habr.com/ru/company/tinkoff/blog/498878/
#article
Создание интерфейса для игры
Просто статья о процессе создания интерфейса, nothing special.
https://habr.com/ru/post/498600/
К ней прилагаются референсы игровых магазинов и визуального стиля из игр:
https://www.figma.com/file/zNQ09f97jPyl4bFkZtb1tS/GUI_Process_Tutorial
https://www.figma.com/file/WOLAP66uHyUBRj2tnuKY15/GUI_VISUAL_STYLE_REFS (тут бонусные скрины из SC2)
#article #reference
Просто статья о процессе создания интерфейса, nothing special.
https://habr.com/ru/post/498600/
К ней прилагаются референсы игровых магазинов и визуального стиля из игр:
https://www.figma.com/file/zNQ09f97jPyl4bFkZtb1tS/GUI_Process_Tutorial
https://www.figma.com/file/WOLAP66uHyUBRj2tnuKY15/GUI_VISUAL_STYLE_REFS (тут бонусные скрины из SC2)
#article #reference
3D-аркада в браузере: как мы сделали игру на React + Redux
Статья о том, как НЕ надо делать 3D игры. Ну или как поднять перформанс Redux
https://habr.com/ru/company/2gis/blog/498638/
#article
Статья о том, как НЕ надо делать 3D игры. Ну или как поднять перформанс Redux
https://habr.com/ru/company/2gis/blog/498638/
#article
И последняя, золотая статья аж 2015го года:
GTA V - Graphics Study
Разбор техник применяемых при рендеринге в GTA V в трёх частях.
В блоге ещё несколько разборов рендеринга в ААА играх. Не веб конечно, но отдельные техники применять можно и в WebGL. Adrian Courrèges, ты крутой, спасибо!
http://www.adriancourreges.com/blog/2015/11/02/gta-v-graphics-study/
#article #top
GTA V - Graphics Study
Разбор техник применяемых при рендеринге в GTA V в трёх частях.
В блоге ещё несколько разборов рендеринга в ААА играх. Не веб конечно, но отдельные техники применять можно и в WebGL. Adrian Courrèges, ты крутой, спасибо!
http://www.adriancourreges.com/blog/2015/11/02/gta-v-graphics-study/
#article #top