In meinem Tutorial über Shader ohne D3DX habe ich dieses Thema nur kurz erläutert. Für alle, die hier noch weitere Informationen wollen, will ich dieses Tutorial schreiben.
Erstmal was genau sind deise Programme?
fxc, vsa und psa sind Programme um Shader zu Kompilieren, die dann in das Programm eingelesen und mit der "CreateVertexShader" / "CreatePixelShader" Methode in die Grafikkarte gelangen.
fxc ist ein Kompiler für HLSL-Code, der über die Eingabeaufforderung bedient werden kann.
vsa und
psa sind Shader Assembler(vsa für VertexShader psa für PixelShader). Sie könenn die Assembler-Sprache der Shader in übersetzen.
Auch diese beiden Programme sind mit der Eingabeaufforderung zu bedienen.
Wo bekomme ich diese Programme?
Alle drei sind mit dem DX SDK dabei.
Wie verwende ich diese Programme?
So, jetzt kommen wir zum Kern des ganzen.
Die meisten von euch werden ihre Shader wohl in HLSL schreiben. Ein Fall für fxc.
Wir starten die Eingabeaufforderung(z.B. Start->Alle Programme->Zubehör->Eingabeaufforderung).
Wenn wir in die Konsole fxc schreiben und bestätigen erhalten wir eine übersicht der Funktionen.
Meistens werden wir wohl diese Syntax benutzen:
|
Quellcode
|
1
|
fxc /T <Shader-Profil> <HLSL-Datei> /Fc <Assembler-Datei>
|
Die HLSL-Datei wird dabei kompiliert und als Assembler-Code in die Assembler-Datei geschrieben.
z.B.
|
Quellcode
|
1
|
fxc /T vs_2_0 C:\Shader1.txt /Fc C:\Shader2.txt
|
Außerdem kann man den Code natürlich gleich als Objekt datei ausgeben(ohne den Umweg über den Assemblercode). Dafür geben wir einfach statt /Fc /Fo an. Allerdings hat das einige Nachteile. Manchmal kann es nämlich ganz nützlich sein, nachzusehen, was genau der Assemblercode denn beinhaltet. Vor allem um nachzusehen, in welchen Registern welche Variablen der Shader erwartet.
Wenn wir es direkt in Object-Code umgewandelt haben, brauchen wir vsa und psa nciht. Sonst jedoch geben wir in die Konsole ein:
|
Quellcode
|
1
|
vsa <Assembler-Datei>
|
Dann wird dei Datei assembliert und in einer Datei mit dem Gleichen Namen aber der Endung "pso"/"vso" abgelegt.
Jetzt können wir dei fertigen Dateien in unser Programm einlesen und verwenden.