Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Phili

unregistriert

1

02.08.2006, 11:53

fxc, vsa und psa - die Shader-Compiler des DirectX-SDKs

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.
:D

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

2

02.08.2006, 14:06

Damit sollte man in der Tat seinen ersten Shader compilieren können :)

Ich würde aber noch auf die Doku verweisen, für Leute, die etwas mehr Info brauchen.
"Games are algorithmic entertainment."

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

3

02.08.2006, 15:18

der shader compiler liegt nicht mehr in den aktuellen sdk versionen dabei

Phili

unregistriert

4

02.08.2006, 15:27

@Osram
In der Doku steht so gut wie nix drinnen.

@Ghostrider
Sicher? Kann ich mir eigentlich nicht vorstellen...
Also ich hab die Februar 2006 Version, da sind sie dabei!

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

5

02.08.2006, 15:34

also ich habe juni ich habe das ding nicht, ic hglaube seid april ist das nicht mehr drin.
sag mir mal in welchem ordner das ding liegt (sdk ordner)

Phili

unregistriert

6

02.08.2006, 15:41

@Ghostrider
Guck doch einfach über Eingabeaufforderung, obs den Befehl fxc kennt

DarkFitzi

Alter Hase

Beiträge: 608

Wohnort: Eisenberg, Thüringen

Beruf: Schüler, 10te Klasse

  • Private Nachricht senden

7

02.08.2006, 15:43

also in meiner Version (April 2006) sind sie definitiv dabei.
Der ordner ist: "...\Microsoft DirectX SDK\Utilities\Bin\x86\"
Ich würde die Welt gern verbessern, doch Gott gibt mir den Sourcecode nicht! :-(

Phili

unregistriert

8

02.08.2006, 15:43

@DarkFitzi
Hätt mich auch gewundert. Wiso sollte es schließlich nicht mehr dabei sein...?

DarkFitzi

Alter Hase

Beiträge: 608

Wohnort: Eisenberg, Thüringen

Beruf: Schüler, 10te Klasse

  • Private Nachricht senden

9

02.08.2006, 15:45

jap, aber immerhin wurden andere Programme wie EffectEdit auch ersetzt/weggelassen
Ich würde die Welt gern verbessern, doch Gott gibt mir den Sourcecode nicht! :-(

Phili

unregistriert

10

02.08.2006, 15:46

@Abrexxes
Gibts jetzt ne Tutorial-Sektion?
Ich hab mir soviel Mühe gegeben... :)

Werbeanzeige