Skip to content

Progress Reports

Michal Ziulek edited this page Mar 14, 2023 · 154 revisions

March 2023

February 2023

  • Added zopengl with support for OpenGL 3.3 (Core Profile)
  • Added zsdl (WIP) - bindings for SDL2
  • Added zflecs (WIP) - bindings for flecs ECS
  • Added minimal gl sample application (SDL2 + OpenGL 3.3)
  • Massive build system refactor, we now compile all packages only once and share artifacts between all sample apps, tests and benchmarks
  • Improved and simplified all our build scripts, adapted to the latest Zig build API
  • zgui:
    • Exposed beginPopupContextItem() (contributed by foxnne)
    • Exposed advanced primitive reserve/write API (contributed by Jack)
    • Exposed pushTextWrapPos() and popTextWrapPos() (contributed by Aksel Hjerpbakk)
    • Exposed API for getting current index from DrawList (contributed by Jack)
    • Exposed API for getting white UV from atlas (contributed by Jack)
    • zgui can now be compiled as a shared library (contributed by Casey Banner)
  • zmath:
    • Added prefer_determinism build option
    • Fixed zmath.inverse() which could return zero matrix in some cases (contributed by Jack)
  • zbullet:
    • Added Body.setCollisionFlags() (contributed by Andreas Arvidsson)
    • Added missing friction functions: setRollingFriction(), setSpinningFriction() and setAnisotropicFriction() (contributed by Andreas Arvidsson)
  • zstbi:
    • Added Image.createEmpty()
    • Added Image.writeToFn() (contributed by foxnne)
    • Renamed Image.init() -> Image.loadFromFile()
    • Renamed Image.initFromData() -> Image.loadFromMemory()
    • Updated stb_image to the latest version (2.28)
  • zmesh:
  • bindless:
    • Demo now uses zmesh.opt.simplifySloppy() to create LODs (contributed by Giuseppe Modarelli)
    • Demo now uses .DDS textures with pre-generated mipmaps (contributed by Giuseppe Modarelli)
  • zd3d12:

January 2023

  • Released zphysics v0.0.4
  • Released Jolt Physics C v0.0.4
  • Modified D3D12 samples so that it is now possible to run and build them also on Linux (Wine + VKD3D-Proton 2.8)
  • Re-wrote minimal d3d12 sample application. It now has no dependencies except Win32/D3D12 bindings. It can be run and developed also on Linux.
  • (Re-)Added audio playback test sample application (DirectX 12, WASAPI)
  • (Re-)Added audio experiments sample application (DirectX 12, XAudio2)
  • (Re-)Added directml convolution test sample application (DirectX 12, DirectML)
  • (Re-)Added zxaudio2 helper library for XAudio2
  • zaudio:
    • Added AudioBuffer which is a higher-level DataSource and can be used to create sounds from memory
  • zgui:
    • Added getItemRectMax() and getItemRectMin() functions (contributed by Yusuf Bera Ertan)
    • Updated 'dear imgui' to the latest version (1.89.2)
    • Added addInputCharactersUTF8() + some minor fixes (contributed by Aksel Hjerpbakk)
    • Exposed isMouseDoubleClicked(), setKeyboardFocusHere(), beginPopupContextWindow() and setItemDefaultFocus() (contributed by Aksel Hjerpbakk)
    • Exposed setClipboardText() and getClipboardText() (contributed by Yusuf Bera Ertan)
  • zwin32:
    • Updated binaries to the latest versions (D3D12Core, XAudio2, DirectML, dxc compiler etc.)
    • Added latest interfaces to d3d12.zig (IDevice11, IGraphicsCommandList9, etc.)
    • Updated bindings to use packed struct(UINT) for 'flag types' (instead of just UINT)
    • Code re-org, moved kernel32, user32, etc. to a single namespace (w32.zig).
    • Added dxc (HLSL shader compiler) binaries for Linux
  • zd3d12:
  • zstbi:
    • Added support for image writing and resizing (contributed by Yusuf Bera Ertan)
  • zmath:
    • Added getScaleVec() and getRotationQuat() to zmath.util (contributed by Jack)
    • Added orthographicLhGl(), orthographicRhGl(), orthographicOffCenterLhGl(), orthographicOffCenterRhGl() and perspectiveFovLhGl() (contributed by castholm)

