High Level Shader Language

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

High Level Shader Language (HLSL) is 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[bewerken]

  PS_2_0 PS_2_a PS_2_b PS_3_0[1] PS_4_0[2]
Dependent texture limiet 4 onbeperkt 4 onbeperkt onbeperkt
Texture instructie limiet 32 onbeperkt onbeperkt onbeperkt onbeperkt
Positie register Nee Nee Nee Nee Nee Nee Ja Ja Ja Ja
Instructie slots 32 + 64 512 512 ≥ 512 ≥ 65536
Uitgevoerde instructies 32 + 64 512 512 65536 onbeperkt
Texture indirecties 4 Onbeperkt 4 onbeperkt onbeperkt
Interpolated registers 2 + 8 2 + 8 2 + 8 10 32
Instructie voorspelling Nee Nee Ja Ja Nee Nee Ja Ja Nee Nee
Inhoud invoer registers Nee Nee Nee Nee Nee Nee Ja Ja Ja Ja
Tijdelijke registers 12 22 32 32 4096
vaste registers 32 32 32 224 16x4096
Arbitrary swizzling Nee Nee Ja Ja Nee Nee Ja Ja Ja Ja
Gradient instructions Nee Nee Ja Ja Nee Nee Ja Ja Ja Ja
Loop teller register Nee Nee Nee Nee Nee Nee Ja Ja Ja Ja
gezicht register (2-sided lighting) Nee Nee Nee Nee Nee Nee Ja Ja Ja Ja
Dynamische volgcontrole Nee Nee Nee Nee Nee Nee 24 Ja Ja
Bitwise Operators Nee Nee Nee Nee Nee Nee Nee Nee Ja Ja
Native Integers Nee Nee Nee Nee Nee Nee Nee Nee Ja 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[bewerken]

  VS_2_0 VS_2_a VS_3_0[1] VS_4_0[2]
# van instructies slots 256 256 ≥ 512 4096
Max # van instructies uitvoering 65536 65536 65536 65536
Instructie Predicatie Ja Ja Ja Ja Ja Ja Ja Ja
Tijdelijke Registers 12 13 32 4096
# constant registers ≥ 256 ≥ 256 ≥ 256 16x4096
Static Flow Control Ja Ja Ja Ja Ja Ja Ja Ja
Dynamic Flow Control Nee Nee Ja Ja Ja Ja Ja Ja
Dynamische volgcontrole Diepte Nee Nee 24 24 Ja Ja
Vertex Texture Fetch Nee Nee Nee Nee Ja Ja KA
# of texture samplers N/A N/A 4 128
Geometry instancing ondersteuning Nee Nee Nee Nee Ja Ja Ja Ja
Bitwise Operators Nee Nee Nee Nee Nee Nee Ja Ja
Native Integers Nee Nee Nee Nee Nee Nee Ja 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.
Bronnen, noten en/of referenties
  1. a b Shader Model 3.0, Ashu Rege, NVIDIA Developer Technology Group, 2004.
  2. a b The Direct3D 10 System, David Blythe, Microsoft Corporation, 2006.