PDA

Voir la version complète : [prog]gerer de la vraie transparence


Nesgba
01/01/2006, 23h59
hello :).

en fait apres moult recherches sur le net je ne parvient pas a trouver d'algorithmes pour gerer la transparence. (je parle bien d'alphablend en soft donc pixel par pixel, donc ultra lent )

donc je me permet de poser la question sur le forum.
vous calculez les valeurs rvb de quele maniere pour obtenir la transparence d'un pixel sur un autre ? (en mode 4 ou 8 bits bien sur) si vous aviez un site ou un petit #define bien sympa a me proposer je vous en serez reconnaissant :-'

voila merci d'avance a tous.

[HS]
petit hs total mais je voulais pas ouvrir un topic rien que pour cela.
vous savez de combien est la limite de sprite par ligne sur nds ? esque c'est + que sur gba ?

j'ai pas encore pu me fournir la doc constructeur :(

Japi
02/01/2006, 00h35
est-ce que ça marcherais pas si tu faisais un truc comme la moyenne pondérée de ton coefficient d'alpha sur les deux couleurs que tu veux fusionner?

disons que le pixel (0,0) de l'image 1 soit (100,100,100) et celui de l'image 2 (200,30,80) (les chiffres c'est au pif sur une echelle de 255).

Si tu veux un alpha de 128/255 alors tu peux faire :
alpha = 128
R=(100*(255-alpha)/255) + (200*alpha/255)
G=(100*(255-alpha)/255) + (30*alpha/255)
B=(100*(255-alpha)/255) + (80*alpha/255)

si alpha = 0, t'obtiens les couleurs de l'image 1
si alpha = 255 , t'obtiens celle de l'image 2
sinon, ça prend les valeurs intermédiaires.

à tester

Nesgba
02/01/2006, 00h44
est-ce que ça marcherais pas si tu faisais un truc comme la moyenne pondérée de ton coefficient d'alpha sur les deux couleurs que tu veux fusionner?

disons que le pixel (0,0) de l'image 1 soit (100,100,100) et celui de l'image 2 (200,30,80) (les chiffres c'est au pif sur une echelle de 255).

Si tu veux un alpha de 128/255 alors tu peux faire :
alpha = 128
R=(100*(255-alpha)/255) + (200*alpha/255)
G=(100*(255-alpha)/255) + (30*alpha/255)
B=(100*(255-alpha)/255) + (80*alpha/255)

si alpha = 0, t'obtiens les couleurs de l'image 1
si alpha = 255 , t'obtiens celle de l'image 2
sinon, ça prend les valeurs intermédiaires.

à tester

ben j'avai deja testé en fait, ca me donnai une couleur bizzard mais ca ressemblai pas du tout a de la transparence.
par contre je divisai par 256 moi c'est peut etre ca (pour moi division de 255 se transforme direct en decalage binaire apres je me demande pourquoi ca marche pas)

merci je vais tester ta methode je te dirai si ca marche ;)

Mollusk
02/01/2006, 21h05
entre 255 et 256 ca doit pas changer grand chose je pense...

j'avais utilisé un code similaire (mais sur 0-32 au lieu de 0-255) pour faire des transitions d'une couleur à une autre, et ca marchait nickel, donc je pense que pour la transparence ca doit le faire...

Japi
02/01/2006, 21h45
de toute façon, si il veut utiliser en mode 4 ou 8 bits, je nombre de couleur est pas du tout de 0 à 255 et en plus, il faut concaténer les trois composantes pour n'en faire plus qu'une mais bon, ça je pense que vous le savez mieux que moi :)

Nesgba
02/01/2006, 22h53
entre 255 et 256 ca doit pas changer grand chose je pense...

j'avais utilisé un code similaire (mais sur 0-32 au lieu de 0-255) pour faire des transitions d'une couleur à une autre, et ca marchait nickel, donc je pense que pour la transparence ca doit le faire...

oui sur gba c'est forcement entre 0 et 31 je vais tester ce soir tien ;)

Dr.Vince
03/01/2006, 01h05
juste par curiosité, on pourrais savoir pourquoi tu veux faire ça en soft Nes ??

Nesgba
03/01/2006, 01h19
juste par curiosité, on pourrais savoir pourquoi tu veux faire ça en soft Nes ??
ben etre cantonné au mode tiles pour pouvoir faire un fondu entre 2 images ca le fait pas trop et en + je crois savoir qu'il n'y a que 30 niveau d'alphablend alors qu'en soft tu peut en avoir 255 d'une image a l'autre.

puis ca me permet d'elagir un peu mon panel de fonctions. pour les videos ca permet de faire un fondu enchainé par la gba c'est toujours de la place de gagné meme si ca demande un travail supplementaire pour le codeur.

et enfin j'en ai aussi besoin pour divers effets sur un de mes projet.

Japi
03/01/2006, 01h31
les moteurs 3d qu'on peut voir sur les compo homebrew sur GBA, c'est de la vraie 3d ou bien du mode 7? Parce que sinon, gérer la transparence en soft, ça peut servir à faire des trucs dans ces moteurs si c'est en vraie 3d, comme un mur d'eau, des vitres, des objets en verre, des magies ou autres mais evidemment, faudrait presque ecrire la fonction en ASM.

Edit, enfin, ptet pas finnalement, en y reflechissant bien...:)

Nesgba
03/01/2006, 01h47
les moteurs 3d qu'on peut voir sur les compo homebrew sur GBA, c'est de la vraie 3d ou bien du mode 7? Parce que sinon, gérer la transparence en soft, ça peut servir à faire des trucs dans ces moteurs si c'est en vraie 3d, comme un mur d'eau, des vitres, des objets en verre, des magies ou autres mais evidemment, faudrait presque ecrire la fonction en ASM.

oui c'est de la vraie 3D texturée, mais c'est meme pas la peine pour un jeu, meme a 20 fps ca passerai pas.
enfin faudrai demander a mikegba je pense pas avoir vu moteur 3D plus optimisé que le sien dans les hombrew gba.

tu accede pixel par pixel, deja que faire une transition entre 2 ecrans sans iwram ca fait deja ramer la gba alors imagine sur de la 3D texturée :w00t: