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\$
  • \$\begingroup\$ What version of Nvidia control panel do you have? and what card? \$\endgroup\$ – Joe Swindell Mar 5 '15 at 16:40
  • \$\begingroup\$ You might have to hack it out... forums.guru3d.com/showthread.php?t=387114 has a reference \$\endgroup\$ – Joe Swindell Mar 5 '15 at 16:44
  • \$\begingroup\$ Control Panel - 8.1.740.0, Card - GeForce GTX 660, Driver - 347.12 \$\endgroup\$ – pauld Mar 5 '15 at 17:36
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\$
  • \$\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\$ – pauld Mar 5 '15 at 14:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.