Hey All, I have a few updates for everyone! This is a little more of a personal update than anything, but if you want to know what’s going on with this darn blog feel free to read more.
The subject of reflection has been an important topic for game engine developers in recent years. In the past, having this information registered someplace might have been considered wasteful, but any more it’s almost expected in some ways. If you’re unfamiliar with reflection, the most common example of something a […]
With the announcement today of the Vulkan API specification, I just couldn’t resist helping you all get on your way to installing and building the LunarG Vulkan SDK along with running the sample Vulkan applications on Ubuntu 15.10 :). This should provide as a great starter point for anyone with […]
One of the things I’ve been excited about playing with since I’ve changed my home OS to Ubuntu is Bash scripting. The lack of any developer-friendly terminal built into a fresh install of Windows has been a painful experience. Luckily, I’ve heard that Powershell 5.0 is an included application in Windows 10 (finally). So […]
Summary KarmaView is an example OpenGL 4.3 framework which allows the user to configure and test parameters of a Physically Based Renderer – also including other advanced rendering techniques. Some of the features include: Dynamic selection of BRDF factors (Fresnel, Geometry, Normals, Sampling). Configurable Alchemy Screen-Space Ambient Occlusion. Unfiltered Per-Fragment Motion Blur. Configurable […]
Previously we updated our BRDF to use Physically Based Shading (PBS) and gave the ambient term an overhaul with Importance Sampled Image Based Lighting (IBL). These changes alone greatly assisted in making our real-time renderer near-realistic (relative to real-time rendering). The advanced ambient term has one issue though – the ambient contribution […]
Light is complicated, and we really don’t have a full equation that accurately models light in the real world. This might sound confusing because of all the recent strides in CG and visual technology. Well, it’s all approximate – it’s just that we select functions which approximate really well. The unfortunate truth is: There is no […]
Shadows are a real problem. They’re expensive, must be split into several shadow maps/levels, and they involve multiple passes. It’s something we take for granted every day – shadows are just kind of there. It’s a part of lighting. But when we simulate lighting mathematically, the lighting model (regardless of it’s complexity) […]
Today we’re going to learn about the Deferred Rendering pipeline. The process of Deferred Rendering is storing information from a pass on our objects in one (or several) buffers known as the GBuffer. On a separate pass we calculate lighting information utilizing all of this cached information.
The past few weeks have been fairly busy. I haven’t been writing tutorials lately for one of two reasons: I worry about the usability of a monolithic set of tutorials that expects you follow in a particular order. I have been particularly busy with class lately. Instead what I plan on doing is […]
This part – like the last one – is entirely optional. The functionality we will add in this section will not produce visual results, but it will take advantage of some functionality (through extensions) which is core in OpenGL 4.3. If you find that this code does not work, you […]
Things are starting to get interesting. We have a colorful 3D cube that rotates, and we can move around the environment with the mouse and keyboard to look at it. Before we go on, it’s about time we start covering ourselves in case of OpenGL errors / warnings. In this section, […]