Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

domin

1x Contest-Sieger

  • »domin« ist der Autor dieses Themas
  • Private Nachricht senden

1

29.08.2012, 20:50

[C#-DirectX 9-HLSL] Post Processing

Und zwar möchte ich ,nachdem ich die Szene schon vollständig auf eine Texture gerendert habe, diese nochmal mit Hilfe von HLSL nachbearbeiten.
Dabei möchte ich dann jeden Pixel nochmals einzeln bearbeiten können.
Ich hatte schon die Idee mit einigen Vertices die Textur noch einmal direkt vor die Kamera zu projizieren, aber das finde ich zu umständlich.
Gibt es da nicht noch einen einfacheren Weg?
Meine Projekte:
LightBulb, TurtleRun

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

2

29.08.2012, 20:59

Normalerweise verwendet man die "Screenquad"-Methode
Das heißt, man rendert ein Bildschirmfüllendes Viereck mit der Texture.

In Dx11 kann man das, glaub ich, auch mit einen ComputeShader erledigen.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

3

30.08.2012, 09:27

a du aber DirectX9 verwendest bleibt dir nix anderes übrig als auf ein Bildschirmfüllendes Screenquad zu rendern


Man kann auch ein Bildschirmfüllendes Dreieck rendern.
@D13_Dreinig

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

4

30.08.2012, 12:10

Kannst du nicht einfach in ein Rendertarget Rendern und dieses dann nochmals rendern und darauf deinen weiteren Pixelshader anwenden? Ich arbeite normalerweise mit XNA, da geht das ohne Probleme, habe DirectX allein schon ein paar Jahre nicht mehr benutzt und vorher auch nur Oberflächlich.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

5

30.08.2012, 12:14

Kannst du nicht einfach in ein Rendertarget Rendern und dieses dann nochmals rendern und darauf deinen weiteren Pixelshader anwenden? Ich arbeite normalerweise mit XNA, da geht das ohne Probleme, habe DirectX allein schon ein paar Jahre nicht mehr benutzt und vorher auch nur Oberflächlich.


Ja eben, das ist das übliche Vorgehen:

  • Szene in Offscreentarget rendern
  • Framebuffer RT als Sampler setzen
  • Fullscreenquad oder Fullscreentriangle rendern und im Pixelshader Postprocessingcode ausführen
  • Dies für die kompette Postprocessingchain wiederholen
@D13_Dreinig

Werbeanzeige