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::span
in 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::numbers
instead 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
ObjectRegistry
PIMPL wrapper to simplify registry use. - Fixed multithreaded access violation in
Base::RenderPass
. - Removed excessive parameter id from
IResourceBarriers::Add
method. - Added
GetRenderPass()
method to classParallelRenderCommandList
. - Added
GetComputeCommandKit()
method to classRenderContext
. - Refactored method
ITexture::GetTextureView
to returnTextureView
instead 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):
System
tests were added.Device
tests were added.RenderContext
tests were added.RenderState
tests were added.RenderPattern
tests were added.RenderPass
tests were added.RenderCommandList
tests were added.ParallelRenderCommandList
tests were added.CommandListSet
tests were added.ResourceBarriers
tests 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