DirectX Versions (feature level)
dxlevel was lower than 90), as Source was primarily designed to run on Direct3D 9 only.Source engine games (prior to Left 4 Dead), which primarily only runs on Direct3D 9 renderer, has a DirectX level systems (also referred as feature levels or compatibility levels) to provide compatibility with older GPUs (such as Nvidia GeForce 4 or ATI Radeon R200 series) released prior to DirectX 9, by disabling certain graphical features not available in older graphics card and lowering the graphical settings. The DirectX level system is also used on graphics card which have poor support for DirectX 9 or simply not fully DirectX 9 compliant, such as Nvidia GeForce FX series.
Each section has a description of what each version of DirectX is capable of, for reference when creating fallback materials for older GPUs with lower DirectX feature levels. Under each heading are features not available in previous versions of DirectX.
To run the game with lower DirectX levels on any newer graphics card, use the mat_dxlevel cvar, or -dxlevel command line arguments. Set it to 60, 70, 80, 81, 90 or 95 to set the corresponding DirectX version; it is not possible to run at a higher level than the graphics hardware or the game is capable of.
mat_dxlevel or dxlevel will also make Source engine run on different or older version of Direct3D, but this is not true as changing mat_dxlevel (DirectX levels), does not actually change Direct3D version to Direct3D 8 or earlier. Source will always run on Direct3D 9 renderer (or Direct3D 11/12 on some third-party engine branches). However, various DirectX 9 features, assets and shaders will be disabled or fallback to DirectX 8 or earlier for compatibility with older graphics card, or to improve performance with older GPUs that have poor support for DirectX 9. Older DirectX levels are also used to allow Nvidia's RTX Remix (used in Portal with RTX and upcoming Half-Life 2 RTX, and requires fixed-function shaders) to add raytracing while also replacing DX7/DX8 level assets with PBR capable materials. DirectX levels (or feature level and compatibility level) should not be confused with Direct3D versions.
As an example, GeForce FX 5000 series, while the card is DirectX 9.0a capable, the game will force the card to run at DirectX 8.0 level (which means it's using Direct3D 9 API with feature level 8.0) by default (according to dxsupport.cfg), due to this graphics card architecture are known for having poor performance and graphical issues when running the game with DirectX 9.0 level.
The only modern Source engine branch that still supports older DirectX levels (down to 8.0) is
-vulkan) while having DirectX 8 level would cause graphical issues and crashes (however this issue doesn't apply to RTX Remix as it has it's own version of DXVK that can handle DirectX 7.0 and 8.0 level).To fix this issues, see Fix DirectX 8.0 level on modern hardware. After doing the steps on that section, the Hardware DirectX level should display DirectX 9.0+. Next, configure your video settings (most systems should be able to handle "High" or "Very High" texture, model, shader, shadows, etc. easily).
Users must remove the
-dxlevel command line after launching the game once to prevent the game from reset the video settings to default. (tested in: DirectX levels
- In Source 2004 and Source 2006, DirectX 6 level was functional but unofficially supported as Half-Life 2 and other Source games requires DirectX 7 graphics card as minimum. In Source 2007 or Source 2009, both DirectX 6 and 7 support has been dropped (except RTX Remix games).
- Starting with Left 4 Dead engine branch and later Source games, the DirectX levels system (aswell as all DirectX 8 and early DirectX 9 cards) was dropped in favor of shader & effect details option and automatic GPU memory size detection.
- While DirectX 8 level is supported in Source 2007, Source 2009 and Source 2013, not all pre-L4D branch games support them and using it may either crashes the game or simply doesn't render any props (without
.dx80.vtx), such as Postal III, games with deferred renderer & deferred lighting (including Black Mesa) and other third-party Source games.
DirectX 6 compatibility level
Referred to as "DirectX 6.0" on video settings and "dxlevel 60". DirectX 6-class graphics cards include the Nvidia TNT2 and Matrox G400.
These graphics card and this DirectX version are not officially supported by any Source engine branches, including 2004 and 2006, but it was functional until Source 2007.
DirectX 7 compatibility level
Referred to as "DirectX 7.0" on video settings and "dxlevel 70". DirectX 7-class graphics cards include the Nvidia GeForce 256, 2, 2MX and 4MX cards and the ATI Radeon R100 (7xxx) series.
Additionally, RTX Remix games such as
Portal with RTX and the upcoming
Half-Life 2 RTX uses DirectX 7 level, then replacing the textures, models and lighting with PBR textures and ray-traced lighting, then renders in Vulkan (using DXVK) before converting again to Direct3D 12 (DX12).[3]
- Features
- Blob shadows
- Displacement map texture blending
DirectX 8 compatibility level
A bug report can be found here: Issue 540 on GitHub
Referred to as "DirectX 8.0" on video settings and "dxlevel 80". DirectX 8-class graphics cards include the Nvidia GeForce4 Ti and most of the GeForce FX 5x00 series (while technically DirectX 9 cards, the latter suffer from major performance problems and graphical glitches with the DX9 rendering path).[4]
The Source engine renderer was largely developed using Direct3D 8 as a number of error messages (appears when the game crashes) still refer to DirectX 8 (even if all Source games runs on Direct3D 9, and the game is running on DirectX 9 hardware level or higher), for example Failed to lock index buffer in CMeshDX8::LockIndexBuffer and Failed to lock vertex buffer in CMeshDX8::LockVertexBuffer. However at some point between the release of DirectX 9 (including Direct3D 9) in December 2002 and Half-Life 2 leak in October 2003 (with the leaked game build built in September 2003), the Source engine had already switched from Direct3D 8 to Direct3D 9, and compatibility/feature levels (DirectX levels in Source) were used for DirectX 8-level graphics card or earlier.
- Features
- Refractions with the use of a du/dv map
- Dynamic shadows
- Directional lighting on world brushes using normal maps
- Cube-mapped specular effects
- Cube-mapped water
- Low-quality reflective water (used sparingly)
DirectX 8.1 compatibility level
Referred to as "DirectX 8.1" on video settings and "dxlevel 81". DirectX 8.1-class graphics cards include the Nvidia GeForce FX 5800 and 5900 and the ATI Radeon 8500/9100 and 9000/9200 cards.
Like most of the GeForce FX 5x00 series card, both FX 5800 and 5900 (which are DX9 cards) also suffers from performance issues and graphical glitches on DirectX 9 level.[4] But unlike other GeForce FX 5x00 cards, it runs on DirectX 8.1 level which has soft dynamic shadows.
- Features
- Soft edge dynamic shadows
DirectX 9 (Shader Model 2)
Introduced in December 2002, referred to as "DirectX 9.0" on video settings and "dxlevel 90".
DirectX 9-class graphics cards include the Nvidia GeForce 6 series (6600, 6800) and the ATI Radeon 9500/9600, 9700/9800, X300/X600 and X800 cards.
- Features
- Shader Model 2.0, 2.0a and 2.0b
- Refractions with the use of a bump-map
- High-quality reflective water (used frequently)
- Expensive water are rendered in real-time using planar reflections, rendered upside down.
- World geometry is reflected, but users can also choose to reflect entities (such as props) if the Water detail setting is set to "Reflect All" on Advanced Video Options.
Note:In Left 4 Dead engine branch, the Water detail option is removed.
- Softer edge dynamic shadows
- This means that the "High" shadows detail option will be visible and can be selected.
- To enable High shadows on Intel GPUs, use "-force_vendor_id 0x10DE -force_device_id 0x1088", tricking the game into thinking that the user has a "NVIDIA GeForce GTX 590", enabling High shadows.
- The command above may not be available in older Source games prior to 2012/2013, you can workaround this using
other methods listed on PCGW.
- Normal-mapped lighting on models
- Improved-quality specular effects
Since
Source 2006:
- High dynamic range rendering (disabled by default)
- Phong shading
- Color Correction
Since
Source 2007:
- Motion Blur
- Defaults to MSAA 4X
- LOD set to "0" (
r_lod) - Detail distance up to "4096"
- Bicubic lightmap (disabled by default)
- Also available in all Team Fortress 2 branch games, but not listed on
dxsupport.cfg.
- Also available in all Team Fortress 2 branch games, but not listed on
DirectX 9.0+ - Shader Model 3
Referred to as "DirectX 9.0+" in menu, "DirectX 9.0c", "dxlevel 92" (Mac/Linux) and "dxlevel 95" (Windows). This DirectX 9 level features Shader Model 3.0 support.
DirectX 9.0+ (or Direct3D 9.0c / SM3.0) class graphics card includes Nvidia GeForce 6 series (6600, 6800) and ATI Radeon X1000.
Direct3D 9.0c is also the last version of Direct3D that support all version of Windows 98/98SE/ME/2000 and XP, however the DX9 feature level itself along with DX9 graphics card is still supported until it was dropped in Direct3D 12 (DX12).
- Supported games
dxlevel 95 (or DirectX 9.0+) level was first introduced with updated version of
Source 2004 (since the release of Day of Defeat: Source in 2005), and was also made available for Half-Life 2 and all first-party Source engine games at the time. All subsequent games and Source branches support and default to this DirectX level on any modern graphics card since 2005. Left 4 Dead engine branch games and above requires DirectX 9.0c capable GPU in order to run, and defaults to either this DirectX level or DirectX 10 level (with D3D9 renderer).
dxlevel 92 on Windows, alongside dxlevel 100 on some systems. This can be only seen when using SourceMod (sm_cvar mat_dxlevel).- Features
- Shader Model 3.0
- Lightwarp support
- High dynamic range rendering (enabled by default)
- Defaults to MSAA 4X
- LOD set to "0" (
r_lod) - Detail distance up to "4096"
- Bicubic lightmap (enabled by default)
- Also available in all Team Fortress 2 branch games, but not listed on
dxsupport.cfg.
- Also available in all Team Fortress 2 branch games, but not listed on
Direct3D 9Ex / Windows Aero DirectX extensions
Also referred to as "Direct3D 9.0L", "DirectX 9Ex", "DX9Ex", or "D3D9Ex". This is an extension to Direct3D 9, which was used by Desktop Window Manager for Windows Aero feature and it is available in Windows Vista and later.
D3D9Ex was available on
Source Multiplayer (since 2011),
Source 2013 (including
Team Fortress 2 branch) and
CS:GO engine branch (since 2019). It is not tied to any DirectX level (dxlevel) whatsoever. D3D9Ex may improve performance on certain hardware, depending on the graphics driver, and it also improves windowed mode support aswell as Alt + Tab ⇆ support. Counter-Strike: Global Offensive implementation of D3D9Ex also reportedly reduces CPU usage up to 40%.
In Source Multiplayer, Source 2013 Singleplayer and Source 2013 Multiplayer, D3D9Ex can be only disabled/enabled by using -nod3d9ex.
mat_disable_d3d9ex console command, both of these options are non-functional and does not actually disable D3D9Ex at all. Use -nod3d9ex instead to disable D3D9Ex. Valve claimed that the issue has been fixed in Source Multiplayer, but the problem is still present. (tested in: -nod3d9ex command line.In Counter-Strike: Global Offensive, D3D9Ex can be disabled using the -disable_d3d9ex command line.
DirectX 9.0+ level on other platforms
Game consoles (dxlevel 97/98)
Referred to as "dxlevel 97" (PS3)[confirm] and "dxlevel 98" (Xbox 360). Made specifically for both
and
. Equivalent to dxlevel 95 (Shader Model 3) on PC.
dxlevel 95 after changing video settings). Only works for Xbox 360 or PlayStation 3, where it is required (and enabled by default).- Features
- GPU Particle Physics
Mac/Linux/Android (dxlevel 92)
These platform uses dxlevel 92, which is equivalent to both dxlevel 90 and dxlevel 95, but use the translator ToGL (which has partial Shader Model 3.0 support) to convert the DirectX calls to OpenGL calls, or uses DXVK to convert DirectX calls to Vulkan (with full Shader Model 3.0 or later support). Only on
macOS and
Linux, and other platforms/operating systems that do not support Direct3D and DirectX.
DirectX 10
Introduced with the release of
Windows Vista (and it was only supported on Vista or later), Direct3D 10, while not supported on Windows XP, Source may use this DXLevel (but still renders in D3D9) regardless of operating systems, as long the user had an DirectX 10 graphics card. Referred to as "dxlevel 100".
DirectX 10-class graphics cards include the Nvidia GeForce 8/9/100/200/300 series, Intel GMA X3100, X3500, GMA 4500, and the ATI Radeon HD 2000/3000 series cards.
While Intel HD Graphics (2010) and Intel HD 2000/3000 are DirectX 10-capable and fully support all DirectX 9 features, Source by default (according to dxsupport.cfg with "Intel Unknown" profile) forces it to run at dxlevel 90 instead of dxlevel 95, even if you launch the game for the first time with Nvidia/AMD high performance GPUs on a laptop with dual switchable GPU (integrated and dedicated). Even then, the Source engine never actually supported Direct3D 10, and all DirectX 10 graphics card were capped to dxlevel 95 (except in L4D branch and above which detects dxlevel 100, but those games are still being rendered with Direct3D 9).
- Features
- Unified shader pipeline (fixed-function pipeline has been dropped, however unified pipeline can be programmed to emulate the same fixed-function behavior like DirectX 9)
- Shader Model 4.x
- Supported games
While dxlevel 100 is mentioned in dxsupport.cfg on all games since Left 4 Dead engine branch and above (and used by default on some systems), none of the Source engine branch actually supports and rendered on Direct3D 10 API.
Additionally, Valve later said that Direct3D 9 is still sufficient, therefore no Source engine games actually uses Direct3D 10.[5]
Also, when Source 2007 was released, it shipped with tools textures (ends with -dx10 in file name) that are intended to be displayed on system with DirectX 10 graphics card. Those textures are sRGB flagged, meaning those textures will be rendered in sRGB color space on DirectX 10 graphics card, resulting in correct appearance. sRGB are also mentioned in the GDC 2008 PDF presentation, in which the player runs a Direct3D 9 game on a DirectX 10 graphics card ("dxlevel 95" on Orange Box branch and earlier, or "dxlevel 100" on L4D branch and later) or on Xbox 360 (which uses "dxlevel 98").[6] The presentation shown that the smoke effect are supposed to be thicker, gravity gun supposed to glow brighter, and health + crosshair HUD UI are more visible if it's gamma/sRGB corrected on DX10 graphics card.[6]
D3D9 renderer with DX10 level
In Left 4 Dead engine branch (on some systems) up to the original release of Dota 2 (except
and
), aswell as
Source Filmmaker,[7] these games runs on DX10 level, but the renderer still remains on Direct3D 9. In
and
, DX10 level can be only seen when using SourceMod (sm_cvar mat_dxlevel command).
DirectX 11
Referred to as "dxlevel 110" (feature level 11.0) and "dxlevel 111" (feature level 11.1)
DirectX 11-class graphics cards include the Nvidia GeForce 400 (except GeForce 405) series, Intel HD Graphics 2500, HD 4000 (2012), and the ATI Radeon HD 5000 series.
Like previous Intel graphics cards, while Intel HD 2500/4000 are DirectX 11-capable and fully support all DirectX 9 features, Source by default (according to dxsupport.cfg with "Intel Unknown" profile) forces it to run at dxlevel 90 instead of dxlevel 95, even if you launch the game for the first time with Nvidia/AMD high performance GPUs on a laptop with dual switchable GPU (integrated and dedicated).
- Features
- Shader Model 5.0
- Multithreaded rendering
- Support for Tessellation
- Supported games
Source 2 natively supports and runs on Direct3D 11 by default, but Source 2 also supports Direct3D 9 for older DX9 GPUs (support was dropped in 2021 with Dota 2 update, with only SteamVR Home still support DX9). Titanfall branch was the first Source branch that supported D3D11.
Direct3D 11 also has backward compatibility support for DirectX 10 or earlier feature level cards, but some later games may require DirectX 11 level cards.
- All
Source 2 games
Strata Source
Titanfall branch
Vindictus (introduced in later updates, but the game still uses dxlevel 95level instead.)
DirectX 12
Introduced in 2015, and currently the latest version of DirectX. Originally exclusive to Windows 10 but later backported to Windows 7 in 2019. D3D12 and DX12 are not supported on Windows 8 or 8.1. Referred to as "dxlevel 120".
DirectX 12-class graphics cards include the Nvidia GeForce 900 series, Intel HD Graphics (from 2015-2016), Intel Arc series, and the AMD Radeon 200 (GCN 2.0), Radeon 300 series cards.
Like previous Intel graphics cards, while these latest Intel GPUs are DirectX 12-capable and fully support all DirectX 9 features, Source by default (according to dxsupport.cfg with "Intel Unknown" profile) forces it to run at dxlevel 90 instead of dxlevel 95, even if you launch the game for the first time with Nvidia/AMD high performance GPUs on a laptop with dual switchable GPU (integrated and dedicated), and even if you have powerful Intel Arc series GPU.
The Source 2's VRAD tool was able to recognize this DirectX level, but it will be clamped to dxlevel 110 or dxlevel 111, as the Source 2 engine did not support Direct3D 12 (DX12).[8]
- Features
- Low-level rendering API, similar to Vulkan
- Shader Model 5.1 and later
- Ray tracing (since Windows 10 October 2018 (1809) Update, requires RT-capable GPUs)
- Dynamic refresh rate (since Windows 11)
- Supported games
mat_dxlevel 120.
Apex Legends - using -anticheat_settings=SettingsDX12.jsoncommand line argument. Enabled by default since March 20, 2025 update.- All games using RTX Remix - converts D3D9 (DX7 level) to Vulkan then converted again to D3D12 (this is referred as "VK/DXGI" by RivaTurner Statistics Server), but D3D12 (and
dxlevel 120) is not actually implemented into the engine. [3]
dxsupport.cfg
dxsupport.cfg is a file located at the bin folder of the game. It is used to automatically set the graphical settings (MSAA, anisotropic filtering, screen resolution, etc.) or DirectX versions for a specific graphics card listed on the file, when the game is first launched. Starting with Left 4 Dead, cfg/moddefaults.txt is used for the same purpose.
For example, on the system with GeForce FX 5900, the game will first detect the exact card and load the "GeForce FX 5900" profile according to its "VendorID" (0x10de) and "DeviceID" (0x0334), then set the default launch resolution to 800x600, DirectX level 8.1 (with max level 9.0), disable motion blur and set Anisotropic filtering to 2X. The GeForce FX 5900 along with other FX 5x00 series are technically DX9 card, but as mentioned above, it suffered from poor performance and graphical glitches with DX9 rendering path.[4]
Over time, this file was later updated to include new GPUs up to the GeForce 500 series or Radeon HD 6000 series (in most Source games), and later in
20th anniversary update, changing detail props distance to "4096", set MSAA to 4x and enabling Bicubic lightmaps by default when running on DirectX 9.0+ (the command itself is mislabeled as "r_bicubic_lightmap", instead of "r_lightmap_bicubic").
This file is automatically generated by "dxsupport.pl" Perl script, which was not included anywhere on the game folder nor the officially released Source SDK Base 2013 or Alien Swarm code. The file can be also manually edited to include new GPUs (such as NVIDIA GeForce RTX 3060 as a example).
Additionally, dxsupport.cfg also includes other DirectX versions such as dxlevel 92/97/98/100, these only works on console ports (
,
), L4D branch, Dota 2 and SFM (all 3 are only Source games run on DirectX 10 level, but using D3D9 renderer), or platforms such as Mac/Linux (which uses dxlevel 92 and uses ToGL to convert DirectX calls to OpenGL).
GPUs not listed on the dxsupport.cfg will instead load the "NVidia/ATI/Intel Unknown" and set certain graphics to low and anti-aliasing to disabled (or MSAA 4x since 20th anniversary) by default, sometime this can cause a bug that the game defaults to DirectX 8 level even on modern hardware. The game may also default to DirectX 9.0 instead of 9.0+ (95) when running on a laptop with dual switchable GPU (integrated Intel & dedicated Nvidia/AMD), this issues does not affect integrated AMD GPUs.
dxlevel 80).| DirectX levels | Graphics card/systems | Notes |
|---|---|---|
DirectX 6.0dxlevel 60 |
NVIDIA TNT2 Matrox G400 |
Not supported on Source 2007 and later. |
DirectX 7.0dxlevel 70 |
NVIDIA GeForce 256, 2, 2MX and 4MX ATI Radeon R100 (7xxx) |
RTX Remix games (Portal with RTX, Half-Life 2 RTX) runs on this DirectX level, then translated to Vulkan (using DXVK) and replacing assets at the same time, then renders as Direct3D 12 (DX12). Not supported on Source 2007 and later (outside RTX Remix). |
DirectX 8.0dxlevel 80 |
NVIDIA GeForce4 Ti and most of the GeForce FX 5x00 series GeForce 6600 GT / Go 6600 |
|
DirectX 8.1dxlevel 81 |
NVIDIA GeForce FX 5800 and 5900 ATI Radeon 8500/9100 and 9000/9200 cards. |
|
DirectX 9.0dxlevel 90 |
Nvidia GeForce 6 series (6600, 6600 LE, 6800) ATI Radeon 9500/9600, 9700/9800, X300/X600 and X800 cards All Intel graphics card (incl. Intel HD 2000/3000 or later, aswell as all Intel Arc graphics card) |
|
DirectX 9.2dxlevel 92 |
Only ToGL or DXVK/Vulkan (except DXVK on Windows) (pre-L4D) All GPUs and renderer (post-L4D) |
|
DirectX 9.0+dxlevel 95 |
Nvidia GeForce 6 series (6600, 6800) ATI Radeon X1000 |
Maximum GPU detected/listed on dxsupport.cfg:
|
DirectX 10.0dxlevel 100 |
All | Left 4 Dead engine branch, |
RTX 3060 profile example
This is a example profile for the Nvidia GeForce RTX 3060, combined with ConVar taken from "Nvidia 7800 GTX" dxsupport.cfg profile.
Fix DirectX 8.0 level on modern hardware
On some modern hardware (or systems with newer graphics card), when you start Half-Life 2, Counter-Strike: Source or Portal (and some Source 2013) games for the first time, the game may default to DirectX 8 level, or DirectX 9.0 (on laptops with dual switchable GPUs, systems with Intel HD Graphics/Intel Arc) instead of DirectX 9.0+. This issue may be caused by missing, incorrectly modified or corrupted dxsupport.cfg file, or simply dxsupport.cfg failing to load properly.
To fix this, run the game once with -dxlevel 95 command line argument (or launch options), then quit the game and remove the command line (to prevent the game from changing video settings to default). The "Hardware DirectX level" should display as DirectX 9.0+ on the video options. Also, to fix "High" shadow detail missing on Intel graphics card, use -force_vendor_id 0x10DE -force_device_id 0xFFFF command line argument (works on
,
,
,
, or later Source branches since 2012-2013), or
spoofing GPU vendor ID through DLLs file/registry edit (works on
or earlier).
Sample screenshots
| References | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|