#145 GPU вычисления: трассировка лучей 2.1 - Обзор

00:00 Введение в вычислительную трассировку лучей • Обсуждение использования вычислительной трассировки лучей без специального оборудования. • Пример имитации сцены с трассировкой лучей с помощью математических вычислений. 01:00 Требования к оборудованию и установка Vulkan SDK • Необходимость поддержки Vulkan графическим процессором. • Карты NVIDIA RTX и выше поддерживают трассировку лучей. • Установка Vulkan SDK на компьютер с Windows. 01:50 Подготовка вычислительных ресурсов • Переход к функции prepare compute для подготовки вычислительных ресурсов. • Основная работа ложится на вычислительные ресурсы для создания изображения с трассировкой лучей. 02:30 Создание очереди с поддержкой вычислений • Использование функции создания логических устройств Vulkan для поиска очереди с поддержкой вычислений. • Предпочтение семействам очередей, поддерживающим только вычисления. 03:24 Семейства очередей Q • Объяснение различий между семействами очередей для графики и вычислений. • Семейство очередей для графики сочетает графические и вычислительные возможности. • Семейство очередей для вычислений выполняет только вычислительные задачи. 04:24 Оптимизация и синхронизация • Важность разделения вычислительных и графических задач для оптимизации. • Избегание конфликтов между задачами в одном семействе очередей. 06:14 Адаптация к разному оборудованию • Vulkan может работать на любом устройстве, включая видеокарты NVIDIA, AMD, Intel и смартфоны. • Необходимость адаптации к возможностям оборудования. 07:12 Настройка очереди и буферов команд • Настройка индекса очереди Vulkan для вычислительных операций. • Создание буферов команд для вычислительных операций с помощью команды VK. 08:50 Синхронизация между ЦП и видеокартой • Использование барьеров для синхронизации между центральным процессором и видеокартой. • Создание барьеров для каждого вычислительного буфера команд. 10:47 Настройка дескрипторов и привязок • Настройка вычислительного конвейера с одним набором и четырьмя привязками. • Привязка ноль: хранилище изображений для вывода трассировки лучей. • Привязка один: буфер констант с параметрами. • Привязка два: теневой буфер хранения данных об объекте сцены. 11:46 Работа с наборами дескрипторов • Определение структуры памяти с помощью наборов дескрипторов. • Организованная передача данных в Vulkan через дескрипторы и привязки. 12:45 Хранилище изображений и дескрипторы • Хранилище изображений для вывода трассировки лучей. • Нулевой дескриптор: хранилище дескрипторов VK. • Первый дескриптор: буфер констант с параметрами. • Второй дескриптор: буфер хранилища VK. 13:36 Объединение дескрипторов и управление буферами • Объединение дескрипторов в один блок с помощью функции VK create descriptor set layout. • Использование одного буфера для каждого кадра. • Циклическое перебора буферов констант. 14:48 Выделение наборов дескрипторов • Вызов VK для выделения наборов дескрипторов. • Управление буферами констант и дескрипторами для конкретных задач. 16:38 Создание вычислительного конвейера • Создание вычислительного шейдерного конвейера в VK. • Проверка результата создания конвейера. • Загрузка запасного V-кода для шейдера трассировки лучей. 19:04 Подготовка и создание вычислительного блока • Копирование данных буфера констант в память для вычислений. • Завершение подготовки и создания вычислительного блока. 22:26 Синхронизация и барьеры • Запись в командный буфер через барьер памяти изображения. • Тестирование синхронизации графики и вычислений. • Установка барьера для графической очереди. 24:49 Конвейерный барьер и маски доступа • Применение конвейерного барьера для жёсткой синхронизации. • Использование масок доступа к исходным и конечным данным. • Различия в настройке барьеров при использовании отдельных очередей для графики и вычислений. 27:13 Рендеринг и отображение изображения • Начало рендеринга с использованием нижнего регистра VK. • Отображение изображения с трассировкой лучей, сгенерированного вычислительным шейдером, в виде полноэкранного четырехугольника. • Завершение прохода рендеринга и снятие барьера при разделении очередей. 29:07 Завершение буфера команд • Формирование буфера команд для вычислений. • Необходимость официального обновления для семейств очередей, включающих графику и вычисления. 30:18 Формирование буфера команд для вычислительных задач • Начинаем формировать буфер команд для вычислительных задач. • Используем барьер для получения данных из очереди вычислений. • Источник и получатель данных меняются местами: теперь источник — графика, а получатель — вычисления. 31:28 Роль оператора L • Обсуждается вопрос необходимости оператора L для вычислительных задач. • Выясняется, что при разделении графики и вычислений оператор L не нужен. 32:46 Завершение вычислительного буфера команд 33:30 Синхронизация работы процессора и графического процессора 34:23 Функция рендеринга 36:19 Обзор кода Vulcan 39:07 Базовый пример Vulcan 40:57 Рекомендации по обучению 42:53 Советы по изучению 44:42 Заключение

