creator cover Шакоретка
Шакоретка

Шакоретка 

Crazy mad man driven by pie and coffee 🥧☕️

3subscribers

13posts

Showcase

1
goals1
0 of 500 paid subscribers
Ухожу из найма, посвящаю себя активности в сети, качество и количество контента увеличивается.

About

├─ Name: Saveliy
├─ Alias: Shakoretka
├─ Field: Game Development
├─ Focus
│ ├ Computer Graphics
│ ├ VFX & Particle Systems
│ ├ Engine Tools & Scripting
│ └ Procedural Generation & Experimentation
└─ Interests
  ├ Games
  ├ Programing
  ├ Cooking
  ├ Art
  └ Nature

Начни здесь! / Start here!

Приветствие:
Меня зовут Савелий aka Shakoretka, занимаюсь различными типами программной разработки для собственного удовольствия, ковыряю периферию окружений и собираю полезные знания в упорядоченную кучу (в меру собственных умений).
Профессионально, берусь за разработку видеоигр в роли "3D pipeline architect", "Technical Artist", "Shader Artist", "VFX Artist", "Houdini Artist" на "Unreal", "Unity" и прочих реалтаймовых движках с подробной документацией и активной командой.
Релевантные технологии, о которых здесь может появится информация (пополняющийся список, если не нашли интересующей темы или статьи, задайте вопрос лично на электронный ящик invaders76@yandex.ru с Темой "Список технологий")
Большие статьи публикуются на DTF  и Habr

Как восстановить нормаль из RG текстуры доказав теорему Пифагора

Статья описывает поведение нормали в TangentSpace!
Возможно, вы сталкивались с текстурами нормали представленными в двухканальном виде RG(XY). Она же BC5/Компрессия нормали. Что же стало с B(Z)?
Z компоненту действительно можно точно восстановить, если изначально текстура была составлена корректно. Основное правило текстуры нормали, это нормализация, длина вектора в каждой точке должна составлять единицу.
В отличие от X, Y компонент, которые, условно, представляют значения от -1 до 1, Z компонента всегда находится в диапазоне от 0 до 1. Область значений нормали в данном случае можно представить в виде полусферы, где все возможные значения являются ее поверхностью.

Forward rendering

Адаптированный под работу с шейдерами, программируемый GPU пайплайн, пользующийся популярностью по сей день.
Его название в полной мере отображает принцип действия.

Как же это работает?

Представим пустой холст, он же FrameBuffer, в него будет записываться итоговый цвет, так же вспомогательные холсты DepthBuffer(глубина) и StencilBuffer(маска).
Перед отрисовкой кадра FrameBuffer очищается/заполняется фоновым цветом, Depth заполняется максимальным значением, а Stencil обнуляется.
На готовый конвейер поочередно выставляются фигуры/меши с сопровождающими их инструкциями(Shader) и вспомогательными данными(Текстуры, аргументы...), начиная от ближайших к камере или в установленном вручную порядке.
Отрисовщик берет данные меша о положения и проверяет его значение для DepthBuffer и StencilBuffer в качестве значения "маски" . Они могут быть записаны отдельно используя только данные о геометрии, перед отрисовкой освещения, они же Prepass, для чего это нужно будет понятно позже.
Допустим Prepass мы не используем, согласно полученным инструкциям, видеокарта запишет освещенный объект во FrameBuffer, а также данные в Stencil и DepthBuffer.

Сферические гармоники и причем тут лайтпробы

Рано или поздно, в CG, нас всех настигает тема сферических гармоник. Гармоники - это удобный способ емко сохранить информацию(в данном случае освещенность) со всех сторон сферы.
Предположим, что мы хотим получить информацию о свете в случайной точке в пространстве, для этого нам придется снимать из одной, единственной точки целый панорамный снимок, что очень дорого.
Гармоника же по своей сути это математическая функция, которая аппроксимирует информацию о свете в этих точках. Да, это не очень точно, но очень эффективно и достаточно убедительно, поэтому обычно используется именно для диффузного освещения.
При запекании, каждая точка лайтпробы упаковывает в себя данные сферических гармоник второго порядка, включающий в себя 9 полиномов на каждый канал цвета, которые в результате хранятся в виде 27 коэффициентов с плавающей запятой, что чрезвычайно компактно.

Сборка ПК, выбор комплектующих (Процессоры)

Статья является частью серии, публикующейся поочередно.
Основные компоненты
• Процессор
• Видеокарта
Сопутствующие
• Система охлаждения процессора
• Материнская плата
• Оперативная память
• Блок питания
Опциональные
• Накопители
• • HDD
• • SSD
• Корпус
• Система охлаждения корпуса
Основные компоненты
Стоит обратить внимание на то, что от выбора основных компонентов будет зависеть выбор всего сопутствующего оборудования, как правило, чем дороже процессор и видеокарта, тем дороже вся сборка.

