Sign in to follow this  
mgh

New Video Card Requires New Shaders!

Recommended Posts

In P3D Tips and Tricks forum there is a topic titled New Video Card Requires New Shaders! which has been locked after the initial post so I can't ask this question there.

 

Are new shaders required when the drivers are updated with the video card unchanged?

Share this post


Link to post
Help AVSIM continue to serve you!
Please donate today!

Gerry, you do not need to do anything with shaders on a driver change.

 

Regards

Bob

Share this post


Link to post

Gerry, you did the right thing by asking here. The "Tips and Tricks" forum is solely for information that needs to be easily and quickly found. Discussions would simply dilute and adversely affect the raison d'etre for that forum.

 

There is an optional entry one can put into the Prepar3D.CFG file that will automatically rebuild the shaders whenever a change is made in the UI should one wish that to happen:

[GRAPHICS]
SHADER_CACHE_VERSION=1

Share this post


Link to post

Thanks for the explanation Bill. I'm intrigued to know why changing the hardware requires re-compilation but changing the drivers doesn't - given DirectX is supposed to isolate applications from hardware.

Share this post


Link to post

Gerry, that is a very good question for which I honestly have no authoritative answer...

 

Presumably for the same reason shaders have been compiled for specific hardware ever since DX8.0 was developed:

 

Shaders were first added to Microsoft DirectX in DirectX 8.0. At that time, several virtual shader machines were defined, each roughly corresponding to a particular graphics processor produced by the top 3D graphics vendors.

 

http://msdn.microsoft.com/en-us/library/windows/desktop/bb509704(v=vs.85).aspx

Share this post


Link to post

my, possibly imperfect understanding is that DirectX 11 changed that.
 

Each video card implements a certain level of Microsoft DirectX (DX) functionality depending on the graphics processing units (GPUs) installed. In prior versions of Microsoft Direct3D, you could find out the version of Direct3D the video card implemented, and then program your application accordingly.

With Direct3D 11, a new paradigm is introduced called feature levels. A feature level is a well defined set of GPU functionality. For instance, the 9_1 feature level implements the functionality that was implemented in Microsoft Direct3D 9, which exposes the capabilities of shader models ps_2_x and vs_2_x, while the 11_0 feature level implements the functionality that was implemented in Direct3D 11.

Now when you create a device, you can attempt to create a device for the feature level that you want to request. If the device creation works, that feature level exists, if not, the hardware does not support that feature level. You can either try to recreate a device at a lower feature level or you can choose to exit the application. For more info about creating a device, see the D3D11CreateDevice function.

Using feature levels, you can develop an application for Direct3D 9, Microsoft Direct3D 10, or Direct3D 11, and then run it on 9, 10 or 11 hardware (with some exceptions of course, new 11 features will not run on an existing 9 card for example). Here is a couple of other basic properties of feature levels:

 

http://msdn.microsoft.com/en-us/library/windows/desktop/ff476876(v=vs.85).aspx

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this