Vik


Microsoft Details Direct3D 11.3 & 12 New Rendering Features

Microsoft Details Direct3D 11.3 & 12 New Rendering Features

Back at GDC 2014 in March, Microsoft and its hardware partners first announced the next full iteration of the Direct3D API. Now on to version 12, this latest version of Direct3D would be focused on low level graphics programming, unlocking the greater performance and greater efficiency that game consoles have traditionally enjoyed by giving seasoned programmers more direct access to the underlying hardware. In particular, low level access would improve performance both by reducing the overhead high level APIs incur, and by allowing developers to better utilize multi-threading by making it far easier to have multiple threads submitting work.

At the time Microsoft offered brief hints that there would be more to Direct3D 12 than just the low level API, but the low level API was certainly the focus for the day. Now as part of NVIDIA’s launch of the second generation Maxwell based GeForce GTX 980, Microsoft has opened up to the press and public a bit more on what their plans are for Direct3D. Direct3D 12 will indeed introduce new features, but there will be more in development than just Direct3D 12.

Direct3D 11.3

First and foremost then, Microsoft has announced that there will be a new version of Direct3D 11 coinciding with Direct3D 12. Dubbed Direct3D 11.3, this new version of Direct3D is a continuation of the development and evolution of the Direct3D 11 API and like the previous point updates will be adding API support for features found in upcoming hardware.

At first glance the announcement of Direct3D 11.3 would appear to be at odds with Microsoft’s development work on Direct3D 12, but in reality there is a lot of sense in this announcement. Direct3D 12 is a low level API – powerful, but difficult to master and very dangerous in the hands of inexperienced programmers. The development model envisioned for Direct3D 12 is that a limited number of code gurus will be the ones writing the engines and renderers that target the new API, while everyone else will build on top of these engines. This works well for the many organizations that are licensing engines such as UE4, or for the smaller number of organizations that can justify having such experienced programmers on staff.

However for these reasons a low level API is not suitable for everyone. High level APIs such as Direct3D 11 do exist for a good reason after all; their abstraction not only hides the quirks of the underlying hardware, but it makes development easier and more accessible as well. For these reasons there is a need to offer both high level and low level APIs. Direct3D 12 will be the low level API, and Direct3D 11 will continue to be developed to offer the same features through a high level API.

Direct3D 12

Today’s announcement of Direct3D 11.3 and the new features set that Direct3D 11.3 and 12 will be sharing will have an impact on Direct3D 12 as well. We’ll get to the new features in a moment, but at a high level it should be noted that this means that Direct3D 12 is going to end up being a multi-generational (multi-feature level) API similar to Direct3D 11.

In Direct3D 11 Microsoft introduced feature levels, which allowed programmers to target different generations of hardware using the same API, instead of having to write their code multiple times for each associated API generation. In practice this meant that programmers could target D3D 9, 10, and 11 hardware through the D3D 11 API, restricting their feature use accordingly to match the hardware capabilities. This functionality was exposed through feature levels (ex: FL9_3 for D3D9.0c capable hardware) which offered programmers a neat segmentation of feature sets and requirements.

Direct3D 12 in turn will also be making use of feature levels, allowing developers to exploit the benefits of the low level nature of the API while being able to target multiple generations of hardware. It’s through this mechanism that Direct3D 12 will be usable on GPUs as old as NVIDIA’s Fermi family or as new as their Maxwell family, all the while still being able to utilize the features added in newer generations.

Ultimately for users this means they will need to be mindful of feature levels, just as they are today with Direct3D 11. Hardware that is Direct3D 12 compatible does not mean it supports all of the latest feature sets, and keeping track of feature set compatibility for each generation of hardware will still be important going forward.

11.3 & 12: New Features

Getting to the heart of today’s announcement from Microsoft, we have the newly announced features that will be coming to Direct3D 11.3 and 12. It should be noted at this point in time this is not an exhaustive list of all of the new features that we will see, and Microsoft is still working to define a new feature level to go with them (in the interim they will be accessed through cap bits), but none the less this is our first detailed view at what are expected to be the major new features of 11.3/12

Rasterizer Ordered Views

