Похожее видео
00:00 Введение Приветствие и анонс продолжения рубрики Обучение CUDA. Объяснение темы видео: использование адресов буфера устройства для эффективного доступа к данным в памяти графического процессора. 00:46 Использование 64-битных указателей Замена дескрипторов в Vulkan на 64-битные указатели на графический процессор. Указатели позволяют манипулировать памятью локального графического процессора. 01:28 Структура кода Описание файла .cpp и шейдеров написанных на GLSL. Упоминание вершинного шейдера. 02:27 Функции адресации буфера устройства Включение функций адресации буфера устройства в исходном коде и шейдерах. Использование memcopy для записи данных в память устройства графического процессора. Применение флагов VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT и VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT_COHERENT. 04:22 Пример работы приложения Демонстрация вращения прямоугольников при включении анимации. Объяснение как центральный процессор обновляет память графического процессора. 05:21 Передача данных в шейдер Передача адресов буферных устройств шейдеру с помощью push-констант. Упрощение обработки дескрипторов благодаря использованию ссылок. 06:17 Роль memcopy Объяснение работы memcopy для загрузки данных в графический процессор. Проверка влияния отключения memcopy на работу приложения. 08:19 Использование флагов Объяснение использования флагов для передачи адресов буферов в шейдер. Значение свойства памяти VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT_COHERENT. 12:21 Отображение памяти Объяснение необходимости указания флагов при отображении памяти. Роль карты в обеспечении доступа центрального процессора к памяти графического процессора. 13:47 Расчёт вращения Демонстрация расчёта поворота кубов. Влияние комментирования фрагментов кода на вращение кубов. 16:16 Заключение Подведение итогов: расчёт вращения по осям запись данных в графический процессор копирование и отображение данных. Получение указателей устройства на данные в памяти графического процессора. 17:13 Получение адреса буфера устройства KHR Использование функции VK get buffer device address KHR PFN для получения адреса буфера устройства. Применение адреса буфера при подготовке унифицированных буферов для сцены и куба. Эксперименты с получением адресов буферов в графическом процессоре. 19:26 Необходимость функции расширения Функция расширения необходима для получения адреса буфера и передачи его в шейдер. Отключение функции приводит к сбою при запуске кода. Подчёркивается важность функции для корректной работы приложения. 21:32 Передача данных через push-константы Указатели на ссылки на буферы передаются с помощью констант push. Шейдер считывает данные с адреса буфера. Объяснение структуры push-констант и их использования в конвейере. 22:49 Создание конвейера и использование push-констант При создании конвейера объявляются константы push. Флаг этапа указывает на вершинный шейдер. Логика использования push-констант для передачи данных в шейдер. 26:00 Структура блока push-констант Создание блока push-констант с ссылками на сцену и модель. Формат команды strut для передачи данных в шейдер. Передача структуры strut в графический процессор через VKCMD push constants. 30:44 Отправка констант в шейдер Операция отправки констант через VKCMD происходит в командном буфере. Загрузка адресов буферных устройств в командный буфер. Передача указателей на буфер данных куба через адрес буферного устройства. 36:39 Работа шейдера с данными Подключение расширения для буфера в вершинном шейдере. Получение констант push-уведомлений и данных сцены и модели. Вычисление позиции GL в шейдере на основе полученных данных. 39:01 Важность порядка запросов данных Подчёркивается важность порядка запросов данных для корректной работы приложения. Изменение порядка запросов может привести к проблемам. Подтверждение необходимости соблюдения порядка запросов для успешного отображения данных. 39:18 Загрузка данных сцены и модели Сначала загружаются данные сцены затем данные модели. Данные передаются в вершинный шейдер через VK CMD push constants. 40:29 Использование переменных в шейдере Ссылка на матрицу данных сцены равна push constants. Переменные используются для вычислений в шейдере. 41:14 Эксперименты с вычислениями Демонстрация важности позиции GL через эксперименты с вычислениями. Изменение размера блоков при удалении определённых фрагментов кода. 44:27 Работа шейдера на графическом процессоре Шейдер работает на стороне графического процессора. Возможность вычисления позиции в GL между операциями. 46:42 Ограничения и структуры данных Ограничение на максимальное количество кадров. Структура данных: блок констант VK адрес сцены VK адрес модели VK. 48:36 Адресация буферных устройств 49:58 Создание буфера и загрузка данных 52:13 Запросы буферов 54:32 Рекомендации по использованию 56:24 Структура кода 58:18 Заключение,
Похожее видео