I have added a new example to my open source C++ Vulkan examples that demonstrates the use of multiview rendering.
Multiview enables rendering to multiple views simultaneously instead of having to use multiple passes. Esp. with stereoscopic rendering (e.g. for VR related applications) there’s usually little change between two views, like different matrices, and having to do multiple passes for such small differences is inefficient.
With multiview an implementation can now render different views simultaneously in a single pass and the Vulkan extension even adds hints for the implementation to even further improve performance (see correlation mask down below).
[Read More]
Vulkan Hardware Capability Viewer 1.6 released
Version 1.7 of the Vulkan Hardware Capability Viewer is now available for all platforms (Windows, Linux, Android).
As with 1.6 this version fully supports Vulkan 1.1 and adds a few new features:
- Support for the new VK_KHR_push_descriptor extension
- Support for YCBCR formats
You can download the new version from https://vulkan.gpuinfo.org/download.php.
Vulkan 1.1 is here
A bit later than initially planned Vulkan 1.1 was released to the public yesterday, as usual with day-one driver support by most of the IHVs.
Vulkan 1.1 promoted several extension to the core and also adds interesting new functionality like vendor independent subgroup operations.
You can get all the details at the Khronos Vulkan landing page.
Note that all my open source examples, demos and applications will work fine with Vulkan 1.
[Read More]
Conservative rasterization in Vulkan using VK_EXT_conservative_rasterization
I have added a new example to my open source C++ Vulkan examples that demonstrates the basic use of conservative rasterization using the VK_EXT_conservative_rasterization extension. This has been missing from Vulkan some time now (while other APIs already offer this feature) but has recently been added and is already support by at least NVIDIA.
Conservative rasterization changes the way fragments are generated, and enabling over estimation generates fragments for every pixel touched instead of only pixels that are fully covered.
[Read More]
How-to video: Debugging a non-visible model in Vulkan using RenderDoc
One of the most common Vulkan related that I’m seeing a lot is about rendering stuff that somehow ends up being not visible on the screen, even though technically everything looks okay (no validation layer errors, correct buffer uploads, etc.).
Luckily there are debugging tools tools like RenderDoc that can help locating and fixing such problems. But not everyone knows about such tools or how to use them for debugging these kind of problems.
[Read More]
Vulkan glTF 2.0 C++ phyiscal based rendering
I have released the first working version of a separate (from the examples) Vulkan physical based rendering example that uses the glTF 2.0 model file format.
The repository can be found at https://github.com/SaschaWillems/Vulkan-glTF-PBR.
glTF is a royalty free format specification by the Khronos Group and is a new format for 3D models gaining lots of traction. With version 2.0 it also added several PBR extensions and definitions.
I decided to make this a stand-alone project instead of “just” another example in my Vulkan C++ example repository to make it easier getting into the code.
[Read More]
New Vulkan example: Cascaded shadow mapping
In what is most probably my last Vulkan example for 2017 I have added a cascaded shadow mapping example to my open source Vulkan C++ example repository:
One big problem of traditional shadow mapping, esp. with large outdoor scenes is the resolution you get as one single shadow map has to cover the whole camera spectrum.
With cascaded shadow maps the frustum is split up into multiple frustums (along scene depth) with each getting it’s own, full-resolution, depth map.
[Read More]
Combined Vulkan and OpenGL ES listing for android
Upon popular request I finally got around combining android device data from my Vulkan and OpenGL ES hardware databases into a convenient table. This should be handy if you plan on supporting both apis on Vulkan or if you just need to check for general device support.
The new page can be reached via https://android.gpuinfo.org/
It combines all android device reports from the Vulkan database with all reports from the OpenGL ES database and also uses google’s official device list for translating device IDs (stored with Vulkan and OpenGL ES reports) into actual retail names.
[Read More]
Headless Vulkan examples
I have just added two minimal, mostly self-contained cross-platform headless Vulkan examples to my open source C++ Vulkan repository. Unlike the other examples in my repository these two don’t require a surface (created from a window) and as such can be run on systems with no window compositor.
The intention behind the two examples is to show how Vulkan can be used for running graphics and compute tasks without the need for an actual user interface to be present i.
[Read More]
The Vulkan Device Simulation Layer
LunarG recently made the new Vulkan Device Simulation layer public. This is a Vulkan instance level layer that injects physical device properties, limits and features based on a json input file, simulating different features than the actual Vulkan device you are running on. The idea behind this is to help developers check if their Vulkan applications can handle devices with missing features and tighter limits without having to actually run on a such a device.
[Read More]