High Level Shading Language

High Level Shading Language

HLSL (High Level Shading Language) bezeichnet die DirectX-Komponente, die die Programmierung von Shader-Bausteinen ermöglicht.

Inhaltsverzeichnis

Shader-Sprachen

Unter Shading wird in der Computergrafik die Veränderung einzelner Vertices bzw. Fragmente innerhalb der Grafikpipeline bezeichnet. Dabei wird bevorzugt direkt auf der Hardware gearbeitet, was die Verwendung von Assembler nötig macht. Alternativ können auch Software-seitige Shader-Emulationen durchgeführt werden, z.B. für den Fall, dass die Hardware keine direkt unterstützenden Bausteine für einzelne Funktionen bietet. Die Programmierung mit Assembler ist jedoch recht unpraktisch und fehleranfällig. Diesen Umstand sollen High Level Shading Languages beheben. Sie stellen hochsprachliche Strukturen zur Verfügung, die die Programmierung vereinfachen und damit dem Programmierer ermöglichen, sich auf sein Ziel zu konzentrieren. Ein Compiler übersetzt den Code der Hochsprache in Maschinensprache für den Grafikprozessor.

Sprach-Elemente

HLSL bietet keine OOP Ansätze wie andere Sprachen, ist ansonsten sehr an C orientiert, aber mit deutlich mehr Benutzerkomfort.

Globale Shader Parameter

Parameter, die an einen Shader übergeben werden, stehen in HLSL global im kompletten Code zur Verfügung und werden außerhalb von Methoden oder Structs geschrieben, meist zu Beginn des Codes.

float4x4 world;
float4x4 view;
float4x4 proj;
float4x4 worldViewProj;
float3 lightDir;

Input/Output Structs

Man kann natürlich jeden Parameter einzeln in die Parameterliste einer Shader-Methode schreiben, in der Praxis sind jedoch einheitliche Structs üblich, um Schreibarbeit zu sparen und für mehr Übersichtlichkeit zu sorgen.

struct MyShaderIn
{
    float3 pos;
    float4 normal;
    float4 tangent;
}
struct MyShaderOut
{
    float4 pos;
    float4 normal;
    float4 tangent;
}

Der "In-Struct" gibt die Datenstruktur an, wie sie vom Drahtgittermodell in den Shader gereicht wird, also an den VertexShader. Dieser verarbeitet die Daten und gibt einen "Out-Struct" als Rückgabetyp zurück. Dieser wird dann an den PixelShader weitergereicht, der am Ende nur noch einen float4 oder ähnliches zurückgibt, mit der endgültigen Pixelfarbe.

Vertex/Pixel Shader Methode

Für Vertex-Shader und Pixel-Shader muss eine Methode vorhanden sein. Diese nimmt eine Datenstruktur auf und verarbeitet sie entsprechend.

MyShaderOut MyVertexShader(MyShaderIn In)
{
    ...
}

float4 MyPixelShader(MyShaderIn In)
{
    ...
}

Techniken

Zuletzt müssen die definierten Methoden in Form von Techniken und Durchläufen zugeordnet werden, damit sie vom Compiler entsprechend umgesetzt werden.

technique MyTechnique
{
    pass Pass0
    {
        VertexShader = compile vs_1_1 MyVertexShader();
        PixelShader = compile ps_1_1 MyPixelShader();
    }
}

Vertreter


Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

Schlagen Sie auch in anderen Wörterbüchern nach:

  • High Level Shader Language — The High Level Shader Language or High Level Shading Language (HLSL) is a proprietary shading language developed by Microsoft for use with the Microsoft Direct3D API. It is analogous to the GLSL shading language used with the OpenGL standard. It… …   Wikipedia

  • Shading language — A shading language is a special programming language adapted to easily map on shader programming. Those kind of languages usually have special data types like color and normal. Because of the various target markets of 3D graphics, different… …   Wikipedia

  • Shading language — Shader Un shader (anglais, du verbe to shade : ombrager ou estomper, nuancer) est un programme[Quoi ?] utilisé en image de synthèse pour paramétrer une partie du processus de rendu réalisé par une carte graphique ou un moteur de rendu… …   Wikipédia en Français

  • Cg (programming language) — Cg (short for C for Graphics) is a high level shading language developed by Nvidia in close collaboration with Microsoft[1][2] for programming vertex and pixel shaders. It is very similar to Microsoft s HLSL. Cg is based on the C programming… …   Wikipedia

  • ARB (GPU assembly language) — ARB OpenGL Assembly Language is a low level shading language. It was created by the OpenGL ARB to standardize GPU instructions controlling the hardware graphics pipeline.HistoryTexas Instruments created the first programmable graphics processor… …   Wikipedia

  • Pixel shading — Shader Un shader (anglais, du verbe to shade : ombrager ou estomper, nuancer) est un programme[Quoi ?] utilisé en image de synthèse pour paramétrer une partie du processus de rendu réalisé par une carte graphique ou un moteur de rendu… …   Wikipédia en Français

  • Shader Language — Shader Un shader (anglais, du verbe to shade : ombrager ou estomper, nuancer) est un programme[Quoi ?] utilisé en image de synthèse pour paramétrer une partie du processus de rendu réalisé par une carte graphique ou un moteur de rendu… …   Wikipédia en Français

  • Shader language — Shader Un shader (anglais, du verbe to shade : ombrager ou estomper, nuancer) est un programme[Quoi ?] utilisé en image de synthèse pour paramétrer une partie du processus de rendu réalisé par une carte graphique ou un moteur de rendu… …   Wikipédia en Français

  • Blinn–Phong shading model — The Blinn–Phong shading model (also called Blinn–Phong reflection model or modified Phong reflection model) is a modification to the Phong reflection model developed by Jim Blinn.[1] Blinn–Phong is the default shading model used in OpenGL and… …   Wikipedia

  • computer programming language — Introduction       any of various languages for expressing a set of detailed instructions for a digital computer. Such instructions can be executed directly when they are in the computer manufacturer specific numerical form known as machine… …   Universalium

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”