Skip to content
Projects

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.

How these counts are measured

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

Original

Tempest Logo

Build status

Crossplatform 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

Issues

Explore related projects