High Level Shader Language
From Wikipedia, the free encyclopedia
The High Level Shader Language (HLSL) is a shader language developed by Microsoft for use with Direct3D, and is very similar to Cg.
HLSL allows writing complex graphical computations to be done on the graphics card quickly and efficiently, thus allowing complex effects while also decreasing the chance of programming errors compared to assembly shader programming.
Contents |
[edit] Shader model comparison
[edit] Pixel shader comparison
PS_2_0 | PS_2_a | PS_2_b | PS_3_0 | PS_4_0[1] | |
---|---|---|---|---|---|
Dependent texture limit | 4 | No Limit | 4 | No Limit | No Limit |
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 |
Interpolated registers | 2 + 8 | 2 + 8 | 2 + 8 | 10 | 32 |
Instruction predication | No | Yes | No | Yes | Yes |
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 |
- PS_2_0 = DirectX 9.0 original Shader Model 2 specification.
- PS_2_a = NVIDIA GeForce FX-optimized model.
- PS_2_b = 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."
[edit] Vertex shader comparison
VS_2_0 | VS_2_a | VS_3_0 | VS_4_0[1] | |
---|---|---|---|---|
# of instruction slots | 256 | 256 | >=512 | >=4096 |
Max # of instructions executed | 65535 | 65535 | >=65535 | >=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 | No | No | 4 | 128 |
Geometry Instancing Support | No | No | Yes | Yes |
- VS_2_0 = DirectX 9.0 original Shader Model 2 specification.
- VS_2_a = NVIDIA GeForce FX-optimized model.
- VS_3_0 = Shader Model 3.
- VS_4_0 = Shader Model 4.
[edit] External links
- HLSL Introduction
- Shader Model Comparison at Beyond3D
- Riemer's HLSL Introduction & Tutorial with lots of sample code