Forwarded from Иван Валерьевич
This media is not supported in your browser
VIEW IN TELEGRAM
нормали и тангент в octahedral в SNorm8x4
а на знак тангента я помножил скейл позиции))) (слева)
вот это я умненький, класс
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
Отправляется в закреп
https://interplayoflight.wordpress.com/2025/01/19/the-hidden-cost-of-shader-instructions/
https://interplayoflight.wordpress.com/2025/01/19/the-hidden-cost-of-shader-instructions/
Interplay of Light
The hidden cost of shader instructions
I posted a few days ago a screenshot of the long shader ISA code produced by the RGA compiler for a single atan2() instruction. The post got quite a large engagement and it felt like a lot of peopl…
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
туман из старой репы гугла
https://gist.github.com/BarkarIvan/4ecf3a63115a3154a4bd7eff6ec5dd2e
https://gist.github.com/BarkarIvan/4ecf3a63115a3154a4bd7eff6ec5dd2e
👍1🆒1
Forwarded from stinger | блог Романа Ильина о геймдизайне и не только
This media is not supported in your browser
VIEW IN TELEGRAM
#gamedev #техарт #unity
Сегодня будет статья про Contrast Ratio и читаемость элементов (чтобы не было белого на черном и серого на сером)
WCAG 2.1 requires a contrast ratio of at least 3:1 for graphics and user interface components (such as form input borders). WCAG Level AAA requires a contrast ratio of at least 7:1 for normal text and 4.5:1 for large text.
👉 https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html
Что это вообще такое?
CR это такой показатель, который позволяет взять цвет фона и цвет текста или иконки, сравнить их и понять достаточный ли контраст? Есть куча калькуляторов Contrast Ratio, которые легко гуглятся:
👉 https://www.siegemedia.com/contrast-ratio
👉 https://webaim.org/resources/contrastchecker/
👉 https://coolors.co/contrast-checker/112a46-acc8e5
👉 https://contrast-ratio.org/
Минимальный контраст при котором нормально читается мелкий текст, крупный текст и иконки определён стандартом. Сильно задирать его вверх тоже не стоит — глаза устанут. Поэтому в IDE например используют тему Solarized, а не белое на черном/черное на белом.
⚠️ Контрастная обводка при этом в большинстве случаев читаемость ухудшает, а люди с дислексией скорее всего не смогут читать текст с обводкой вообще. Не используйте её.
Как это использовать в юнити?
Мы для тестирования написали постпроцессинг шейдер, в котором задаём два цвета фона (пипеткой) и считаем минимальный контраст остальных элементов относительно этих двух цветов. Видео прилагаю, чтоб было понятнее. Скрин рандомный из инета был взят для тестов.
Два порога: всё что с контрастом меньше BGT считается фоном и красится черным. Остальное красится синим если контраст выше требуемого CR и красным если ниже. Очень наглядно.
Помимо этого бывают ещё разные виды контраста, например, хроматический. Но о них как-нибудь отдельно поговорим.
Сегодня будет статья про Contrast Ratio и читаемость элементов (чтобы не было белого на черном и серого на сером)
WCAG 2.1 requires a contrast ratio of at least 3:1 for graphics and user interface components (such as form input borders). WCAG Level AAA requires a contrast ratio of at least 7:1 for normal text and 4.5:1 for large text.
👉 https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html
Что это вообще такое?
CR это такой показатель, который позволяет взять цвет фона и цвет текста или иконки, сравнить их и понять достаточный ли контраст? Есть куча калькуляторов Contrast Ratio, которые легко гуглятся:
👉 https://www.siegemedia.com/contrast-ratio
👉 https://webaim.org/resources/contrastchecker/
👉 https://coolors.co/contrast-checker/112a46-acc8e5
👉 https://contrast-ratio.org/
Минимальный контраст при котором нормально читается мелкий текст, крупный текст и иконки определён стандартом. Сильно задирать его вверх тоже не стоит — глаза устанут. Поэтому в IDE например используют тему Solarized, а не белое на черном/черное на белом.
⚠️ Контрастная обводка при этом в большинстве случаев читаемость ухудшает, а люди с дислексией скорее всего не смогут читать текст с обводкой вообще. Не используйте её.
Как это использовать в юнити?
Мы для тестирования написали постпроцессинг шейдер, в котором задаём два цвета фона (пипеткой) и считаем минимальный контраст остальных элементов относительно этих двух цветов. Видео прилагаю, чтоб было понятнее. Скрин рандомный из инета был взят для тестов.
Два порога: всё что с контрастом меньше BGT считается фоном и красится черным. Остальное красится синим если контраст выше требуемого CR и красным если ниже. Очень наглядно.
Помимо этого бывают ещё разные виды контраста, например, хроматический. Но о них как-нибудь отдельно поговорим.
❤3👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Чем-то привлек этот пост-процесс из The Long dark. Немного так обогащает стилизованную картинку. Думал, что-то сложное, но, кажется, все очень просто: из обесцвеченного кадра вычитаем размытый обесцвеченный кадр, прибавляем аккуратно к оригиналу.
(в комменте граф сабстанса)
Подумываю применить у себя с размытием от скорости.
UPD: обесцвечивать, в принципе, ни к чему
(в комменте граф сабстанса)
Подумываю применить у себя с размытием от скорости.
UPD: обесцвечивать, в принципе, ни к чему
🆒4
This media is not supported in your browser
VIEW IN TELEGRAM
Очередной раз захотел радиального размытия в Substance Designer для тестов всяких пост-процесс гипотез. Психанул, наговнякал на Pixel processor.
Может кому-то тоже нужен иногда или хотите изучить Pixel processor, и while loop в нем (та еще веселуха)
sbs - буквально исходник
sbar - кидаете в граф и пользуетесь
файлы в первом комментарии
Может кому-то тоже нужен иногда или хотите изучить Pixel processor, и while loop в нем (та еще веселуха)
sbs - буквально исходник
sbar - кидаете в граф и пользуетесь
файлы в первом комментарии
🔥10
This media is not supported in your browser
VIEW IN TELEGRAM
в презентации по Портал 2 увидел некую технику Surface-embedded sprite, основанную на том, что мы поворачиваем uv в сторону камеры. А у меня про это незакрытый гештатль уже 4 года. В общем вот.
Файлы опубликовал в unity_cg (обязательно вступайте, если еще не)
Файлы опубликовал в unity_cg (обязательно вступайте, если еще не)
🔥13
Forwarded from Иван Валерьевич
Я опять бесполезной фигни принес
Плагин VkQuality для движка Unity предоставляет рекомендации по запуску графического API — Vulkan или OpenGL ES — для использования в вашей игре на определенных устройствах.
https://developer.android.com/games/engines/unity/unity-vkquality?hl=ru
Плагин VkQuality для движка Unity предоставляет рекомендации по запуску графического API — Vulkan или OpenGL ES — для использования в вашей игре на определенных устройствах.
https://developer.android.com/games/engines/unity/unity-vkquality?hl=ru
Android Developers
Плагин движка VkQuality Unity | Android game development | Android Developers
В этом документе описывается плагин VkQuality для Unity, который предоставляет рекомендации по использованию графических API Vulkan или OpenGL ES на устройствах Android во время запуска, позволяя разработчикам оптимизировать производительность и управлять…
🔥1
COMMAND ENCODER (Barkar Ivan)
Проблема сжатия вершин оказывается достаточно актуальной, и даже в индустрии AAA-разработки к её решению подходят самыми разными способами. Unity, в свою очередь, предлагает собственные инструменты для этой задачи – подробнее о них можно узнать в официальной…
Как всегда, пока это очень глубокое R'n'D и тест, и совсем не продакшен реди. Это пример квантайза мешей. Скорее всего, наиболее любопытным будет упаковка нормалей и тангента в кватернион, что может пригодится и в деферред. Будут мысли - пишите. Найдете ошибку, или как можно сделать лучше - так же в себе не держите.
Позиции сломаются на объектах размером меньше 1, копит заметную ошибку на мешах размерах больше 50 - меш становится немного больше. Пока не решил.
(файлики в комментах)
Позиции сломаются на объектах размером меньше 1, копит заметную ошибку на мешах размерах больше 50 - меш становится немного больше. Пока не решил.
(файлики в комментах)
🔥2
Media is too big
VIEW IN TELEGRAM
К предыдущему посту.
Другой подход к квантованию с масштабированием. Мелкие мешки работают прекрасно, под большие подбираем множитель. С благодарностью @alexmtq (https://t.me/madcsharp)
https://github.com/BarkarIvan/Unity_mesh_quantization_example
на гифке оптимизировання мешка размером в 50 единиц сравнивается с оригиналом.
Другой подход к квантованию с масштабированием. Мелкие мешки работают прекрасно, под большие подбираем множитель. С благодарностью @alexmtq (https://t.me/madcsharp)
https://github.com/BarkarIvan/Unity_mesh_quantization_example
на гифке оптимизировання мешка размером в 50 единиц сравнивается с оригиналом.
❤2🔥1🤯1
Я уже говорил, но.
Применение NICE-фильтра (на основе имплементации от Valve) при генерации мип-мап даёт ощутимый прирост качества по сравнению с окном Кайзера в Unity.
На реальном проекте (зависит, конечно, от него) разница в качестве текстур очень заметна.
Минусы?
- реализация в лоб очень долгая ) текстуры 1024 обрабатывает минуты. Но это решаемо.
https://developer.valvesoftware.com/wiki/NICE_filtering
UPD: если реализовать кайзер с регулируемыми настройками (хотя бы бета), то можно добиться результатов не хуже
Применение NICE-фильтра (на основе имплементации от Valve) при генерации мип-мап даёт ощутимый прирост качества по сравнению с окном Кайзера в Unity.
На реальном проекте (зависит, конечно, от него) разница в качестве текстур очень заметна.
Минусы?
- реализация в лоб очень долгая ) текстуры 1024 обрабатывает минуты. Но это решаемо.
https://developer.valvesoftware.com/wiki/NICE_filtering
UPD: если реализовать кайзер с регулируемыми настройками (хотя бы бета), то можно добиться результатов не хуже
❤4
Forwarded from Иван Валерьевич
Нейтральный тон маппинг от кронос
https://github.com/KhronosGroup/ToneMapping/blob/main/PBR_Neutral/pbrNeutral.glsl
https://www.khronos.org/news/press/khronos-pbr-neutral-tone-mapper-released-for-true-to-life-color-rendering-of-3d-products
https://github.khronos.org/glTF-Sample-Viewer-Release/
https://tone-mapping.glitch.me
https://github.com/KhronosGroup/ToneMapping/blob/main/PBR_Neutral/pbrNeutral.glsl
https://www.khronos.org/news/press/khronos-pbr-neutral-tone-mapper-released-for-true-to-life-color-rendering-of-3d-products
https://github.khronos.org/glTF-Sample-Viewer-Release/
https://tone-mapping.glitch.me
GitHub
ToneMapping/PBR_Neutral/pbrNeutral.glsl at main · KhronosGroup/ToneMapping
A collection of tone mappers for the display of 3D graphics - KhronosGroup/ToneMapping
👍2
Forwarded from Constantine Galkin
К слову, тут пару месяцев назад пробегал диалог про сжатие вершин, в том числе нормалей, там я упомянул презу из дума, вот готовый рабочий код в 3 байта + битмаска ужаты нормаль, тангент и TBN знак.
https://gist.github.com/wiseConst/fdedf4bf9461f2c6a4dc003aadb331d3
https://gist.github.com/wiseConst/fdedf4bf9461f2c6a4dc003aadb331d3
This media is not supported in your browser
VIEW IN TELEGRAM
Новости генерации кастомных мип-мап.
слева Юнити, справа - мое
Пришел все же к Kaiser с разными настройками и пытаюсь сохранить покрытие, если нужен альфа-клип. Честно говоря, не совсем понимаю, как решается эта задача в Unity — у них, похоже, мелкие козявки не исчезают так быстро и как-то бустят альфу на мелких мипах чтол-ли (хотя мне сложно представить подобную текстуру, или же ей стоит подбирать порог). Но в целом, мне нравится как все работает.
К тому же, для альфа-клиппинга, мне кажется, удобнее сразу заложить SDF на этапе рисования текстуры, чтобы не заморачиваться. Генерация SDF в мип-мапе — дело слишком долгое и замороченное (но, если надо, можно подключить бесплатный плагин от Катлайка).
Оставлю так, и пущу в дело, там посмотрим.
Вывод в том, что было бы здорово иметь пару (да даже одну) настроек кайзера, чтобы регулировать резкость текстуры.
слева Юнити, справа - мое
Пришел все же к Kaiser с разными настройками и пытаюсь сохранить покрытие, если нужен альфа-клип. Честно говоря, не совсем понимаю, как решается эта задача в Unity — у них, похоже, мелкие козявки не исчезают так быстро и как-то бустят альфу на мелких мипах чтол-ли (хотя мне сложно представить подобную текстуру, или же ей стоит подбирать порог). Но в целом, мне нравится как все работает.
К тому же, для альфа-клиппинга, мне кажется, удобнее сразу заложить SDF на этапе рисования текстуры, чтобы не заморачиваться. Генерация SDF в мип-мапе — дело слишком долгое и замороченное (но, если надо, можно подключить бесплатный плагин от Катлайка).
Оставлю так, и пущу в дело, там посмотрим.
Вывод в том, что было бы здорово иметь пару (да даже одну) настроек кайзера, чтобы регулировать резкость текстуры.
🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
А чего вы без таких полярных координат для сабстанс дизайнера сидите? Делал себе для трещин.
(файлы в первом комментарии)
Домашнее задание: сделать color версию
(файлы в первом комментарии)
Домашнее задание: сделать color версию
🔥7❤2
Forwarded from OWLD (Olga Fedotova)
YouTube
Urban Planning in Games
In this GDC 2024 session, examine all the basic steps of city creation, why urban planning is important for game environments, and how it can be useful for creating readable and distinguished urban space.
GDC returns to San Francisco in March 2025! For…
GDC returns to San Francisco in March 2025! For…
Полезный доклад с GDC от Ани Булавиной из CD PR об устройстве игровых городов с практически готовыми советами по тому, как игровой город делать.
Основные тезисы с моими комментариями:
🔸 Пространство в игре не должно быть реалистичным, оно должно быть достоверным.
Это та самая тема, по которой я хочу пройтись в своей части 2 тома Архитектуры виртуальных миров.
🔸 Город это упорядоченная структура.
От себя добавлю, что это будет верно для любого пространства, организованного человеком. Снижайте хаос на ваших уровнях.
🔸 Улица, площадь и задний двор - основные элементы города.
Если про улицу и площадь мы помним (хотя многие начинающие дизайнеры помнят только улицу), то вот про задний двор мы зачастую забываем, в результате чего наши игровые города становятся излишне коридорными.
🔸 Основные параметры вашего города - размеры, пропорции и степень детализации - зависят от скорости перемещения и геймплея.
Dog Town в Phantom Liberty потому такой шумный на мой взгляд, что разработчики полагали, что он будет преодолеваться игроком не только на машине, но и пешком, и потому увеличили детализацию. Типа а давайте запушим игроков играть иначе. Получили то, что получили.
🔸 Лейаут, архитектура и лендмарки - то, что делает ваши районы отличающимися.
От себя добавлю, что самый сильный элемент тут это именно лейаут. При этом важно помнить, что различия в лейауте должны быть на уровне игрока, а не при взгляде из вьюпорта.
По Аниному докладу можно набросать примерно вот такой пайплайн работы с игровым городом:
1. Определяем размеры города, исходя из геймплея
2. Определяем количество районов и их опознавательные лендмарки
3. Собираем референсы, обращаем внимание на структурные рефы
4. Продумываем элевацию (мне кажется, что наиболее корректно начать думать об этом где-то на этом этапе)
5. Прокладываем главные улицы через весь город
6. Помним про чередование пространств улица-площадь
7. Закладываем навигацию через размер улиц и лендмарки
❗️ Ну а самый главный вывод, как по мне, - вашего В2 уровня английского вполне достаточно, чтобы выступать с докладом на GDC. Так что перестаньте тормозить себя знанием языка.
#video #gamecities #Cyberpunk2077
Основные тезисы с моими комментариями:
🔸 Пространство в игре не должно быть реалистичным, оно должно быть достоверным.
Это та самая тема, по которой я хочу пройтись в своей части 2 тома Архитектуры виртуальных миров.
🔸 Город это упорядоченная структура.
От себя добавлю, что это будет верно для любого пространства, организованного человеком. Снижайте хаос на ваших уровнях.
🔸 Улица, площадь и задний двор - основные элементы города.
Если про улицу и площадь мы помним (хотя многие начинающие дизайнеры помнят только улицу), то вот про задний двор мы зачастую забываем, в результате чего наши игровые города становятся излишне коридорными.
🔸 Основные параметры вашего города - размеры, пропорции и степень детализации - зависят от скорости перемещения и геймплея.
Dog Town в Phantom Liberty потому такой шумный на мой взгляд, что разработчики полагали, что он будет преодолеваться игроком не только на машине, но и пешком, и потому увеличили детализацию. Типа а давайте запушим игроков играть иначе. Получили то, что получили.
🔸 Лейаут, архитектура и лендмарки - то, что делает ваши районы отличающимися.
От себя добавлю, что самый сильный элемент тут это именно лейаут. При этом важно помнить, что различия в лейауте должны быть на уровне игрока, а не при взгляде из вьюпорта.
По Аниному докладу можно набросать примерно вот такой пайплайн работы с игровым городом:
1. Определяем размеры города, исходя из геймплея
2. Определяем количество районов и их опознавательные лендмарки
3. Собираем референсы, обращаем внимание на структурные рефы
4. Продумываем элевацию (мне кажется, что наиболее корректно начать думать об этом где-то на этом этапе)
5. Прокладываем главные улицы через весь город
6. Помним про чередование пространств улица-площадь
7. Закладываем навигацию через размер улиц и лендмарки
❗️ Ну а самый главный вывод, как по мне, - вашего В2 уровня английского вполне достаточно, чтобы выступать с докладом на GDC. Так что перестаньте тормозить себя знанием языка.
#video #gamecities #Cyberpunk2077
🔥7
Forwarded from Artful Artform (Dasha Nasonova)
Game_World_Architectonics_Transdisciplin.pdf
9.3 MB
Ловите pdf 💌
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1