Optimised Rendering Pipline
Hi, NANO ORP is a methodology developed specifically to optimise Unreal Engine 4 ®* output for the Nintendo Switch (TM)** Console.
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 an at first 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 lets 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 in 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, are brain knows that there are trees and people and fairgrounds and cars in a car park somewhere but it is concentrated on what it need 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 is less important.
Technology to make this happen.
So back to me, I took what I had learned and looked at all the tools available and how and when to use them to make the game scene look as good as I could at the right times. To do this I use a mixture of an optimised script that runs as a manager in each scene, this can adaptively alter up to 30 parameters in realtime and some techniques listed below:-
- 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.
- Shader complexity.
- Texture complexity and base resolution.
- Dynamic Level of Detail.
- Shared materials.
- Geometry complexity.
- Back Face Culling and Intelligent occlusion culling not just at the object level but looking at each renderer. No need to waste precious resources drawing what the eye cannot see in the simulated world.
- Level planning taking into consideration eye line blocking features.
- Frame rate but also frame timing and resolution.
- Memory management.
- Shadow quality.
- Build size.
- Particle optimisation.
- Motion blur.
- Volumetric lighting and fog.
This is 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.
Thank you for reading and if you’ve read this far, for your interest!
*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.