#063 Vulkan API: Трассировка лучей 10.0: Процедурная геометрия - Обнаружение сфер с помощью AABBs
00:00 Введение в тему • Приветствие и объявление темы выпуска: процедурная геометрия с трассировкой лучей. • Упоминание о свободном доступе примеров в интернете. 00:44 Установка необходимых компонентов • Необходимость установки Vulkan API и примеров для запуска образцов на компьютере. • Ссылка на учебники: первый для установки Vulkan, пятнадцатый для установки примеров. 01:23 Обновление кода • Автор алгоритма периодически обновляет код, поэтому версия на GitHub может отличаться от текущей. • Возможность просмотра предыдущих версий кода на GitHub. 02:20 Примеры трассировки лучей • Объяснение, что все примеры в видео связаны с трассировкой лучей. • Ограничения для графических процессоров без поддержки трассировки лучей. 04:02 Процедурная геометрия • Описание процедурной геометрии: создание сфер без использования трёхмерных моделей. • Преимущества процедурной геометрии: минимизация нагрузки на память и обработку. 06:16 Применение процедурной геометрии • Примеры использования процедурной геометрии в видеоиграх: создание ландшафтов, одежды, деревьев. • Важность понимания трассировки лучей в контексте процедурной геометрии. 07:28 Ограничивающие рамки AABB • Объяснение работы ограничивающих рамок AABB: трёхмерный квадрат, окружающий сферу. • Регистрация пересечений лучей с AABB для обнаружения сфер. 08:49 Анализ кода • Обзор структуры кода: структуры ускорения, шейдеры, унифицированные данные. • Детальное объяснение работы AABB и регистрации пересечений. 13:24 Генерация сфер • Использование буферов для описания процедурной геометрии. • Случайная генерация описания сферы: центр, радиус, материал. • Повторение процесса для создания множества сфер. 14:32 Демонстрация результата • Визуализация множества сфер без использования треугольников. • Проверка алгоритма на примере одной сферы для демонстрации работы. 15:09 Генерация сфер • Создание одной сферы с случайным положением. • Генерация десяти сфер с разными цветами и расположениями. • Упоминание о возможности генерации ста сфер. 16:03 Буфер с ограничивающими рамками • Случайная генерация местоположения сфер. • Вставка сфер в буфер с выровненными по осям ограничивающими рамками. • Использование буфера для обнаружения попаданий при трассировке лучей. 17:01 Проверка работы буфера • Попытка прокомментировать код и проверить его работу. • Объяснение, что без ограничивающих рамок сферы не видны. • Подтверждение важности буфера для обнаружения сфер. 19:31 Копирование буфера на устройство • Объяснение роли хоста и устройства в компьютерной графике. • Копирование буфера на графический процессор для повышения производительности. • Преимущества размещения данных в графическом процессоре. 21:28 Промежуточный буфер и его уничтожение • Перемещение сфер и ограничивающих рамок в промежуточный буфер. • Уничтожение промежуточного буфера после завершения использования. • Важность организации среды программирования. 22:28 Структура ускорения нижнего уровня • Создание структуры ускорения нижнего уровня для процедурной геометрии. • Использование выровненных по осям ограничивающих рамок как геометрии. • Передача данных для реальных сфер в другом месте. 25:04 Расчёт размера структуры ускорения • Получение информации о размере структуры ускорения. • Расчёт необходимого размера для ускорения. • Параметры для создания структуры ускорения: устройство, тип сборки, информация о сборке, размер. 27:23 Создание структуры ускорения на устройстве • Создание структуры ускорения на устройстве с помощью одноразовой отправки буфера команд. • Предпочтение построения структуры ускорения на устройстве перед хостом. 27:50 Введение в Vulkan • Функция «вконтакте» со строчной буквы указывает на серьёзный уровень работы. • Vulkan требует детальной настройки и декларации всех параметров. • Контроль над процессом — благословение, но необходимость декларирования — проклятие. 29:36 Сравнение с OpenGL • OpenGL упрощает работу, но ограничивает контроль. • Vulkan позволяет оптимизировать работу и использовать преимущества аппаратного обеспечения. • В OpenGL всё делается за вас, в Vulkan — вручную. 30:36 Структура ускорения • Структура ускорения верхнего уровня содержит экземпляры объектов scenes. • Отключение структуры ускорения нижнего уровня приводит к отсутствию ограничивающих рамок и видимых объектов. • Возвращение структуры ускорения нижнего уровня восстанавливает видимость объектов. 33:06 Матрица преобразования • Матрица преобразования влияет на видимость объектов. • Изменение масштаба матрицы может привести к разделению объектов. • Трансформация ограничивающей рамки влияет на восприятие сцены. 35:54 Буферы и шейдеры • Создание буфера для данных экземпляра. • Таблицы привязки шейдеров связывают программы и структуру ускорения верхнего уровня. • Шейдеры трассировки лучей извлекают свойства из буфера сфер. 39:43 Конвейер трассировки лучей 43:03 Перекрёсток и хит-парады
00:00 Введение в тему • Приветствие и объявление темы выпуска: процедурная геометрия с трассировкой лучей. • Упоминание о свободном доступе примеров в интернете. 00:44 Установка необходимых компонентов • Необходимость установки Vulkan API и примеров для запуска образцов на компьютере. • Ссылка на учебники: первый для установки Vulkan, пятнадцатый для установки примеров. 01:23 Обновление кода • Автор алгоритма периодически обновляет код, поэтому версия на GitHub может отличаться от текущей. • Возможность просмотра предыдущих версий кода на GitHub. 02:20 Примеры трассировки лучей • Объяснение, что все примеры в видео связаны с трассировкой лучей. • Ограничения для графических процессоров без поддержки трассировки лучей. 04:02 Процедурная геометрия • Описание процедурной геометрии: создание сфер без использования трёхмерных моделей. • Преимущества процедурной геометрии: минимизация нагрузки на память и обработку. 06:16 Применение процедурной геометрии • Примеры использования процедурной геометрии в видеоиграх: создание ландшафтов, одежды, деревьев. • Важность понимания трассировки лучей в контексте процедурной геометрии. 07:28 Ограничивающие рамки AABB • Объяснение работы ограничивающих рамок AABB: трёхмерный квадрат, окружающий сферу. • Регистрация пересечений лучей с AABB для обнаружения сфер. 08:49 Анализ кода • Обзор структуры кода: структуры ускорения, шейдеры, унифицированные данные. • Детальное объяснение работы AABB и регистрации пересечений. 13:24 Генерация сфер • Использование буферов для описания процедурной геометрии. • Случайная генерация описания сферы: центр, радиус, материал. • Повторение процесса для создания множества сфер. 14:32 Демонстрация результата • Визуализация множества сфер без использования треугольников. • Проверка алгоритма на примере одной сферы для демонстрации работы. 15:09 Генерация сфер • Создание одной сферы с случайным положением. • Генерация десяти сфер с разными цветами и расположениями. • Упоминание о возможности генерации ста сфер. 16:03 Буфер с ограничивающими рамками • Случайная генерация местоположения сфер. • Вставка сфер в буфер с выровненными по осям ограничивающими рамками. • Использование буфера для обнаружения попаданий при трассировке лучей. 17:01 Проверка работы буфера • Попытка прокомментировать код и проверить его работу. • Объяснение, что без ограничивающих рамок сферы не видны. • Подтверждение важности буфера для обнаружения сфер. 19:31 Копирование буфера на устройство • Объяснение роли хоста и устройства в компьютерной графике. • Копирование буфера на графический процессор для повышения производительности. • Преимущества размещения данных в графическом процессоре. 21:28 Промежуточный буфер и его уничтожение • Перемещение сфер и ограничивающих рамок в промежуточный буфер. • Уничтожение промежуточного буфера после завершения использования. • Важность организации среды программирования. 22:28 Структура ускорения нижнего уровня • Создание структуры ускорения нижнего уровня для процедурной геометрии. • Использование выровненных по осям ограничивающих рамок как геометрии. • Передача данных для реальных сфер в другом месте. 25:04 Расчёт размера структуры ускорения • Получение информации о размере структуры ускорения. • Расчёт необходимого размера для ускорения. • Параметры для создания структуры ускорения: устройство, тип сборки, информация о сборке, размер. 27:23 Создание структуры ускорения на устройстве • Создание структуры ускорения на устройстве с помощью одноразовой отправки буфера команд. • Предпочтение построения структуры ускорения на устройстве перед хостом. 27:50 Введение в Vulkan • Функция «вконтакте» со строчной буквы указывает на серьёзный уровень работы. • Vulkan требует детальной настройки и декларации всех параметров. • Контроль над процессом — благословение, но необходимость декларирования — проклятие. 29:36 Сравнение с OpenGL • OpenGL упрощает работу, но ограничивает контроль. • Vulkan позволяет оптимизировать работу и использовать преимущества аппаратного обеспечения. • В OpenGL всё делается за вас, в Vulkan — вручную. 30:36 Структура ускорения • Структура ускорения верхнего уровня содержит экземпляры объектов scenes. • Отключение структуры ускорения нижнего уровня приводит к отсутствию ограничивающих рамок и видимых объектов. • Возвращение структуры ускорения нижнего уровня восстанавливает видимость объектов. 33:06 Матрица преобразования • Матрица преобразования влияет на видимость объектов. • Изменение масштаба матрицы может привести к разделению объектов. • Трансформация ограничивающей рамки влияет на восприятие сцены. 35:54 Буферы и шейдеры • Создание буфера для данных экземпляра. • Таблицы привязки шейдеров связывают программы и структуру ускорения верхнего уровня. • Шейдеры трассировки лучей извлекают свойства из буфера сфер. 39:43 Конвейер трассировки лучей 43:03 Перекрёсток и хит-парады
