High Level Shader Language

High Level Shader Language (HLSL) is een shading taal (niet te verwarren met een programmeertaal) die gebruikt wordt voor pixel shading van driedimensionale graphics in computerspellen en andere programma's in Windows.

HLSL werd geïntroduceerd in DirectX 9 (een verzameling van APIs die het programmeurs eenvoudiger maakt computerspellen te programmeren), als vervanging voor de Assembly-taal die daarvoor gebruikt werd (sinds DirectX 8), om meer complexe vertex- en pixel shaders te schrijven.

High Level Shader Language is een high level language zoals de programmeertaal C, waar het op gebaseerd is, maar het is meer gelimiteerd dan C omdat het toegespitst is op het programmeren van pixel shaders.

De taal werd nog verder ontwikkeld bij de release van DirectX 10.

Pixel shader comparison

  PS_2_0PS_2_aPS_2_bPS_3_0[1]PS_4_0[2]
Dependent texture limiet 4onbeperkt4onbeperktonbeperkt
Texture instructie limiet 32onbeperktonbeperktonbeperktonbeperkt
Positie register Nee NeeNee NeeNee NeeJa JaJa Ja
Instructie slots 32 + 64512512≥ 512≥ 65536
Uitgevoerde instructies 32 + 6451251265536onbeperkt
Texture indirecties 4Onbeperkt4onbeperktonbeperkt
Interpolated registers 2 + 82 + 82 + 81032
Instructie voorspelling Nee NeeJa JaNee NeeJa JaNee Nee
Inhoud invoer registers Nee NeeNee NeeNee NeeJa JaJa Ja
Tijdelijke registers 122232324096
vaste registers 32323222416x4096
Arbitrary swizzling Nee NeeJa JaNee NeeJa JaJa Ja
Gradient instructions Nee NeeJa JaNee NeeJa JaJa Ja
Loop teller register Nee NeeNee NeeNee NeeJa JaJa Ja
gezicht register (2-sided lighting) Nee NeeNee NeeNee NeeJa JaJa Ja
Dynamische volgcontrole Nee NeeNee NeeNee Nee24Ja Ja
Bitwise Operators Nee NeeNee NeeNee NeeNee NeeJa Ja
Native Integers Nee NeeNee NeeNee NeeNee NeeJa Ja
  • PS_2_0 = DirectX 9.0 originele Shader Model 2 specificatie.
  • PS_2_a = NVIDIA GeForce FX-geoptimaliseerd 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" voor Executed Instructions betekent "32 texture instructies en 64 arithmetic instructies."

Vertex shader comparison

  VS_2_0VS_2_aVS_3_0[1]VS_4_0[2]
# van instructies slots 256256≥ 5124096
Max # van instructies uitvoering 65536655366553665536
Instructie Predicatie Ja JaJa JaJa JaJa Ja
Tijdelijke Registers 1213324096
# constant registers ≥ 256≥ 256≥ 25616x4096
Static Flow Control Ja JaJa JaJa JaJa Ja
Dynamic Flow Control Nee NeeJa JaJa JaJa Ja
Dynamische volgcontrole Diepte Nee Nee2424Ja Ja
Vertex Texture Fetch Nee NeeNee NeeJa JaKA
# of texture samplers N/AN/A4128
Geometry instancing ondersteuning Nee NeeNee NeeJa JaJa Ja
Bitwise Operators Nee NeeNee NeeNee NeeJa Ja
Native Integers Nee NeeNee NeeNee NeeJa Ja
  • VS_2_0 = DirectX 9.0 originele Shader Model 2 specificatie.
  • VS_2_a = NVIDIA GeForce FX-geoptimaliseerd model.
  • VS_3_0 = Shader Model 3.
  • VS_4_0 = Shader Model 4.