Похожее видео
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 и трассировка лучей,
Похожее видео