[DX9] In MipMaps rendern

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
Benutzeravatar
Zudomon
Establishment
Beiträge: 2254
Registriert: 25.03.2009, 07:20
Kontaktdaten:

[DX9] In MipMaps rendern

Beitrag von Zudomon »

Gibt es eine Möglichkeit, bei einem Rendertarget in eine MipMap Stufe zu rendern?
Mir fällt da kein Weg ein. Z.B. bei dynamischen Cubemaps wäre das ganz sinnvoll für das PBR. Oder aber auch bei dynamisch erzeugten Texturen, gibt es ja sonst keine Möglichkeit die MipMaps Gamma korrigiert per Hand zu erstellen, ohne dann das ganze wieder in den Systemspeicher runter zu laden, denn ich bekomme nur den Zugriff auf MipMaps wenn diese nicht mit dem Flag Rendertarget erstellt wurden.
Benutzeravatar
Krishty
Establishment
Beiträge: 8237
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [DX9] In MipMaps rendern

Beitrag von Krishty »

Du legst die Render-Target-Textur an und holst dir dann via GetSurfaceLevel() das Mip-Level, das du als Render Target bindest. Das akzeptiert ein Integer, der das Mip-Level angibt. Einfach was anderes als 0 angeben, und du bekommst die entsprechende Mip-Stufe.

Oder verstehe ich die Frage falsch? :)

Nachtrag: Es bietet sich aber an, trotzdem in ein separates Render Target zu zeichnen und dann via StretchRect() in ein Mip-Level einer Textur zu kopieren – damit man auch Anti-Aliasing nutzen kann.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Zudomon
Establishment
Beiträge: 2254
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: [DX9] In MipMaps rendern

Beitrag von Zudomon »

So dachte ich es auch... aber sobald die Textur als RenderTarget definiert ist, bekomme ich mit GetSurfaceLevel nur nil zurück, wenn es nicht Level 0 ist... das macht dann auch das StretchRect unmöglich.
Benutzeravatar
Krishty
Establishment
Beiträge: 8237
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [DX9] In MipMaps rendern

Beitrag von Krishty »

Überprüf mal, ob die Textur mit der richtigen Anzahl Mip Levels erzeugt wurde. Ich kann’s hier gerade nicht testen, aber von schnellem googeln her scheint niemand sonst so ein Problem zu haben …

… ist die Textur besonders groß? Größer als Bildschirmauflösung kann in Limitationen reinrennen. Versuch mal was Kleines, wie 512×512 …
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Zudomon
Establishment
Beiträge: 2254
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: [DX9] In MipMaps rendern

Beitrag von Zudomon »

Es handelte sich um eine 512x512 cubemap...
Kann gerade nicht testen, ob es vielleicht bei einer normalen Textur möglich ist, allerdings bräuchte ich das schon für cubemaps.
Dann muss ich das Problem noch etwas in die Zukunft verschieben :D
Antworten