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

Phili

unregistriert

1

04.08.2006, 12:11

Post Processing Effects

Jetzt, wo ich es geschafft hab, Shader zu implementieren würd ich gerne noch Poost Processing Effects verwenden. Allerdings hab ich offenbar noch nicht ganz durchblickt, wie das geht :cry: . Mein versuch funktioniert nämlich ncith.
Ich hab mir das so gedacht: ich erstelle ne Surface als Rendertarget(IDirect3DDevice9::CreateRenderTarget), setze die als Rendertarget. Vor jedem Present aufruf Lock ich dann die Surface, kopier sie in ein Array von

C-/C++-Quelltext

1
2
3
4
5
6
7
 struct PH3DBitmapColor
{
    unsigned char Blue;
    unsigned char Green;
    unsigned char Red;
    unsigned char Alpha;
};
veränder die Daten und kopier sie zurück nach dem gelockten Rect. Dann entlocke ich und rufe "Present" auf.

Allerdings fällt mir auch auf, dass es nciht ganz klappen kann, weil erst bei Present die Szene richtig fertig ist. Aber wenn ichs nach Present lock bringts ja auch ncith besonders viel :cry:

//Edit: Ach ja, ich sollte vieleicht noch dazu sagen: Mein Rendertarget ist vom Format D3DFMT_X8R8G8B8, es ist Lockable und hat die gleiche auflösung wie das Standart Render target(also wie in den Present Parameters festgelegt)

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

2

04.08.2006, 13:34

was genau sind Post Processing effects. sowas wie nen art wärmebild oder nachtsichtgerät??

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

3

04.08.2006, 13:35

prinzipiell geht man so vor:
1. renderst du die szene in eine textur.
2. renderst du ein quadrat das über den ganzen backbuffer geht mit der textur drauf und einem shader der den entsprechenden effekt erzeugt in den backbuffer.

das mit dem locken wird extrem in die performance gehn denk ich (BUS/CPU lastig...)

edit: richtig post processing effects sind sowas wie light blooms, wärmebild...

Phili

unregistriert

4

04.08.2006, 13:49

@dot
ok, werds mal so versuchen...

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

5

04.08.2006, 14:19

was fürn post processing effect willst du denn haben?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

04.08.2006, 15:28

@Phili:
Hattest du ernsthaft vor, das Post Processing in Software zu machen?
Damit hättest du deine Anwendung zu einer Dia-Show gemacht ;)
Das musst du schon mit Shadern machen, wie bereits gesagt wurde. Im DX-SDK gibt es sogar ein eigenes Beispielprogramm für die verschiedensten Post Processing-Effekte.

Phili

unregistriert

7

04.08.2006, 15:48

@David Shaderfgen

Naja, wenn man keine Ahnung hat wählt man immer das naheliegendste :D . und das wäre halt das sperren bearbeiten und entsperren gewesen. ALlerdings leuchtet mir auch ein, dasses mit Shadern minimal schneller sein könnte :lol:

Phili

unregistriert

8

04.08.2006, 16:45

Wenn ich auf ne Textur rendere, mus ich dann auch "Present" aufrufen? Oder ist "Present" nur für die Ausgabe auf dem Bildschirm und es langt, wenn ich endSzene verwende?

und außerdem

Zitat

The Render method in the sample first renders the scene onto a set of render target textures. Three render targets are used simultaneously here for color, normal, and position. After that is complete, it calls PerformPostProcess, which handles every aspect of applying postprocesses to the scene image. After PerformPostProcess returns, the code calls StretchRect to copy the postprocessing result to the device backbuffer so that the user can see the final image.

Ist aus dem DX-SDK. Die machen des aber doch irgendwie anders. Die Rendern in ne Surface, verändern die und kopieren dann den back Buffer, oder?

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

9

04.08.2006, 17:08

wenn du die TriBase-Engine verwendest langt es wenn du EndScene aufrufts

Phili

unregistriert

10

04.08.2006, 17:10

@Ghostrider
seh ich so aus?[/url]

Werbeanzeige