{"id":17977564,"url":"https://github.com/try/tempest","last_synced_at":"2025-04-04T12:06:25.887Z","repository":{"id":43832885,"uuid":"153023028","full_name":"Try/Tempest","owner":"Try","description":"API abstraction layer for 3D graphics, UI and sound. Written in C++17 with Vulkan, DX12 and Metal support.","archived":false,"fork":false,"pushed_at":"2025-03-23T21:24:09.000Z","size":20310,"stargazers_count":151,"open_issues_count":19,"forks_count":31,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-03-28T11:09:04.606Z","etag":null,"topics":["3d","cpp","d3d12","directx","directx12","engine","graphics-engine","graphics-library","metal","ray-tracing","vulkan","vulkan-engine","vulkan-game-engine"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Try.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-10-14T22:01:34.000Z","updated_at":"2025-03-24T22:57:54.000Z","dependencies_parsed_at":"2023-09-25T00:16:03.050Z","dependency_job_id":"46caacb7-3b46-446d-b31b-79eabd32e913","html_url":"https://github.com/Try/Tempest","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Try%2FTempest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Try%2FTempest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Try%2FTempest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Try%2FTempest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Try","download_url":"https://codeload.github.com/Try/Tempest/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247174415,"owners_count":20896078,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d","cpp","d3d12","directx","directx12","engine","graphics-engine","graphics-library","metal","ray-tracing","vulkan","vulkan-engine","vulkan-game-engine"],"created_at":"2024-10-29T17:28:30.941Z","updated_at":"2025-04-04T12:06:25.872Z","avatar_url":"https://github.com/Try.png","language":"C++","readme":"![Tempest Logo](icon.png)\n=\n[![Build status](https://ci.appveyor.com/api/projects/status/github/Try/Tempest?svg=true)](https://ci.appveyor.com/project/Try/Tempest)\n\nCrossplatform 3d engine.\n(work in progress)\n\nTempest is an open-source, simple, cross-platform graphics engine written in modern C++17.  \nMain 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. \n\n### Features\n* Multiplatform (Windows, Linux, 32bit and 64bit)\n* Multibackend (Vulkan 1.0, DirectX12)\n* Multithreaded command buffers and thread safety\n* Build-in 2d graphics support\n* Build-in UI library\n\n### Examples\n```c++\n// offscreen render\nVulkanApi api;\nDevice    device(api);\n\nstatic const Vertex   vboData[3] = {{-1,-1},{1,-1},{1,1}};\nstatic const uint16_t iboData[3] = {0,1,2};\n\nauto vbo  = device.vbo(vboData,3);\nauto ibo  = device.ibo(iboData,3);\n\nauto vert = device.shader(\"shader/simple_test.vert.sprv\");\nauto frag = device.shader(\"shader/simple_test.frag.sprv\");\nauto pso  = device.pipeline(Topology::Triangles,RenderState(),vert,frag);\n\nauto tex  = device.attachment(format,128,128);\n\nauto cmd  = device.commandBuffer();\n{\n  auto enc = cmd.startEncoding(device);\n  enc.setFramebuffer({{tex,Vec4(0,0,1,1),Tempest::Preserve}});\n  enc.setPipeline(pso);\n  enc.draw(vbo,ibo);\n}\n\nauto sync = device.fence();\ndevice.submit(cmd,sync);\nsync.wait();\n\n// save image to file\nauto pm = device.readPixels(tex);\npm.save(outImg);\n```\n\n### Ecosystem\nDuring development various issues of Vulkan stack been found, reported and some were fixed. \n\n#### Contribution \n\n* - [x] MSL: task and mesh shader support  \nhttps://github.com/KhronosGroup/SPIRV-Cross/pull/2402  \nhttps://github.com/KhronosGroup/SPIRV-Cross/pull/2400\n\n* - [x] MSL: add ray-cull mask  \nhttps://github.com/KhronosGroup/SPIRV-Cross/pull/2241\n\n* - [x] State tracking of VkCopyDescriptorSet for KHR-acceleration-structure  \nhttps://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/4219\n\n* - [x] MSL: runtime array over argument buffers  \nhttps://github.com/KhronosGroup/SPIRV-Cross/pull/2179  \nhttps://github.com/KhronosGroup/SPIRV-Cross/pull/2184\n\n* - [x] MSL: fix mutability for rayQueryEXT parameters  \nhttps://github.com/KhronosGroup/SPIRV-Cross/pull/2201\n\n* - [x] MSL: RayQuery implementation is incomplete  \nhttps://github.com/KhronosGroup/SPIRV-Cross/issues/2115\n\n* - [x] HLSL: Add mesh shader support  \nhttps://github.com/KhronosGroup/SPIRV-Cross/pull/2052\n\n* - [x] HLSL: Add task(amplification) shader support  \nhttps://github.com/KhronosGroup/SPIRV-Cross/pull/2124\n\n* - [x] HLSL: Cannot subdivide a scalar value exception  \nhttps://github.com/KhronosGroup/SPIRV-Cross/issues/2196\n\n* - [x] Mesh shader: fix implicit index-array size calculation for lines and triangles  \nhttps://github.com/KhronosGroup/glslang/pull/3050\n\n* - [x] Fix crash in HLSL frontend  \nhttps://github.com/KhronosGroup/glslang/pull/2916\n\n* - [x] stb_image: fix CRC reading at the end of IEND chunk in png file  \nhttps://github.com/nothings/stb/pull/835\n\n#### Issues\n\n* - [x] MSL: fix extraction of global variables, in case of atomics  \nhttps://github.com/KhronosGroup/SPIRV-Cross/pull/2203\n\n* - [x] MSL: fix mutability for rayQueryEXT parameters  \nhttps://github.com/KhronosGroup/SPIRV-Cross/pull/2201\n\n* - [x] HLSL: Fix unroll, when storing to pointer to array  \nhttps://github.com/KhronosGroup/SPIRV-Cross/pull/2205\n\n* - [x] HLSL: SPIRV_Cross_VertexInfo is not relieble  \nhttps://github.com/KhronosGroup/SPIRV-Cross/issues/2032\n\n* - [x] HLSL: link error: Signatures between stages are incompatible  \nhttps://github.com/KhronosGroup/SPIRV-Cross/issues/1691\n\n* - [x] HLSL: error X4503: output TEXCOORD2 used more than once  \nhttps://github.com/KhronosGroup/SPIRV-Cross/issues/1645\n\n* - [x] HLSL: crash, while compiling HULL shader  \nhttps://github.com/KhronosGroup/glslang/issues/2914\n\n* - [x] MSL: invalid codegen, when using rayquery  \nhttps://github.com/KhronosGroup/SPIRV-Cross/issues/1910\n\n* - [ ] SPIR-V -\u003e HLSL : cross compiling bindings overlap  \nhttps://github.com/KhronosGroup/SPIRV-Cross/issues/2064\n\n* - [ ] Component swizzling of gl_MeshVerticesEXT[].gl_Position, produces invalid code  \nhttps://github.com/KhronosGroup/glslang/issues/3058\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftry%2Ftempest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftry%2Ftempest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftry%2Ftempest/lists"}