Physically based rendering (PBR) emulates the interaction between light and materials and is a trend in real-time rendering. It offers developers more realistic computer generated imagery and is fast becoming a standard in the gaming world.
This paper, written in 2016 by Dr Sean Harmer, offers an exhilarating ten-minute guide to the essentials.
Vulkan is a powerful new 3D graphics API from the Khronos Group, the same consortium that developed its spiritual predecessor, OpenGL and other related standards. Like OpenGL, Vulkan targets high-performance real-time 3D graphics applications such as games and interactive media, but offers higher performance and lower CPU usage, much like Direct3D 12 and Metal.
This whitepaper, written in 2016 by Dr Sean Harmer, offers a fascinating quick-start primer on the nine things you need to know about this shiny new API.
This is the second part of an in-depth look at improving the visual quality and computational throughput of systems with OpenGL from a KDAB expert and the maintainer of Qt 3D, writing for the USA's premium magazine for embedded computing: RTC magazine.
This is the first part of an in-depth look at improving the visual quality and computational throughput of systems with OpenGL from a KDAB expert and the maintainer of Qt 3D, writing for the USA's premium magazine for embedded computing: RTC magazine.
This paper outlines the sticking points migrating from OpenGL ES to OpenGL SC, with a summary of the code affected, the rationale for each change, and workarounds.
Recap Recall that in Part 1 we discussed the differences between OpenGL and Vulkan when it comes to the fixed function parts of the graphics pipeline. We looked at how OpenGL's use of a left-handed set of coordinate axes for clip-space meant that projection matrices for OpenGL also incorporate a z-axis flip to switch from […]
Introduction When someone with an OpenGL background begins using Vulkan, one of the very common outcomes - beyond the initial one of "OMG how much code does it take to draw a triangle?" - is that the resulting image is upside down. Searching the web for this will give many hits on discussions about coordinate […]
We're pleased to announce we've added a new library, KDGpu, to the arsenal of tools we invent to make our lives easier - and then share with you on KDAB's GitHub. Who is this for? If you want to become more productive with Vulkan or learn the concepts of modern explicit graphics APIs, then KDGpu […]
An important part of working with Vulkan and other modern explicit rendering APIs is the synchronization of GPU/GPU and CPU/GPU workloads. In this article we will learn about what Vulkan needs us to synchronize and how to achieve it. We will talk about two high-level parts of the synchronization domain that we, as application and […]
Background of Shaders One particular facet of modern graphics development that is often a pain - even for AAA games -- is shader variants! If you have bought an AAA game in recent years and wondered what the heck it is doing when it says it is compiling shaders for a long time (up to […]
All Qt developers should know about signals, slots, and properties. Those of you who have used QML will know that property bindings are super useful and cool. Bindings allow us to write more reactive and declarative style code. However, they are only available within QML, which means there are no compile time errors when you […]
In the previous two blogs in this series I showed how solving an apparently simple problem about loading a lot of data into RAM using mmap() also turned out to require a solution that improved CPU use across cores. In this blog, I’ll show how we dealt with the bottleneck problems that ensued, and finally, […]
In the first blog in this series, I showed how we solved the original problem of how to use mmap() to load a large set of data into RAM all at once, in response to a request for help from a bioinformatics group dealing with massive data sets on a regular basis. The catch in […]
A few months ago, we received a phone call from a bioinformatics group at a European university. The problem they were having appeared very simple. They wanted to know how to usemmap() to be able to load a large data set into RAM at once. OK I thought, no problem, I can handle that one. […]
Introduction In the previous article we gave an overview of the process for creating a custom aspect and showed how to create (most of) the front end functionality. In this article we shall continue building our custom aspect by implementing the corresponding backend types, registering the types and setting up communication from the frontend to […]
Introduction Qt 3D has a flexible and extensible architecture that allows us to easily add our own new functionality to it without disrupting the existing features. The functionality of Qt 3D is divided among so-called aspects, each of which encapsulates a particular subject domain such as rendering, input, or animation. This short series of articles […]
As an Easter treat here is a quick taster of some of the animation goodies coming to Qt 3D along with Qt 5.9. In this post we will briefly outline the steps needed to create a simple Qt 3D application and the assets it uses to produce this little animation: The basic steps are: Create […]
Physics Based Rendering (PBR) is the latest and greatest trend in real-time rendering yielding much more visually believable images than the traditional Phong or ad-hoc lighting models. The underlying concept is that the shaders should use physical principles in the encoded models - chief of which are conservation of energy and the Fresnel effect. PBR […]
KDAB is pleased to announce that the Qt 5.5.0 release includes a Technology Preview of the Qt3D module. Qt3D provides a high-level framework to allow developers to easily add 3D content to Qt applications using either QML or C++ APIs. The Qt3D module is released with the Technology Preview status. This means that Qt3D will […]
Abstract: Modern OpenGL abandons the old fixed-function pipeline in exchange for a programmable pipeline using shaders and buffer objects. This offers much more flexibility to developers and opens the door to a huge range of effects and techniques whilst at the same time making available huge performance improvements. This presentation will teach you about the […]