Skip to content

Methane Kit v0.8.1

Latest
Compare
Choose a tag to compare
@egorodet egorodet released this 09 May 16:19

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 to std::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 of Methane::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 class ParallelRenderCommandList.
  • Added GetComputeCommandKit() method to class RenderContext.
  • Refactored method ITexture::GetTextureView to return TextureView instead of ResourceView.

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

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