November, December 2022

  • zgpu:
    • Significantly reduced Dawn (WebGPU) binaries, for example, dawn.lib went from 123 MB to 39 MB on Windows
    • Updated Dawn binaries, they are now build from the latest source code as of 2022.11.04
  • zphysics:
    • Released JoltC v0.0.2 C bindings for Jolt Physics C++, we have basically re-written our initial implementation, it is now safer, more readable and there is less code
    • A lot of work has been done on Zig bindings for Jolt Physics C++, zphysics v0.0.2 will be released soon
    • Released small physics demo as a POC (Zig + Jolt Physics), see here and here
  • zaudio:
    • Version 0.9.2 has been released with some API cleanups and simplifications
    • miniaudio has been updated to the latest version
  • zglfw:
    • Version 0.5.2 has been released with more complete and simpler API
  • zgui:
    • Updated dear imgui and implot to the latest versions
    • Exposed modal popup API
    • Exposed viewport fields
    • Exposed Table API
    • Exposed color functions
    • Exposed API for managing custom DrawLists
    • Thanks to Jack and Pyrolistical for contributions
  • DirectX 12 libraries and demos have been finally ported to Zig stage3 compiler:
  • zmath:
    • Version 0.9.5 has been released with minor fixes and a new util module (contributed by Anders Elfgren)

September, October 2022

  • zgpu v0.9 has been released:
    • This release provides stable API (only minor breaking changes are possible from now on)
    • Dawn binaries are now fetched as a submodule using Git LFS (no more curl dependency)
    • Small fixes and API improvements
  • zgui v0.9 has been released:
    • This release provides stable API (only minor breaking changes are possible from now on)
    • Added DrawList API
    • Added Menus, Tabs and Popups
    • Plot API has been refactored and now exposes much more features
    • Small fixes and API improvements
  • zaudio v0.9 has been released:
    • This release provides stable API (only minor breaking changes are possible from now on)
    • Removed translate-c dependency
    • Small fixes and API improvements
  • zmath v0.9 has been released:
    • This release provides stable API (only minor breaking changes are possible from now on)
    • Removed all workarounds for compiler bugs
    • Added qidentity()
    • Small fixes and API improvements
  • zstbi v0.9 has been released:
    • This release provides stable API (only minor breaking changes are possible from now on)
    • Completely redesigned API
  • zmesh v0.9 has been released:
    • This release provides stable API (only minor breaking changes are possible from now on)
    • Small fixes and API improvements
  • Added zjobs v0.1 - generic job queue implementation (contributed by Garett Bass)
  • Added instanced pills (wgpu) sample application (contributed by Pyrolistical)
  • Added layers (wgpu) sample application (contributed by Pyrolistical)
  • gui test (wgpu) has been extended to test DrawList API and Plot API
  • zglfw exposes more functionality now
  • Improved root build.zig
  • Jolt Physics C bindings expose much more functionality now
  • Added system-sdk - minimal package that contains all system dependencies for Windows, macOS and Linux
  • Removed all symlinks from the project

August 2022

  • All cross-platform demos and libs are now compatible with Zig stage3 compiler
  • zgui has been extracted from zgpu and is now a separate lib
  • zstbi has been extracted from zgpu and is now a separate lib
  • All submodules have been removed from the project (for easier vendoring)
  • Added zglfw - simple and lightweight GLFW 3.3.8 bindings with no translate-c dependency (functional but not yet complete)
  • Added JoltC - C bindings for excellent Jolt Physics (still WIP)
  • Added text editing widgets to zgui
  • Connor Rowland added ImPlot support to zgui (thanks!)
  • Chris Heyes helped with JoltC (thanks!)

July 2022

  • zgpu v0.2 has been released:
    • Added very lightweight, single file, zero-overhead WebGPU bindings
    • Added zgui - bindings for dear imgui library with nice and easy to use interface
  • Implemented gui test (wgpu) sample application
  • zaudio v0.2 has been released:
    • Node graphs
    • Audio filters (low-pass, high-pass, notch, peak, low shelf, high shelf, delay)
    • Data sources (waveform generators, noise generators)
    • API cleanups and improvements
  • Implemented audio experiments (wgpu) sample application (video)

June 2022

May 2022

  • Implemented physically based rendering (wgpu) demo
  • Implemented textured quad (wgpu) demo
  • Added zpool library - generic pool & handle implementation (contributed by Garett Bass)
  • Cleanups, improvements and new features in zgpu:
    • Completed our GPU mipmap generator
    • We now use zpool for resource pools and handles (contributed by Garett Bass)
    • Simplified structure of the package (single folder)
    • Added zgpu.util namespace which contains helper functions
  • Refactored our build system, build options and package dependencies handling
  • Added few helper functions to zmath for better ergonomics
  • zbullet now uses multi-threading by default
  • Added bullet physics test (wgpu) demo which will showcase fast multi-threaded physics and cross-platform graphics (WIP)
  • zmesh got full bindings to cgltf library (zcgltf)
  • zmesh.Shape can now use 16-bit or 32-bit indices (set via build option)

