Optimised Rendering Pipline
Hi, NANO ORP is a methodology developed specifically to optimise Unreal Engine 4 ®* output for the Nintendo Switch (TM)** and Microsoft XBOX ®*** Consoles.
The challenge is simple to write down:- to produce the best quality graphics and smoothest game play whilst conserving power usage. The process to achieve this is a little more complicated.
I started out from at first a slightly strange perspective, visual perception. Visual perception is how our brain interprets the environment we are in, now this may sound complicated which scientifically it is but let’s make it simple.
Visual Perception – simple version.
Ok, so if we close our eyes, we see nothing of our environment, open them and we are greeted with an abundance of colour, but what are we actually seeing. We are seeing a representation of the light in the visible spectrum reflecting off objects in our environment. These reflections are received by our eyes and converted into signals to our brain and we ‘see’ but what we ‘see’ is an interpretation of our environment, so in theory if you could artificially recreate the signals you could ‘see’ without eyes, like we do while dreaming, dreaming is our brain replaying our memories and more. All clever stuff but that’s a little too much for today’s discussion but I may come back to my work on that area another day.
In terms of computer-generated images or film our eyes still see the generated light on a screen, think of it like looking out of a window you see the view. In addition, though, we have lots of new tools available to us, we aren’t governed by all the rules of the ‘real world’ indeed often what is purveyed is a world we’ve never seen before like in a Sci-Fi film for instance. We also have the ability through film or computer games to stimulate the brain with not just pictures and sound but all the emotions like excitement and fear this gives us the advantage of focusing on key areas of the environment. A good example of this is a racing game, in real life the racing circuit is real and so everything in it, the crowd, barriers, trees, and so on are at full resolution. If we are a racing driver, however, we are focused on a small selection of objects from that environment, the track, other cars, etc, our brain knows that there are trees and people and fairgrounds and cars in a car park somewhere but it is concentrated on what it needs to focus on to win and not crash. So that nicely brings us on to the fact that in a simulated world like a computer game we can focus on the current area of action being very high quality while the periphery, to a point, only needs to be convincing. The real art is in blending this in real-time, back to the racing driver, on the grid you might pan around and look at the stands and the environment at that point that needs to look great, but as soon as the lights go green those areas are less important.
The traditional ‘options’ menu.
When we get a new game where do we normally head first? In the options menu, here we alter different parameters to try to get the most out of our hardware. Imagine a world where that wasn’t necessary or the options were just really preferences to your style of gameplay. This is what I’m trying to achieve with NANO ORP, it constantly monitors the scene and adjusts the many parameters to deliver the best performance possible at any given time.
Technology to make this happen.
To do this in Unreal Engine 4 I created a C++ class and a custom Blueprint Actor that sits as a game manager in each scene. This can adaptively alter up to 30 parameters in real-time, without giving away all my secrets here are a couple of the techniques/parameters.
Intelligent resolution control – simply put, being able to change the screen resolution in real-time dependent on the scene and its load on the system. Unreal does include a flavour of this for consoles called DynaRes, but I go further and try to figure out what’s causing the frame drop and then adjust a parameter that will have the biggest effect.
Parameters to adjust may be the resolution scale, view distance, anti-aliasing, post-process settings, shadows, texture quality, various effects, and foliage detail.
These are just some of the things that make up what’s behind my NANO ORP a system I aim to ultimately make into an install-able setup, but for now it’s what I’m using to demonstrate what can be done by making the right choices during development. I have developed this toolkit to work with Unity and Unreal Engine 4 but currently I’m concentrating on Unreal Engine as I feel it gives me a little more real-time adaptive control over some of the key features mentioned.
This was just an attempt to explain some of the many factors to consider even before creating a single scene there as so many more like the smaller display in handheld mode on the Nintendo Switch on the one hand it gives you some flexibility but on the other, a challenge to make gameplay engaging, think of it like this you can watch the James Cameron film Avatar on your phone and still really enjoy it but if we are honest it was always meant to be watched on a huge cinema screen, so we really need to think about how to make what’s on the screen so involving you forget the screen size, you are concentrated solely on the gameplay.
Thank you for reading and if you’ve read this far, for your interest too!
*The Hadron Effect EP2 uses Unreal® Engine. Unreal® is a trademark or registered trademark of Epic Games, Inc. in the United States of America and elsewhere. Unreal® Engine, Copyright 1998 – 2020, Epic Games, Inc. All rights reserved.
**Nintendo Switch is a trademark of Nintendo.
***Microsoft®, XBOX®, are registered trademarks of Microsoft Corporation in the United States and/or other countries.