( Another ) Handmade ( mostly ) Game Engine. Made for fun with hellish passion I guess.
- Win10+
- Vulkan1.4+
- dedicated GPU ( preferably NV )
- Descriptor Indexing + BDAs for all ( bindless design )
- Frustum and Double pass HZB Occlusion culling ( Instance and Meshlets )
- Async GPU uploads
- Custom binary file format ( hpk - HellPack ) based on ZIP ( Quake 3 style )
- Asset compiler and exporter ( gltf -> hpk only ): features mesh optimization and tex compression
- Custom memory and job system
| File | What it does |
|---|---|
renderer.cpp |
Top-level render loop: culling, HZB, forward pass, ImGui, GPU profiler |
vk_backend.cpp |
Vulkan device init, swapchain, queues, async copy queue for texture/mesh uploads |
vk_context.h |
Device context: queues, command pools, VMA allocator, timestamp + pipeline-stats query pools |
vk_resources.h |
Typed wrappers for buffers, images, samplers, descriptor sets |
vk_sync.h |
Timeline semaphores, pipeline barriers |
| Stage | What it does |
|---|---|
c_draw_cull.hlsl |
Per-instance frustum + HZB occlusion cull (early + late pass); writes surviving instances into a GPU-side draw buffer |
c_meshlet_cull.hlsl |
Per-meshlet cone + HZB cull on surviving instances |
v_/f_vbuffer.hlsl |
Visibility buffer pass: rasterizes meshlets |
vbuffer.h |
Shared structs + pack/unpack helpers for the visibility buffer pixel format |
c_lambertian_clay.hlsl |
Reads the vbuffer, reconstructs geometry, shades with lambertian clay (debug/reference mode) |
ht_hlsl_lang.h |
HLSL utility macros (NOINTERP, NUMTHREADS, etc.) and SPIR-V capability constants shared across all shaders |
| File | What it does |
|---|---|
HellPack.cpp |
Entry point; multi-threaded orchestration of the GLTF → HellPack pipeline |
gltf_loader.h |
Ingests GLTF via cgltf into raw mesh/image views |
hp_encoding.h |
Vertex quantization and meshlet generation (via meshoptimizer) |
hp_bcn_compression.h |
BCn (BC1/BC7) GPU texture compression via bc7enc_rdo |
hp_serialization.h |
Writes the final .hellpack binary bundle (ZIP-based, Quake 3 style) |
| File | What it does |
|---|---|
sys_os_win.cpp |
Win32 window, Raw Input pump, file I/O, main loop |
engine_platform_common.h |
Platform↔engine interface: renderer_interface, ht_input_state, job_system_ctx |
HellTech.cpp |
Game-side logic: camera, input bindings, UI assembly, frame loop |
| File | What it does |
|---|---|
ht_gfx_types.h |
GPU-facing structs shared between C++ and GLSL shaders |
ht_mem_arena.h |
Virtual arena allocator (no heap fragmentation, O(1) alloc) |
hell_pack.h |
HellPack binary format definition |
- Remote: https://github.com/Eichenherz/HtLib.git ->
HtLib/ - Pull upstream changes:
git htlib-pull - Push local changes back:
git htlib-push - Aliases are local to this repo (
.git/config)
- meshoptimizer
- cgltf
- Dear ImGui
- ImGuiFileDialog
- VulkanMemoryAllocator
- bc7enc_rdo
- miniz
- unordered_dense
- dds
- OffsetAllocator
- minunit
- DirectXShaderCompiler ( comes with Win10SDK )



