Summary
Methane Kit v0.8.1 update modernizes the project with a switch to the C++20 standard, introducing features like designated initializers, concepts, span, ranges and simplified implementation of comparison operators. Comprehensive unit tests were added for all "Graphics RHI" classes, increasing code coverage of the core modules. Build with Visual Studio 2019 is no longer supported, CMake build configurations were removed for VS2019.
Common changes
- Upgraded project code and switch to the C++20 standard (close #141 ):
- Use designated initializers for RHI settings;
- Use concepts instead of SFINAE in templates;
- Use
std::spanin RHI interfaces extensively, instead of references tostd::vector; - Get rid of stdext::checked_array_iterator in favor of
std::span; - Reduce enums verbosity across all code with help of
using enum; - Use
std::numbersinstead ofMethane::Data::Constants; - Use default implementations of the three-way comparison or equality operators wherever possible and remove manually defined comparison operators, which can be auto-generated now;
- Use range-based algorithms.
- Used hidden friend pattern for binary operators.
- Increased minimum CMake version up to 3.24.
Graphics libraries
- Added
ObjectRegistryPIMPL wrapper to simplify registry use. - Fixed multithreaded access violation in
Base::RenderPass. - Removed excessive parameter id from
IResourceBarriers::Addmethod. - Added
GetRenderPass()method to classParallelRenderCommandList. - Added
GetComputeCommandKit()method to classRenderContext. - Refactored method
ITexture::GetTextureViewto returnTextureViewinstead ofResourceView.
Data libraries
- Used lambdas instead std::function in Animation classes
Tests
- Added unit-tests to cover all classes of the "Graphics RHI" layer (close #122):
Systemtests were added.Devicetests were added.RenderContexttests were added.RenderStatetests were added.RenderPatterntests were added.RenderPasstests were added.RenderCommandListtests were added.ParallelRenderCommandListtests were added.CommandListSettests were added.ResourceBarrierstests were added.
- Added unit-tests for all template classes of the "Graphics Mesh" library.
External libraries
- CPM.cmake was updated to
v0.40.8 - DirectXHeaders was updated to
v1.615.0 - DirectXTex was updated to
v2.0.7(mar 2025) - FMT was updated to
v11.1.4 - CLI11 was updated to
v2.5.0 - Catch2 was updated to
v3.8.1 - HLSL++ was updated to
v3.5.3 - TaskFlow was updated to
v3.9.0.1
Build
- Dropped support of Visual Studio 2019 build on Windows.
- Supported build with XCode 16.3 on Apple platforms.
- Supported code coverage with LCov 2.0 on Ubuntu 24.04.
Continuous Integration
- Fixed ReportGenerator setup on Linux in Sonar Scan action.
- Updated CodeQL actions to v3 (v2 is deprecated).
Documentation
- Updated all tutorials documentation according to latest code changes.
- Added unit tests coverage description in markdown documents of test modules.
Note
For MacOS users: In case of error "App Is Damaged and Can't Be Opened" on attempt to run bundled application, try removing application from quarantine using the following command:
sudo xattr -d com.apple.quarantine MethaneHelloTriangle.app
open MethaneHelloTriangle.app