#086 Vulkan API: Область данных таблицы привязки шейдеров для трассировки лучей 15.0
00:00 Введение в тему • Обсуждение таблицы привязки шейдеров SBT и данных, включенных в область данных для SBT. • Цель — включить данные в SBT и сделать их доступными в шейдерах. 00:47 Пример приложения • Представление приложения для трассировки лучей SBT data из решения Vulcan Examples от Саши Виллемса. • Идея реализации: таблица привязки шейдеров должна содержать область данных для передачи информации в шейдеры. 01:41 Запуск приложения • Запуск приложения и демонстрация отрисованного треугольника и шахматного узора. • Описание структуры изображения: чёрный фон, шахматный узор и красный треугольник. 04:28 Структура таблицы привязки шейдеров • Функция создания таблицы привязки шейдеров и выделение места для дескриптора. • Дескриптор представляет собой указатели на лямбда-функции для вызова в конвейере трассировки лучей. 06:09 Операции с памятью • Создание буферов для каждой записи в таблице привязки шейдеров. • Маппинг и копирование дескрипторов и данных о дескрипторе шейдера. • Разделение областей данных для промахов, попаданий и непопаданий. 08:18 Флаги и свойства памяти • Важность флагов, таких как видимость для хоста и согласованность с хостом. • Память видна как графическому, так и центральному процессору. 10:17 Различия между шейдерами • Обсуждение различий между шейдерами для попадания, промаха, рендеринга и растеризации. • Каждый шейдер может обращаться только к своим переменным. 12:36 Создание таблицы привязки шейдеров • Встраивание данных в каждую запись таблицы привязки шейдеров. • Данные могут быть прочитаны устройством во время трассировки лучей. • Когерентная и видимая для хоста память обеспечивает общую видимость для центрального и графического процессоров. 13:11 Барьеры и распределение памяти • Необходимость понимания работы барьеров для правильного распределения памяти. • Важность правильного распределения памяти для корректной работы системы. 13:56 Таблица привязки шейдеров • Используется обычная таблица привязки шейдеров с дополнительными слотами для Vec3. • Шейдеры для рендеринга, обработки и попадания находятся в области данных. • Расширение для трассировки лучей включает payload в ext hit value. 14:52 Передача данных для шейдера • Данные для шейдера передаются через layout shader record ext sb. • После попадания обновляется значение попадания в данные SBT записи попадания. 15:39 Обработка промахов и попаданий • Промахи решаются в пользу «уайт», попадания — в пользу другого цвета. • Белый цвет используется для промахов, красный — для попаданий. 16:41 Барицентрические координаты • Барицентрические координаты используются для удара. • Геометрический идентификатор преобразуется в красный цвет при попадании. 17:48 Генератор лучей • Генератор лучей включает систему камер и ускоритель высшего уровня. • RGB для генерации лучей преобразуется в серый цвет. 18:40 Параметры камеры • T-Min и T-Max определяют, как далеко заходить в подсчётах попаданий. • Подсчёт попаданий начинается после некоторого времени ожидания. 19:28 Шахматная доска • Шахматная доска используется для демонстрации области видимости и записи данных. • Чёрный цвет обозначает границу, а белый и красный — промахи и попадания соответственно. 21:06 Трассировка лучей • Лучи трассируются только в областях без серого цвета. • Белый цвет означает промах, красный — попадание. 22:13 Логика трассировки • В ветке else кода нет трассировки луча. • Область шахматной доски ограничена, всё остальное окрашено в чёрный цвет. 24:35 Изменение цвета • Изменение цвета области серого цвета не требует перекомпиляции кода. • Для пропущенных участков отображается цвет из шейдера ray gen. 25:58 Обновление цвета • Обновление цвета области серого цвета приводит к изменению отображения. • Шейдер ray gen используется для отображения данных без генерации лучей. 26:49 Изменение цвета без перекомпиляции • Изменение цвета в шейдере не требует перекомпиляции. • Результаты меняются без дополнительных действий. 27:18 Работа с исходным кодом • Изменение цвета происходит из исходного кода. • Возвращение к серому цвету после изменения. 28:26 Эксперименты с цветами • Добавление жёлтого цвета. • Влияние изменения значения на треугольник. 29:38 Важность операций с памятью • Операции с памятью в Vulkan критически важны. • Необходимость понимания областей буфера, флагов и использования буфера. 30:58 Запись данных в изображение • Запись манипуляций с данными в изображение. • Вывод изображения на цепочку буферов для отображения на экране. 32:48 Результаты трассировки лучей • Проверка результатов трассировки лучей: серые, белые и красные области. • Объяснение работы трассировки лучей. 33:43 Планы по реализации трассировки лучей • Реализация базовой трассировки лучей, вызова трассировки, пересечения, извлечения позиции, отражения, привязки данных таблицы шейдеров, теней, текстур и GLTS. 34:40 Завершение серии про трассировку лучей 35:32 Барицентрические координаты 36:31 Рекомендации по изучению Vulkan 37:25 Установка Vulkan и трассировка лучей
00:00 Введение в тему • Обсуждение таблицы привязки шейдеров SBT и данных, включенных в область данных для SBT. • Цель — включить данные в SBT и сделать их доступными в шейдерах. 00:47 Пример приложения • Представление приложения для трассировки лучей SBT data из решения Vulcan Examples от Саши Виллемса. • Идея реализации: таблица привязки шейдеров должна содержать область данных для передачи информации в шейдеры. 01:41 Запуск приложения • Запуск приложения и демонстрация отрисованного треугольника и шахматного узора. • Описание структуры изображения: чёрный фон, шахматный узор и красный треугольник. 04:28 Структура таблицы привязки шейдеров • Функция создания таблицы привязки шейдеров и выделение места для дескриптора. • Дескриптор представляет собой указатели на лямбда-функции для вызова в конвейере трассировки лучей. 06:09 Операции с памятью • Создание буферов для каждой записи в таблице привязки шейдеров. • Маппинг и копирование дескрипторов и данных о дескрипторе шейдера. • Разделение областей данных для промахов, попаданий и непопаданий. 08:18 Флаги и свойства памяти • Важность флагов, таких как видимость для хоста и согласованность с хостом. • Память видна как графическому, так и центральному процессору. 10:17 Различия между шейдерами • Обсуждение различий между шейдерами для попадания, промаха, рендеринга и растеризации. • Каждый шейдер может обращаться только к своим переменным. 12:36 Создание таблицы привязки шейдеров • Встраивание данных в каждую запись таблицы привязки шейдеров. • Данные могут быть прочитаны устройством во время трассировки лучей. • Когерентная и видимая для хоста память обеспечивает общую видимость для центрального и графического процессоров. 13:11 Барьеры и распределение памяти • Необходимость понимания работы барьеров для правильного распределения памяти. • Важность правильного распределения памяти для корректной работы системы. 13:56 Таблица привязки шейдеров • Используется обычная таблица привязки шейдеров с дополнительными слотами для Vec3. • Шейдеры для рендеринга, обработки и попадания находятся в области данных. • Расширение для трассировки лучей включает payload в ext hit value. 14:52 Передача данных для шейдера • Данные для шейдера передаются через layout shader record ext sb. • После попадания обновляется значение попадания в данные SBT записи попадания. 15:39 Обработка промахов и попаданий • Промахи решаются в пользу «уайт», попадания — в пользу другого цвета. • Белый цвет используется для промахов, красный — для попаданий. 16:41 Барицентрические координаты • Барицентрические координаты используются для удара. • Геометрический идентификатор преобразуется в красный цвет при попадании. 17:48 Генератор лучей • Генератор лучей включает систему камер и ускоритель высшего уровня. • RGB для генерации лучей преобразуется в серый цвет. 18:40 Параметры камеры • T-Min и T-Max определяют, как далеко заходить в подсчётах попаданий. • Подсчёт попаданий начинается после некоторого времени ожидания. 19:28 Шахматная доска • Шахматная доска используется для демонстрации области видимости и записи данных. • Чёрный цвет обозначает границу, а белый и красный — промахи и попадания соответственно. 21:06 Трассировка лучей • Лучи трассируются только в областях без серого цвета. • Белый цвет означает промах, красный — попадание. 22:13 Логика трассировки • В ветке else кода нет трассировки луча. • Область шахматной доски ограничена, всё остальное окрашено в чёрный цвет. 24:35 Изменение цвета • Изменение цвета области серого цвета не требует перекомпиляции кода. • Для пропущенных участков отображается цвет из шейдера ray gen. 25:58 Обновление цвета • Обновление цвета области серого цвета приводит к изменению отображения. • Шейдер ray gen используется для отображения данных без генерации лучей. 26:49 Изменение цвета без перекомпиляции • Изменение цвета в шейдере не требует перекомпиляции. • Результаты меняются без дополнительных действий. 27:18 Работа с исходным кодом • Изменение цвета происходит из исходного кода. • Возвращение к серому цвету после изменения. 28:26 Эксперименты с цветами • Добавление жёлтого цвета. • Влияние изменения значения на треугольник. 29:38 Важность операций с памятью • Операции с памятью в Vulkan критически важны. • Необходимость понимания областей буфера, флагов и использования буфера. 30:58 Запись данных в изображение • Запись манипуляций с данными в изображение. • Вывод изображения на цепочку буферов для отображения на экране. 32:48 Результаты трассировки лучей • Проверка результатов трассировки лучей: серые, белые и красные области. • Объяснение работы трассировки лучей. 33:43 Планы по реализации трассировки лучей • Реализация базовой трассировки лучей, вызова трассировки, пересечения, извлечения позиции, отражения, привязки данных таблицы шейдеров, теней, текстур и GLTS. 34:40 Завершение серии про трассировку лучей 35:32 Барицентрические координаты 36:31 Рекомендации по изучению Vulkan 37:25 Установка Vulkan и трассировка лучей
