![]() |
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 |
Nico |
E-Mail |
nico.schertler@gmx.de |
Datum |
31. Januar 2010 um 21:28:53 |
Antwort |
Hallo Gregor!
Eventuell kommst du da mit dem Stencil-Buffer weiter. Im SDK ist ein Beispiel, das die Pixel einfärbt, je nachdem, wie oft sie überschrieben werden. So in der Art könntest du ja erstmal dein Objekt zeichnen (dabei Stencil erhöhen) und dann alle anderen Objekte (dabei Stencil vermindern). Dort, wo der Stencil 1 ist, ist das Objekt sichtbar, woanders nicht. Vorher müsstest du ihn vielleicht noch auf einen Wert voreinstellen, sodass du auch erkennst, dass dort eigentlich das Objekt ist, aber verdeckt (1-1=0).
Nico |
|
[ Antwort schreiben | Zurück zum DirectX-Forum | Forum-Hilfe ] |
|
Letzte Aktualisierung: Sonntag, 13. Dezember 2015 |
|