Methane Kit v0.1
Asteroids sample with single-threaded rendering was created in this release:
Asteroids sample now implements fully-functional rendering of the random-generated asteroids field rotating around a planet, but rendering is currently single-threaded (closed #31) <img src=“https://github.com/egorodet/MethaneKit/blob/3007c906b35121e34f2e0231d8eb8ce2939116c4/Apps/Samples/Asteroids/Screenshots/AsteroidsWinDirectX12.jpg?raw=true” alt=“Methane Asteroids DirectX 12” align=“right” valign=“middle” width=“400”/>
Asteroid mesh generation based on subdivided icosahedron with perlin-noise randomization.
Asteroid tri-planar texture arrays generation with perlin-noise and mip-levels implemented.
Asteroids orbiting simulation implemented with restoring its state after device reset.
Planet rendering implemented.
Graphics Core API new features:
Addressable resource bindings are supported to allow binding to variable chunks of large buffer to program arguments (closed #41):
Program Resource Bindings now support byte-offset specification for addressable resources.
Buffer resource can be created with addressable flag to be used in such bindings.
Texture arrays are now supported (closed #43).
Texture mip-map levels generation is now available (closed #44).
Render Command List now supports rendering given subset from vertex/index buffers.
Graphics Extensions and Helpers new features:
Icosahedron and geosphere mesh generation is added to Mesh primitives (closed #42).
Sphere mesh now supports correct texture coordinates generation for spheric texture mapping.
Uber-mesh was added to merge multiple meshes in a single index and vertex buffers.
Multi-octave perlin-noise generator was added.
Mesh-Buffers extension now supports rendering multiple subsets from Uber-mesh and Textured Mesh-Buffers extension supports per-subset texturing.
External modules added:
Perlin Noise library
DirectXTex library
Build infrastructure: <img src=“https://github.com/egorodet/MethaneKit/blob/35cba1472d814cf71bcf42651edcee32562d9448/Apps/Samples/Asteroids/Screenshots/AsteroidsWinCpuTrace.jpg?raw=true” alt=“Methane Asteroids ITT Trace in Intel Graphics Trace Analyzer” align=“right” valign=“middle” width=“300”/>
Added build options to enable ITT instrumentation and shaders code symbols.
Fixed application properties in plist/rc files.
Added build-numbers setup in Azure builds.
Fixed multiple shaders handling in one application/library.
Refactoring and optimizations:
Data::ParallelFor reworked based on std::async and std::future, instead of std::thread.
Optimized resource bindings creation, Program::ResourceBindings now can be created in parallel.
Optimized CPU overhead of applying Program::ResourceBindings::Apply
Optimized DirectX command lists by eliminating excessive input assembler calls and resource binding calls as well.
Instrumentation module moved under Data, Kit module moved under Graphics.