JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Rendertarget blurren?

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
HomeLess_PunkDrummer
JLI Master Trainee


Alter: 36
Anmeldedatum: 28.11.2004
Beiträge: 583
Wohnort: Alter Joghurtbecher an der A4
Medaillen: Keine

BeitragVerfasst am: 30.05.2005, 14:14    Titel: Rendertarget blurren? Antworten mit Zitat

Hey.

Ich hab eine Textur, mit D3DUSAGE_RENDERTARGET angelegt, um hinein rendern zu können. Diese hat ihre Daten (also das einzelne Mipmaplevel) in einer IDirect3DSurface9.

Wie kann ich jetzt die Textur, nachdem ich hinein gerendert habe, verwischen.

Ich könnte mithilfe von IDirect3DDevice9::GetRenderTargetData die Daten in eine andere Surface kopieren, diese locken, jeden Pixel einzeln verändern, unlocken und in die RenderTarget-Surface zurück kopieren. Aber das ist total lahm.

Die Textur selbst kann ich nicht locken, da mit D3DPOOL_DEFAULT angelegt, was notwendig ist um D3DUSAGE_RENDERTARGET zu tuen.

Weiß einer wie ich das Ding halbwegs flott verwischen kann? Question
Danke
-Homeless_Punkdrummer
_________________
"Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 30.05.2005, 14:32    Titel: Antworten mit Zitat

wenn du so motion blur machen willst, muss du einfach ein bidl ganz normal in ein Rendertarget renern, und dann halbtransparent anzeigen. Wenn du das mit mehreren Bilder machst, und die imemr wieder mit ner transparnez von 90 oder so drüber kommen, bekommst du halt so nen motion blur effekt.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
HomeLess_PunkDrummer
JLI Master Trainee


Alter: 36
Anmeldedatum: 28.11.2004
Beiträge: 583
Wohnort: Alter Joghurtbecher an der A4
Medaillen: Keine

BeitragVerfasst am: 30.05.2005, 14:43    Titel: Antworten mit Zitat

Ahm, nee, ich will sie verwischen... das heißt, wie einen Unschärfealgorithmus drüberziehen... Aber dafür muss ich erstmal an die Pixel rankommen!
_________________
"Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


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

BeitragVerfasst am: 01.06.2005, 07:48    Titel: Antworten mit Zitat

So würde es über die FixedFunctionPipeline gehen, üblicherweise macht man es aber per Shader (zumindest Heut zu Tage)

CPP:
RenderSceneToTarget: textur1
...
Textur BlurTextur(Textur textur, int Blurwert)
{
  Textur tmp = textur;
  Textur endTextur;
 
  for(int i=0; i<BlurWert; i++)
  {
    endTextur = RendereTexturVersetztAufTargetMit20ProzentTransparenz(tmp, 1PixelNachRechtsVerschoben);
    endTextur = RendereTexturVersetztAufTargetMit20ProzentTransparenz(endTextur, 1PixelNachRechts*2.0);
    endTextur = RendereTexturVersetztAufTargetMit20ProzentTransparenz(endTextur, 1PixelNachRechts*3.0);
    endTextur = RendereTexturVersetztAufTargetMit20ProzentTransparenz(endTextur, 1PixelNachRechts*-2.0);
    endTextur = RendereTexturVersetztAufTargetMit20ProzentTransparenz(endTextur, 1PixelNachRechts*-3.0);

    endTextur = RendereTexturVersetztAufTargetMit20ProzentTransparenz(endTextur, 1PixelNachLinksVerschoben);
    endTextur = RendereTexturVersetztAufTargetMit20ProzentTransparenz(endTextur, 1PixelNachLinksVerschoben*2.0);
    endTextur = RendereTexturVersetztAufTargetMit20ProzentTransparenz(endTextur, 1PixelNachLinksVerschoben*3.0);
    endTextur = RendereTexturVersetztAufTargetMit20ProzentTransparenz(endTextur, 1PixelNachLinksVerschoben*-2.0);
    endTextur = RendereTexturVersetztAufTargetMit20ProzentTransparenz(endTextur, 1PixelNachLinksVerschoben*-3.0);

    tmp = endTextur;
  }
  return tmp;
}


dürfte so richtig sein
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
HomeLess_PunkDrummer
JLI Master Trainee


Alter: 36
Anmeldedatum: 28.11.2004
Beiträge: 583
Wohnort: Alter Joghurtbecher an der A4
Medaillen: Keine

BeitragVerfasst am: 01.06.2005, 18:22    Titel: Antworten mit Zitat

Und das ist ein Shader? Kann ich doch auch hardcoden...

Aber genial, auf die Idee war ich noch gar net gekommen! THX Thumb Up
_________________
"Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


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

BeitragVerfasst am: 01.06.2005, 18:27    Titel: Antworten mit Zitat

HomeLess_PunkDrummer hat Folgendes geschrieben:
Und das ist ein Shader? Kann ich doch auch hardcoden...

Aber genial, auf die Idee war ich noch gar net gekommen! THX Thumb Up


Nein über shader würde es anders gehen (GLSL):

Vertexshader:

Code:
varying vec2 TexMapCoord0;
varying vec2 TexMapCoord1;
varying vec2 TexMapCoord2;
varying vec2 TexMapCoord3;
varying vec2 TexMapCoord4;

uniform vec4 PixelAspect;

vec2 xyOff;

void main()
{
  gl_Position = ftransform();
  xyOff.x = PixelAspect.x;
  xyOff.y = PixelAspect.y;
  TexMapCoord0 = gl_MultiTexCoord0.xy;
  TexMapCoord1 = TexMapCoord0 + xyOff;
  TexMapCoord2 = TexMapCoord0 + xyOff*2.0;
  TexMapCoord3 = TexMapCoord0 - xyOff;
  TexMapCoord4 = TexMapCoord0 - xyOff*2.0;
}


FragmentShader:

Code:
uniform sampler2D texture0;
varying vec2 TexMapCoord0;
varying vec2 TexMapCoord1;
varying vec2 TexMapCoord2;
varying vec2 TexMapCoord3;
varying vec2 TexMapCoord4;

void main()
{
  vec4 color;
  color = texture2D(texture0, TexMapCoord0);
  color += texture2D(texture0, TexMapCoord1);
  color += texture2D(texture0, TexMapCoord2);
  color += texture2D(texture0, TexMapCoord3);
  color += texture2D(texture0, TexMapCoord4);
  color *= 0.2;
  gl_FragColor = color;
}


PixelAspect wird im CCode berechnet:

Code:
PixelAspect.x = 1.0/TexturBreite;
PixelAspect.y = 1.0/TexturHoehe;

_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
HomeLess_PunkDrummer
JLI Master Trainee


Alter: 36
Anmeldedatum: 28.11.2004
Beiträge: 583
Wohnort: Alter Joghurtbecher an der A4
Medaillen: Keine

BeitragVerfasst am: 01.06.2005, 18:46    Titel: Antworten mit Zitat

Nee, ich schreib mir ne Funktion in den Scenemanager...
der auf Wunsch meines Kollegen mit dem ich das Spiel schreibe jetzt "cGrafik" heißt Very Happy
Dafür habe ich verlangt dass wir Klassennamen nicht in Uppercase schreiben... das war ja belastend... Razz
_________________
"Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
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