高级着色器语言(High Level Shader Language,简称HLSL),由微軟擁有及開發的一種語言,只能供微軟的Direct3D以及XNA使用。HLSL是GLSL的先辈,同時不能與OpenGL標準兼容。他跟Nvidia的Cg非常相似。
HLSL的主要作用為將一些複雜的圖像處理,快速而又有效率地在顯示卡上完成,與組合式或低階Shader Language相比,能降低在編寫複雜特殊效果時所發生編程錯誤的機會。
Shader model 比較 [编辑]
Pixel shader 比較 [编辑]
| Pixel shader 版本 |
2.0 |
2.0a |
2.0b |
3.0[1] |
4.0[2] |
| Dependent texture limit |
8 |
Unlimited |
8 |
Unlimited |
Unlimited |
| Texture instruction limit |
32 |
Unlimited |
Unlimited |
Unlimited |
Unlimited |
| Position register |
No |
No |
No |
Yes |
Yes |
| Instruction slots |
32 + 64 |
512 |
512 |
≥ 512 |
≥ 65536 |
| Executed instructions |
32 + 64 |
512 |
512 |
65536 |
Unlimited |
| Texture indirections |
4 |
No limit |
4 |
No Limit |
No Limit |
| Interpolated registers |
2 + 8 |
2 + 8 |
2 + 8 |
10 |
32 |
| Instruction predication |
No |
Yes |
No |
Yes |
No |
| Index input registers |
No |
No |
No |
Yes |
Yes |
| Temp registers |
12 |
22 |
32 |
32 |
4096 |
| Constant registers |
32 |
32 |
32 |
224 |
16x4096 |
| Arbitrary swizzling |
No |
Yes |
No |
Yes |
Yes |
| Gradient instructions |
No |
Yes |
No |
Yes |
Yes |
| Loop count register |
No |
No |
No |
Yes |
Yes |
| Face register (2-sided lighting) |
No |
No |
No |
Yes |
Yes |
| Dynamic flow control |
No |
No |
No |
24 |
Yes |
| Bitwise Operators |
No |
No |
No |
No |
Yes |
| Native Integers |
No |
No |
No |
No |
Yes |
- 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.
- PS 4.0 = Shader Model 4.
"32 + 64" for Executed Instructions means "32 texture instructions and 64 arithmetic instructions."
Vertex shader 比較 [编辑]
| Vertex shader 版本 |
VS 2.0 |
VS 2.0a |
VS 3.0[1] |
VS 4.0[2] |
| # of instruction slots |
256 |
256 |
≥ 512 |
4096 |
| Max # of instructions executed |
65536 |
65536 |
65536 |
65536 |
| Instruction Predication |
No |
Yes |
Yes |
Yes |
| Temp Registers |
12 |
13 |
32 |
4096 |
| # constant registers |
≥ 256 |
≥ 256 |
≥ 256 |
16x4096 |
| Static Flow Control |
Yes |
Yes |
Yes |
Yes |
| Dynamic Flow Control |
No |
Yes |
Yes |
Yes |
| Dynamic Flow Control Depth |
No |
24 |
24 |
Yes |
| Vertex Texture Fetch |
No |
No |
Yes |
Yes |
| # of texture samplers |
N/A |
N/A |
4 |
128 |
| en:Geometry instancing support |
No |
No |
Yes |
Yes |
| Bitwise Operators |
No |
No |
No |
Yes |
| Native Integers |
No |
No |
No |
Yes |
- VS 2.0 = DirectX 9.0 original Shader Model specification.
- VS 2.0a = NVIDIA GeForce FX-optimized model.
- VS 3.0 = Shader Model 3.
- VS 4.0 = Shader Model 4.
範例 [编辑]
- 灰階貼圖用
- 灰階值 = 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;
}
注釋 [编辑]
- ^ 1.0 1.1 Shader Model 3.0, Ashu Rege, NVIDIA Developer Technology Group, 2004.
- ^ 2.0 2.1 The Direct3D 10 System, David Blythe, Microsoft Corporation, 2006.
外部連結 [编辑]