Растеризация в 3D графике от Классики до MeshShader

Статья описывает классический пайплайн отрисовки графики при помощи растеризации геометрии и его будущее.
Классический пайплайн отрисовки при помощи растеризации можно описать как линейную последовательность. В ней каждый этап передает преобразованные данные следующему, а также использует глобальные данные, называемые Uniforms.

Как это работает:

1. Input Assembler - этап, на котором данные обретают форму. Вершины подготавливаются для Vertex Buffer: определяются типы данных и их размерность (позиция, UV, нормаль, Vertex ID и т.д.).
2. Vertex Shader - преобразует данные вершин и их положение в Clip Space пространстве с помощью перемножения матриц, подробнее о пространствах и преобразованиях в моей статье на DTF. Также в нем можно задавать новые параметры для вершин: цвет, псевдослучайные величины и т.д.
3. Tessellation - динамически усложняет геометрию, разделяя существующие примитивы для увеличения детализации. Применяется для локальных эффектов: следы на снегу, процедурный ландшафт или волны.
EasingGraph
// Easing nodes library for Shader and VFX Graphs
Level required:
Flower

Бинарный поиск

Приведенный в статье код написан на python
Важнейший поисковый алгоритм, позволяющий искать значение в отсортированном списке с выдающейся скоростью, сложность которого составляет O(log2 n). На практике это значит, что для нахождения элемента в списке длиной n понадобится:
• n = 2(1 попытка)
• n = 4(2 попытки)
• n = 8(3 попытки)
• n = 16(4 попытки)
• n = 32(5 попыток)
• n = 64(6 попыток)
• n = 128(7 попыток)
• n = 256(8 попыток)
и так далее...
Длина списка растет квадратично пока сложность поиска растет линейно. Для сравнения, если мы попробуем найти случайный элемент в списке из 16 777 216 значений, и сделаем это проверяя каждый элемент по порядку, в худшем случае нам потребуется 16 777 216 проверок, а в среднем 8 388 608, тогда как Бинарный поиск, найдет его всего за 24 попытки максимум!

Easing Functions (Изинги)


Easing функции - это математические формулы, которые определяют скорость изменения параметра. В основе лежит преобразование линейного входного значения t в диапазоне [0,1] в нелинейное выходное значение согласно формуле.

Зачем это нужно

Изинги позволяют уйти от «роботизированного» линейного движения, добавляя инерцию, ускорение, плавность или предают живой вид изображению.

Сферы применения

  • Web & Frontend: Анимация появления элементов, плавный скролл, переходы(Transitions).
  • UI/UX: Отклик интерфейса на действия пользователя (нажатия, выплывающие меню).
  • Системы частиц: Изменение размера, прозрачности или скорости партиклов.
  • Обработка изображений: Плавные градиенты, маски, процедурная генерация.

Полезные ресурсы

Для подбора кривых и визуализации удобно использовать:
  • easings.net полная библиотека основных функций с примерами на CSS/JS, сопровождающаяся иллюстрациями. Рекомендую.
  • Сeaser простой, наглядный инструмент для генерации кастомной cubic-bezier функции для веб-разработки.

Реализация для Unity (Swift FX - Easing Graph)

FFmpeg, как отказаться от конвертации онлайн

FFmpeg - мощнейшая и широко распространенная опенсурс библиотека обработки аудио и видео файлов из командной строки. Почти все известные редакторы и медиаресурсы существуют на его основе, YouTube, TikTok, PornHub и т.д.
Он чрезвычайно прост в использовании, ниже я опишу все то, чем пользуюсь сам.
Установка
1.Скачайте актуальную под вашу платформу версию с сайта
2.Распакуйте в любое удобное место
3.Добавьте путь с исполняемым файлом ffmpeg.exe в path переменных сред
4.Запустите терминал и выполните команду ffmpeg, если в ответ на нее, в терминале появилось описание программы, то все работает как положено
Написание скрипта
1.Создайте ярлык в удобной вам папке
2.Смените его адрес на cmd, теперь активация ярлыка вызовет терминал
3.Откройте свойства ярлыка и удалите данные в поле "Рабочая папка", открывая терминал, он всегда будет ссылаться на папку в которой находится
Subscription levels1

Flower

$3.5 per month
• Доступ к статьям на Boosty.
• Доступ к закрытому Telegram каналу.
• Большинство статей в Telegram канале те же, что и на Boosty.
• Доступ к Telegram каналу остается у вас навсегда.
Go up