Skip to content

Aardvark Rendering 5.3 changelog

Attila Szabo edited this page Dec 22, 2023 · 1 revision

This major version update comes with various backend fixes and improvements. The public API did not receive major overhauls this time around, so updating from 5.2.x should be straightforward.

Changelog

  • Reworked adaptive buffers

  • Added BufferStorage enum to select preferred buffer memory type (i.e. host-visible or device local)

  • Improved ManagedBuffer implementation:

    • Based on reworked adaptive buffer implementation
    • Avoids creating writers for constant data
    • Buffer storage can be selected for optimal transfer & rendering
  • The following backend resource interfaces inherit from IDisposable now:

    • IBackendTexture
    • IRenderbuffer
    • IStreamingTexture
    • IBackendSurface
    • IComputeShader
  • Implemented resource sharing between Vulkan and OpenGL backends (Textures and buffers). The Vulkan backend may create and export resources, which can be used by the OpenGL backend.

  • Implemented backend-specific debug configurations (Aardvark.Rendering.GL.DebugConfig and Aardvark.Rendering.Vulkan.DebugConfig). Debug configurations can be used to toggle various backend-specific debugging features. Debug levels (DebugLevel) are now abstractions for specific configurations. For example, using the Vulkan backend you can enable more features provided by the validation layers like best practices validation or debug print. When the latter is enabled, shaders may invoke Debug.Printf to directly print to the console.

    Note that DebugLevel.None (equivalent to passing debug = false to the application constructor) will no longer enable printing the GLSL output of shader compilation. If you want to restore the old behavior, you must use a custom debug configuration, for example

    { DebugConfig.None with PrintShaderCode = true }
  • Added full support for rendering to color attachments with integer formats (signed and unsigned). Use the new V2ui, V3ui and V4ui vector types for unsigned integer formats. Expected shader output types solely depend on the used texture format now. Previously some default semantics would always expect a certain type regardless of the attachment (e.g. DefaultSemantic.Colors defaulted to V4d)

  • Added and changed Sg functions:

    • Added Sg.textureArray for sampler arrays
    • Reworked Sg.geometrySet to use ManagedPool internally. Previously, used the broken GeometrySetUtilities.GeometryPacker, which was removed.
    • Made Sg.runtime- and Sg.scopeDependentTexture generic
    • Rearranged parameters of Sg.pool
  • ManagedTracePool improvements:

    • Added some utility functions for TraceGeometryInfo
    • Added face attributes
    • Optimized geometry attribute caching
  • Changed type of INativeBuffer.SizeInBytes from int to nativeint

  • Removed obsolete MultiApplication

  • Renamed BufferUsage.Default to BufferUsage.All

  • [Vulkan] Fixed various concurrency-related issues

  • [Vulkan] Improved support for image sampler arrays

  • [Vulkan] Rework descriptor set updates to be more fine grained

  • [Vulkan] Fixed issue with NullTexture() only being usable for 2D textures

  • [Vulkan] Use update after bind to prevent recompilation of command task

  • [GL] Renamed RuntimeConfig.SupressSparseBuffers to RuntimeConfig.SuppressSparseBuffers

  • Fixed broken BGR(A) texture up- and download

Clone this wiki locally