Vulkan Real-Time Ray Tracing

Share

本文会介绍使用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:

📁 File: Hardware acceleration ray tracing principles design and applications Download
📁 File: Hardware acceleration ray tracing principles design and applications Download

CSIG竞赛相关材料

比赛链接

📁 File: AwardMaterials Download
📁 File: RayTracingReport Download

DemoVideo

文档

📁 File: RaytracingDocument Download

渲染器实现

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

参考链接

原理

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

tutorial

RayTracingInVulkan
NVIDIA Vulkan Ray Tracing Tutorials

AMD 硬件加速光追原理

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

Read more

可多路视频播放的VisionOS 媒体查看器开发

可多路视频播放的VisionOS 媒体查看器开发

开发一款能够同时播放多个视频的vision pro媒体查看器。 0:00 /0:40 1× 缘起 Vision Pro 发布时我就特别想买,毕业工作后终于有资金购入并加入Apple开发者计划,从今年五月到现在也用了快小半年,用起来确实挺爽。 但是有些痛点还是很难受,其中一个痛点就是无法同时播放多个视频音频(实际上VisionOS提供了同时播放音频的API,但是似乎我用的APP都是不遵守🤣 导致都在抢占),因此为了满足我自己的这个痛点,也学习一下Vision OS 的应用开发,甚至完成度足够的话考虑上架App Store,便有了这个目标是多视频同时播放的媒体查看器项目。 现有工作 我购买了4XVR、Infuse、Moon Player、ES 文件助手(这款只有iPad OS版,不是专供Vision OS的),这几个月体验下来,全都存在我提到的和其他APP抢占音频通道,无法同时播放的问题,其他的我的主观的体验如下: 4XVR:使用最多,用起来最舒服,格式支持很全,VR视频也能看,号称全v

By Feiran Yu