Dégradé de couleurs.
15 sujets de 1 à 15 (sur un total de 17)
- 1
- 2
-
Si on fait un dégradé d’une seule couleur, on peut le faire sur 16 niveaux (du blanc à la couleur, ou du noir à la couleur voulue) et les niveaux se voient, à moins de faire des barres horizontales sur 16 pixels.
Or il me semble qu’il y avait une démo dans le temps (1992) qui affichait un dégradé continu sur la totalité de la hauteur de l’écran soit 256 pixels…
Comment peut on faire cela en ECS ?
T’a essayé d’ouvrir plusieurs écran différent de 1 pixel de haut décalé des couleurs de ton dégradé?
Ou alors, peut être qu’en flippant 256 écran à grandes vitesse, (comme le plasma sous Amos), écran décalé de 1pixel en Y tu puise recréé se dégradé, sinon il y a une puce spécifique qui fait sa sur amiga, on appelé sa des raster je crois… je sais plus, après sa dépend avec quel outil tu développe
ModAvec une copperlist très certainement.
En ECS, les canons de couleur sont sur 4 bits soit 16 valeurs possibles comme tu l’as déjà fait remarqué.
Une solution pour obtenir plus de couleur est de les changer à chaque balayage. Le calculateur HP48 affichait des teintes de gris sur un écran LCD noir et blanc en allumant/éteignant rapidement les pixels afin de simuler du gris.
Je suppose que la même technique peut être employée pour fabriquer des couleurs intermédiaires.
>Si on fait un dégradé d’une seule couleur, on peut le faire sur 16 niveaux
Je pense que tu veut dire un dégradé « sur une seule des composantes R G B «
genre je fais un dégradé du rouge 0 au rouge 15
Pourquoi ne pas intercaler des valeurs ultrafaible de juste 1 en G et B ?
Ainsi passer du rouge 4 0 0 au rouge 6 0 0 donnerais
4 0 0
4 0 1
4 1 1
5 0 0
5 0 1
5 1 1
6 0 0
a la ligne suivante tu peut alterner
4 1 0
4 1 1
5 0 0
5 1 0
5 1 1
6 0 0
6 0 1
etc…
Ca améliorera un peu mais y a pas de miracle
Tu peut aussi faire un dégradé à la Floyd Steinberg
(Quoique pour un simple dégradé horizontal ça apportera rien à ce que je viens de décrire)
http://aminet.net/package/dev/src/FSditheringW3D
Alain
Tu peux utiliser l’entrelacé pour simuler l’équivalent de 32 dégradés de couleur …
Enfin, .. pas un vrai entrelacé … un trafiqué ..
Je vais regarder ce week-end si je retrouve mon code source AMOS qui utilise le copper pour créer ce genre d’effets de dégradé …
En fait le principe n’est pas très compliqué
Tu crées 2 listes copper sur la 1ère copper list hardware (pas besoin d’utiliser la seconde)
à la fin de chaque copper, l’avant dernière instruction devra être le modif du pointeur de ta copper vers l’autre copper list.
Puis tu finis chaque copper list par l’inéfable FFFFFFFE (si je me souviens bien).
Au final, chaque copper sera utilisé à 1 frame / 2 (par exemple frames paires copper 1, frames impaires copper 2
Bien entendu, cela t’obligera à modifier les valeurs de scrollings, de bitplans, etc .. dans les 2 copper list.
Sur ta premier copper par exemple tu définis la couleur de ton effet comme suit :
Copper 1 Copper 2
Ligne / Couleur Ligne / Couleur
01 : 15 ___ 01 : 15
02 : 15 ___ 02 : 14
03 : 14 ___ 03 : 14
04 : 14 ___ 04 : 13
05 : 13 ___ 05 : 13
06 : 13 ___ 06 : 12
… et ainsi de suite … chaque couleur sur 2 lignes et décalées de 1 ligne d’un copper à l’autre
Cela te donnera un effet d’entrelacé … mais au final tu auras l’impression d’avoir 32 tons de dégradé …
Si tu veux faire un dégradé du blanc au noir ou inverse … tu peux jouer en n’incrémentant/décrémentant qu’une seule composante par une, genre :
Copper 1 Copper 2
Ligne / Couleur Ligne / Couleur
01 : 15 15 15 ___ 01 : 15 15 15
02 : 15 15 15 ___ 02 : 15 15 14
03 : 15 15 14 ___ 03 : 15 15 14
04 : 15 15 14 ___ 04 : 15 14 14
05 : 15 14 14 ___ 05 : 15 14 14
06 : 15 14 14 ___ 06 : 14 14 14
07 : 14 14 14 ___ 07 : 14 14 14
08 : 14 14 14 ___ 08 : 14 14 13
… etc …
Cele donnera un petit semblant de ton « rosé » sur ton copper mais ça devrait te permettre de faire un dégradé de gris sur 96 tons
En espérant que tout ceci t’ai aidé ;
@ +
AmiDARK
Heu, y’a plus cours comme explication:
Ce que tu demandes est impossible.
ECS/OCS n’ont que 16 teintes par primaire. Tu ne pourra pas te défaire de ces bandes, les chips sont incapables de générer une teinte « intermédiaire ».
Si tu as vu une demo ou le dégradé semblait parfait, 2 solutions:
1/ Elle était AGA et ta mémoire flanche.
2/ Le dégradé était fait en orderer/floyd dithering. Nos écrans de l’époque ayant un pitch important et relativement flou, à l’oeil ça passait. Sur un écran moderne, tu serais déçu du résultat (tu verrais juste une bouillie de pixels en duel).
Modcrisot a écrit :
Heu, y’a plus cours comme explication:
Ce que tu demandes est impossible.
ECS/OCS n’ont que 16 teintes par primaire. Tu ne pourra pas te défaire de ces bandes, les chips sont incapables de générer une teinte « intermédiaire ».
En flippant deux couleurs proches une trame sur deux, tu dois pouvoir simuler une teinte intermédiaire.
Je n’ai jamais essayé toutefois…
>Ce que tu demandes est impossible.
NON
Je suis d’accord avec AmiDark : pour faire un dégradé vertical de 96 couleurs (16x3X2) on peut le faire avec 2 copperlist comme il l’indique
Soit en changeant le pointeur de la copperlist à la fin de la premiere copperlist pour utiliser la deuxieme (et vice-versa)
Soit en utilisant une première ligne de ta copperlist differente pour les frames impaire/paire puis les autres lignes en position relatives
Meme sans copper le principe reste vrai : en ayant des pixels de deux images légérement différents d’un frame à l’autre
Alain
@crisot :
Ce n’est pas un dégradé réel … c’est la persistance rétinienne de ton oeil qui fera le boulot.
Je l’ai déjà fait ! et ça marche !!!
Donc OUI C’est possible …
l’amiga affiche 50 frames / sec ton oeil en voit 24 .. donc tu auras 2 frames mélangées par ton oeil
et du :
15 15 = 15
15 14 = 14.5
14 14 = 14
L’illusion sera faite
NON.
La persistance rétinienne ne fonctionne pas à une si faible fréquence. L’oeil limité à 24 ips est une légende urbaine, sinon comment pourrait on faire la différence entre 50 fps (1 vbl) et 25 (2 vbl)?
Si j’en crois vos dires, alterner un écran blanc et un écran noir à 50 hz fait percevoir un écran gris. Pourtant, en pratique, on voit un stroboscope suceptible de déclencher une crise d’épilepsie. Même avec deux valeurs proches, une alternance rapide de 14/15 donne un scintillement fatiguant entre les deux teintes, pas 14.5.
Ces gruges sont bidons.
Message supprimé à la demande de son auteur
@Crisot :
Je n’ai jamais dit que cela était adapté à des teintes distinctes.
Je parle de nuances très proches …
J’ai un code source Amos qui le fait … dès que je le retrouve, je le mets à dispo. cependant, ceci ne fonctionne que sur un VRAI amiga ( os < 4 ) classic en ECS/OCS/AGA ... @Hénès : Forcément, ils utilisent pas ce principe la … l’interlace n’est pas utilisé pour le même principe ….
AmiDARK a écrit :
@Crisot :Je n’ai jamais dit que cela était adapté à des teintes distinctes.
Je parle de nuances très proches …
D’ou le fait de lire mon précédent message jusqu’au bout:
« Même avec deux valeurs proches, une alternance rapide de 14/15 donne un scintillement fatiguant entre les deux teintes, pas 14.5. »
Et ne t’inquiètes pas c’est le genre de bidouille que j’ai moi aussi testé en Amos il y a un bon minimum de 15 ans: Non, ce n’est pas convainquant, ça flingue les yeux.
15 sujets de 1 à 15 (sur un total de 17)
- 1
- 2
- Vous devez être connecté pour répondre à ce sujet.
› Forums › AmigaOS, MorphOS et AROS › Développement › Dégradé de couleurs.