Skip to content

mfkiwl/gkNextEngine

 
 

Repository files navigation

gkNextRenderer

English | 简体中文

Ask DeepWiki

windows ci linux ci macOS ci android ci

这是一个什么项目?

一句话简介

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

技术特点

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

开发前提

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

贡献指南

如果你计划提交补丁或新特性,请先阅读仓库的贡献指引:Repository Guidelines

子项目

  • 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.bat windows
build.bat windows

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.sh mingw
build.sh mingw

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.bat android
build.bat android
deploy_android.bat

Linux

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

例如,ubuntu

sudo apt-get install ninja-dev curl unzip tar libxi-dev libxinerama-dev libxcursor-dev xorg-dev
./vcpkg.sh linux
./build.sh linux

SteamDeck Archlinux

sudo steamos-readonly disable
sudo pacman -S devel-base ninja
./vcpkg.sh linux
./build.sh linux

MacOS

brew install molten-vk
brew install glslang
brew install ninja
./vcpkg.sh macos
./build.sh macos

Next Todolist

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

参考项目

随感

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

About

gkNextEngine: cross platform 3D game engine written in modern c++ and vulkan with modern rendering features.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • C++ 73.3%
  • Slang 14.2%
  • GLSL 4.3%
  • CMake 2.9%
  • Python 2.2%
  • Shell 1.6%
  • Other 1.5%