[DX9] Merkwürdigkeit mit RenderTargets

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
DomiOh
Establishment
Beiträge: 132
Registriert: 08.10.2002, 14:44

[DX9] Merkwürdigkeit mit RenderTargets

Beitrag von DomiOh »

Hallo,

ich habe für Deferred Shading ein paar RenderTargets vorbereitet.
Und zwar:

RT1: R32F (für Depth)
RT2: G16R16F (für Normals)
RT3: A8R8G8B8 (für Albedo)

Auf meiner ATI 4850 läuft alles perfekt bei ca. 1250 Frames (tut nichts außer einer einfachen Geometrie zu rendern)
Merkwürdig ist folgendes: Ich habe noch einen Rechner mit einer nVidia GeForce 7600 GT.
Dort fällt die Frame-Rate auf 210 Frames ab.
Ändere ich alle Render-Targets auf A8R8G8B8 tut sich bei meiner ATI-Karte gar nichts. Jedoch steigt die Framerate bei der GeForce auf 375 Frames.
Ändere ich nun das RT1 wieder auf R32F bleibt die Frame-Rate der nVidia bei 375 Frames.
Ändere ich aber eines der anderen RenderTargets (2 oder 3) auf ein Float-Format fällt die Framerate wieder auf 210.

Mit einfachen Worten: Ich kann bei der nVidia-Karte nur das RT1 auf ein Float-Format einstellen und muss Performance-Einbußen hinnehmen, wenn ich RT2 oder/und RT3 auf ein Float-Format einstelle.
Der ATI-Karte macht all das nichts aus.

Kann das jemand erklären?
Benutzeravatar
Schrompf
Moderator
Beiträge: 4859
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: [DX9] Merkwürdigkeit mit RenderTargets

Beitrag von Schrompf »

Klingt nach internen Detailgemeinheiten... die Geforce7600 ist ja eigentlich nur eine GF6-Karte, also die erste SM3-Karte überhaupt. Ich glaube jedenfalls nicht, dass Du da was machen kannst. Wenn Du die 3 RTs so brauchst, dann benutze sie so. Bei solchen Seltsamkeiten kannst Du eigentlich nur drauf hoffen, dass sie sich mit der Zeit rauswachsen :-)
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
DomiOh
Establishment
Beiträge: 132
Registriert: 08.10.2002, 14:44

Re: [DX9] Merkwürdigkeit mit RenderTargets

Beitrag von DomiOh »

rauswachsen? Wie meinst du das denn?

Nunja, SM3.0 hat schon die 5200 unterstützt, allerdings ohne Flow-Control.
Und die 5600 schon mit Flow-Control.

Allerdings kann man bei der 7600 auch keine RenderTargets verschiedener Bitzahlen benutzen.
Blöd ist dabei, dass ich die Normalen dann als ARGB speichern muss, statt als G16R16F.

Ich würde ja gerne abfragen, ob eine Graka das richtig unterstützt oder nicht, aber das wird wohl kaum möglich sein, außer mit einem Pre-Render-Test und die FPS messen.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4859
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: [DX9] Merkwürdigkeit mit RenderTargets

Beitrag von Schrompf »

DomiOh hat geschrieben:rauswachsen? Wie meinst du das denn?
Damit meine ich, dass vielleicht irgendwann ein Treiber-Update kommt, mit dem das Phänomen verschwindet. Oder dass schlicht kein Schwein mehr diese Grafikkarte benutzt, wenn Du irgendwann in x Jahren dann mal veröffentlichst.
Nunja, SM3.0 hat schon die 5200 unterstützt, allerdings ohne Flow-Control.
Und die 5600 schon mit Flow-Control.
Nicht nach meinem Wissen. Die 5000-Serie war meines Erachtens eine reine SM2-Lösung, und eine kriechend lahme noch dazu. Dass die kleinsten Modelle der Serie (die 5200) meist Chips der vorherigen Generation benutzen, ist ein anderes Thema.
Allerdings kann man bei der 7600 auch keine RenderTargets verschiedener Bitzahlen benutzen.
Blöd ist dabei, dass ich die Normalen dann als ARGB speichern muss, statt als G16R16F.
Den verstehe ich jetzt nicht. ARGB8 und GR16F haben die selbe Bitanzahl. Diese Kombination müsste also auf allen Grafikkarten mit MRT-Unterstützung laufen. Was genau meinst Du da mit "kann nicht benutzen"?

Bye, Thomas
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Dirk Schulz
Establishment
Beiträge: 130
Registriert: 01.03.2009, 14:21
Alter Benutzername: frittentuete

Re: [DX9] Merkwürdigkeit mit RenderTargets

Beitrag von Dirk Schulz »

Hi,

kennst du schon die GpuGems-Serie auf der Nvidia-Seite? Da reden sie z.B. über das Deferred Shading in S.T.A.L.K.E.R. (aaahhhhh zuviele punkte)

Wenn ich den Herren dort richtig verstehe, war es bei ihnen schneller (und natürlich genauer) alle in 64Bit-Formaten zu speichern.

Hier mal der Link:
http://http.developer.nvidia.com/GPUGem ... ter09.html

Vielleicht bringts ja was ... und wegen der Kompabilität: das unterstützt sogar meine Karte (und das ist ne Radeon 9800)

Dirk Schulz
DomiOh
Establishment
Beiträge: 132
Registriert: 08.10.2002, 14:44

Re: [DX9] Merkwürdigkeit mit RenderTargets

Beitrag von DomiOh »

Das von der NVidia-Seite habe ich probiert. Es ist grottenlangsam.
Hast du mal versucht, STALKER mit dynamischer Beleuchtung auf einer 7600 zu spielen? ;)

Die 5200 hat SM3.0 Unterstützung ohne Flow-Control (definitiv), das sagt sogar DXCapsVIewer
Und die 5600 hat "volle" SM3.0 Unterstützung.
Jörg
Establishment
Beiträge: 296
Registriert: 03.12.2005, 13:06
Wohnort: Trondheim
Kontaktdaten:

Re: [DX9] Merkwürdigkeit mit RenderTargets

Beitrag von Jörg »

DomiOh hat geschrieben:Die 5200 hat SM3.0 Unterstützung ohne Flow-Control (definitiv), das sagt sogar DXCapsVIewer
Und die 5600 hat "volle" SM3.0 Unterstützung.
Holla, dann haben die aus 2.a 3.0 gemacht ???
DomiOh
Establishment
Beiträge: 132
Registriert: 08.10.2002, 14:44

Re: [DX9] Merkwürdigkeit mit RenderTargets

Beitrag von DomiOh »

Wenn man jedenfalls bei DXCapsViewer unter VS30InstructionSlots und PS30InstructionSlots schaut (oder wie das da heisst) sind dort sowohl bei der 5200 als auch bei der 5600 Werte eingetragen.

Allerdings funktioniert auf der 5200 das Spiel "Deus Ex:Invisible War" nicht, weil eine PS3.0-fähige Karte mit Flow-Control fehlt (laut Fehlermeldung). Auf der 5600 läuft alles einwandfrei.

Aber das ist ja auch egal, weil mein Projekt sowieso nicht mehr auf einer 5xxx,6xxx laufen wird ;)
Jedoch hätte ich es gern noch auf der 7600 laufen gehabt, die definitiv etwas schneller ist als meine alte 6600...
Antworten