高级着色器语言

高级着色器语言（即 HLSL，缩写自  或 ），是由微軟擁有及開發的一種着色器語言，最初的开发是为了辅助 Direct3D 9 的着色器汇编语言，后成为 Direct3D 10 以来所必须的语言。

HLSL只能供微軟的Direct3D以及XNA使用。HLSL是GLSL的先辈，不能與OpenGL標準兼容。它跟Nvidia的Cg非常相似，是因为两个开发者曾经紧密合作。

HLSL的主要作用為將一些複雜的圖像處理，快速而又有效率地在顯示卡上完成，與組合式或低階Shader Language相比，能降低在編寫複雜特殊效果時所發生編程錯誤的機會。

Shader model 比較

Pixel shader 比較 

PS 2.0 = DirectX 9.0 original Shader Model 2 specification.
PS 2.0a = NVIDIA GeForce FX-optimized model.
PS 2.0b = ATI Radeon X700, X800, X850 shader model, DirectX 9.0b.
PS 3.0 = Shader Model 3.0.
PS 4.0 = Shader Model 4.0.
PS 4.1 = Shader Model 4.1.
PS 5.0 = Shader Model 5.0.

"32 + 64" for Executed Instructions means "32 texture instructions and 64 arithmetic instructions."

Vertex shader 比較 

VS 2.0 = DirectX 9.0 original Shader Model 2 specification.
VS 2.0a = NVIDIA GeForce FX-optimized model.
VS 3.0 = Shader Model 3.0.
 Note that ATI X1000 series cards (e.g. X1900) does not support Vertex Texture Fetch, hence it does not fully comply with the VS 3.0 model. Instead, they offer a feature called "Render to Vertex Buffer (R2VB)" that provides functionality that is a superset of Vertex Texture Fetch.
VS 4.0 = Shader Model 4.0.
VS 4.1 = Shader Model 4.1.
VS 5.0 = Shader Model 5.0.

範例 
灰階貼圖用
 灰階值 = 0.3 x 紅 + 0.59 x 綠 + 0.11 x 藍
sampler2D Texture0;

float4 ps_main( float2 texCoord  : TEXCOORD0 ) : COLOR
{
   float4 _inColor = tex2D( Texture0, texCoord );
   float gray = 0.3*_inColor.x + 0.59*_inColor.y + 0.11*_inColor.z;
   float4 _outColor = float4(gray, gray, gray, 1.0);
   
   return _outColor;
}

注釋

外部連結 
 Introduction to the DirectX 9 High-Level Shader Language  (MSDN Library)
 HLSL Introduction 
 Shader Model Comparison at Beyond3D 
 Riemer's HLSL Introduction & Tutorial with lots of sample code 

操作系统技术
三维计算机图形学
著色器語言