Handy tools & graphics API abstraction for blazing fast prototyping.
There exist lots of abstractions of graphics APIs (like wgpu and Unreal Engine RHI) but most of them intentionally hide their implementations and data structures over encapsulation and inheritance. Such design is extremely confusing and exhausting in my research projects. GraphiT is thus one of my attempts to get things done more easily.
GraphiT has all (or most of those) you need for fast prototyping:
- Argument parsing with flexibility;
- JSON ser/de for configuration and structured serialization;
- Logging with severity filtering & customized output callback;
- Hardware Abstraction Layer over Vulkan API with every handle accessible;
- Glslang integration for on-the-flight shader compilation;
- Descriptive statistics to collect minimum, maximum, mean, etc.;
- BMP image writer, text editing, timer and a lot more utility functions.
You can use the following commands to run the GraphiT demo on Windows host and Android device attached via adb:
./Run-Host.ps1 -a Demo # Run on host.
./Run-Android.ps1 -a Demo # Run on attached Android device over adb.
You can create a new repository on Github by clicking at the Use this template
button in GraphiT-Template. It comes with a 'hello world' program using GraphiT as a Git submodule.
GraphiT can also be integrated by add_subdirectory
like many other CMake projects.
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in GraphiT by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.