![]() |
DirectX-Forum - Beitragsübersicht - |
|
Thema | DX9: Pixel Shader |
Von |
Gregor |
Datum |
30. Januar 2010 um 16:16:01 |
Frage |
Hallo
Ich möchte einen Shader programmieren der mir alle sichtbaren Pixel eines Models Rot und alle anderen blau färbt und danach auf depth 0 ausgeben.
Ich hab versucht zuerst den Blauen Shader zuzeichnen und danach den roten aber blau überdeckt den roten Shader.Shader Blau ps_2_0 def c0, 0.0, 0.0, 1.0, 1.0 mov oC0, c0 mov oDepth, c0.r Shader Rot ps_2_0 def c0, 1.0, 0.0, 0.0, 1.0 mov oC0, c0 Jetz zu meiner eigentlichen frage ist es möglich überprüfen ob ein pixel sichtbar ist und dann entscheiden ob es rot oder blau gezeichnet werden soll?
Danke Gregor |
|
Antwort: |
Von |
dot |
Datum |
30. Januar 2010 um 16:47:10 |
Antwort |
Im Shader kannst du diese Überprüfung (zumindest mit einem einzelnen Durchlauf) nicht machen da die Sichtbarkeit an dieser Stelle noch nicht bekannt ist (die ist ja erst bestimmt wenn die ganze Szene gerendert wurde).
Dass blau rot überdeckt is auch klar, da alle blauen Pixel ja den kleinstmöglichen z-Wert, nämlich 0, haben. Wofür die Sache mit 0 depth überhaupt?
Was du machen könntest wäre z.B. zuerst einmal die ganze Szene ohne dein Modell zu rendern (um den Depth Buffer zu füllen). Dann renderst du dein Modell in blau mit abgeschaltetem z-Test und zum Schluss nochmal in rot mit z-Test an. |
|
[ Antwort schreiben | Zurück zum DirectX-Forum | Forum-Hilfe ] |
|
Letzte Aktualisierung: Sonntag, 13. Dezember 2015 |
|