Skip to content

wht0224/HT-Engine

Repository files navigation

HT_Engine

"We don't train models. We define worlds."

A high-performance Python game engine focused on realistic rendering and large-scale open-world simulation with a unique blend of static-baked and real-time rendering techniques.


Crytek Sponza Benchmark(当前状态)

Sponza Screenshot

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  模型: Sypest 的 Crytek Sponza (glTF)
  顶点: 192,496    三角形: 262,267
  子网格: 25       Draw Call: 1 (MultiDrawIndirect)
  纹理: 每子网格独立纹理 (Texture2DArray)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  GPU: NVIDIA GTX 750 Ti / 2GB VRAM / OpenGL 4.5
  分辨率: 窗口原生 + 0.9x 内部缩放
  后期: SSAO + SSR + 体积光 + Bloom + 运动模糊
  阴影: 烘焙 2048×2048 + 动态管线就绪(双系统)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  FPS: 26-30 (由于后台占用会有波动)     GPU: ~13ms    CPU: ~13ms
  Shadow(GPU): 0ms    Draw(GPU): ~6ms    PostFX(GPU): ~4ms
  Shadow(CPU): 0ms    UBO: 0.1ms   Draw(CPU): 0.6ms
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

核心技术栈

渲染管线

特性 实现
渲染模式 SingleDC — 25 子网格合并为 1 次 MultiDrawIndirect
纹理 Texture2DArray,单次绑定,shader 内索引
阴影视静态 Baked Shadow Map (2048×2048),一次离屏渲染,0 每帧开销
影子动态 双缓冲异步 Shadow Pass,相机跟随,与烘焙影子 min() 混合
着色器 GLSL 450,PerFrame / Draw / Material 三 UBO
Tonemapping ACES 近似
PCF 5×5 Poisson 采样,动态部分由 uHasDynamic 开关按需关闭

后期特效

SSAO(环境光遮蔽)→ SSR(屏幕空间反射)→ 体积光 → Bloom → 运动模糊。

全部跑在 0.9x 内部分辨率上,硬件 bilinear 升采样回全屏。

优化手段

优化 效果
MultiDrawIndirect 25 draw → 1 draw
Uniform 缓存 glGetUniformLocation 从每帧 54 次降到 1 次
异步 Shadow 影子渲染放到帧末尾,主渲染不等待
烘焙 Shadow 静态场景影子 0 开销
uHasDynamic 开关 无动态物体时 shader 跳过第二趟 PCF
0.9x 渲染缩放 81% 像素,省 20% GPU 填充率
Draw UBO 按需更新 静态场景复用缓存,动态物体自动刷新

系统要求

  • Python 3.10+
  • OpenGL 4.5 兼容显卡(需要 ARB_shader_draw_parameters、ARB_multi_draw_indirect)
  • 最低测试: NVIDIA GTX 750 Ti (2014) — 30 FPS
  • 推荐: NVIDIA GTX 1650 或更高

快速开始

pip install -r requirements.txt

# Sponza 基准测试
python sponza_benchmark.py

操作: WASD 移动 | 鼠标旋转 | ESC 退出


项目架构

HT-Engine/
├── Engine/
│   ├── Renderer/
│   │   ├── Pipelines/ForwardRenderer.py   # 前向渲染管线(核心)
│   │   └── Resources/                     # Mesh, Material, 模型加载
│   ├── Scene/                             # 场景图、相机、光照
│   ├── Math/                              # Vector3, Matrix4x4
│   ├── UI/FirstPersonController.py        # 第一人称控制器
│   └── Natural/                           # 后期特效引擎
├── Shaders/                               # GLSL 着色器源文件
├── sponza_benchmark.py                    # Sponza 基准测试
└── engine_config.json                     # 引擎配置

许可

Apache License 2.0


"We don't train models. We define worlds."

— Wang Ruilin, Creator of HT_Engine

About

A high-performance Python game engine with symbolic AI for environment simulation

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors