Methane Kit v0.7.2
<img src=“https://github.com/MethanePowered/MethaneKit/blob/master/Apps/08-ConsoleCompute/Screenshots/ConsoleComputeWinDirectX12.jpg?raw=true” alt=“Methane Console Compute DirectX Windows” align=“right” valign=“middle” width=“300”/> 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:
> ```cmd
> sudo xattr -d com.apple.quarantine MethaneHelloTriangle.app
> open MethaneHelloTriangle.app
> ```