gkNextEngine
一个人从零写起的现代渲染引擎。这一页讲它为什么存在、做了哪些取舍;想知道怎么用,去文档站。
为什么还要再写一个引擎
我做了十五年图形。前十年在 CryEngine、Unity、Unreal 里做效果、修 Crash、抠性能——用别人的引擎,把别人的抽象吃透。这件事的天花板很清楚:你能把管线调得很好,但管线本身长什么样,不由你决定。
2024 年 5 月,Vulkan 的硬件光追已经普及到移动端,路径追踪从”离线渲染的事”变成了”实时可以试试的事”。我想知道,如果不背任何历史包袱,从今天的硬件出发重新设计一遍渲染器,它会长成什么样。
所以有了 gkNextEngine。它不是要取代什么,它是我用来回答这个问题的实验场。
- 420+FPS
- 实时路径追踪
- 1/2 spp + 时域降噪
- 1600+FPS
- 延迟渲染
- Visibility Buffer 管线
- < 1GB
- 显存占用
- Full Bindless 资源管理
- 50kLOC
- 一方代码
- 不含第三方依赖
这些数字是在一台消费级显卡上跑出来的。1/2 spp 的意思是每两个像素才投一根光线——剩下的靠时域复用和降噪补回来。这是现代实时路径追踪能成立的关键,也是整个渲染器最花心思的地方。
一条硬约束:一方代码不超过 5 万行
这是我给自己定的唯一硬指标,而且它比任何性能数字都重要。
引擎腐烂的方式几乎都一样:功能越加越多,抽象越叠越厚,最后没人敢动核心。限制代码量是限制抽象层数——每加一个特性,都要回答”能不能不加一层”。5 万行逼着我在每个岔路口选更直接的那条路。
代价是它做不了通用引擎。它不支持所有格式、不兼容所有平台的所有版本、没有编辑器插件生态。这是刻意的取舍。
做了什么
现代 GPU 渲染设施
- 实时路径追踪:1/2 spp 采样 + 时域复用 + 重投影 + à-trous / JBF 降噪
- GPU-Driven 光栅管线:Visibility Buffer、Full Bindless、单 Draw 提交、Soft Mesh Shader
- 硬件 Ray Query、SHARC 世界辐射缓存与 ReSTIR DI 全局照明
- 3D Gaussian Splatting 与三角网格同帧共渲染
- 完整超分与抗锯齿链路:DLSS / DLSS-RR / FSR 3.1 / SGSR2 / Native TAAU
引擎基础设施与运行时
- entt ECS + entt::meta 反射,自动对接属性面板、撤销重做与脚本绑定
- ImGui 可视化编辑器:节点化材质图、cvar 实时调优、场景编辑
- QuickJS 嵌入式运行时 + TypeScript 热重载,无外部 Node 依赖
- Jolt Physics 集成:碰撞、抓取拖拽、角色与载具控制
- WebRTC 远程渲染 + Vulkan Video 硬件编码,浏览器零安装控制
内容管线与 AI Native 工作流
- 多格式结构化资产:glTF 2.0、LDraw 乐高、OpenSCAD DSL 原生解析与 CSG 求值
- AI Native 闭环:无头渲染截图判决、脚本驱动断言、CI 视觉回归与 Parity 校验
- 本地推理:llama.cpp / Gemma OpenAI 兼容服务,支持 AI 内容生成与运行时决策
工程工具链
- 统一 CLI gnb:doctor / setup / build / run / shot / validate / benchmark 一键工作流
- 逐 pass CPU/GPU Profiler(VulkanGpuTimer)与 Superluminal 深度集成
- 全平台构建:Windows / Linux / macOS / iOS / Android
一条时间线
- 2024.5项目启动,Vulkan 光追渲染器跑通第一帧
- 2024.9时域降噪与超分链路落地,路径追踪进入可交互帧率
- 2025.2Visibility Buffer + Full Bindless 的 GPU-Driven 管线成型
- 2025.6entt ECS 与反射系统重构,gkNextEditor 编辑器可用
- 2025.103DGS 共渲染、SHARC 辐射缓存、AI Native 工具链闭环
AI Native 不是加个聊天框
引擎里确实集成了 llama.cpp 和本地推理服务,但那不是重点。真正改变我开发方式的是另一条链路:
开发 → 无头渲染截图 → 脚本断言 → CI 视觉回归 → 差异校验
渲染器最难的地方在于,“错了”经常不表现为崩溃或报错,而是画面看起来不太对。传统单元测试对这个完全无能为力。我用 gnb shot 让引擎在无窗口环境下渲染指定场景并出图,再让 CI 逐帧比对——改了一行降噪代码,五分钟后就知道有没有把别的场景弄坏。
这条链路让 AI Agent 真正能参与渲染器开发:它改代码,CI 出图,图不对就回滚。闭环里有了客观判据,生成才有意义。
想深入的话
文档站有完整的快速开始、架构说明和 benchmark 数据。源码 MIT,随便拿去用。