I am currently working on improving the custom Vulkan renderer that powers PeakVisor’s Android app. It is one of the key features that sets the app apart from other mountain route-planning applications, enabling highly accurate 3D maps and augmented-reality (AR) peak identification. However, building a custom renderer also comes with unique challenges. Addressing performance issues and rendering…
Mesh shaders represent a notable evolution in modern graphics pipelines. They are often positioned as a potential “silver bullet” capable of replacing the traditional geometry processing stages—namely vertex, tessellation, and geometry shaders. For instance, the DirectX specification frames their role as follows:
This is the paper page of our paper “Fast Rendering of Parametric Objects on Modern GPUs”, which has been accepted for The Eurographics Symposium on Parallel Graphics and Visualization (EGPGV) . It was presented on May 27th, 2024, in Odense, Denmark, where it was decorated as Best Paper.
This is the paper page of our paper “Vulkan all the way”, which is an extended edition of our previous paper The Road to Vulkan: Teaching Modern Low-Level APIs in Introductory Graphics Courses and has been accepted for publication in the Computers and Graphics journal in 2023.
When using floating point variables, there’s always the danger that a certain number cannot be represented exactly. Therefore, oftentimes epsilon values need to be used when checking or comparing results of floating point computations. But which epsilon to use? The answer is: It depends. More precisely, it depends on the range of numbers that you are using for your computations, which is where…
This is the paper page of our paper “The Road to Vulkan: Teaching Modern Low-Level APIs in Introductory Graphics Courses” which has been accepted and presented at Eurographics 2022 in Reims, France.
This is the paper page of our paper “Conservative Meshlet Bounds for Robust Culling of Skinned Meshes” which has been accepted and presented at Pacific Graphics 2021.
I currently have access to PCs which are of totally different form factors—one being a desktop-PC, the other being a laptop-PC—and actually have pretty different CPUs—the former featuring a (then-high end) AMD Ryzen AMD Ryzen 9 3900X with 12 physical cores, the latter featuring a (currently mid-tier, and mobile) Intel Core i5-1135G7 with four physical cores—and during programming, I actually…
In this post, I’d like to describe a strategy how a proper and (hopefully) easy to understand perspective projection matrix for Vulkan can be set-up manually. Figure 1 gives an overview of some commonly used spaces. Some spaces must follow certain rules that are dictated by the graphics API—i.e. Vulkan for the scope of this blog post.
When programmers with an OpenGL background learn Vulkan, they often expect—or hope—that the projection matrices they have used with OpenGL continue to work with Vulkan. Everyone with such expectations is in for a bad surprise. While many sources on the internet offer strategies to fix it such as