• Hallo
    UV= immer Quadratisch
    Quadrat nicht voll= in jedem Fall Texturspace verschwendet.
    Ist doch eigentlich ganz simpel.
    Der og. Auszug behandelt die Verarbeitung von Textursheets innerhalb der UV.
    Hier wären wir wieder beim Atlas.
    Ob hier deine obengenannten Texturgrößen von 1:1, 1:2 besser verarbeitet werden weiß ich nicht, ist aber hochinteressant und etwas mit dem ich mich eingehender befassen werde.
    Danke für den Hinweis.
    Gruß

  • Wie der UV-space ist immer quadratisch? Wenn ich ein Material mit einem Panner hab und einer Textur, dann durchläuft dieser auch nur die Textur und hat dazwischen keine Löcher?! Totally confused now

  • Hallo
    Wenn der Panner zB. eine getiltes Wasser-Material bewegt, nutzt er den vollen UV Space aus. Muss er aber nicht.
    Du kannst die Animation auch maskieren und auf nur einen Streifen oder eine andere kleine Textur setzen. Das ist ganz dir überlassen.
    Ein "Loch" in der Textur wäre hier auch nur ein Opacity material, also nicht nichts, sondern nur durchsichtig. Da du ja nichts in den Luftleeren Raum projezierst brauchst du immer ein Mesh und das wiederum sollte den UV Space so gut wie möglich ausnutzen um Speicher und Rechenkapazität zu sparen.

    • Offizieller Beitrag

    Das ist so nicht richtig:


    Nur weil eine Textur Quadatisch ist bedeutet das nicht das diese auch Quadratisch gespeichert wird. Die zahlen für U und V werden jeweils separat gespeichert. (Das steht im übrigen auch so in dem Wikpedia Link den ich oben gepostet hab.


    Entschiedet ist nämlich wie die Texturen gespeichert werden.


    Ein Beispiel:
    1 Byte = 8 Bits
    1kb = 1024 Byte oder 8192 Bit


    Daraus resultiert eine 1k Textur die mit 1024 px gespeichert wird. Eine Textur die 1024 * 1024 px groß ist braucht demnach 2kb oder 16384 bit
    Das bedeutet aber auch beide Zahlen werden separat gespeichert wodurch es egal ist ob eine textur 1024 *1024px = 2k groß ist oder 1024 * 512 px eine 1024 px * 512px Textur hätte zwei Speicherstände nämlich
    1024 = 8192 bit & 512 = 4096 bit


    Wenn eine Textur nun aber zb eine größe von 1000px * 1000px hätte dann bräuchte der Computer trozdem 8bits zum speichern der Textur weil ein Computer immer nur volle Bit schreiben kann.
    Und genau deswegen sollten Texturen power of Two sein. Wer eine Textur mit 1000 * 1000 Pixel verwendend kann dafür auch gleich eine 1k Textur verwenden. Und verschwendet dafür keinen Speicher.
    Mal davon abgesehen das manche Grafikkarten Probleme mit nicht Power of Two Texturen haben.


    Wie gesagt das steht auch alles hier:
    https://en.wikipedia.org/wiki/Power_of_two


    Entscheidend ist also wie die Texturen gespeichert werden das ist ein technisches Problem.


    Wie die Diskussion aber dennoch sehr interessant :)

  • Die Bit Zahl bezeichnet die Farbtiefe, die für die Ausdifferenzierung der Farben steht.
    Je mehr Bit Farbtiefe, desto feiner die Farbabstufung aber auch größer der Speicherbedarf. Im Gamingbereich reichen 8 Bit völlig aus. Mehr Farbtiefe ergibt böse Schwierigkeiten mit der Normalmap und ist auch sonst nicht sinnvoll, da eine Grafikkarte über ganz eigene Techniken verfügt um die fehlende Qualität auszugleichen.
    Auch in der Farbtiefe rechnet unser Computer am liebsten mit binären Zahlen. 2-4-8-16 usw.
    Die Power of two bezieht sich in unserem Fall aber auf die 2D Ausdehnung in den UV Koordinaten.
    Wie schon gesagt. Man kann jede Texturgröße benutzen, die man will. Nur ist alles was am Ende in der Material UV nicht Quadratisch ist, unökonomisch. Du brauchst in jedem Fall die Größe der längsten Ausdehnung deiner Textur. In diesem Fall eben die 1024.
    Weshalb ist Sparsamkeit hier so wichtig? Verdoppelt sich die Seitenlänge einer Textur um das Doppelte, verdoppelt sich der Speicherplatz nicht, er vervierfacht sich, klar. Also lieber einen UV-Seam mehr setzen und ein paar Vertices investieren als den Speicherplatz unnötig pushen.
    Meiner Erfahrung nach verschiebt sich das Verhältnis zwischen Vertexcount und Texturgröße zugunsten eines (meist unerheblich) höheren Vertexcounts nochmal, da man, je größer die Anzahl der einzelnen Teile ist, umso weniger unbenutzten Texturspace in der UV benötigt, man hier unter Umständen noch einiges an Texturqualität bei gleicher Größe herauskitzeln kann..
    Mal bildlich vor Augen halten... In einer 4096 Map bringt man tatsächlich 16x 1024*er Texturen unter. Bei einer Farbtiefe von 16 statt 8 Bit vervierfacht sich der Speicherplatz nochmal. Weshalb also unsinnig Platz verschwenden?
    Gruß

  • Da hab ich ja was losgetreten. ^^


    Also ich hab das auch so gelernt, dass für z.B. 16x32 weniger Speicher gebraucht wird als für 32x32. Allerdings sind meine Kenntnisse der Grafik- und Engineprogrammierung zu rudimentär, um da ne fundierte Aussage treffen zu können.


    Lasse mich gerne eines besseren Belehren, denn das würde z.B. alle meine Baumrinden-Texturen (und noch einige andere) betreffen.

    • Offizieller Beitrag

    Zitat

    Also ich hab das auch so gelernt, dass für z.B. 16x32 weniger Speicher gebraucht wird als für 32x32. Allerdings sind meine Kenntnisse der Grafik- und Engineprogrammierung zu rudimentär, um da ne fundierte Aussage treffen zu können.


    Ja und Nein !


    Jedes Material verbraucht einen Drawcall: EIn Drawcall ist eine Information die zwischen deiner CPU und der Grafikkarte hin und her geschickt werden.
    Daher ist es performanter so wenig Materallien wie möglich zu haben.
    Das Material für deine Axt verbraucht demnach erstmal ein Drawcall. Würdest du nun zu deiner Axt zb noch einen Hammer machen dann würde ich beide Texturen in eine Packen dann lieber eine 32*32 px Textur als 2* 16*32 px Texturen.
    Ein Wirklicher Textur Atlas wäre das aber nicht den bei einem Atlas verwendet man die ein und die selbe Textur für unterschiedliche Zwecke
    zb Würde man eine Stein Textur bei einer Wand als Textur verwenden und die selbe Textur zb bei einer Brücke ebenfalls als Textur.
    Du hast so nur ein Material diese du aber in deinem Level öffter verwendest.


    Hier gibts ein hübsches Video wo man schön sehen kann wie ein Texturatlas in Zusammenarbeit mit LODs funktionieren kann.


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

  • Interessant wenn die tatsächlich mit 256x256 Texturen gearbeitet haben und anschließend mit Vertex Painting. Ich hätte da mit einer 1k Textur gerechnet zu der Zeit :3

  • Übrigens, Speedtree hat 512x2048 Texturen für die Stämme... warum sollte solch ein großes Programm solch eine Texturgröße wählen, wenn es tatsächlich verschwendeter Speicher ist? Müssten die dann nicht auch den Baum 4 mal teilen?

  • Hallo
    Die werden schon ihre Gründe haben. Ich nehme an, dass sie zwischen Speicherverbrauch und Texturtiling zugunsten der Textur entschieden haben um möglichst wenig Wiederholungen zu haben.
    Die Power of two bezieht sich auf die Verwendung der Binären Zahlenreihe. Die Textur ist also Mipmapfähig, reizt aber die Square Ökonomie nicht aus.
    Interessant wäre es auch zu wissen, ob die Blätter dann immer ein extra Material benötigen oder beim einem Merge die zweite Hälfte der UV füllen.
    Gruß