Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » cBC1 - Textures décompressées on-the-fly pour G90
Fcalva Hors ligne Membre Points: 651 Défis: 10 Message

cBC1 - Textures décompressées on-the-fly pour G90

Posté le 13/06/2026 15:30

Suite à une discussion avec Pho3 sur la compression d'images, je me suis lancé dans un port du format BC1/DXT1 (plus de détails ici), qui est utilisé dans nos cartes graphiques. Le format a un gros avantage sur les PNG/JPEG plus classiques, c'est qu'il est fait pour être dessiné directement, et en qualité d'image se situe autour voire au-dessus du P8 en utilisant la moitié de la place.
J'ai donc implémenté un décompresseur rapide nommé cBC1, disponible ici https://git.planet-casio.com/Fcalva/cBC1
Pour le moment, la vitesse de dessin en VRAM est environ celle du P8 (~20ms pour un écran complet)
Je compte intégrer un compresseur dans le projet, combiné avec un script fxconv, de façon a avoir une utilisation similaire au fxconv classique


Lephenixnoir En ligne Administrateur Points: 25848 Défis: 174 Message

Citer : Posté le 13/06/2026 23:10 | #


Trop cool, donc en fait c'est 4 bits par pixel pareil que P4, mais bien meilleur en fidélité. La compression de P4 viable pour "tous" les assets ce serait génial :o

Je sais pas si les perfs seront suffisantes pour faire de la 3D, c'est pas impossible mais faudrait réfléchir au fait que les samplers en 3D ils énumèrent pas les blocs entiers.
Mon graphe (28 Juin): (MPM ; v5 ; Azur ; passe gint 3 ; ...) || Rogue Life
Slyvtt Hors ligne Maître du Puzzle Points: 2996 Défis: 17 Message

Citer : Posté le 14/06/2026 22:26 | #


Ca c'est un truc cool comme j'aime, un truc qui fait avancer le schmilblick

Dans les trucs peut etre intéressants à implémenter au long terme, il y aurait je pense un format P1 ou P2 sur la G90. Typiquement mon N++ utilise seulement 1 couleur (avec du Dye), mais je stocke tout en P4, une perte de place monstrueuse. Sachant que c'est utilisé plus ou moins par les fontes et sur 9860G, il faudrait "juste" autoriser sur la G90 dans les formats. (et avoir le pendant dans les fonctions de rendering gint et azur).
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Fcalva Hors ligne Membre Points: 651 Défis: 10 Message

Citer : Posté le 14/06/2026 22:58 | #


Merci
Si je voulais faire ça c'était pour essayer d'accélérer la 3D (j'en ai parlé que sur la shout par contre), mais pour le moment la complexité du décodage limite la perf en xyram (je suis à ~2x le P8). Enfin, ça reste très utile pour le dessin en VRAM.
Et le 1bpp (si tu veux bien dire 1 couleur et alpha) est déja implémenté dans gint pour les polices ! Je dois dire que j'ai eu un doute sur les polices en P4A, connaissant Lephe
Je te recommande d'appeler topti_glyph_* directement plutôt que de passer par l'interface de polices (c.f. https://git.planet-casio.com/Lephenixnoir/gint/src/branch/master/src/render-cg/topti-asm.S)
Après ça doit être possible de refaire le code avec des suppositions différentes sur les données d'entrée, si le besoin se ressent.
Apréciateur de Noctua moyen
Caltos : G35+EII, G90+E (briquée )
Fcalva Hors ligne Membre Points: 651 Défis: 10 Message

Citer : Posté le 15/06/2026 21:30 | # | Fichier joint


J'ai fait marcher le convertisseur (rgbcx de https://github.com/richgel999/bc7enc ), et donc j'ai quelques exemples à montrer:

Ce sont des textures plus ou moins uniformes qui passent pas mal, sauf celle de droite dont les courbes sont massacrées.
Une grosse limitation de cette technique est la relativement faible résolution des images utilisées, qui fait que les moindres artefacts se remarquent . Et malheureusement le compresseur dont je me sers ne considère pas l'image entière, donc ça cause des différences de couleur assez visibles.
Typiquement sur PC les textures sont en 256x256 au moins, et ici mes exemples sont en 64x64. Et surtout éviter le pixel art ! J'ai essayé sur quelques exemples, et c'est un massacre
Ça peut rester utile pour des fonds d'écran par exemple, où le faible choix de palettes du P4 écrabouille le détail.
PS: Les deux images de droite viennent de https://screamingbrainstudios.itch.io/tiny-texture-pack-2 , et celle de gauche est une veille création personnelle.
PS2 : Le temps moyen de dessin d'image est de 1.036ms pour le p8 et 0.957ms pour le BC1 ici

@RDP si ça se fait encore dans le big 26
Apréciateur de Noctua moyen
Caltos : G35+EII, G90+E (briquée )

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
captcha
Rafraîchissez la page si vous souhaitez obtenir un nouveau CAPTCHA.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2026 | Il y a 122 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd