NVIDIA GameWorks: More Effects with Less Effort
by Jarred Walton on September 18, 2014 10:32 PM ESTWhile NVIDIA's hardware is the big start of the day, the software that we run on the hardware is becoming increasingly important. It's one thing to create the world's fastest GPU, but what good is the GPU if you don't have anything that can leverage all that performance? As part of their ongoing drive to improve the state of computer graphics, NVIDIA has a dedicated team of over 300 engineers whose primary focus is the creation of tools and technologies to make the lives of game developers better.
GameWorks consists of several items. There's the core SDK (Software Development Kit), along with IDE (Integrated Development Environment) tools for debugging, profiling, and other items a developer might need. Beyond the core SDK, NVIDIA has a Visual FX SDK, a PhysX SDK, and an Optix SDK. The Visual FX SDK offers solutions for complex, realistic effects (e.g. smoke and fire, faces, waves/water, hair, shadows, and turbulence). PhysX is for physics calculations (either CPU or GPU based, depending on the system). Optix is a ray tracing engine and framework, often used to pre-calculate ("bake") lighting in game levels. NVIDIA also provides sample code for graphics and compute, organized by effect and with tutorials.
Many of the technologies that are part of GameWorks have been around for a few years, but NVIDIA is constantly working on improving their GameWorks library and they had several new technologies on display at their GM204 briefing. One of the big ones has already been covered in our GM204 review, VXGI (Voxel Global Illumination), so I won't rehash that here; basically, it allows for more accurate and realistic indirect lighting. Another new technology that NVIDIA showed is called Turf Effects, which properly simulates individual blades of grass (or at least clumps of grass). Finally, PhysX FleX also has a couple new additions, Adhesion and Gases; FleX uses PhysX to provide GPU simulations of particles, fluids, cloth, etc.
Still images don't do justice to most of these effects, and NVIDIA will most likely have videos available in the future to show what they look like. PhysX FleX for example has a page with a currently unavailable video, so hopefully they'll update that with a live video in the coming weeks. You can find additional content related to GameWorks on the official website.
The holiday 2014 season will see the usual avalanche of new games, and many of the AAA titles will sport at least one or two technologies that come from GameWorks. Here's a short list of some of the games, and then we'll have some screen shots to help illustrate what some of the specific technologies do.
Upcoming Titles with GameWorks Technologies | |
Assassin’s Creed: Unity | HBAO+, TXAA, PCSS, Tessellation |
Batman: Arkham Knight | Turbulence, Environmental PhysX, Volumetric Lights, FaceWorks, Rain Effects |
Borderlands: The Pre-Sequel | PhysX Particles |
Far Cry 4 | HBAO+, PCSS, TXAA, God Rays, Fur, Enhanced 4K Support |
Project CARS | DX11, Turbulence, PhysX Particles, Enhanced 4K Support |
Strife | PhysX Particles, HairWorks |
The Crew | HBAO+, TXAA |
The Witcher 3: Wild Hunt | HairWorks, HBAO+, PhysX, Destruction, Clothing |
Warface | PhysX Particles, Turbulence, Enhanced 4K Support |
War Thunder | WaveWorks, Destruction |
In terms of upcoming games, the two most prominent titles are probably Assassin's Creed Unity and Far Cry 4, and we've created a gallery for each. Both games use multiple GameWorks elements, and NVIDIA was able to provide before/after comparisons for FC4 and AC Unity. Batman: Arkham Knight and The Witcher 3: The Wild Hunt also incorporate many effects from GameWorks, but we didn't get any with/without comparisons.
Starting with HBAO+ (Horizon Based Ambient Occlusion), this is a newer way of performing Ambient Occlusion calculations (SSAO, Screen Space AO, being the previous solution that many games have used). Games vary in how they perform AO, but if we look at AC Unity the comparison between HBAO+ and (presumably SSAO) the default AO, HBAO+ clearly offers better shadows. HBAO+ is also supposed to be faster and more efficient than other AO techniques.
TXAA (Temporal Anti-Aliasing) basically combines MSAA with a variety of filters and post processing techniques to help eliminate jaggies, something which we can all hopefully appreciate. There's one problem I've noticed with TXAA however, which you can see in the above screenshot: it can sometimes make the entire image look rather blurry in my opinion. It's almost as though someone took Photoshop's "blur" filter and applied it to the image. Opinions vary of course, and the effect can be tuned by the developers, but anti-aliasing inherently blurs edges to produce a better looking result, with occasional side effects.
PCSS (Percentage Closer Soft Shadows) was introduced a couple years back, which means we should start seeing it in more shipping games. You can see the video from 2012, and AC Unity and Far Cry 4 are among the first games that will offer PCSS.
Tessellation has been around for a few years now in games, and the concepts behind tessellation go back much further. The net result is that tessellation allows developers to extrude geometry from an otherwise flat surface, creating a much more realistic appearance to games when used appropriately. The cobble stone streets and roof shingles in AC Unity are great examples of the difference tessellation makes.
God rays are a lighting feature that we've seen before, but now NVIDIA has implemented a new way of calculating the shafts of light. They now use tessellation to extrude the shadow mapping and actually create transparent beams of light that they can render.
HairWorks is a way to simulate large strands of hair instead of using standard textures – Far Cry 4 and The Witcher 3 will both use HairWorks, though I have to admit that the hair in motion still doesn't look quite right to me. I think we still need an order of magnitude more "hair", and similar to the TressFX in Tomb Raider this is a step forward but we're not there yet.
There are some additional effects being used in other games – Turbulence, Destruction, FaceWorks, WaveWorks, PhysX, etc. – but the above items give us a good idea of what GameWorks can provide. What's truly interesting about GameWorks is that these libraries are free for any developers that want to use them. The reason for creating GameWorks and basically giving it away is quite simple: NVIDIA needs to entice developers (and perhaps more importantly, publishers) into including these new technologies, as it helps to drive sales of their GPUs among other things. Consider the following (probably not so hypothetical) exchange between a developer and their publisher, paraphrased from NVIDIA's presentation on GameWorks.
A publisher wants to know when game XYZ is ready to ship, and the developer says it's basically done, but they're excited about some really cool features that will just blow people away, and it will take a few more months to get those finished up. "How many people actually have the hardware required to run these new features?" asks the publisher. When the developers guess that only 5% or so of the potential customers have the hardware necessary, you can guess what happens: the new features get cut, and game XYZ ships sooner rather than later.
We've seen this sort of thing happen many times – as an example, Crysis 2 shipped without DX11 support (since the consoles couldn't support that level of detail), adding it in a patch a couple months later. Other games never even see such a patch and we're left with somewhat less impressive visuals. While it's true that great graphics do not an awesome game make, they can certainly enhance the experience when used properly.
It's worth pointing out is that GameWorks is not necessarily exclusive to NVIDIA hardware. While PhysX as an example was originally ported to CUDA, developers have used PhysX on CPUs for many games, and as you can see in the above slide there are many PhysX items that are supported on other platforms. Several of the libraries (Turbulence, WaveWorks, HairWorks, ShadowWorks, FlameWorks, and FaceWorks) are also listed as "planned" for being ported to the latest generation of gaming consoles. Android is also a growing part of NVIDIA's plans, with the Tegra K1 effectively brining the same feature set over to the mobile world that we've had on PCs and notebooks for the past couple of years.
NVIDIA for their part wants to drive the state of the art forward, so that the customers (gamers) demand these high-end technologies and the publishers feel compelled to support them. After all, no publisher would expect great sales from a modern first-person shooter that looks like it was created 10 years ago [insert obligatory Daikatana reference here], but it's a bit of a chicken vs. egg problem. NVIDIA is trying to push things along and maybe hatch the egg a bit earlier, and there have definitely been improvements thanks to their efforts. We applaud their efforts, and more importantly we look forward to seeing better looking games as a result.
22 Comments
View All Comments
decoy11 - Friday, September 19, 2014 - link
The only benchmark I have for PhysX are these 2: http://physxinfo.com/news/11297/the-evolution-of-p...http://physxinfo.com/news/11327/multithreaded-perf...
Its done by someone related to Nvidia and he hasn't release his benchmark tools.
Also CPU-PhysX is very popular you just don't know it is there. If you looked you would know that CPU-PhysX has been included into many games and many engines. The reason you think it runs like ass is because the options to turn off PhysX in games aren't actually turning off PhysX just the Advance PhysX stuff that is meant to be run on Nvidia Graphics Cards.
kyuu - Saturday, September 20, 2014 - link
Right, I know it's just certain PhysX features that are turned off, but the fact remains they run like ass without an Nvidia GPU. Even though you technically can run them on the CPU. So that's why I'm wondering if these new Nvidia-developed features are proprietary to their cards, since Nvidia isn't known for developing technologies that work with anyone else's hardware.krutou - Saturday, September 20, 2014 - link
Too bad Nvidia isn't handing out free lunches.If you want the tech, pay the Nvidia premium (usually only 5-10%). Its that simple.
kyuu - Saturday, September 20, 2014 - link
Ah right, of course. How silly of me. We should all become mindless Nvidia drones. Then AMD could go out of business and Nvidia would have the dGPU market all to themselves. Why, it's the very definition of a win-win scenario.Rock1m1 - Saturday, September 20, 2014 - link
Game works is Nvidia only feature, at least that is the case on Watch Dogs.HisDivineOrder - Saturday, September 20, 2014 - link
"A publisher wants to know when game XYZ is ready to ship, and the developer says it's basically done, but they're excited about some really cool features that will just blow people away, and it will take a few more months to get those finished up. "How many people actually have the hardware required to run these new features?" asks the publisher. When the developers guess that only 5% or so of the potential customers have the hardware necessary, you can guess what happens: the new features get cut, and game XYZ ships sooner rather than later."Interesting that you say this here in the nVidia article but when it was one of MANY times you discuss Mantle, you never describe the exact same scenario. Perhaps because it proves why Mantle is a flawed concept? ;)
Rock1m1 - Saturday, September 20, 2014 - link
I read about the controversy on how it gimps the performance and optimization capability of AMD GPUs, is it true?YazX_ - Saturday, September 20, 2014 - link
i'm not sure from where did you get the chart but Gameworks is Nvidia exclusive and will not work on any other hardware, not because they cannot run it, but Nvidia have these features locked, some features like HBAO+ might work on AMD and other hardware but it will hurt performance very badly.about physx, yes physx will run on CPU if there is no Nvidia hardware found, but you will not get Physx particles, just basic physx. so the article is somehow misleading not stating details.
bottom line is, GameWorks is designed to run and was optimized for Nvidia hardware, while most features will not work on any other hardware, but if it did work, it will hurt performance so bad, so you will end up turning them off (i.e HBAO+ on AMD slashes FPS into half and more)
PCZac - Tuesday, September 23, 2014 - link
That is the worst description of TXAA I've ever read, Jarred Walton do some research before attempting the comment on it. Temporal anti-aliasing and TXAA remove more than just the jagged lines you see at the edge of polygons, which is the only thing other forums of anti-aliasing address. TXAA can also remove or reduce aliasing and artfiacts in the middle of polygons caused by shaders or textures. It also reduces jittering, flickering, and noise, some of which is normally caused by screen based reflections, ambient occulsion, or transparentcy. Some implementations have been blurry, but over all it looks much better in motion, and is going to be sticking around for a while. Unreal Engine 4 has their own implementation of Temporal anti-aliasing and you'll see more engines relying on it.nba - Saturday, September 5, 2015 - link
nba