Finding what's using Shader Model 5

One of my customers has an old graphics card. It supports SM4 but not 5. I wasn’t aware that I was using any SM5 features but apparently I must be because the game won’t start giving him an error about needing SM5 and his hardware only supporting SM4.

The problem I have is that I have no idea what I might be using that needs SM5. I’ve turned off DX11 support in the platforms and the resulting builds just crash on startup as they do for the customer.

None of my materials seems to use any SM5 features and most of the post processing features except bloom and ambient occlusion are disabled in the project settings.

Is there any way I can find out what might be causing this dependency?

EDIT: The exact error being thrown is “FShaderResource::InitRHI got platform PCD3D_SM5 but it is not compatible with PCD3D_SM4”

If you use any SM5 feature it should be bypassed automaticly atleast with my expirance since i also got SM4 GPU and editor work ok, ofcorse game may be visually different on SM4 GPU. The main feature os SM5 is Telessation, if you use SM4 GPU on UE4 everything will be flat

What exacly happens btw? You didn’t explain

Also SM4 GPUs are quite old, or else you really aim for older hardware i think it ok to drop them, there already games that require SM5 GPU like Overwatch for example

I’ve updated the post with the error.

I did some digging and the game in editor running in SM4 preview mode works fine. It looks exactly how it’s supposed to look and frankly I can’t tell the difference between sm4 and sm5 (probably because I don’t use any sm5 features).

However when packaging the game in shipping config and running it with -d3d10 as an option the game will crash with the error “FShaderResource::InitRHI got platform PCD3D_SM5 but it is not compatible with PCD3D_SM4”

I’m going to do some tests to see if this is a problem with the shipping configuration vs development.

OK it doesn’t seem to be related to shipping vs development. I’ve attached a debugger and most of what’s going through is actually fine. The majority of the calls to ArePlatformsCompatible() are saying the target and current platforms are both SM4 however eventually this happens and it decides the target platform is SM5 and therefore incompatible.

The dll seems to be from nVidia drivers.

>	Waves-Win32-Shipping.exe!FShaderResource::ArePlatformsCompatible(EShaderPlatform CurrentPlatform, EShaderPlatform TargetPlatform) Line 464	C++
 	Waves-Win32-Shipping.exe!FShaderResource::InitRHI() Line 475	C++
 	Waves-Win32-Shipping.exe!FRenderResource::InitResource() Line 31	C++
 	nvwgf2um.dll!58571dd9()	Unknown
 	[Frames below may be incorrect and/or missing, no symbols loaded for nvwgf2um.dll]	
 	nvwgf2um.dll!58573059()	Unknown
 	Waves-Win32-Shipping.exe!EKeys::Initialize() Line 309	C++

hey man did u fix this problem?