Topaz is a 3D graphics engine.
- C++20 (no modules)
- Very low-level declarative graphics API.
- Supports OpenGL/Vulkan, Windows/Linux and Clang/GCC/MSVC (See requirements section below for required versions)
Topaz 4.2.0 is the most recent release of the Topaz Engine.
The Topaz project has been ongoing since it began as a school project in 2015.
- Low-level graphics API, with either a Vulkan or OpenGL backend, configured at compile-time.
- Barebones lua scripting support
- GLTF model importing
- Ability to embed arbitrary text-files within built executables.
Each major version is a total rewrite and thus completely different from the previous. Each minor version typically consists of API-breaking feature changes. Patch versions are not formally shipped unless they contain emergency bugfixes for a flawed release.
Topaz Version | Release Date | Branch | Documentation |
---|---|---|---|
... | TBD | master | harrand.github.io |
4.2.0 | Apr 23, 2024 | Topaz4.2 | Branch: gh-pages-tz4.2 |
4.1.0 | Dec 1, 2023 | Topaz4.1 | Branch: gh-pages-tz4.1 |
4.0.0 | July 9, 2023 | Topaz4.0 | Branch: gh-pages-tz4.0 |
3.6.1 | Dec 10, 2022 | Topaz3.6 | Branch: gh-pages-tz3.6 |
3.6.0 | Dec 8, 2022 | Topaz3.6 | Branch: gh-pages-tz3.6 |
3.5.0 | Sep 22, 2022 | Topaz3.5 | Branch: gh-pages-tz3.5 |
3.4.0 | Aug 3, 2022 | Topaz3.4 | Branch: gh-pages-tz3.4 |
3.3.0 | Jun 12, 2022 | Topaz3.3 | Branch: gh-pages-tz3.3 |
3.2.0 | Apr 23, 2022 | Topaz3.2 | Branch: gh-pages-tz3.2 |
3.1.0 | Feb 13, 2022 | Topaz3.1 | Branch: gh-pages-tz3.1 |
3.0.0 | Sep 17, 2021 | Topaz3.0 | Branch: gh-pages-tz3 |
2.0.0 | May 9, 2021 | Topaz2.0 | Branch: gh-pages-tz2 |
1.0.0 | Sep 25, 2020 | Topaz1.0 | Branch: gh-pages-tz1 |
More Releases
Topaz Version | Release Date | Release |
---|---|---|
0.7.0 | Apr 10, 2019 | Raycasts, Octrees & Improved Utility |
0.6.0 | Jul 18, 2018 | Shadow Mapping & Physics |
0.5.1 | Dec 12, 2017 | Refactoring 1 |
0.5.0 | Oct 8, 2017 | Physics & Collision |
0.4.0 | Sep 25, 2017 | Displacement Maps & Skyboxes |
0.3.0 | Sep 21, 2017 | GUI & Flexible |
0.2.0 | Jun 5, 2017 | Prettier, faster and more features |
0.1.6 | Apr 16, 2017 | Skybox & Audio |
0.1.5 | Apr 11, 2017 | Dynamic Lighting |
0.1.4 | Apr 9, 2017 | Audio |
0.1.3 | Mar 29, 2017 | World Construction |
0.1.2 | Mar 25, 2017 | Hightail House Construction |
0.1.1 | Mar 24, 2017 | Parallax Displacement Mapping |
0.1.0 | Mar 21, 2017 | Dev Test |
-
Checkout the repository resursively.
-
Configure CMake. It is recommended you use a preset.
Example:
cmake --preset host_vulkan_debug
-
Build the
topaz
target to build the engine. Run thetztest
target to build and run all unit-tests.
The table below shows all the engine's dependencies.
Dependency | Render API | Build Config | Dependency Type |
---|---|---|---|
concurrentqueue | Both | All | Git Submodule |
debugbreak | Both | All | Git Submodule |
GLAD | OpenGL | All | Included in repository |
imgui | Both | All | Git Submodule |
imgui_club | Both | All | Git Submodule |
textc | Both | All | Git Submodule |
stb | Both | All | Git Submodule |
nlohmann json | Both | All | Git Submodule |
lua | Both | All | Git Submodule |
msdfgen | Both | All | Git Submodule |
tracy | Both | Profile | Git Submodule |
Vulkan SDK | Vulkan | All | Needs pre-installation |
VulkanMemoryAllocator | Vulkan | All | Git Submodule |
The following requirements apply for all possible build configurations:
- A C++20-compliant compiler. GCC, MSVC and Clang are all tested so you can be confident using these. If you're not using any of these compilers, your mileage may vary.
- CMake 3.21 or later is required to build.
-
Windows or Linux.
- macOS may be theoretically possible now that MoltenVK supports VK1.2, but no investigation has been done to decipher how much work is needed. Definitely, no work is planned for proper Metal support.
-
Vulkan SDK 1.2 or later must be installed.
-
Your graphics card must support Vulkan 1.3. Check your graphics card here.
- It must also support the following vulkan extension(s):
- VK_KHR_swapchain
- VK_KHR_shader_non_semantic_info (debug builds only)
- It must also support the following vulkan extension(s):
- Windows or Linux.
- Your graphics card must support OpenGL 4.6. Check your graphics card here.
- It must also support the following opengl extension(s):
- ARB_bindless_texture
- Note: If this extension is not supported, the engine can still build & run, but you cannot use
tz::gl::image_resource
s of any kind. The unit-tests are guaranteed not to use image resources, so those are safe to run if you lack this extension.
- Note: If this extension is not supported, the engine can still build & run, but you cannot use
- ARB_indirect_parameters
- Note: If this extension is not supported, the engine can still build and run, but you cannot use
tz::gl::renderer_option::draw_indirect_count
. None of the tests do this, buttz_gpu_driven_demo
is a demo that does use this, and thus won't run for you on OGL.
- Note: If this extension is not supported, the engine can still build and run, but you cannot use
- ARB_bindless_texture
- It must also support the following opengl extension(s):