- Home /
SystemInfo.graphicsShaderLevel false report
On one of the test machines I get this in the output log:
Initialize engine version: 4.3.3f1 (c8ca9b6b9936) GfxDevice: creating device client; threaded=0 Direct3D: Version: Direct3D 9.0c [ialmrnt5.dll 6.14.10.4396] Renderer: Intel(R) 82865G Graphics Controller Vendor: Intel VRAM: 64 MB (via fallback) Caps: Shader=20 DepthRT=0 NativeDepth=0 NativeShadow=0 DF16=0 INTZ=0 RAWZ=0 NULL=0 RESZ=0 SlowINTZ=0
Notice the "Shader=20". This chipset doesn't support any shader model as far as I know. Unity player says so much a bit further down the log:
PlayerInitEngineGraphics: GPU not supported; DirectX9 GPU (Shader Model 2.0) is required. Your GPU (Intel(R) 82865G Graphics Controller) only supports Shader Model 0.0 Crash!!!
How come Unity knows this chipset supports 0.0, but reports 2.0 to me? Where else can I search for this info in the program, besides SystemInfo.graphicsShaderLevel?
The first message comes directly from the device driver. The second comes from Unity, and is based on Unity knowing that the device driver is not capable of S$$anonymous$$2.
But what good does that do to me? I don't know how to inquire the driver directly, nor do I think I should. I'm working in Unity, so I'm asking Unity (through "SystemInfo.graphicsShaderLevel"), and it (wrongly) gave me "20". Is there any other way to ask Unity about this and get the correct answer?
You might want to query `SystemInfo.graphicsDeviceName` then. If the user has a 82865G then let the user know the app is about to ter$$anonymous$$ate.
Yeah, that might be a brute force solution for this particular case, but what if there are more chipsets like this for which Unity will incorrectly report the Shadel Level? I can't possibly know them all in advance.
Answer by Max_Bol · Sep 29, 2017 at 02:25 AM
This a bit old, but it's still kinda applicable today so let me answer a simple explanation of the situation.
What you got with Cap: Shader = 20 is the physical limit of the shader of the Intel GPU. That's based on the 64MB VRAM detected. If you want an example of what kind of shaders such a card can run... Think about a range similar to the Nintendo 64.
The Support Shader Model is not the same as the Capped Shader limit. The Support Shader Model is based on 2 factors :
Installed GPU driver(s) Basically, if the drivers, which are made by the manufacturer of the component, doesn't have the right language library, even if the GPU is top notch it would still be incompatible with higher shaders.
The DirectX supported by the GPU & Drivers Basically, depending on what kind of PC or device you work on, if the DirectX drivers available aren't up to the task, the Shader Model supported will return 0 because it fails to render even the most simple shaders which, in Unity, all requires at least DirectX 9.0 to be functional.
For example, if your installed DirectX is below 9 (like 8.2 which is the one previous to 9... which dates back to 2002), it wouldn't be able to translate the rendering data properly, hence the lowest shader compatibility of 0.0.
Your answer
Follow this Question
Related Questions
Effects of Graphics.Blit to rendertexture are temporary 2 Answers
Always included shaders (Graphics settings) 1 Answer
Dymanic Mesh Hiding 2 Answers
Shader effect gone when I hit Play 0 Answers
Cubemap on alpha texture? 0 Answers