High Level Shading Language
Direct3D 7まではグラフィックスチップ(GPU)に実装された固定パイプラインおよびハードウェア機能を駆使して3Dグラフィックスシーンを構築していたが、グラフィックス表現の柔軟性を向上させるべく、Direct3D 8ではプログラマブルシェーダーが搭載された。これによって、グラフィックスアプリケーション開発者がグラフィックス描画アルゴリズムをソフトウェアによってカスタマイズすることが可能となった。しかし、Direct3D 8で使用できるシェーダー言語はアセンブリ言語(低水準言語)であったため、開発効率やプログラムコードの再利用性に限界があった。それを解消するべく、C/C++風の宣言文や制御文などの記法を可能とした高水準言語HLSLが開発されることとなった。HLSLはDirect3D 9で初めて導入され、その後もDirect3Dとともに機能拡張が続けられている。
GDC 2016ではDirectX 12の今後の発展、そして新たな次期DirectXとシェーダーモデル6の開発に関して言及があり、HLSL言語仕様にも大きな機能追加が予定されていることが発表された。シェーダーモデル6.0ではWaveと呼ばれるSIMT(英語版)スレッドグループの概念と各グループ内でのデータ交換(シャッフル)のための組み込み命令が導入され、NVIDIA GPUのWarpおよびAMD GPUのWavefrontを標準化した。
アプリケーションの実行時にHLSLソースコードをコンパイルしてバイトコードを生成する機能を組み込むためのD3DCompilerランタイムも提供されている。
他に、ゲームエンジンのUnityでは、シェーダープログラムの記述にHLSLが使用されている(かつてはCgが使用されていたため、一部に名残がある)。なお、Windows上でDirectComputeベース (DirectX 11ベース) のコンピュートシェーダーを使用することができるが、Cgはコンピュートシェーダーに対応していないため、コンピュートシェーダーの記述には当初からHLSLが使用されていた。UnityはCg/HLSLからGLSLへのトランスレーションが可能なため、OpenGL 4.3やOpenGL ES 3.1のコンピュートシェーダーを用いる場合でもGLSLではなくHLSLを使用することが推奨されていた。
LLVM/ClangベースのHLSLコンパイラdxc.exeもGitHub上で開発が進められている。こちらはDirectX Intermediate Language (DXIL) と呼ばれる別の中間言語コードを生成するが、これまでのfxc.exeが生成するバイトコード (DXBC) とは互換性がない。
Windowsデスクトップアプリケーションフレームワークの1つであるWPFでは、グラフィックスのレンダリングにDirect3Dが使用されているが、GUIウィジェットにブラー(ぼかし)やドロップシャドウといったエフェクト(フィルター)を適用することが可能となっている。さらにWPFではユーザープログラマーがHLSLで作成したピクセルシェーダーを使用してカスタムエフェクトを適用することもできる。
WPF 3.5まではシェーダーモデル2.0のピクセルシェーダーのみがサポートされていたが、WPF 4ではシェーダーモデル3.0のピクセルシェーダーも使用できるようになった 。