Rendertarget auch als Input Texture

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
gdsWizard
Establishment
Beiträge: 237
Registriert: 04.02.2005, 09:12
Benutzertext: www.gamedevstudio.com
Echter Name: Thomas Mittelsdorf
Wohnort: Meiningen
Kontaktdaten:

Rendertarget auch als Input Texture

Beitrag von gdsWizard »

Hallo,


wie der Titel verrät möchte ich gerne in ein DirectX RenderTarget schreiben aber es gleichzeitig zum Lesen in einem Sampler nutzen. Geht das ? Oder muß man dazu in ein extra RenderTarget schreiben. Ich verwende DirectX 11.
Ich möchte das für Postprocessing, es soll aber nur für einen Teil des Rendertargets verwendet werden, der Rest soll unverändert bleiben. Für eine Antwort wäre ich sehr dankbar.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4854
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Rendertarget auch als Input Texture

Beitrag von Schrompf »

Nach meinem Wissen ist das immernoch von der Spec verboten. Ich habe aber unter DX9 und NVidia vor einigen Jahren schon genau das gemacht und es hatte funktioniert. Du bekommst allerdings viele Warnungen von der Runtime, kann sein, dass das im Debug-Modus gar nicht durchgeht.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
gdsWizard
Establishment
Beiträge: 237
Registriert: 04.02.2005, 09:12
Benutzertext: www.gamedevstudio.com
Echter Name: Thomas Mittelsdorf
Wohnort: Meiningen
Kontaktdaten:

Re: Rendertarget auch als Input Texture

Beitrag von gdsWizard »

Danke für die schnelle Antwort. Schade, so muß ich wahrscheinlich das zu berabeitende Rendertarget in eine andere RenderTarget kopieren und die Kopie als eigentliches RenderTarget nutzen. Das kostet natürlich Zeit. Aber die Fehlermeldungen die mir die Runtime liefert würde ich schon ernst nehmen.

Thx
Benutzeravatar
Schrompf
Moderator
Beiträge: 4854
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Rendertarget auch als Input Texture

Beitrag von Schrompf »

Ja. Der offizielle Weg ist seit Urzeiten: Rendertarget-PingPong. Vom einen lesen, ins andere schreiben, und zurück.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
dot
Establishment
Beiträge: 1734
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Rendertarget auch als Input Texture

Beitrag von dot »

Du kannst in D3D11 eine Ressource gar nicht gleichzeitig als RTV und als SRV binden, die Runtime verhindert das. Vermutlich würdest du das in Wahrheit aber sowieso gar nicht wollen, oder was genau wolltest du damit erreichen?
gdsWizard
Establishment
Beiträge: 237
Registriert: 04.02.2005, 09:12
Benutzertext: www.gamedevstudio.com
Echter Name: Thomas Mittelsdorf
Wohnort: Meiningen
Kontaktdaten:

Re: Rendertarget auch als Input Texture

Beitrag von gdsWizard »

Ich hatte überlegt ein teilweise transparentes Material mit Refraction zu zeichnen. Es ging mir aber in der Hauptsache um das Prinzip. Ich möchte in Kürze ein kleines Spiel schreiben und mein Framework für das Rendering erweitern.
Benutzeravatar
dot
Establishment
Beiträge: 1734
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Rendertarget auch als Input Texture

Beitrag von dot »

Ok, nun, die Grafikkarte arbeitet hochgradig parallel; wenn du aus dem Rendertarget lesen könntest, während du in es renderst, würdest du nicht das Ergebnis erhalten, an das du gerade denkst... ;)

Manche mobile Grafikkarten bieten über OpenGL Extensions entsprechende Möglichkeiten, das ist aber eine Spezialität dieser Hardware (Tiled Renderer) und funktioniert auch nur dort und auch nur aus ganz bestimmten Gründen...
gdsWizard
Establishment
Beiträge: 237
Registriert: 04.02.2005, 09:12
Benutzertext: www.gamedevstudio.com
Echter Name: Thomas Mittelsdorf
Wohnort: Meiningen
Kontaktdaten:

Re: Rendertarget auch als Input Texture

Beitrag von gdsWizard »

Ja, du hast Recht, ich würde nicht das Ergebnis erhalten das ich möchte... die Graka arbeitet ja parallel. Andere Effekte wie Blending bietet ja die Hardware direkt an, hier wäre es aber theoretisch möglich.
Benutzeravatar
Lynxeye
Establishment
Beiträge: 145
Registriert: 27.02.2009, 16:50
Echter Name: Lucas
Wohnort: Hildesheim
Kontaktdaten:

Re: Rendertarget auch als Input Texture

Beitrag von Lynxeye »

dot hat geschrieben:Manche mobile Grafikkarten bieten über OpenGL Extensions entsprechende Möglichkeiten, das ist aber eine Spezialität dieser Hardware (Tiled Renderer) und funktioniert auch nur dort und auch nur aus ganz bestimmten Gründen...
Selbst dort definieren die Extensions keinen wahlfreien Zugriff auf das gerade gebundene Rendertarget. Alles was diese Extensions anbieten ist das zurücklesen der Werte aus dem aktuellen Fragment auf welchem ein Fragmentshader gerade arbeitet. Was am Ende nichts anderes ist als die Blendingstufe abzuschaffen und das Blending vollvariabel vom Fragmentshader mit ausführen zu lassen.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4854
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: Rendertarget auch als Input Texture

Beitrag von Schrompf »

Lynxeye hat geschrieben:Selbst dort definieren die Extensions keinen wahlfreien Zugriff auf das gerade gebundene Rendertarget. Alles was diese Extensions anbieten ist das zurücklesen der Werte aus dem aktuellen Fragment auf welchem ein Fragmentshader gerade arbeitet. Was am Ende nichts anderes ist als die Blendingstufe abzuschaffen und das Blending vollvariabel vom Fragmentshader mit ausführen zu lassen.
Und darauf hoffe ich schon seit Ewigkeiten, und ich bin anscheinend auch nicht der Einzige mit dem Wunsch. Aber anscheinend stellt das ein größeres Problem dar, als sauber arbeitende Output Merger zu designen... jedenfalls ist bei den großen drei GPU-Herstellern nichts dergleichen bisher in Sicht :-(
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Lynxeye
Establishment
Beiträge: 145
Registriert: 27.02.2009, 16:50
Echter Name: Lucas
Wohnort: Hildesheim
Kontaktdaten:

Re: Rendertarget auch als Input Texture

Beitrag von Lynxeye »

Schrompf hat geschrieben:Und darauf hoffe ich schon seit Ewigkeiten, und ich bin anscheinend auch nicht der Einzige mit dem Wunsch. Aber anscheinend stellt das ein größeres Problem dar, als sauber arbeitende Output Merger zu designen... jedenfalls ist bei den großen drei GPU-Herstellern nichts dergleichen bisher in Sicht :-(
Zumindest der mobile Teil der NVidia Aufstellung kann das bereits. Da dieser Chip auch auf einem normalen forward Renderer aufbaut und nicht irgendwelche exotischen tilebasieren Ansätze pflegt besteht zumindest Hoffnung, dass es GL_NV_shader_framebuffer_fetch irgendwann auch auf den Desktop schafft.
Antworten