Wednesday, 30 April 2014

FMX 2014: The Future of Visual Effects in Games

FMX Wednesday 23rd April 20147
The Future of Visual Effects in Game by Simon Green (NVIDIA)
The next talk that we had at FMX really linked well to my Game Art and Machinima Project that I was looking at as it gave me a really good idea of how visual effects in games are ever improving. This talk was taken by Simon Green from NVIDIA which was a really exciting talk about the future of video games and where they are going in a few years time due to their own development at the company. The largest part of the improvement in video games over the last couple of years is due to the advancement of the GPU processor.

At the current time NVIDIA are using a GPU called Kepler but every year they I'll bring out a new and advanced model which like its predecessors will be named after a scientist. At the moment they are also using the NVIDIA visual effect FX SDK to be able to create all of the wonderful things that they can do in their engine. The uses of it are incredible as it is able to:
- Create cinematic visual effects
- Provide robust and easily integrateable software
- Provide multi-platform support
- Provide a way to bring offline graphics to real time rendering

Fire in Game (FlameWorks)
Nowadays in games we see a lot of virtually realistic fire but when we actually look closer e can see that it is only made from 2D billboard images and if you are able to walk around it you can see that the same image is projected onto all angles making it seem unrealistic. Flameworks is influenced by Maya Fluids, Houdini and Industrial Light and Magic's Plume (as to which i did an earlier post about). So once all of these elements have been added together NVIDIA are able to create realistic fire that not only runs in real time but also aims to be fully volumetric so that you can walk completely around it without loosing its shape and look at it from all angles.


They way they do this is by storing the textures in four 3D area which are:
- Velocity
- Fuel
- Smoke densiy
- Temperature
They use a grid to store these textures and then they are brought back into the scene using combustion modules. This process goes through a loop of steps that flow continuously around the loop to produce the 3D fire. They use advection to be able to create moving quantities to begin with, they then confine the the vorticity, which is the process of identifying them. We then add a source in the form of emmiters which is what adds the four 3D texture factors. There is then the combustion element that takes place before a stage with an incompressibility solver which makes the whole sequence divergance free before it all begins again.

Obstacles
Throughout this whole process there where many obstacles that arose to be able to create this method of 3D fire, but they were able to overcome them quite simple by adding in extra details in order for it to work sufficiently. The fire supports normal shapes like spheres and cubes but you can also use signed distance objects to be able to apply this to any shape mesh. You can apply it to a grid as long as there is a grid axis in place and this can be useful say for planes or other moving vehicles on fire.

Rendering Options
How to render options:
- Advert particles through velocity feld
- Render as point sprints
- Require depth sorting ISO surface


Volume Rendering
When volume rendering this out there are other features that come into account as well:
- Colour mapping
- Depth compositing
- Empty space skipping etc

So, how do you map temperature to colour? Temperature is mapped to colouring using a texture fied, White is hot, black is cold and then different colours can be added in between. Transparency can also be added in association with colour and heat haze is an important effect to influence heat to the player and also gives that extra feeling of realism. Shadows are also very important and they support very basic volumetric shadows for smoke because otherwise it would deflect from that realism. They also then add four more layers and jittering to blur out the harsh edges before blurring further to reduce the noise in the scene. Finally volumetric scattering is added for light around the fire so that it gives more realism and is then blurred out again to give a more heat driven smokey look to the whole scene.


What it can do: 
- Easy to cast rays
- Reflection of fire in objects
- Calculate reflection rays
- Use a down-sampled volume for blurry reflections

Future Work? 
- Optimisation
- Improve volume rendering
- Block sparse volumes
- Global illumination
- Two buffer collisions
- Simulation in the cloud?

No comments:

Post a Comment