Veldrid 4.1.0
Veldrid version 4.1.0 is available. This is an incremental update with many new features and bug fixes. There are no breaking changes introduced in this version.
New Features
Swapchains
A Swapchain is a new type in the library, exposing functionality that was previously implicit. A Swapchain is an object representing an application surface or view that can be drawn on and presented to the user. It is now possible to create and destroy multiple Swapchains as needed during runtime. Additionally, it is now possible to create a GraphicsDevice
which has no Swapchain at all, in case you are developing a "headless" application. This can be useful if you want to use Veldrid only for background compute or image processing operations. See Swapchains for more information.
More PixelFormats
A large number of additional PixelFormats have been added. Veldrid now exposes practically every permutation of standard RGBA integer and floating-point formats, as well as a large number of specialized compressed and packed formats. See the full changelist below or the PixelFormat documentation page for more information.
iOS Support
It's now possible to use Veldrid on iOS with the Metal backend. A UIView can be used to create a Swapchain to present rendered images to the application.
Optional backends
For users compiling Veldrid from source, it's now possible to exclude the implementations for unused backends. To do this, set ExcludeXYZ=true
in your project, where XYZ
is a specific kind of backend (D3D11, OpenGL, Vulkan, or Metal).
All Changes
Veldrid
- Add a description of what ShaderDescription.ShaderBytes must contain for Metal shaders. @tgjones [492c688]
- Implement a large number of new PixelFormat types. Big thanks to @tgjones for his contributions in this space. [764e9de] [380a620] [98e0cee]
- Implement some additional helper state descriptions. @tgjones. [f04cd79]
- Add several more static colors to RgbaByte and RgbaFloat. [4808a22] [2ae5d95]
- Fix mapping of DXGI_D32_Float format. [1c54d15]
- Improve how Vulkan caches and disposes some of its staging resources. [56322d3]
- Fix some issues with compressed texture copying and optimize many texture copy code paths. eecbea1 [d3f2cd5]
- Lazily set vertex buffers in MTLCommandList, during PreDrawCommand. [86687d1]
- In the OpenGL backend, allow items specified in ResourceLayouts to be missing This matches the behavior of other backends. [576df20]
- Fix structured buffer creation in D3D11 backend. @tgjones [3abe081]
- Fix some issues with how render pass loading and clearing is handled in the Vulkan backend. [b49a165]
- Fix OpenGL's viewport translation. [d00f6bc]
- Fix OpenGL's assignment of UBO and SSBO binding locations when multiple ResourceSets are used. [b05fd4f]
- Fix some missing resource disposals in the D3D11 backend. [9dfc41a]
- Fix the
VALIDATE_USAGE
define constant. [9807394] [a6a8464] - Allow conditional exclusion of graphics backends when compiling from source. Thanks to @Krakean for his contribution. [0247576] [f9825ca]
- Fix resource validation for Texture sample counts. [c04c48b]
- In the Direct3D 11 backend, use a different MapSubresource overload to avoid an unnecessary DataStream allocation. [3a9c486]
- Add a new SwapchainType and the ability to create it. [dd64f0f]
- Add support for iOS through a UIView SwapchainSource. [5e63b39]
- Fix Metal's handling of PolygonFillMode.Wireframe. [7e505de]
Veldrid.SDL2
- Update the bundled SDL2 binaries for Windows and macOS to version 2.0.7. [e0027af] [4428e3d]
- Add Sdl2Window constructor that allows creation from an existing window handle @tgjones [4968827]
- Add support for custom handling of SDL2 events, bypassing the regular event processing callbacks. [c1263c9]
- Add the ability to get a SwapchainSource from an Sdl2Window., and fix event processing when multiple SDL2 windows are simultaneously in use. [dd64f0f]
Veldrid.ImGui
- Fix some ordering issues that prevented mouse wheel input from working. [fc6be2a]
- Add a method to clear cached ImGui image resources. [337fcdd]
Veldrid.Utilities
- Fix parsing of OBJ/MTL files when the newline character in the file does not match the system's newline character. [587fd53]