Methane Kit v0.7.2
This release adds initial support of compute pipeline in Methane Kit for app Graphics RHI backends (DirectX 12, Vulkan and Metal). "Console Compute" tutorial was added to demonstrate it on example of Conway's Game of Life implemented in compute shader used from pure-console application. Graphics RHI was partially covered with initial set of unit-tests implemented using "Null RHI" backend for testing of the Base RHI logic.
Tutorial applications
- Console Compute tutorial was added to demonstrate GPU compute pipeline on Conway's Game of Life example implemented in pure-console application with FTXUI library.
Graphics libraries
- New Graphics RHI classes were added to support compute pipeline (close #8):
ComputeContext
ComputeCommandList
ComputeState
- Added
ShaderType::Compute
shader type support. - Added
CommandListType::Compute
support inCommandQueue
. - Added
DeviceCaps::compute_queues_count
. - Added Unordered Access View support in ProgramBindings for reading and writing texture data from compute shader.
- Added
Texture
andBuffer
read-back support viaGetData
methods. - Removed common
GetData
andSetData
methods from base interfaceIResource
in favour of separate methods added in the derivedIBuffer
andITexture
interfaces to differentiate argument types and get rid of unwanted methods inISampler
interface. IResource
methodsGetSubresourceCount
andGetSubresourceDataSize
methods were moved toITexture
interface.- Fixed some DirectX and Vulkan validation warnings.
User Interface
- Fix rare crash on text mesh update.
Data libraries
FpsCounter
interface and implementation was moved fromGraphics/RHI
toData/Primitives
to allow using it independently from RHIRenderContext
.- Enable
Chunk
copy and move constructors and operators.
Tests
- Initial unit-tests were added for "Graphics RHI" layer, implemented using "Null RHI" backend (continue #122):
Shader
TestSampler
TestFence
TestCommandQueue
TestComputeState
TestTexture
TestProgramBindings
TestTransferCommandList
TestProgram
TestComputeContext
TestBuffer
TestComputeCommandList
Test
- Overall code coverage has reached 30% for
Modules
directory.
External libraries
- FTXUI library v4.0.0 was added
- HLSL++ was updated to v3.3.1
- CPM.cmake was update to v0.38.0
- Tracy was updated to v0.9.1
Build
- Cleaned up root
CMakeLists.txt
- Build with new Xcode 14.3 was supported by cleaning up the code from removed deprecated functions.
- Apple deployment target versions were bumped to use new shader reflections API:
- MacOS 10.15 -> 13.0
- iOS 15.0 -> 16.0
Continuous Integration
- Fixed reporting of failed unit tests: previously builds were terminating on any test failure, now builds are still failing by unit-tests but they perform all reporting operations.
- Sonar-scan build is now automatically finding all test result xml files.
- Added CodeCove components and excluded
Tests
andApps
directories from code coverage results.
Documentation
- ReadMe documentation was added for "Console Compute" tutorial.
- Update code in other tutorials documentation to reflect changes in
Resource
,Buffer
andTexture
methods.
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