Всем привет. Сегодня я хотел бы задеть такую тему, как рендеринг и шейдеры в Unity. Шейдеры - простыми словами это инструкции для наших видео-карт, которые говорят, как правильно отрисовывать и трансформировать объекты в игре. Итак, welcome to the club buddy.
Рубрика «HLSL»
Что такое шейдеры, зачем они нужны и как разобраться во всем этом. Краткий экскурс по рендерингу в Unity
2022-07-17 в 11:33, admin, рубрики: AR и VR, C#, CGI (графика), engine, graph, HLSL, render, shaderlab, shaders, unityСоздание шейдерной анимации в Unity
2020-06-24 в 4:52, admin, рубрики: HDRP, HLSL, shader graph, unity, URP, анимация, графы шейдеров, процедурные анимации, Работа с 3D-графикой, разработка игр, шейдерыНедавно я работал над анимацией респауна и спецэффектом главного героя моей игры “King, Witch and Dragon”. Для этого спецэффекта мне нужна была пара сотен анимированных крыс.
Создание двухсот мешей со скиннингом с анимацией ключевыми кадрами всего для одного спецэффекта — это пустая трата ресурсов. Поэтому я решил использовать систему частиц, но для этого мне пришлось выбрать другой подход к анимации.
В этом посте я объясню, как анимировать простых существ при помощи вершинного шейдера. В качестве примера я использую крысу, но тот же способ применим для анимации рыб, птиц, летающих мышей и других существ, не являющихся основной целью взаимодействий игрока.
В большинстве туториалов про шейдерную анимацию для начинающих рассказывается о том, как анимировать флаг при помощи синусоиды. Я покажу чуть более сложную версию, в которой мы разобьём модель на разные части тела и анимируем их по отдельности.
Я подробно опишу создание вот этой анимации:
Shader — это не магия. Написание шейдеров в Unity. Вертексные шейдеры
2019-11-06 в 19:33, admin, рубрики: cg, CGI (графика), game development, Gamedev, HLSL, shader, unity, vertex shader, VFX, вертексный шейдер, вершинный шейдер, игровая разработка, разработка игр, Разработка под AR и VR, шейдерВсем привет! Меня зовут Дядиченко Григорий, и я основатель и CTO студии Foxsys. Сегодня мы поговорим про вершинные шейдеры. В статье будет разбираться практика с точки зрения Unity, очень простые примеры, а также приведено множество ссылок для изучения информации про шейдеры в Unity. Если вы разбираетесь в написании шейдеров, то вы не найдёте для себя ничего нового. Всем же кто хочет начать писать шейдеры в Unity, добро пожаловать под кат.
Как реализован рендеринг «Ведьмака 3»: молнии, ведьмачье чутьё и другие эффекты
2019-05-03 в 12:58, admin, рубрики: DirectX, HLSL, renderdoc, witcher 3, ведьмак 3, Дизайн игр, конвейер рендеринга, пиксельный шейдер, Работа с 3D-графикой, разработка игр, реверс-инжиниринг, рендеринг, шейдерыЧасть 1. Молнии
В этой части мы рассмотрим процесс рендеринга молний в Witcher 3: Wild Hunt.
Рендеринг молний выполняется немного позже эффекта занавес дождя, но всё равно происходит в проходе прямого рендеринга. Молнии можно увидеть на этом видео:
Они очень быстро исчезают, поэтому лучше просматривать видео на скорости 0.25.
Можно увидеть, что это не статичные изображения; со временем их яркость слегка меняется.
С точки зрения нюансов рендеринга здесь есть очень много сходств с отрисовкой занавес дождя в отдалении, например, такие же состояния смешивания (аддитивное смешивание) и глубины (проверка включена, запись глубин не выполняется).
Читать полностью »
Reflective Shadow Maps: Часть 2 ― Реализация
2019-02-16 в 22:11, admin, рубрики: DirectX, gi, HLSL, OpenGL, rsm, shaders, Алгоритмы, математика, перевод, Программирование, Работа с 3D-графикой, разработка игрПривет! В данной статье представлена простая реализация Reflective Shadow Maps (алгоритм описан в предыдущей статье). Далее я объясню, как я это сделал и какие подводные камни были. Также будут рассмотрены некоторые возможные оптимизации.
Рисунок 1: Слева направо: без RSM, с RSM, разница
Читать полностью »
2D-тени на Signed Distance Fields
2019-02-15 в 10:06, admin, рубрики: HLSL, signed distance field, Алгоритмы, математика, освещение, поля, Работа с векторной графикой, рендеринг графики, шейдерыТеперь, когда мы знаем основы комбинирования функций расстояний со знаком, можно использовать их для создания крутых вещей. В этом туториале мы применим их для рендеринга мягких двухмерных теней. Если вы пока не читали моих предыдущих туториалов о полях расстояний со знаком (signed distance fields, SDF), то крайне рекомендую их изучить, начав с туториала о создании простых фигур.
[В GIF возникли дополнительные артефакты при пересжатии.]
Читать полностью »
Пространственные манипуляции в 2D с помощью Signed Distance Fields
2019-02-11 в 10:05, admin, рубрики: HLSL, signed distance field, Алгоритмы, математика, поля, Работа с векторной графикой, рендеринг графики, шейдерыПри работе с полигональными ассетами можно отрисовывать только по одному объекту за раз (если не учитывать такие приёмы, как batching и instancing), но если использовать поля расстояний со знаком (signed distance fields, SDF), то мы не этим не ограничены. Если две позиции имеют одинаковую координату, то функции расстояний со знаком возвратят одинаковое значение, и за одно вычисление мы можем получить несколько фигур. Чтобы понять, как преобразовывать пространство, используемое для генерации полей расстояний со знаком, я рекомендую разобраться, как создавать фигуры с помощью функций расстояний со знаком и комбинировать sdf-фигуры.
Комбинирование Signed Distance Fields в 2D
2019-02-06 в 9:15, admin, рубрики: HLSL, signed distance field, Алгоритмы, математика, поля, Работа с векторной графикой, рендеринг графики, шейдерыВ предыдущем туториале мы научились создавать и перемещать простые фигуры с помощью функций расстояний со знаком. В этой статье мы научимся комбинировать несколько фигур для создания более сложных полей расстояний. Большинству описанных здесь техник я научился из библиотеки функций расстояний со знаком на glsl, которую можно найти здесь (http://mercury.sexy/hg_sdf). Также существует несколько способов комбинирования фигур, которые я здесь не рассматриваю.
Подготовка
Для визуализации полей расстояний со знаком (signed distance fields, SDF) мы будем использовать одну простую конфигурацию, а затем применим к ней операторы. Для отображения полей расстояний в ней будет использоваться визуализация линий расстояний из первого туториала. Ради упрощения мы будем задавать все параметры за исключением параметров визуализации в коде, но вы можете заменить любое значение свойством, чтобы сделать его настраиваемым.
Читать полностью »
Создаём эффект распространения цвета в Unity
2019-01-19 в 4:19, admin, рубрики: HLSL, unity, unity3d, конвейер рендеринга, Работа с 3D-графикой, шейдеры, эффектыНа этот эффект меня вдохновил эпизод Powerpuff Girls. Я хотела создать эффект распространения цвета в чёрно-белом мире, но реализовать его в координатах мирового пространства, чтобы видеть, как цвет закрашивает объекты, а не просто плоско распределяется по экрану, как в мультике.
Эффект я создала в новом Lightweight Rendering Pipeline движка Unity, встроенном примере конвейера Scriptable Rendering Pipeline. Все концепции применимы и к другим конвейерам, но некоторые встроенные функции или матрицы могут иметь другие названия. Также я воспользовалась новым стеком постобработки, но в туториале опущу подробное описание его настройки, потому что о ней достаточно хорошо рассказывается в других руководствах, например в этом видео.
Читать полностью »
Редактирование видео в MPC с помощью шейдеров
2018-12-30 в 16:48, admin, рубрики: HLSL, mpc-hc, Лайфхаки для гиков, пиксельный шейдер, Работа с видео, редактирование видеоЕсть задача: Изменить видео “на лету” при воспроизведении — поменять местами правую и левую часть. Не отразить, а именно поменять, т.е. разрезать картинку на две части и поменять их местами. Можно, конечно, сделать с помощью фреймсервера типа AviSynth'a, но это уже не совсем “на лету” — надо писать скрипт для каждого видео файла. Хочется сделать это быстро и без напрягов.
На фига? Чтобы сделать курс лекций по машинному обучению от Яндекса более удобным для просмотра. Лектор указывает на пункты презентации вживую, и приходится постоянно перескакивать через весь экран взглядом, чтобы понять, о чём речь: