Использование Vulkan API (через библиотеку), лекция 1/2

Репозиторий:
Лектор: Полярный Николай Вадимович 0:00:00 Введение в Vulkan, репозиторий с библиотекой
0:00:52 Структура репозитория 0:01:56 Vulkan суммирование A+B через вычислительный шейдер (compute shader) 0:05:07 GLSL вычислительный шейдер A+B (compute shader) 0:10:36 cmake add_custom_command для компиляции шейдеров с учетом зависимостей 0:12:46 Указание размера рабочей группы и ее проверка через SPIR-V рефлексию 0:15:20 Анализ SPIR-V байткода через spirv-reflect 0:17:16 Передача параметров через push constants 0:21:15 debugPrintfEXT в шейдере 0:27:09 Как выглядит запуск шейдера A+B со стороны хоста 0:33:42 Отличие Vulkan от OpenCL/CUDA - есть этап растеризации 0:35:09 Вершинный и фрагментный шейдеры (vertex shader + fragment shader) 0:36:00 Задание геометрии через вершины и тройки индексов 0:37:23 Порядок обхода вершин и back-face culling 0:39:48 Как настроить back-face culling в любой Vulkan-библиотеке (через поиск VkCullModeFlagBits) 0:43:14 Аллокация геометрии в обычных буферах в VRAM 0:47:33 Аллокация framebuffers для результата (цвет, глубина, индексы) 0:48:19 Вершинный шейдер (vertex shader), gl_Position, gl_FragDepth, система координат экрана и текстур 0:54:40 Глубина от 0 до 1, расширение VK_EXT_depth_range_unrestricted 0:56:35 Как выяснить долю поддержки Vulkan расширений/extensions среди видеокарт -
0:59:19 Поддержка Vulkan на Apple MacOS Silicon - MoltenVK 1:04:36 gl_Poisition и gl_FragDepth, bump mapping, displacement maps, normal maps 1:06:55 Растеризация треугольников и shape assembly 1:09:01 Собираем результаты gl_Position вершинного шейдера 1:11:02 Фрагментный шейдер для каждого пикселя внутри треугольника 1:13:33 Интерполяция gl_Position и глубины для пикселя-фрагмента внутри треугольника 1:17:28 Интерполяция произвольного атрибута через барицентрические координаты 1:21:00 Фрагментный шейдер и gl_PrimitiveID - индекс треугольника 1:24:11 Depth test, gl_FragDepth 1:27:48 Оптимизация через fast-code path если не используется gl_FragDepth (на примере face culling) 1:31:03 Использование gl_FragCoord из фрагментного шейдера чтобы узнать координаты пикселя 1:33:35 Отличие фрагмента от пикселя, antialiasing, multi-sampling, MSAA 1:35:19 Визуализировали gl_FragCoord цветом 1:38:16 Запуск шейдеров, указание размера viewport-а, bindings, framebuffers (с VkClear) 1:45:01 rassert-ы для проверки инварианта со стороны шейдера на GPU 1:47:00 Полигональная модель гнома .ply 1:49:53 Текстура и UV-mapping треугольников 1:52:08 Вершинный шейдер отрисовки гнома 1:55:55 Фрагментный шейдер отрисовки гнома, сэмплирование текстуры через texture(sampler, ...) 1:59:37 Нормализация координаты глубины в диапазон [0, 1] через поиск минимума/максимума 2:03:04 Поиск минимума/максимума через vertex shader и формулировка через fragment shader 2:05:09 Вычислительный шейдер (computation shader) для поиска минимума/максимума

Смотрите также