First and foremost of the new features is Rasterizer Ordered Views (ROVs). As hinted at by the name, ROVs is focused on giving the developer control over the order that elements are rasterized in a scene, so that elements are drawn in the correct order. This feature specifically applies to Unordered Access Views (UAVs) being generated by pixel shaders, which buy their very definition are initially unordered. ROVs offers an alternative to UAV’s unordered nature, which would result in elements being rasterized simply in the order they were finished. For most rendering tasks unordered rasterization is fine (deeper elements would be occluded anyhow), but for a certain category of tasks having the ability to efficiently control the access order to a UAV is important to correctly render a scene quickly.

The textbook use case for ROVs is Order Independent Transparency, which allows for elements to be rendered in any order and still blended together correctly in the final result. OIT is not new – Direct3D 11 gave the API enough flexibility to accomplish this task – however these earlier OIT implementations would be very slow due to sorting, restricting their usefulness outside of CAD/CAM. The ROV implementation however could accomplish the same task much more quickly by getting the order correct from the start, as opposed to having to sort results after the fact.

Along these lines, since OIT is just a specialized case of a pixel blending operation, ROVs will also be usable for other tasks that require controlled pixel blending, including certain cases of anti-aliasing.

Typed UAV Load

 

The second feature coming to Direct3D is Typed UAV Load. Unordered Access Views (UAVs) are a special type of buffer that allows multiple GPU threads to access the same buffer simultaneously without generating memory conflicts. Because of this disorganized nature of UAVs, certain restrictions are in place that Typed UAV Load will address. As implied by the name, Typed UAV Load deals with cases where UAVs are data typed, and how to better handle their use.

Volume Tiled Resources

 

The third feature coming to Direct3D is Volume Tiled Resources. VTR builds off of the work Microsoft and partners have already done for tiled resources (AKA sparse allocation, AKA hardware megatexture) by extending it into the 3rd dimension.

VTRs are primarily meant to be used with volumetric pixels (voxels), with the idea being that with sparse allocation, volume tiles that do not contain any useful information can avoid being allocated, avoiding tying up memory in tiles that will never be used or accessed. This kind of sparse allocation is necessary to make certain kinds of voxel techniques viable.

Conservative Rasterization

 

Last but certainly not least among Direct3D’s new features will be conservative rasterization. Conservative rasterization is essentially a more accurate but performance intensive solution to figuring out whether a polygon covers part of a pixel. Instead of doing a quick and simple test to see if the center of the pixel is bounded by the lines of the polygon, conservative rasterization checks whether the pixel covers the polygon by testing it against the corners of the pixel. This means that conservative rasterization will catch cases where a polygon was too small to cover the center of a pixel, which results in a more accurate outcome, be it better identifying pixels a polygon resides in, or finding polygons too small to cover the center of any pixel at all. This in turn being where the “conservative” aspect of the name comes from, as a rasterizer would be conservative by including every pixel touched by a triangle as opposed to just the pixels where the tringle covers the center point.

Conservative rasterization is being added to Direct3D in order to allow new algorithms to be used which would fail under the imprecise nature of point sampling. Like VTR, voxels play a big part here as conservative rasterization can be used to build a voxel. However it also has use cases in more accurate tiling and even collision detection.

Final Words

Wrapping things up, today’s announcement of Direct3D 11.3 and its new features offers a solid roadmap for both the evolution of Direct3D and the hardware that will support it. By confirming that they are continuing to work on Direct3D 11 Microsoft has answered one of the lingering questions surrounding Direct3D 12 – what happens to Direct3D 11 – and at the same time this highlights the hardware features that the next generation of hardware will need to support in order to be compliant with the latest D3D feature level. And with Direct3D 12 set to be released sometime next year, these new features won’t be too far off either.

NVIDIA GameWorks: More Effects with Less Effort

NVIDIA GameWorks: More Effects with Less Effort

While 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 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 tends to 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.

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.

NVIDIA GameWorks: More Effects with Less Effort

NVIDIA GameWorks: More Effects with Less Effort

While 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 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 tends to 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.

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.

NVIDIA GameWorks: More Effects with Less Effort

NVIDIA GameWorks: More Effects with Less Effort

While 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 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 tends to 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.

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.

The NVIDIA GeForce GTX 980 Review: Maxwell Mark 2

At the start of this year we saw the first half of the Maxwell architecture in the form of the GeForce GTX 750 and GTX 750 Ti. Based on the first generation Maxwell based GM107 GPU, NVIDIA did something we still can hardly believe and managed to pul…