Skip to content
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