Vulkan Real-Time Ray Tracing

Vulkan Real-Time Ray Tracing

    本文会介绍使用Vulkan来实现实时光线追踪的过程。

    Vulkan是一个低开销、跨平台的二维、三维图形与计算的API,比起OpenGL更加底层,更加底层意味着可以优化性能表现的地方更多,可以提供较高的性能表现。

    光线追踪(英语:ray tracing)是三维计算机图形学中的特殊渲染算法,追踪光线从来源开始照射到物体上,再由物体反射的光线“路径”,由于完整运算所有路径十分消耗运算资源,因此现有光线追踪技术仅运算“目所能及”的光线路径。

    实时光线追踪(Real-Time Ray Tracing)原理上与光线追踪没有区别,而是使用了硬件加速、减少采样量、步进长度来减少计算量,最后可以达到实时水平(每秒可以绘制多帧画面)。细节可以参考高质量实时渲染:实时光线追踪

    图1是实时光追在 Wolfenstein: Youngblood 中的应用对比。
    2020-Real-time-ray-traced-reflections-in-Wolfenstein-01

    图1 (左侧没有开启反射 右侧开启光线追踪的反射)

    技术路线

    1 学习vulkan

    过程: 通过学习https://vulkan-tutorial.com/https://vkguide.dev/ 来初步掌握Vulkan的基本概念
    https://github.com/yufeiran/LearnVulkan

    2 搭建一个可以渲染多个物体的小框架

    https://github.com/yufeiran/miniVulkanRender
    Vulkan:用dynamic uniform绘制多个物体

    3 开始学习Ray Tracing

    准备学习一些tutorial:NVIDIA Vulkan Ray Tracing Tutorials,然后自己实现一个小的光线追踪框架
    同时学习gltf格式:https://github.khronos.org/glTF-Tutorials/gltfTutorial/

    硬件加速光线追踪原理解析

    我对显卡如何实现硬件加速光追的细节比较感兴趣,查了一些资料,整理成ppt:

    CSIG竞赛相关材料

    比赛链接

    DemoVideo

    0:00
    /

    文档

    渲染器实现

    在完成竞赛后,我也自行实现了一个自己的渲染器 https://github.com/yufeiran/miniVulkanRenderer2

    参考链接

    原理

    高质量实时渲染:实时光线追踪
    深入GPU硬件架构及运行机制

    tutorial

    RayTracingInVulkan
    NVIDIA Vulkan Ray Tracing Tutorials

    AMD 硬件加速光追原理

    https://zhuanlan.zhihu.com/p/337151778