MethaneKit Versions Save

🎲 Modern 3D graphics made simple with C++17 cross-platform framework and rendering abstraction API on top of DirectX 12, Metal & Vulkan

v0.1.20191207.7

4 years ago

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) Methane Asteroids DirectX 12
    • 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: Methane Asteroids ITT Trace in Intel Graphics Trace Analyzer
    • 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.