( 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
Rendering Backend — Engine/
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
GPU Culling Pipeline — Shaders/
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
Asset Pipeline — HellPack/
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