JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=bafbdc614ea35005981f1eeef2d75c4cMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

[HLSL]Auf Renderstates zugreifen

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
The Lord of Programming
Living Legend


Alter: 36
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 01.09.2008, 15:22    Titel: [HLSL]Auf Renderstates zugreifen Antworten mit Zitat

(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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Dr. Best
Senior JLI'ler


Alter: 33
Anmeldedatum: 17.06.2004
Beiträge: 269
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 01.09.2008, 16:16    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name MSN Messenger
The Lord of Programming
Living Legend


Alter: 36
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 01.09.2008, 16:18    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Dr. Best
Senior JLI'ler


Alter: 33
Anmeldedatum: 17.06.2004
Beiträge: 269
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 01.09.2008, 16:40    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name MSN Messenger
The Lord of Programming
Living Legend


Alter: 36
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 01.09.2008, 16:48    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 01.09.2008, 16:55    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Dr. Best
Senior JLI'ler


Alter: 33
Anmeldedatum: 17.06.2004
Beiträge: 269
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 01.09.2008, 17:18    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name MSN Messenger
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3431
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 01.09.2008, 19:08    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 36
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 01.09.2008, 19:35    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 01.09.2008, 21:04    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum