gameknife / gkNextRenderer

A Modern gkRenderer
15 stars 2 forks source link

gkNextRenderer

windows ci linux ci macOS ci android ci

简介

2024主题:补课

本项目开始于GPSnoopy的RayTracingInVulkan 工程的fork,本身是一个非常工整的Vulkan渲染管线,作者在使用Vulkan的RayTracing管线实现了RayTracingInOneWeekend的GPU版本,性能很高。

基于其版本,增加了重要性采样,Shading模型,更全面的Model的加载,以及Reproject和降噪处理。使之更加走向标准的离线渲染器效果(Blender Cycles GPU)。

抽象了Renderer的概念,可以方便的改造多种渲染管线,配合扩展的benchmark系统,方便测试和对比各管线性能。

针对Vulkan的各种新特性,进行了大量学习,实现Visibility BufferGPU Indirect Draw等等,同时测试新特性在移动平台(Android)的兼容性与性能。结合传统渲染,实现了一个效果接近PathTracing的HybridRenderer,接近游戏运行时可用状态,并在支持光追的Android真机上流畅运行(30-60fps)

通过本项目,旨在补上在现代渲染上缺的课,同时更加深入的理解GPU光线跟踪,争取在下一个时代来临前做好准备。

是的,我认为将来光线跟踪一定会成为主流。

图库 (TrueHDR)

Alt text RayTracing Renderer - QX50

Alt text Hybrid Renderer - Lowpoly Track

Alt text Hybrid Renderer (Android) - QX50

Alt text Hybrid Renderer (Android) - Complex Cubes

Alt text RayTracing Renderer - LuxBall

Alt text RayTracing Renderer - Kitchen

Alt text RayTracing Renderer - Still

Alt text RayTracing Renderer - Cornell Box

特性

性能

在我的RTX4070上,1920x1080下,1spp + 多帧sample的情况下,图库内的场景基本都能跑出400-500fps的帧率。并且在后期完成reproject后,这个帧率是有可能在真实的实时渲染环境内达到的。rtx的性能出乎了我的意料

目前很多实现的细节还没有深究,应该还有一定的优化空间

原作者在benchmark方面做了一些框架型的工作,我引入了libcurl来上传benchmark分数,后期可以针对固定版本,作一些benchmark收集,也许做成一个光追性能的标准测试程序也有可能

Benchmarking

使用下列指令可以对单场景进行benchmark

gkNextRenderer.exe --width=1920 --height=1080 --scene=0 --benchmark

下列指令可以进行所有场景遍历benchmark

gkNextRenderer.exe --width=1920 --height=1080 --benchmark --next-scenes

目前benchmark结果会上传我的个人网站,进行信息统计

https://gameknife.site:60011/gpubenchmark?category=LuxBall&renderer=RayTracingRenderer

后续计划

Next Todolist

随感

首先,需要安装 Vulkan SDK。各个平台根据lunarG的指引,完成安装。其他的依赖都基于 Microsoft's vcpkg 构建,执行后续的脚本即可完成编译。 github action包含windows和linux的自动ci,如有问题可参阅解决。

Windows (Visual Studio 2022)

vcpkg_windows.bat
build_windows.bat

Linux

各平台需要提前安装对应的依赖,vcpkg才可以正确运行。

例如,ubuntu

sudo apt-get install curl unzip tar libxi-dev libxinerama-dev libxcursor-dev xorg-dev
./vcpkg_linux.sh
./build_linux.sh

SteamDeck Archlinux

sudo steamos-readonly disable
sudo pacman devel-base
./vcpkg_linux.sh
./build_linux.sh

MacOS

brew install nasm
brew install molten-vk
brew install glslang
./vcpkg_macos.sh
./build_macos.sh

References