Skip to content

gameknife/gkNextRenderer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gkNextRenderer

English | 简体中文

windows ci linux ci macOS ci android ci

这是一个什么项目?

一句话简介

一个基于Vulkan的实时路径跟踪渲染器,目标是实现"质量"和"效率"能用于"实时游戏"的路径跟踪渲染。

技术特点

不同于目前游戏中实装的各种光追辅助技术,本项目的目标是最接近GroundTruth的路径跟踪, 不同于其他GPU PathTracer的实现,本项目的目标是实时,Benchmark使用全动态场景, 并提供最接近游戏的运行时环境(轻量级游戏引擎),验证实时光追的可行性,并实验最新的GPU特性,为下一代渲染架构作准备。

开发前提

本项目的初衷是:学习,验证,进步。因此,会激进的使用最新技术,有意的规避陈旧技术,利用新c++规范和标准库,全时跨平台开发。

子项目

  • gkNextRenderer: 主项目,路径追踪渲染器
  • gkNextEditor: 基于imgui的编辑器框架,用于编辑场景,完全依赖glb的读写
  • MagicaLego: 类似MagicaVoxel的乐高搭建游戏,全实时路径追踪渲染,用以验证目标
  • gkNextBenchmark: 专用的Benchmark程序,用于静态和实时场景的Benchmark
  • Packager: 将资产打包成pkg文件,用于快速部署
  • Portal: 子项目组合调用程序,提供可视化的各种部署,调试工具(计划中)

图库 (TrueHDR)

githubShow2.mp4

MegicaLego Games

githubShow.mp4

10 seconds Showcase Video

Alt text

RayTracing Renderer - QX50

Alt text

RayTracing Renderer - City

Alt text

RayTracing Renderer - Still

Alt text

RayTracing Renderer - PlayGround

Alt text

RayTracing Renderer - LuxBall

Alt text

RayTracing Renderer - Kitchen

Alt text

RayTracing Renderer - Living Room

Alt text

Hybrid Renderer (Android) - QX50

Alt text

Hybrid Renderer (Android) - Complex Cubes

技术特性

  • Rendering

    • Importance Sampling (BRDF / Light)
    • VNDF Sampling for GGX, by tigrazone
    • Ground Truth Path Tracing
    • Temporal Reproject with MultiSample catchup
    • High Performance Bilateral Filter Denoiser
    • OpenImageDenoise Denoiser* (need sdk)
    • Visibiliy Buffer Rendering
    • Reference Legacy Deferred Rendering
    • RayTraced Hybrid Rendering
    • Realtime Renderer Switch
    • GPU Draw
    • GPU Raycast
  • Engine

    • Multi-Platform support ( Windows / Linux / Mac / Android )
    • Global Bindless TexturePool
    • MultiThread Task Dispatcher ( Async Resource Loading and etc )
    • Full-Scope File Package System
    • Gpu scene updating
    • Aux Rendering
    • HDR Display Support
    • Screenshot HDR and encode to avif / jpg
  • Scene Management

    • Full GLTF Scene File Support ( Mesh / Texture / Material / Animation)
  • Editor

    • Full Imgui Pipeline
    • Node-based Material Editor

运行

  1. 下载最新的MagicaLego游戏版本,通过bin/MagicaLego.exe启动
  2. 下载最新Release版本,通过bin/*.exe直接启动
  3. 从头构建运行

构建方式

首先,需要安装 Vulkan SDK。各个平台根据lunarG的指引,完成安装。其他的依赖都基于 Microsoft's vcpkg 构建,执行后续的脚本即可完成编译。

项目的Github Action包含windows,linux,android的自动ci脚本,作者会维护其正确性。如有任何环境问题可参阅解决。

本地开发环境部署完成后,各平台可按一下脚本构建

Windows (Visual Studio 2022)

vcpkg_windows.bat
build_windows.bat

Windows (MinGW)

init the MSYS2 MINGW64 shell with following packages,the MSYS2's cmake is not competible with vcpkg, so use cmake inside.

pacman -S --needed git base-devel mingw-w64-x86_64-toolchain ninja

cmake's module FindVulkan has a little bug on MingGW, try modified FindVulkan.cmake as below set(_Vulkan_library_name vulkan) -> set(_Vulkan_library_name vulkan-1) then, execute scripts bellow

vcpkg_mingw.sh
build_mings.sh

Android On Windows

JAVA SDK should be JAVA17 or higher Install Android Studio or Android SDK Tool, with NDK 25.1.8937393 installed

set ANDROID_NDK_HOME=\path\to\ndk
#like: set ANDROID_NDK_HOME=C:\Android\Sdk\ndk\25.1.8937393
vcpkg_android.bat
build_android.bat
deploy_android.bat

Linux

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

例如,ubuntu

sudo apt-get install ninja-dev 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 -S devel-base ninja
./vcpkg_linux.sh
./build_linux.sh

MacOS

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

Next Todolist

  • GPU Frustum / Occulusion Culling
  • GPU Lod Swtiching
  • Huge Landscape

参考项目

随感

项目的发展,学习心得,一些随感,记录于 Thoughts.md,随时更新。