Иконка канала Ленинский Букварь
246 подписчиков
12+
1 просмотр
час назад
12+
1 просмотр
час назад

00:00 Введение в вычислительную трассировку лучей • Обсуждение использования вычислительной трассировки лучей без специального оборудования. • Пример имитации сцены с трассировкой лучей с помощью математических вычислений. 01:00 Требования к оборудованию и установка Vulkan SDK • Необходимость поддержки Vulkan графическим процессором. • Карты NVIDIA RTX и выше поддерживают трассировку лучей. • Установка Vulkan SDK на компьютер с Windows. 01:50 Подготовка вычислительных ресурсов • Переход к функции prepare compute для подготовки вычислительных ресурсов. • Основная работа ложится на вычислительные ресурсы для создания изображения с трассировкой лучей. 02:30 Создание очереди с поддержкой вычислений • Использование функции создания логических устройств Vulkan для поиска очереди с поддержкой вычислений. • Предпочтение семействам очередей, поддерживающим только вычисления. 03:24 Семейства очередей Q • Объяснение различий между семействами очередей для графики и вычислений. • Семейство очередей для графики сочетает графические и вычислительные возможности. • Семейство очередей для вычислений выполняет только вычислительные задачи. 04:24 Оптимизация и синхронизация • Важность разделения вычислительных и графических задач для оптимизации. • Избегание конфликтов между задачами в одном семействе очередей. 06:14 Адаптация к разному оборудованию • Vulkan может работать на любом устройстве, включая видеокарты NVIDIA, AMD, Intel и смартфоны. • Необходимость адаптации к возможностям оборудования. 07:12 Настройка очереди и буферов команд • Настройка индекса очереди Vulkan для вычислительных операций. • Создание буферов команд для вычислительных операций с помощью команды VK. 08:50 Синхронизация между ЦП и видеокартой • Использование барьеров для синхронизации между центральным процессором и видеокартой. • Создание барьеров для каждого вычислительного буфера команд. 10:47 Настройка дескрипторов и привязок • Настройка вычислительного конвейера с одним набором и четырьмя привязками. • Привязка ноль: хранилище изображений для вывода трассировки лучей. • Привязка один: буфер констант с параметрами. • Привязка два: теневой буфер хранения данных об объекте сцены. 11:46 Работа с наборами дескрипторов • Определение структуры памяти с помощью наборов дескрипторов. • Организованная передача данных в Vulkan через дескрипторы и привязки. 12:45 Хранилище изображений и дескрипторы • Хранилище изображений для вывода трассировки лучей. • Нулевой дескриптор: хранилище дескрипторов VK. • Первый дескриптор: буфер констант с параметрами. • Второй дескриптор: буфер хранилища VK. 13:36 Объединение дескрипторов и управление буферами • Объединение дескрипторов в один блок с помощью функции VK create descriptor set layout. • Использование одного буфера для каждого кадра. • Циклическое перебора буферов констант. 14:48 Выделение наборов дескрипторов • Вызов VK для выделения наборов дескрипторов. • Управление буферами констант и дескрипторами для конкретных задач. 16:38 Создание вычислительного конвейера • Создание вычислительного шейдерного конвейера в VK. • Проверка результата создания конвейера. • Загрузка запасного V-кода для шейдера трассировки лучей. 19:04 Подготовка и создание вычислительного блока • Копирование данных буфера констант в память для вычислений. • Завершение подготовки и создания вычислительного блока. 22:26 Синхронизация и барьеры • Запись в командный буфер через барьер памяти изображения. • Тестирование синхронизации графики и вычислений. • Установка барьера для графической очереди. 24:49 Конвейерный барьер и маски доступа • Применение конвейерного барьера для жёсткой синхронизации. • Использование масок доступа к исходным и конечным данным. • Различия в настройке барьеров при использовании отдельных очередей для графики и вычислений. 27:13 Рендеринг и отображение изображения • Начало рендеринга с использованием нижнего регистра VK. • Отображение изображения с трассировкой лучей, сгенерированного вычислительным шейдером, в виде полноэкранного четырехугольника. • Завершение прохода рендеринга и снятие барьера при разделении очередей. 29:07 Завершение буфера команд • Формирование буфера команд для вычислений. • Необходимость официального обновления для семейств очередей, включающих графику и вычисления. 30:18 Формирование буфера команд для вычислительных задач • Начинаем формировать буфер команд для вычислительных задач. • Используем барьер для получения данных из очереди вычислений. • Источник и получатель данных меняются местами: теперь источник — графика, а получатель — вычисления. 31:28 Роль оператора L • Обсуждается вопрос необходимости оператора L для вычислительных задач. • Выясняется, что при разделении графики и вычислений оператор L не нужен. 32:46 Завершение вычислительного буфера команд 33:30 Синхронизация работы процессора и графического процессора 34:23 Функция рендеринга 36:19 Обзор кода Vulcan 39:07 Базовый пример Vulcan 40:57 Рекомендации по обучению 42:53 Советы по изучению 44:42 Заключение

, чтобы оставлять комментарии