April 2022

  • zig-gamedev got new, fully cross-platform renderer based on WebGPU (uses mach/gpu bindings and its great build script).
  • Added zgpu, our helper library for working with WebGPU. Currently it provides:
    • handle-based resource pools
    • uniform buffer pool for efficient CPU -> GPU transfers
    • GPU-based mipmap generator (in the works)
  • Added triangle (wgpu) sample application (works on Windows, Linux and MacOS).
  • Added procedural mesh (wgpu) sample application (works on Windows, Linux and MacOS).
  • zmesh v0.2 released (cross-platform and standalone).
  • ztracy got fibers support (contributed by Brian Gold).

March 2022

  • zmath v0.3 released (cross-platform and standalone)
  • zbullet v0.1 released (cross-platform and standalone)
  • zmesh v0.1 released (cross-platform and standalone)
  • znoise v0.1 released (cross-platform and standalone)
  • zenet released (cross-platform and standalone)
  • ztracy now exposes full Tracy profiler C API and is easier to use (cross-platform and standalone)
  • Added procedural mesh sample application
  • Added minimal d3d12 sample application
  • Added network_test sample application
  • Completed intro 6 sample application
  • Added top level 'test step', zig build test runs all project tests

February 2022

  • zmath 0.3 (wip)
    • Added Fast Fourier Transform functions - fft(), ifft() + extensive test coverage
    • Added few missing matrix functions (contributed by Chris Heyes)
  • zbullet 0.1 (wip)
    • Builds on top of our cbullet C API and provides Zig bindings for Bullet Physics SDK
    • Added intro 6 (wip) which shows how to use it
    • Uses Zig General Purpose Allocator for all memory allocations inside Bullet
  • All libraries have been divided into standalone packages (it is now much easier for the users to take only selected components)
  • Added short READMEs for all libraries
  • Added top level build script
    • zig build builds all sample applications and places them in zig-out/bin folder
    • zig build <sample_name> builds sample applications named <sample_name>
    • Removed batch files which are not needed anymore
  • Added a lot of D3D11 bindings (contributed by Chris Heyes)
  • Cleaned up error handling code (contributed by Chris Heyes)
  • Added visualization to audio experiments sample application (still wip)
  • Direct2D and DirectWrite is now an optional dependency - first step for Linux compatibility (Wine)

January 2022

  • 174 commits (1,127 in total)
  • zmath lib 0.2 is ready
    • Much improved API
    • Support for common matrix operations
    • Support for common quaternion operations
    • More fast SIMD trigonometry functions (atan, atan2, asin, acos)
    • Support for vector width 16 (4 x SIMDx4, 2 x SIMDx8, SIMDx16)
  • Implemented 6 intro applications for people wanting to learn how to use the framework
  • Implemented rasterization sample application

December 2021

  • 154 commits (943 in total)
  • Implemented mesh shader test
  • Implemented audio lib with support for playing audio streams and sound effects (can decode most audio formats *.mp3, *.flac, *.ogg, *.wav and more)
  • Working on audio experiments sample application - currently it plays music (with reverb on/off) and sound effects - next step is to add visualization and custom DSP
  • Working on high-performance, SIMD math library called zmath (fully cross-platform and standalone)
  • Added some missing definitions in d3d12.zig (contributed by Giuseppe Modarelli)

November 2021

  • 171 commits (773 in total)
  • Implemented cbullet - C API for Bullet Physics SDK
  • Implemented physics demo
  • Added XAudio2 API bindings
  • Graphics lib will now select highest performance GPU during initialization (contributed by Giuseppe Modarelli)
  • zig-gamedev v0.2.0 with above changes has been released - source code and prebuilt binaries are here

October 2021

  • 205 commits (571 in total)
  • First public release (zig-gamedev-bin-v0.1.0.7z)
  • 8 sample applications (pbr, raytracing, low-level audio playback using WASAPI, DirectML convolution, vector graphics and more)
  • 4 libraries (graphics lib, vectormath lib, tracy lib, pix lib)

July, August, September 2021

  • 366 commits
  • Working on the project in private repo
  • API bindings for D3D12, DirectML, Direct2D, DirectWrite, WASAPI done by hand
  • Building framework and demo applications from scratch