Grösse von Texturen



  • Hallo zusamen
    Obwohl ich bereits viel (teilweise sehr unterschiedliche Dinge) über die optimale Grösse von Texturen gelesen habe, besteht bei mir diesbezüglich offengestanden eine gewisse Unsicherheit. Welche Erfahrungen habt ihr in Bezug auf folgende konkreten Fragen gemacht:

    1. Muss eine Texture quadratisch sein oder nicht? Resp. erweitert mir Direct3D9 nicht quadratische Texturen intern dann einfach quadratisch?
    2. Falls Texturen nicht quadratisch sein müssen, gibt es irgendwelche Drawbacks, wenn diese nicht quadratisch sind?
    3. Dieselben Fragen 1 und 2 für 2er Potenzen?
    4. Wie sieht es aus, wenn ich zwar 2er Potenzen für jede Dimension verwende, jedoch nicht qudratisch. bspw. 256x64

    Ich habe mir überlegt, einige Test durchzuführen, um die Antworten auf diese Fragen selbst herauszufinden. Jedoch ist mein Computersystem ja natürlich nicht repräsentativ für alle Computer.

    Mfg Samuel



  • Von Problemen mit nicht quadratischen Texturen habe ich noch nichts gehört. Das mit den 2er Potenzen stimmt allerdings. Es gibt ältere Karten die nur 2er Potenzen als Texturgröße unterstützen.


  • Mod

    Ishildur schrieb:

    1. Muss eine Texture quadratisch sein oder nicht? Resp. erweitert mir Direct3D9 nicht quadratische Texturen intern dann einfach quadratisch?

    nein, kannst auch 512x2 erstellen.

    2. Falls Texturen nicht quadratisch sein müssen, gibt es irgendwelche Drawbacks, wenn diese nicht quadratisch sind?

    no, quadratisch oder rechteckig ist egal.

    3. Dieselben Fragen 1 und 2 für 2er Potenzen?

    1.directX wandelt intern aufloesungen _nicht_ um, entweder die textur wird erstellt oder nicht, das ist alles.
    ob die karte das kann kannst du mit D3DPTEXTURECAPS_POW2 von den caps abfragen.
    2. kann langsammer sein keine po2 textur zu haben.

    4. Wie sieht es aus, wenn ich zwar 2er Potenzen für jede Dimension verwende, jedoch nicht qudratisch. bspw. 256x64

    genau so wie bei 1. beschrieben.



  • rapso schrieb:

    Ishildur schrieb:

    1. Muss eine Texture quadratisch sein oder nicht? Resp. erweitert mir Direct3D9 nicht quadratische Texturen intern dann einfach quadratisch?

    nein, kannst auch 512x2 erstellen.

    Hat man dann irgendwelche Nachteile bezueglich Miplevel? Es ist unheimlich schwer darueber was zu finden, da immer von quadratiscen Texturen ausgegangen wird. f'`8k

    Autocogito

    Gruß, TGGC (Was Gamestar sagt...)



  • TGGC schrieb:

    rapso schrieb:

    Ishildur schrieb:

    1. Muss eine Texture quadratisch sein oder nicht? Resp. erweitert mir Direct3D9 nicht quadratische Texturen intern dann einfach quadratisch?

    nein, kannst auch 512x2 erstellen.

    Hat man dann irgendwelche Nachteile bezueglich Miplevel? Es ist unheimlich schwer darueber was zu finden, da immer von quadratiscen Texturen ausgegangen wird. f'`8k

    Die Anzahl der Levels berechnen sich ja aus ld(max[w, h]) (+1). Daher gibt es eigentlich keine wirklichen Nachteile. Das Bild wird zwar in die Richtung der kleineren Seite gestreckt, was aber bei einem Pixel (Höhe oder Breite) nicht allzu sehr ins Gewicht fallen sollt.



  • David_pb schrieb:

    TGGC schrieb:

    rapso schrieb:

    Ishildur schrieb:

    1. Muss eine Texture quadratisch sein oder nicht? Resp. erweitert mir Direct3D9 nicht quadratische Texturen intern dann einfach quadratisch?

    nein, kannst auch 512x2 erstellen.

    Hat man dann irgendwelche Nachteile bezueglich Miplevel? Es ist unheimlich schwer darueber was zu finden, da immer von quadratiscen Texturen ausgegangen wird. f'`8k

    Die Anzahl der Levels berechnen sich ja aus ld(max[w, h]) (+1). Daher gibt es eigentlich keine wirklichen Nachteile. Das Bild wird zwar in die Richtung der kleineren Seite gestreckt, was aber bei einem Pixel (Höhe oder Breite) nicht allzu sehr ins Gewicht fallen sollt.

    Aber ich habe ja in der Richtung mit den 2 Pixeln effektiv nur 2 Mipmaps - eine mit 1, eine mit 2 Pixel. D.h. bei Streckungen/ Stauchungen in dieser Richtungen habe ich staerkeres Over/Undersampling? Andererseits koennte man das evtl. auch Ausnutzen fuer Texturen die man meist schraeg sieht, z.b. in Rennspielen. f'`8k

    Gruß, TGGC (Was Gamestar sagt...)[/quote]


  • Mod

    die mipmap-level ergibt sich aus dem pixel zu texel verhaeltnis, von nichts anderem. es kommt also nur darauf an wieviel texel auf wieviel pixel auf dem monitor projeziert werden, das entscheidet wie es am ende aussieht.

    also sieht das aliasi-o-gram so aus:

    | objekt 512x2 | objekt 512x512
    -----------------------------------------------
    textur 512x2   |     good     |    bad
    -----------------------------------------------
    textur 512x512 |     bad      |    good
    

    aus geschwindigkeitsgruenden wird grundsaetzlich erstmal die mipmap-level ausgesucht groesser ist (kleinere aufloesung), man wird also kein aliasing haben, sondern eher blur texturen.

    mipmap level werden bei alten scanline software rasterizern per poly ausgerechnet aus flaecheninhalt(tixel)/flaecheninhalt(pixel).
    bei neueren scanline rasterizern und sehr alter hardware per y-scanline.
    bei allen heutigen graphikkarten pro 2x2 pixeln.
    bei software renderern fuer CG entweder per pixel (da eh immer mit AA gerendert wird) oder es gibt nur supersampling auf der textur.



  • Die Antwort waere dann also, die Texturgroesse ist _nicht_ egal. Sie sollte zu dem Objekt passen. Das ist im Prinzip, worauf ich mit meinem Nachhaken hinauswollte. Technisch gesehen geht vieles, darum gings wohl in der Frage auch - aber verwenden sollte man es trotzdem nicht unbedingt.

    Deine Tabelle gilt nur, wenn die Textur dann genau in der richtigen Richtung und komplett gemappt wird. Logische Folge: Wenn man das vorher nicht wuesste, sollte man etwas quadratisches nehmen um den Fehler zu minimieren. Grafiker wissen ja (wenn sie einigermassen Ahnung haben) das sie den Texturspace moeglich gleichmaessig verteilen sollen und schneiden dann auf ihrer (meist quadratischen) Textur einen schmalen Streifen fuer solche Polys aus - in der richtigen Richtung. Dadurch ist es natuerlich auch einfacher auf der Textur herumzupinseln, weil alles in der richtigen Proportion ist und beim Mappen nicht ploetzlich 4:1 gestretched wird. f'`8k

    Gruß, TGGC (Was Gamestar sagt...)


  • Mod

    TGGC schrieb:

    Die Antwort waere dann also, die Texturgroesse ist _nicht_ egal. Sie sollte zu dem Objekt passen. Das ist im Prinzip, worauf ich mit meinem Nachhaken hinauswollte. Technisch gesehen geht vieles, darum gings wohl in der Frage auch - aber verwenden sollte man es trotzdem nicht unbedingt.

    wie gesagt, einzige was zaehlt ist das verhaeltnis von pixel zu texel. dabei ist es erstmal egal wie _nur_ die textur ist, bestimmt wird das also durch die kombination aus uv-set, texturgroesse und projektion auf den screen.

    Deine Tabelle gilt nur, wenn die Textur dann genau in der richtigen Richtung und komplett gemappt wird.

    genau aus dem grund ist die texturgroesse erstmal nichtssagend. uv-set usw. s.o. zusammen entscheiden.

    Logische Folge: Wenn man das vorher nicht wuesste, sollte man etwas quadratisches nehmen um den Fehler zu minimieren.

    wenn man ein mangel an faehigkeiten annimt, sollte man natuerlich das nehmen was am wahrscheinlichsten erfolg liefert, das ist aber auch nur eine pseudo loesung, denn es wird garantiert stellen geben an denen graphiker fuer ein "512x2 objekt" eine quadratische textur nehmen weil es ihnen gesagt wurde ohne dass sie wissen weshalb man quadratische texturen nutzen soll.

    problem ist loesbar wenn man den artist stattdessen die richtige vorgabe gibt, dass das pixel-texel-ratio in jeder achse gleich sein sollte, gibt. im optimal fall ueber das ganze produkt hinweg, was dann auch mittels tools visualisiert/validert werden sollte.

    das waere also auch nur zum teil ein fail auf artist seite, mindestens genauso haette die person versagt die die spezifikationen bzw education von artist macht.

    Grafiker wissen ja (wenn sie einigermassen Ahnung haben) das sie den Texturspace moeglich gleichmaessig verteilen sollen und schneiden dann auf ihrer (meist quadratischen) Textur einen schmalen Streifen fuer solche Polys aus - in der richtigen Richtung. Dadurch ist es natuerlich auch einfacher auf der Textur herumzupinseln, weil alles in der richtigen Proportion ist und beim Mappen nicht ploetzlich 4:1 gestretched wird.

    gibt verschiedene artist mit verschiedenen faehigkeiten, ich habe mit solchen nicht viel zu tun die etwas nicht verstehen (wollen) und nur auf der vermeintlich sicheren seite rudern wollen. von daher kann ich dazu nicht viel sagen.
    die die ich kenne sind sehr wissbegierig und lernen auch gut wie es richtig waere, auch mit tieferen zusammenhaengen.


Log in to reply