3
\$\begingroup\$

I have a DirectX11 based game, and I want to enable NVIDIA's built in Ambient Occlusion (that is shown in the NVIDIA control panel, but it grayed out for my application). Is that possible? Or do I need to be a big time developer and arrange something special with NVIDIA to get their ambient occlusion to work with my game?

Here is what happens when attempt to enable ambient occlusion in my application:

Settings greyed out

I've searched and found that sometimes you can override the "not supported" message through the use of an NVIDIA inpector tool, however it looks like the override is only for specific games as shown below:

Ambient occlusion compatability

So my conclusion is either NVIDIA has to enable it somehow, or my game must render in a very specific way, which NVIDIA can pick up on and insert its ambient occlusion calculations into my scene. Is there any documentation of how this works online, or has anyone gotten NVIDIA's ambient occlusion to work for an application they wrote?

\$\endgroup\$
3
  • \$\begingroup\$ What version of Nvidia control panel do you have? and what card? \$\endgroup\$ Commented Mar 5, 2015 at 16:40
  • \$\begingroup\$ You might have to hack it out... forums.guru3d.com/showthread.php?t=387114 has a reference \$\endgroup\$ Commented Mar 5, 2015 at 16:44
  • \$\begingroup\$ Control Panel - 8.1.740.0, Card - GeForce GTX 660, Driver - 347.12 \$\endgroup\$
    – default
    Commented Mar 5, 2015 at 17:36

2 Answers 2

2
+50
\$\begingroup\$

From my understanding and research on the topic, enabling ambient occlusion on the control panel does not make your NVidia card do some voodoo magic and apply AO to your scene. That's the way I read it from this page.

All of the games built on Valve’s Source engine support AO when enabled from the CP

Instead it's an option that gets signaled into your application, for example AO is set to off, and you deal with that setting in your application. With the example you would disable AO.

It makes sense when your options are On, Off or Application Controlled where Application Controlled are just in-game settings.


So how could you acehive this with your appliction? You would need to use NVAPI.

There is some documentation here and an API reference here. The documentation actually shows you how to change the VSYNC global settings (p.8).

Unfortunately I could not get it working on a application basis. Although I did manage to get applications that exist in the program settings via NvAPI_DRS_FindApplicationByName, just remember to set NVDRS_APPLICATION.version = NVDRS_APPLICATION_VER; before you pass it to the function.


Upon more research I have found NVidia ShadowWorks, which looks like it might be promising.

Hope this points you in the right direction.

\$\endgroup\$
0
\$\begingroup\$

The best answer for this is at the Nvidia source: http://www.geforce.com/whats-new/guides/ambient-occlusion#1

\$\endgroup\$
1
  • \$\begingroup\$ I've read that a couple times. Nothing I tried on that page has worked. When I put in my application specific settings, the ambient occlusion setting says "not supported for this application". The global settings doesn't do anything either. \$\endgroup\$
    – default
    Commented Mar 5, 2015 at 14:45

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .