v0.3.0 This update brings with it some major changes to the renderer, support for swapchains, separated sampling, sigmoidization and more. It also includes, for the first time, a graphical demo capable of rendering to the screen - as well as a benchmark. Additions: - Add a new type (ra_swapchain) encapsulating the concept of a presentable surface (e.g. graphical window) which can be presented to the display, as well as an implementation for vulkan swapchains - Add a simple benchmark suite - Add a new helper utils/upload.h for simplifying the process of picking a compatible texture format and uploading raw texture data - Add a helper function to setup a pl_render_target from a swapchain - Add a graphical demo based on SDL2 (compiled with vulkan support) - Add support for separated (orthogonal) scaling, and make the renderer use it - Add support for using the optimized GPU-native sampling methods for nearest/bilinear/bicubic where possible - Add support for sigmoidization/unsigmoidization shaders - Make the renderer use linearization/sigmoidization where appropriate Changes: - Require vulkan >= v1.0.24, rather than the old >= 1.0.50 - Split up vulkan instance and device creation into separate helpers. This is needed to satisfy the typical VkInstance -> VkSurface -> VkDevice dependency dance required to create a renderable swapchain. - Change the API of pl_dispatch_finish/abort to make it clear that they consume and take over ownership of the pl_shader - Have the renderer also #include most of its API dependencies, to cut down the amount of #include spam needed to use it - Rename pl_sample_polar_params and generalize it to include separated (orthogonal) scaling as well - Various API changes to pl_render_params Fixes: - Allow running the build script without `git` installed - Fix an invalid bounds check on ra_tex_blit causing it to fail for 1D/2D textures - Use global #include paths for all public headers, rather than relative - Fix the src_rect calculation in the renderer, thus fixing an issue where anamorphic scaling produced the wrong result - Fix a typo in the renderer, causing it to skip some planes - Fix a memory leak caused by implicit deallocation of pl_shader - Fix a bug in the renderer causing the image to stop updating after the first frame after a resize - Fixes a bug where the color mapping / tone mapping shaders sometimes got (accidentally) triggered when the source colorspace is unknown - Fix a bug where compute shaders were incorrectly dispatched after a resize of the dispatch target - Fix a bug where the polar compute shader read from uninitialized memory when performing anamorphic scaling - Various other bug fixes and performance tweaks