Try/Tempest
Try/Tempest has 228 GitHub stars and 49 forks. Star changes are not measured yet. Last checked 2026-11-09 19:09 UTC. Last push 2026-11-09.
API abstraction layer for 3D graphics, UI and sound. Written in C++17 with Vulkan, DX12 and Metal support.
What you can do
- Multiplatform (Windows, Linux, 32bit and 64bit)
- Multibackend (Vulkan 1.0, DirectX12)
- Multithreaded command buffers and thread safety
- Build-in 2d graphics support
Measured star growth
- in 24h
- Update delayed
- in 7 days
- Update delayed
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalCrossplatform 3d engine. (work in progress)
Tempest is an open-source, simple, cross-platform graphics engine written in modern C++17.
Main idea behind this engine is to provide a low-level GPU-programming concepts, like Ubo, Vbo, Ssbo, in convenient C++ packaging, with RAII, types and templates.
Features
- Multiplatform (Windows, Linux, 32bit and 64bit)
- Multibackend (Vulkan 1.0, DirectX12)
- Multithreaded command buffers and thread safety
- Build-in 2d graphics support
- Build-in UI library
Examples
// offscreen render
VulkanApi api;
Device device(api);
static const Vertex vboData[3] = {{-1,-1},{1,-1},{1,1}};
static const uint16_t iboData[3] = {0,1,2};
auto vbo = device.vbo(vboData,3);
auto ibo = device.ibo(iboData,3);
auto vert = device.shader("shader/simple_test.vert.sprv");
auto frag = device.shader("shader/simple_test.frag.sprv");
auto pso = device.pipeline(Topology::Triangles,RenderState(),vert,frag);
auto tex = device.attachment(format,128,128);
auto cmd = device.commandBuffer();
{
auto enc = cmd.startEncoding(device);
enc.setFramebuffer({{tex,Vec4(0,0,1,1),Tempest::Preserve}});
enc.setPipeline(pso);
enc.draw(vbo,ibo);
}
auto sync = device.submit(cmd);
sync.wait();
// save image to file
auto pm = device.readPixels(tex);
pm.save(outImg);
Android builds
The Android packaging example uses add_android_apk in the application's existing CMake project to generate a single Gradle build. It uses Android's built-in NativeActivity; the Tempest Android backend is separate work. Desktop builds do not require Java, the Android SDK or Gradle.
Ecosystem
During development various issues of Vulkan stack been found, reported and some were fixed.
Contribution
- MSL: task and mesh shader support
https://github.com/KhronosGroup/SPIRV-Cross/pull/2402
https://github.com/KhronosGroup/SPIRV-Cross/pull/2400
- MSL: task and mesh shader support
- MSL: add ray-cull mask
https://github.com/KhronosGroup/SPIRV-Cross/pull/2241
- MSL: add ray-cull mask
- State tracking of VkCopyDescriptorSet for KHR-acceleration-structure
https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/4219
- State tracking of VkCopyDescriptorSet for KHR-acceleration-structure
- MSL: runtime array over argument buffers
https://github.com/KhronosGroup/SPIRV-Cross/pull/2179
https://github.com/KhronosGroup/SPIRV-Cross/pull/2184
- MSL: runtime array over argument buffers
- MSL: fix mutability for rayQueryEXT parameters
https://github.com/KhronosGroup/SPIRV-Cross/pull/2201
- MSL: fix mutability for rayQueryEXT parameters
- MSL: RayQuery implementation is incomplete
https://github.com/KhronosGroup/SPIRV-Cross/issues/2115
- MSL: RayQuery implementation is incomplete
- HLSL: Add mesh shader support
https://github.com/KhronosGroup/SPIRV-Cross/pull/2052
- HLSL: Add mesh shader support
- HLSL: Add task(amplification) shader support
https://github.com/KhronosGroup/SPIRV-Cross/pull/2124
- HLSL: Add task(amplification) shader support
- HLSL: Cannot subdivide a scalar value exception
https://github.com/KhronosGroup/SPIRV-Cross/issues/2196
- HLSL: Cannot subdivide a scalar value exception
- Mesh shader: fix implicit index-array size calculation for lines and triangles
https://github.com/KhronosGroup/glslang/pull/3050
- Mesh shader: fix implicit index-array size calculation for lines and triangles
- Fix crash in HLSL frontend
https://github.com/KhronosGroup/glslang/pull/2916
- Fix crash in HLSL frontend
- stb_image: fix CRC reading at the end of IEND chunk in png file
https://github.com/nothings/stb/pull/835
- stb_image: fix CRC reading at the end of IEND chunk in png file
Issues
- MSL: fix extraction of global variables, in case of atomics
https://github.com/KhronosGroup/SPIRV-Cross/pull/2203
- MSL: fix extraction of global variables, in case of atomics
- MSL: fix mutability for rayQueryEXT parameters
https://github.com/KhronosGroup/SPIRV-Cross/pull/2201
- MSL: fix mutability for rayQueryEXT parameters
- HLSL: Fix unroll, when storing to pointer to array
https://github.com/KhronosGroup/SPIRV-Cross/pull/2205
- HLSL: Fix unroll, when storing to pointer to array
- HLSL: SPIRV_Cross_VertexInfo is not relieble
https://github.com/KhronosGroup/SPIRV-Cross/issues/2032
- HLSL: SPIRV_Cross_VertexInfo is not relieble
- HLSL: link error: Signatures between stages are incompatible
https://github.com/KhronosGroup/SPIRV-Cross/issues/1691
- HLSL: link error: Signatures between stages are incompatible
- HLSL: error X4503: output TEXCOORD2 used more than once
https://github.com/KhronosGroup/SPIRV-Cross/issues/1645
- HLSL: error X4503: output TEXCOORD2 used more than once
- HLSL: crash, while compiling HULL shader
https://github.com/KhronosGroup/glslang/issues/2914
- HLSL: crash, while compiling HULL shader
- MSL: invalid codegen, when using rayquery
https://github.com/KhronosGroup/SPIRV-Cross/issues/1910
- MSL: invalid codegen, when using rayquery
- SPIR-V -> HLSL : cross compiling bindings overlap
https://github.com/KhronosGroup/SPIRV-Cross/issues/2064
- SPIR-V -> HLSL : cross compiling bindings overlap
- Component swizzling of gl_MeshVerticesEXT[].gl_Position, produces invalid code
https://github.com/KhronosGroup/glslang/issues/3058
- Component swizzling of gl_MeshVerticesEXT[].gl_Position, produces invalid code
Explore related projects
ytdl-org/youtube-dl
Command-line program to download videos from YouTube.com and other video sites
141,527 starsexcalidraw/excalidraw
Virtual whiteboard for sketching hand-drawn like diagrams
135,396 starsgodotengine/godot
Godot Engine – Multi-platform 2D and 3D game engine
119,942 starsmrdoob/three.js
JavaScript 3D Library.
117,983 stars