CsPaint  1.0.0
Timeline

2019

February 2019

  • Initial research
  • Develop prototype for CsPaint library

March 2019

April 2019

June 2019

  • Selected SDL2 for the window system interface
  • Selected Vulkan 1.1.x API
  • Establish C++17 as the minimum required compiler and CMake 3.8 as the minimum required build system

July 2019

  • Switch internal interface from C to use the C++ bindings available in vulkan.hpp
  • Create library documentation
  • Standardize the API to create an instance and a device
  • Add support for device memory allocation
  • Use validation layers for testing and debugging
  • Enhance API to support queues, surfaces, and swapchain setup
  • Support added to load shaders

August 2019

  • Add support for loading an STL file format for 3D modeling
  • Resolve inverted Vulkan coordinate system
  • Fix depth buffer problems
  • Configure synchronization using fences and semaphores
  • Research signed distance field algorithm for rendering text
  • Select the multi-channel signed distance field algorithm
  • Use msdfgen application to generate distance field image
  • Add support for rendering text on the GPU using a fragment shader
  • Create basic unit tests
  • Write graphics demo
  • Create models in Blender 2.8
  • Add models and text rendering samples to the demo

September 2019

  • Attended CppCon in in Denver, Colorado
  • Presented a talk on "High performance graphics on the GPU" at CppCon in in Denver, Colorado
  • Add the ability to load and transfer an image to the GPU as a texture

October 2019

  • Enhance documentation for building on different platforms
  • Continue work on API
  • Correct issue with descriptor pool allocation
  • Fix vertex shaders, add layout binding for uniform declarations
  • Add support for older versions of SDL
  • Update graphics demo

November 2019

  • Pending MeetingC++ 2019 Conference in Berlin, Germany
  • Presenting an updated talk on "High performance graphics and rendering text on the GPU"

2020

January 2020

  • Update copyright
  • Added support for new versions of the Vulkan SDK