3D Pinball

NextGen Linear Space Lighting and Deferred Shading Demo

3D Pinball

Next Generation Gaming Is

Upon Us!

‘NextGen’ computer graphics capabilities, in the form of Direct X 11 and OpenGL 4.2, have been around for quite some time. However, for various reasons it has largely been ignored by mainstream developers. The biggest reason is probably the existence of game consoles like the Xbox 360 and PlayStation 3. Game consoles provide AAA game developing companies with a stable, well-controlled environment on which to release their games. This is a ‘locked’ environment. Once the the technology and intricate details surrounding that technology is understood, it remains understood – making future development for a specific technology easy as long as it remains locked.

Until now, only PC graphics cards had nextgen capabilities but these capabilities are grossly underutilised. First and foremost developers develop for consoles and then maybe later, almost as an afterthought, release the same games for PC. To complicate matters further, few game engines scale well for PC making it impossible to unlock the additional feature capacity that PC graphics cards held over the previous console generations.

With the arrival of the so called ‘next generation’ consoles like the Xbox One and PlayStation 4, all this changed. For the first time in years the graphics hardware in these next generation consoles are representative of the mid-range NVidia and AMD graphics cards one would find inside the average desktop gaming PC. This is significant because it now gives developers that prioritise console development a reason to adopt Direct X 11 and OpenGL4.2 (or higher). This means that games developed for consoles will scale well on desktop gaming PCs without explicit code changes to the graphics pipeline.

The Brief

We have taken it upon ourselves to create a demo developed in the form of a 3D pinball game to prove that the engine we use (CovertEngine™) is next generation capable. Why 3D Pinball? Simply because it provides the right kind of environment to, at any given time, have a multitude of lights on screen and simultaneously active.

The demo aims to highlight the features of Shader model 5.0 and its use in the deferred shading pipeline to greatly enhance real-time lighting and rendering speeds in general. This demo fully utilises the whole spectrum of what the Shader model 5 pipeline has to offer. There are 4 levels of detail available in the demo, they are – Low, Medium, High and Ultra. This is to ensure that the game demo will run on any DirectX feature Level 11_0 graphics capable device at 60 frames per second.

The ability to harness geometry shaders, allows for extremely efficient cube reflection and point light shadow map generation. We can render all 6 faces required for both of these mentioned procedures in one draw call. Fortunately CovertEngine™’s scene traversal logic allows for frustum culling on multiple views during a single draw pass, so no special handling was required to make this work. The pinball in the demo has full dynamic cubic reflection: for every frame drawn, the scene is additionally rendered for each of the 6 views of the reflection cube. The impact of this reduces to a single draw call and not 6 additional draw calls. The exact same logic applies for point-light shadow map generation.

CovertEngine™’s ability to harness hull shaders allows for on the fly dynamic mesh generation. This enables the creation of mesh masks during shadow map and special effects processing, which in turn ensures that only lit pixels in the region of interest are processed. Proir to the existence of hull shaders, one had to use a vertex buffer to pass in predefined geometry buffers to achieve the same result which obviously has a lot more overhead and is much slower.

In utilising the new technique, the new light processing is so fast that it makes sense to render all the flashing glow lights on the pinball table as actual lights and not by means of the more traditional post filter glow masks. The old traditional way of doing glows is very restrictive and usually requires each pixel of a buffer to be processed during the glow pass, which wastes valuable GPU cycles. CovertEngine™ has built-in glow light support (it is one of the types of lights the engine has on offer). These lights take glows to a new dimension, not only does it speed up the glow process but it gives fine grain control on how a glowing object/region influences its surroundings. Looking at the demo it is clear that glows using this technique actually emits light which interacts with the environment. Finally, the advantage of doing glows in this manner ensures that glows are picked up during reflection passes, be it real-time cubic or screen-space reflections.

Another highlight of the demo is what we called layered transparency and refraction. It is a technique we use to get past the issues involved when rendering transparent objects using deferred shading. This technique ensures transparent objects are rendered in the correct order and are lit by the same deferred lighting as during the opaque pass. It ensures 100% continuity of lighting when dealing with transparent objects. Lastly, just to makes things a bit more realistic, we added screen-space reflections. This, combined with the cubic reflections on the pinball ball, yields multilevel reflections in the region of the ball!

Some Highlights

Glows & Reflections

Note how the glowing LED on the pinball table shines onto the ball and that the ball reflects the glow. Also note the cubic reflection picking up the writing on the table, which in turn is reflected (for a second time) back onto the table during the screen-space reflection pass.

Refractive Objects

Refractive objects are also rendered as deferred and receive the same lighting as opaque objects. No ‘special’ forward lighting passes are required for transparent objects.

Unified Development

The pinball game demo was designed and programmed in its entirety using only the CovertEngine GUI. Although there is no need for Visual Studio (Visual Studio can also be used if preferred. All asset management and processing were managed and processed using the engine’s resource manager.

Copyright 2015 Quandary Solutions LTD | All Rights Reserved | Quandary Solutions LTD is a private limited company incorporated under the laws of England and Wales by the Registrar of companies for England and Wales under company number 08782252