Textur-Kompression mit x.BASIS transcoder

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Textur-Kompression mit x.BASIS transcoder

Beitrag von Xaby »

Folgendes:

PureBasic kann JPEGs, PNGs, und andere Dateien öffnen und umwandeln im Speicher als "BITMAP".
Das sind dann unkomprimierte Pixel, die entsprechend RAM verbrauchen.
Sagen wir, wir haben eine Textur, 512 x 512 Pixel bei RGB-A jeweils mit 256 Zuständen, oder anders 32 Bit "Farben", 24 + 8 Bit für Transparenz.
Also 4 Byte. Das wären dann 512 x 512 x 4 ~ genau 1 MB.
Bei einer 4K x 4K, also 4096 x 4096 Pixel Textur, wären es dann 64 MB im RAM.
Bild

Wenn diese Texturen nun aber als DXT komprimierte Daten z.B. in einem DDS-Container liegen würden, könnte die Textur im RAM kleiner sein.
Kompression von ca. 6:1 mit sichtbaren Artefakten.

Nun gibt es einen freien Kompression und auch Dekoder, welcher hier zu finden ist:

https://github.com/BinomialLLC/basis_universal

Nun wäre meine Frage, wie würde man das in PureBasic integrieren können?

DXT1, DXT3, DXT5, ETC1 und neuerdings auch ASTC sollten von neueren Grafikkarten unterstützt sein / werden.
Die einfache Pixel-Manipulation kann natürlich erschwert sein, vielleicht sogar unmöglich. Wir haben kein reines #Image mehr, wo wir Pixel für Pixel ansprechen können
und vermutlich würden auch 2D-Drawing-Befehle nicht mehr funktionieren.

Für Spiele reicht es in der Regel ja, wenn die Grafiken vorher erstellt wurden und eigentlich statisch sind, wenn sie auch dynamisch angezeigt würden.

Hier noch mal Beispiele bzw. Informationen der Kompression von Texturen zu ASTC
https://developer.nvidia.com/astc-textu ... ame-assets

Es kann natürlich sein, dass wir die Cross-Plattform-Fähigkeit bei bestimmten Formaten verlieren können.
Aber genau da würde dann ja *.BASIS ins Spiel kommen.
http://richg42.blogspot.com/2018/05/bas ... ormat.html
https://software.intel.com/en-us/articl ... ode-sample
https://cesium.com/blog/2017/02/06/texture-compression/
https://www.codeproject.com/Articles/86 ... -study-wit

Vielen Dank für Hinweise.
Kinder an die Macht http://scratch.mit.edu/