Shader Models vs Shader Profiles

The High Level Shading Language for DirectX implements a series of shader models. Using HLSL, you can create C-like programmable shaders for the Direct3D pipeline. Each shader model builds on the capabilities of the model before it, implementing more functionality with fewer restrictions.

Shader model 1 started with DirectX 8 and included assembly level and C-like instructions. This model has many limitations caused by early programmable shader hardware. Shader model 2 and 3 greatly expanded on the number of instructions, and constants shaders could use. They are much more powerful than shader model 1, but still carry some of the existing limitations of the first shader model.

Starting with Windows Vista, shader model 4 is a complete redesign. It allows unlimited instructions and constants (within hardware constraints of your machine), has templated objects to make texture sampling cleaner and more efficient, and has the fewest restrictions of any shader model. It does however require the Windows Driver Model which is only available on the Windows Vista (or later) operating system.

Shader Profiles

A shader profile is the target for compiling a shader; this table lists the shader profiles that are supported by each shader model.

Shader model Shader profiles
Shader Model 1 vs_1_1
Shader Model 2 ps_2_0, ps_2_x, vs_2_0, vs_2_x, ps_4_0_level_9_0, ps_4_0_level_9_1, ps_4_0_level_9_3, vs_4_0_level_9_0, vs_4_0_level_9_1, vs_4_0_level_9_3, lib_4_0_level_9_1, lib_4_0_level_9_3
Shader Model 3 ps_3_0, vs_3_0
Shader Model 4 cs_4_0, gs_4_0, ps_4_0, vs_4_0, cs_4_1, gs_4_1, ps_4_1, vs_4_1, lib_4_0, lib_4_1
Shader Model 5 cs_5_0, ds_5_0, gs_5_0, hs_5_0, ps_5_0, vs_5_0, lib_5_0 (Although gs_4_0, gs_4_1, ps_4_0, ps_4_1, vs_4_0, and vs_4_1 were introduced in shader model 4.0, shader model 5 adds support to these shader profiles for structured buffers and byte address buffers.)
Shader Model 6 cs_6_0, ds_6_0, gs_6_0, hs_6_0, ps_6_0, vs_6_0, lib_6_0

Differences between Direct3D 9 and Direct3D 10:

  • Direct3D 9 introduced shader models 1, 2, and 3.
  • Direct3D 10 introduced shader model 4.
  • Direct3D 10.1 introduced shader model 4.1.

Effect Profiles

An effect profile is the target for compiling an effect/shader; this table lists the effect profiles that are supported by each version of Direct3D.

Differences between Direct3D 9 and Direct3D 10:

  • Direct3D 9 introduced effect-framework profiles fx_1_0 and fx_2_0.
  • Direct3D 10 introduced effect-framework profile fx_4_0.
  • Direct3D 10.1 introduced effect-framework profile fx_4_1.
  • Direct3D 11 introduced effect-framework profile fx_5_0.

Note

These legacy effects profiles are deprecated.

Reference for HLSL