Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 01.09.2008, 15:22 Titel: [HLSL]Auf Renderstates zugreifen |
|
|
(Wie) kann ich in hlsl auf bereits über das D3D-Device gesetzte Renderstates wie z.B. den "TextureFactor" zugreifen?
Das Problem ist, dass mein Pixelshader den Wert ignoriert, wenn ich an der Farbe herumrechne. Ist das Absicht, dass die Input-Farbe für den Pixel bei Verwendung eines Shaders nicht durch die vorhergesehene Berechnung(D3DTSS_ALPHAOP) geschickt wird? _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
Dr. Best Senior JLI'ler
Alter: 34 Anmeldedatum: 17.06.2004 Beiträge: 269 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 01.09.2008, 16:16 Titel: |
|
|
Der pixel shader ersetzt die Teile der FFP, die sonst von texture stage states, etc. erledigt werden. Also heißt es alles selber machen. Aber im Fall von texture stage states ist das ja kein großes Problem. Ein paar Multiplikationen oder Additionen, mehr braucht es kaum. Alles was du so an Daten benötigst kommt entweder aus dem vertex shader oder aus Konstanten registern (mit wenigen Ausnahmen). _________________
Ich bin da, wer noch? |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 01.09.2008, 16:18 Titel: |
|
|
Okay, aber muss ich nun den Faktor manuell an die Grafikkarte übergeben oder gibt es ein Register, in dem immer schon steht, wie der entsprechende State innerhalb der FFP gesetzt wurde? _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
Dr. Best Senior JLI'ler
Alter: 34 Anmeldedatum: 17.06.2004 Beiträge: 269 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 01.09.2008, 16:40 Titel: |
|
|
Wie gesagt, mit wenigen Ausnahmen kommen alle Daten entweder aus dem Vertex Shader (meist per Texturkoordinatenregister) oder aus einem Konstantenregister. Der Texturfaktor ist keine solche Ausnahme. Also brauchst du ne Konstante. bei HLSL sind das uniforme Parameter oder globale Variablen. _________________
Ich bin da, wer noch? |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 01.09.2008, 16:48 Titel: |
|
|
Ja, aber meine Frage ist, ob ich diese Konstante selbst belegen muss(SetFloat), oder ob alle Renderstates, die gesetzt werden, automatisch als Konstanten abgerufen werden können.
Wenn zweiteres, wie rufe ich den gesetzten Texturfaktor ab? _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 01.09.2008, 16:55 Titel: |
|
|
Geht das denn nicht?
Code: | ...
float MyTextureFactor = 1.0f; // kA obs mit float4 oder int besser gehen würde
...
technique Foo
{
pass bar
{
TextureFactor = <MyTextureFactor>;
}
} |
Ansonsten setzen und auslesen geht nachdem du:
Zitat: | effect->BeginPass(i); |
aufgerufen hast.
Edit: Achja ich lese grade den Anfangspost etwas genauer, auf den Wert von TextureFactor kannst du nicht mehr im Shader selbst zugreifen, dazu gibts dann natürlich die Konstanten.. |
|
Nach oben |
|
|
Dr. Best Senior JLI'ler
Alter: 34 Anmeldedatum: 17.06.2004 Beiträge: 269 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 01.09.2008, 17:18 Titel: |
|
|
The Lord of Programming hat Folgendes geschrieben: | Ja, aber meine Frage ist, ob ich diese Konstante selbst belegen muss(SetFloat), oder ob alle Renderstates, die gesetzt werden, automatisch als Konstanten abgerufen werden können. |
Du musst sie selbst belegen. Weiß nicht sicher wie das ist wenn man D3DX effects benutzt, aber im Allgemeinen gibt es keine Konstanten, die einfach so gesetzt sind und so weit ich das mitgekriegt habe ist das auch bei effects nicht anders. _________________
Ich bin da, wer noch? |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 01.09.2008, 19:08 Titel: |
|
|
Hm, eigentlich blöd, dabei müsste doch der HLSL Compielr erkennen können, dass man eine Standardvariable benutzen will und die mit der DX internen Renderstate Variable verknüpfen können. Muss ich gleich mal gucken, ob das bei GLSL auch so blöd ist. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 01.09.2008, 19:35 Titel: |
|
|
Tjo, schade. Man hat ja durchaus Schreibzugriff auf die States. Den Lesezugriff für Shader zuzulassen, wär da auch kein großes Ding mehr...
Nuja...danke euch. _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 01.09.2008, 21:04 Titel: |
|
|
Das würde nur "kostbare" Konstanten kosten, ich denke das ist eher nen Ding um mit älteren Shaderversionen kompatibel zu bleiben, aber schnell selbst den Wert zum Shader zu senden ist ja auch kein Problem.
Bei GLSL ist es auch so, es gibt dort aber viele Keywords unter anderem für die oft gebrauchten Matritzen. |
|
Nach oben |
|
|
|