High Level Shader Language
Encyclopedia
The High Level Shader Language or High Level Shading Language (HLSL) is a proprietary shading language
Shading language
A shading language is a special programming language adapted to map on shader programming. Those kind of languages usually have special data types like color and normal...

 developed by Microsoft
Microsoft
Microsoft Corporation is an American public multinational corporation headquartered in Redmond, Washington, USA that develops, manufactures, licenses, and supports a wide range of products and services predominantly related to computing through its various product divisions...

 for use with the Microsoft Direct3D
Direct3D
Direct3D is part of Microsoft's DirectX application programming interface . Direct3D is available for Microsoft Windows operating systems , and for other platforms through the open source software Wine. It is the base for the graphics API on the Xbox and Xbox 360 console systems...

 API. It is analogous to the GLSL
GLSL
OpenGL Shading Language , is a high-level shading language based on the syntax of the C programming language...

 shading language used with the OpenGL
OpenGL
OpenGL is a standard specification defining a cross-language, cross-platform API for writing applications that produce 2D and 3D computer graphics. The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives. OpenGL...

 standard. It is the same as the Nvidia
NVIDIA
Nvidia is an American global technology company based in Santa Clara, California. Nvidia is best known for its graphics processors . Nvidia and chief rival AMD Graphics Techonologies have dominated the high performance GPU market, pushing other manufacturers to smaller, niche roles...

 Cg shading language, as it was developed alongside it.

HLSL programs come in three forms, vertex shaders, geometry shaders, and pixel (or fragment) shaders. A vertex shader is executed for each vertex that is submitted by the application, and is primarily responsible for transforming the vertex from object space to view space, generating texture coordinates, and calculating lighting coefficients such as the vertex's tangent, binormal and normal vectors. When a group of vertices (normally 3, to form a triangle) come through the vertex shader, their output position is interpolated to form pixels within its area; this process is known as rasterisation
Rasterisation
Rasterisation is the task of taking an image described in a vector graphics format and converting it into a raster image for output on a video display or printer, or for storage in a bitmap file format....

. Each of these pixels comes through the pixel shader, whereby the resultant screen colour is calculated.

Optionally, an application using a Direct3D 10 interface and Direct3D 10 hardware may also specify a geometry shader. This shader takes as its input the three vertices of a triangle and uses this data to generate (or tessellate) additional triangles, which are each then sent to the rasterizer.

Pixel shader comparison

Pixel shader version 1.0 to 1.3
1.4
2.0 2.0a 2.0b 3.0 4.0
Dependent texture limit 4 6 8 Unlimited 8 Unlimited Unlimited
Texture instruction limit 4 6*2 32 Unlimited Unlimited Unlimited Unlimited
Position register No No No No No Yes Yes
Instruction slots 8+4 8+4 32 + 64 512 512 ≥ 512 ≥ 65536
Executed instructions 8+4 6*2+8*2 32 + 64 512 512 65536 Unlimited
Texture indirections 4 4 4 Unlimited 4 Unlimited Unlimited
Interpolated registers 2 + 8 2 + 8 2 + 8 2 + 8 2 + 8 10 32
Instruction predication No No No Yes No Yes No
Index input registers No No No No No Yes Yes
Temp registers 2 6 12 to 32 22 32 32 4096
Constant registers 8 8 32 32 32 224 16x4096
Arbitrary swizzling No No No Yes No Yes Yes
Gradient instructions No No No Yes No Yes Yes
Loop count register No No No No No Yes Yes
Face register (2-sided lighting) No No No No No Yes Yes
Dynamic flow control No No No No No 24 Yes
Bitwise Operators No No No No No No Yes
Native Integers No No No No No No Yes

  • PS 2.0 = DirectX 9.0 original Shader Model 2 specification.
  • PS 2.0a = NVIDIA GeForce FX
    GeForce FX
    The GeForce FX or "GeForce 5" series is a line of graphics processing units from the manufacturer NVIDIA.-Overview:...

    -optimized model.
  • PS 2.0b = ATI Radeon X700, X800, X850
    Radeon R420
    The Radeon R420 core from ATI Technologies was the company's basis for its 3rd-generation DirectX 9.0/OpenGL 2.0-capable graphics cards. Used first on the Radeon X800, R420 was produced on a 0.13 micrometer low-K process and used GDDR-3 memory...

     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 comparison

Vertex shader version VS 1.1
VS 2.0
VS 2.0a VS 3.0 VS 4.0
# of instruction slots 128 256 256 ≥ 512 4096
Max # of instructions executed Unknown 65536 65536 65536 65536
Instruction predication
Branch predication
Branch predication is a strategy in computer architecture design for mitigating the costs usually associated with conditional branches, particularly branches to short sections of code...

No No Yes Yes Yes
Temp registers 12 12 13 32 4096
# constant registers ≥ 96 ≥ 256 ≥ 256 ≥ 256 16x4096
Static Flow Control ??? Yes Yes Yes Yes
Dynamic Flow Control No No Yes Yes Yes
Dynamic Flow Control Depth No No 24 24 Yes
Vertex Texture Fetch No No No Yes Yes
# of texture samplers N/A N/A N/A 4 128
Geometry instancing
Geometry instancing
In real-time computer graphics, geometry instancing is the practice of rendering multiple copies of the same mesh in a scene at once. This technique is primarily used for objects such as trees, grass, or buildings which can be represented as repeated geometry without appearing unduly repetitive,...

 support
No No No Yes Yes
Bitwise Operators No No No No Yes
Native Integers No No No No Yes

  • VS 2.0 = DirectX 9.0 original Shader Model specification.
  • VS 2.0a = NVIDIA GeForce FX
    GeForce FX
    The GeForce FX or "GeForce 5" series is a line of graphics processing units from the manufacturer NVIDIA.-Overview:...

    -optimized model.
  • VS 3.0 = Shader Model 3.
    • 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.

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK