This repository contains a collection of sample applications and cross-platform, standalone, composable libraries written in Zig programming language. Project is under active development, see Roadmap and Progress Reports for the details.
To get started on Windows/Linux/Mac try out physically based rendering (wgpu) sample:
git clone https://github.com/michal-z/zig-gamedev.git cd zig-gamedev zig build physically_based_rendering_wgpu-run
Cross-platfrom (Win/Lin/Mac) libraries:
- zgpu - Cross-platform graphics layer built on top of native WebGPU API (Dawn)
- zmath - SIMD math library for game developers
- zbullet - Zig bindings and C API for Bullet physics library
- zmesh - loading, generating, processing and optimizing triangle meshes
- znoise - Zig bindings for FastNoiseLite
- znetwork - Zig bindings for ENet
- ztracy - support for CPU profiling with Tracy
- zpool - generic pool & handle implementation
- zwin32 - Zig bindings for Win32 API
- zd3d12 - helper library for working with DirectX 12
- zxaudio2 - helper library for working with XAudio2
- zpix - support for GPU profiling with PIX
- Interop with Direct2D and DirectWrite for high-quality vector graphics and text rendering (optional)
- Works on Windows, Linux and MacOS
- Has zero dependency except Zig compiler (master),
gitwith Git LFS and
curl- no Visual Studio, Build Tools, Windows SDK, gcc, dev packages, system headers/libs, cmake, ninja, etc. is needed
- Building is as easy as running
zig build(see: Building)
- Libraries are written from scratch in Zig or provide Ziggified bindings to carefully selected C/C++ libraries
- Uses native version of WebGPU API (mach/gpu) for cross-platfrom graphics and DirectX 12 for low-level graphics on Windows
I work on this project full-time and try to make a living from donations. If you like it, please consider supporting me. Thanks!
Cross-platfrom (Win/Lin/Mac) sample applications (native WebGPU)
Some of the sample applications are listed below. More can be found in samples directory.
physically based rendering (wgpu): This sample implements physically-based rendering (PBR) and image-based lighting (IBL) to achive realistic looking rendering results.
zig build physically_based_rendering_wgpu-run
procedural mesh (wgpu): This sample shows how to efficiently draw several procedurally generated meshes.
zig build procedural_mesh_wgpu-run
Windows sample applications (DirectX 12)
If you are new to DirectX 12 graphics programming I recommend starting with intro applications.
rasterization: This sample application shows how GPU rasterizes triangles in slow motion.
zig build rasterization-run
simple raytracer: This sample implements basic hybrid renderer. It uses rasterization to resolve primary rays and raytracing (DXR) for shadow rays.
zig build simple_raytracer-run
virtual physics lab: This sample application demonstrates how to use full 3D physics engine in your Zig programs.
zig build bullet_physics_test-run
mesh shader test: This sample shows how to use DirectX 12 Mesh Shader.
zig build mesh_shader_test-run
Building sample applications
To build all sample applications (assuming
zig is in the PATH and Git LFS is installed):
git clone https://github.com/michal-z/zig-gamedev.git
Build artifacts will show up in
zig build <sample_name> will build sample application named
zig build <sample_name>-run will build and run sample application named
To list all available sample names run
zig build --help and navigate to
All sample applications support the following build options:
-Drelease-safe=[bool]- Optimizations on and safety on
-Drelease-fast=[bool]- Optimizations on and safety off
-Denable-tracy=[bool]- Tracy profiler zones enabled
-Ddawn-from-source=[bool]- Build Dawn (WebGPU implementation) from source
Addidtional options for Windows applications:
-Denable-dx-debug=[bool]- Direct3D 12, Direct2D, DXGI debug layers enabled
-Denable-dx-gpu-debug=[bool]- Direct3D 12 GPU-Based Validation enabled (requires -Denable-dx-debug=true)
-Denable-pix=[bool]- PIX markers and events enabled
Thanks to all people who sponsor zig-gamedev project! In particular, these fine folks sponsor zig-gamedev for $25/month or more: