PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : DX8-Shader - Wo sind die 'binary tokens' definiert?


zeckensack
2002-10-21, 08:50:30
Soderle, heute mal wenig gründlich (muß gleich zur Uni).

Problem ist folgendes: Ich habe einen Shadercompiler, der auf ATI_fragment_shader aufsetzt und schön eine Op nach der anderen ausspuckt (unter GL).

Beim Port zu DX8 habe ich jetzt zwei Möglichkeiten:
1)AssembleShaderFromText (oder so), dafür muß ich eine potenziell riesige Menge Shader zur Laufzeit mit strcat etc zusammenstückeln -> mag ich nicht
2)AssembleShaderFrom ... Irgendwie anders :D
Nee, Spaß, ich hab's vergessen wie die Funktion heißt. Jedenfalls kann man statt ASCII auch direkt diese 'Binary Tokens' übergeben, die im DX8-SDK aber nur salopp als existent erwähnt werden, aber leider nirgends beschrieben.


Bonusfrage:
Ändert sich mit DX9 wieder alles, oder kann man wenigstens noch PS1.3 direkt verarbeiten lassen?

Demirug
2002-10-21, 09:21:36
Wenn man schon ein "function token array" hat kann man das direkt CeatePixelShader übergeben um an das Shaderhandle zu kommen.

Die Dokumentation für das ganze ist im DDK:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/graphics/hh/graphics/d3denum_0bhj.asp

Bei DX9 ändert sich da nichts grundlegendes.

zeckensack
2002-10-21, 16:06:08
Perfekt!

Danke :)

aths
2002-10-21, 19:44:15
Würde mir einer von euch erklären, über was genau ihr da eben gesprochen habt?

Demirug
2002-10-21, 19:57:18
Auch du sollst nicht dumm sterben.

Zeckensack möchte automatisch DX8 Pixelshader erzeugen. Normalerweise schreibt man einen Pixelshader in einer Assemblerartigen sprache. Genau wie bei einer CPU handelt es sich dabei aber immer noch um ein Textformat. Und genau wie bei einer CPU muss dieses Textformat vor der Benutzung in ein Binärformat übersetzt werden. Wenn die Daten im Binärformat hat nennt man das "function token array". Die DX Treiber verstehen auch nur diese Binärformat.

Das Zeckensack die Shader nun gerne zur Laufzeit erzeugen möchte wäre der Umweg über das Textformat etwas aufwendig und langsam. Deswegen möchte er gerne die Shader direkt im Binärformat erzeugen. Dafür brauchte er allerdings den Aufbau diese Formats.

Reicht das als Erklärung?

Pitchfork
2002-10-21, 19:58:35
Die Bytecodes zu den Vertex- und Pixelshadern. Also nicht die ganzen Assemblerbefehle, sondern die assemblierten Bytearrays (na gut, DWORD Arrays), die die App via DX an den Treiber reicht, der damit die GFX Hardware ansteuert.
Die Infos sind z.B. nützlich für Shaderdisassembler.

aths
2002-10-21, 20:45:51
Danke, damit kann ich was anfangen.

Unregistered
2002-11-14, 18:43:27
ist zwar spam, aber Aths haste diesen Smiley oder was das ist selbst gemacht ? (sieht geil aus)

aths
2002-11-14, 23:49:26
Originally posted by Unregistered
ist zwar spam, aber Aths haste diesen Smiley oder was das ist selbst gemacht ? (sieht geil aus) Das Teil hab ich mit Kugelschreiber auf einen alten Briefumschlag gemalt, eingescannt und dann "eingegrünt". Es soll eine Kichererbse sein.

Avalance
2002-12-01, 06:39:20
Originally posted by aths
Das Teil hab ich mit Kugelschreiber auf einen alten Briefumschlag gemalt, eingescannt und dann "eingegrünt". Es soll eine Kichererbse sein.

lol @ kichererbse


zecke du programmierst ne api mit dx8 oder wie darf ich das grad versrehen ... als Softwareproject für die uni? *smily*

zeckensack
2002-12-01, 11:05:23
Originally posted by Avalance
zecke du programmierst ne api mit dx8 oder wie darf ich das grad versrehen ... als Softwareproject für die uni? *smily* Nö, nicht für die Uni. Privat :naughty:

Schau mal in meine Sig, da steht's drin.

Da ich das Projekt aber so langsam abstoßen will (würde meine begrenzte Zeit lieber in etwas neues stecken), ist aus dem kompletten D3D-Port nach anfänglicher Experimentierphase nichts mehr geworden.

Demnächst wird der Wrapper dann Open Source (bin gerade beim Aufräumen, Dokumentieren, GCC/NASM-tauglich Machen, letzte bekannte Bugs Fixen ...), und ich hab' Ruhe :)