Skip to content
nieznanysprawiciel edited this page Oct 10, 2019 · 8 revisions

swGraphicAPI is set of libraries providing common interface for rendering and assets managment.

Plans

Rendering

  • Rendering through commands queue
    • Implement command queue
    • Sorting commands using custom key build based on assets used in command (Optimization: minimise state changes)

Graphic APIs

  • OpenGL implementation
  • DirectX 12 implementation
  • Vulcan implementation

Assets

  • FBX Loader
    • Create library in new repository
    • Rewrite functionalities from SWEngine
    • Add project that creates dynamic library (developer will choose if he links static or dynamic lib)
  • MaterialAsset
    • Utilities for ParametricBuffers
    • swMaterial file format
      • Enable saving relative texture paths (except path aliases)
      • Save and load material shading model parameters without need of WrapperType
  • MeshAsset
    • Move code from SWEngine
    • Add asset creator

ResourceManager

  • In Loader implementation relative path is resolved relative to loaded file path (not working directory)
  • LoadGenericFile - loads all assets that can be found in file. (Utility for editors)
  • PathsManager - find best matching alias. (Utility for editors)
  • Saving assets
  • Caching
    • Implement caching assets to common format for all possible caches implementations
    • Mechanisms for estimating asset usefulness in cache
      • First version - simple mechanisms (not generic)
      • Generic version of mechanisms - developer can implement his own estimators
    • Add dependencies quering API to Resources and Assets. (If we cache asset we need to cache his dependencies)
    • Caches implementations
      • Memory Cache (RAM)
      • Disk Cache (SSD)
    • Implement moving assets between cache levels based on usefulness estimation
    • Prefetching assets to cache (non generic)
    • Generic mechanisms for predictive prefetching
    • Memory limits for caches.
  • Support for levels of details
  • Support for assets streaming (for example video)
  • Support for hot reload
Clone this wiki locally