Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1081 connectés 

 

Sujet(s) à lire :
    - Article: un raytracer de base en C++
 

 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5  6  7  8  9  10  11  12  13  14  15
Auteur Sujet :

La programmation d'effets de demos old-school (Assembleur + C)

n°549609
drasche
Posté le 24-10-2003 à 14:10:10  profilanswer
 

Reprise du message précédent :
chuis toujours là moi [:cupra]
je lirai ce soir car pas le temps en journée :/


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
mood
Publicité
Posté le 24-10-2003 à 14:10:10  profilanswer
 

n°558405
red factio​n
Posté le 04-11-2003 à 10:39:38  profilanswer
 

[:yoyoz]

n°558563
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 04-11-2003 à 13:42:26  profilanswer
 

vi vi, je suis un peu en retard, sorry, le temps de régler quelques problèmes à mon futur ex-boulot et je suis à vous :D


---------------
J'ai un string dans l'array (Paris Hilton)
n°558673
H4dd3R
Q2
Posté le 04-11-2003 à 14:44:11  profilanswer
 

C vrai, le starfield 3D c un des plus beaux effets!! 8)


---------------
Athlon64 s754 10*200MHz - R9800Pro - 512MB DDR200MHz - ZX6RR - Q2[SupOp] - Tutorial Video: multilangues, multisstitres
n°567671
red factio​n
Posté le 15-11-2003 à 16:33:49  profilanswer
 

comment on appelle encore leffet ou en 3d on a deux plans parallales dans lequel on progresse
 

n°567799
chrisbk
-
Posté le 15-11-2003 à 21:37:52  profilanswer
 

free directionnal plane

n°567828
red factio​n
Posté le 15-11-2003 à 23:18:29  profilanswer
 

chrisbk a écrit :

free directionnal plane


jme suis amuse a en faire cet aprem
mario kart finalement c vraiment tres simple  :D  
 
 
sinon ca fait un petit temps que je developpe une intro en 4k
jaimerai y ajouter du son mais les seuls trucs que jarrive a genere c des betes sinewaves, jai deja pas mal cherche pour trouver des infos la dessus mais sen vraiment trouve ce que je voulais vraiment
ne serait que generer un basse je serais deja bien content

n°567861
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 15-11-2003 à 23:52:40  profilanswer
 

update en cours, j'ai des soucis avec le debugger distant VDMSERV de watcom [:j l b]


---------------
J'ai un string dans l'array (Paris Hilton)
n°567971
LeGreg
Posté le 16-11-2003 à 01:45:30  profilanswer
 

Le principe de la synthese analogique d'antan  
c'etait d'avoir des oscillateurs simples et de combiner pour avoir des sons plus complexes.
 
Le genre de choses que tu peux faire:
- addition des amplitudes. Pour à partir d'une note simple faire des sons plus riches. (cf théorie de Fourier)
- modulation de frequence. Tu as une porteuse dont la frequence varie en fonction d'une autre fonction oscillante.  
- ajout de bruit, saturation, etc.. La saturation consiste à couper les cretes de tes fonctions oscillantes.
- modification de l'enveloppe. Avec une rampe linéaire en entrée et en sortie pour simuler l'attaque des notes. Tu peux egalement moduler l'amplitude par une énième fonction oscillante.
- varier les types de fonctions oscillantes (creneaux, sinusoides, triangulaires, dents de scie etc..)
 
LeGreg

n°567979
red factio​n
Posté le 16-11-2003 à 02:15:05  profilanswer
 

legreg a écrit :

Le principe de la synthese analogique d'antan  
c'etait d'avoir des oscillateurs simples et de combiner pour avoir des sons plus complexes.
 
Le genre de choses que tu peux faire:
- addition des amplitudes. Pour à partir d'une note simple faire des sons plus riches. (cf théorie de Fourier)
deja essaye , le son ressemble a celui qd on fait un no au tel  :lol:  
- modulation de frequence. Tu as une porteuse dont la frequence varie en fonction d'une autre fonction oscillante.
jviens dessaye a linstant, ca a l'air vraiment pas mal, jcrois que je vais poste un echantillon    [:yamusha]  
 
- ajout de bruit, saturation, etc.. La saturation consiste à couper les cretes de tes fonctions oscillantes. saturation ca crache non  :sweat:  
- modification de l'enveloppe. Avec une rampe linéaire en entrée et en sortie pour simuler l'attaque des notes. Tu peux egalement moduler l'amplitude par une énième fonction oscillante. c le sur le volume quon joue la ?- varier les types de fonctions oscillantes (creneaux, sinusoides, triangulaires, dents de scie etc..) wow ca me rapelle la NES
 
LeGreg

mood
Publicité
Posté le 16-11-2003 à 02:15:05  profilanswer
 

n°567983
red factio​n
Posté le 16-11-2003 à 02:25:59  profilanswer
 

les echnatillons que jai pour linstant me font penser a certains morceaux de daft punk  
 
en tout cas ca claque  :D


Message édité par red faction le 16-11-2003 à 02:38:02
n°568310
LeGreg
Posté le 16-11-2003 à 19:35:24  profilanswer
 

Citation :

Le genre de choses que tu peux faire:  
- addition des amplitudes. Pour à partir d'une note simple faire des sons plus riches. (cf théorie de Fourier)  
deja essaye , le son ressemble a celui qd on fait un no au tel  :lol:  


 
Fourier a dit que tout son périodique était décomposable en une somme de sa série de Fourier (composants sinusoidales dont les fréquences croissent selon n). Évidemment plus tu rajoutes de fréquences plus tu as un son qui ressemble à l'original.
Comme le son est périodique et que tu utilises des fréquences multiples de la fréquence de base la phase d'origine est importante.  
 
Le téléphone utilise deux fréquences il me semble (dual tone). Mais ce ne sont pas des éléments d'une série de Fourier parce qu'elles sont conçues pour n'avoir pas de relation harmonique entre elles.
 

Citation :

- modulation de frequence. Tu as une porteuse dont la frequence varie en fonction d'une autre fonction oscillante.  
jviens dessaye a linstant, ca a l'air vraiment pas mal, jcrois que je vais poste un echantillon    [:yamusha]  


 
C'est ce qu'utilisait Yamaha dans ses synthés à succès des années 80 (avant j'étais presque pas né donc je sais pas).  
Par exemple pour eux un son de piano c'était une source sinusoidale modulé en fréquence par une autre source sinusoidale. la fréquence du modulateur était un multiple ou un diviseur (je ne me souviens plus) de la fréquence d'origine. L'amplitude était modifiée par une enveloppe d'attaque caractéristique (croissante rapide, plateau petit et decroissance lente). Évidemment selon les standards actuels c'est soit "Cheezy" soit "vintage", selon le biais initial pour les vieilles technologies.
 

Citation :

- ajout de bruit, saturation, etc.. La saturation consiste à couper les cretes de tes fonctions oscillantes. saturation ca crache non  :sweat:  


 
La saturation rajoute des harmoniques dans ton son d'origine
(si la source de départ est sinusoidale par exemple), certains musiciens ne peuvent plus jouer qu'avec des guitares amplifiées, saturées et avec un feedback important (mixage par le son de sortie décalé dans le temps) .

n°568436
vanilla
datoune's revival
Posté le 16-11-2003 à 22:38:49  profilanswer
 

[:drapo]

n°571146
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 19-11-2003 à 23:16:07  profilanswer
 

LE STARFIELD 3D
 
Télécharger l'éxécutable
Télécharger le source
Télécharger le dos4gw.exe (à mettre dans le meme répertoire que l'éxécutable).
 
Me revoici, après une petite absence ! Rassurez vous, le topic est loin d'être mort, c'est juste qu'en ce moment j'ai pas une minute à moi. En plus, j'ai eu des soucis avec le débugger de Watcom (pour ceux qui souhaiteraient débugger des programmes en mode dos4g, envoyez moi un MP, je vous expliquerais certains trucs ;))
 
Voici donc le Starfield en 3D. Fondamentalement, il est très semblable au Starfield en 2D. La seule différence provient du fait qu'il existe maintenant une notion de projection.
 
La projection
 
Qu'est ce que la projection ? Tout simplement la base de la 3D telle que nous la voyons tous les jours. La projection permet de transformer des coordonnées 3D (donc avec 3 coordonnées : x, y et z pour la profondeur) en coordonnées 2D (x et y). En effet, il est impossible avec les écrans actuels de générer des graphismes en relief. Une conversion 3D->2D doit être réalisée avant affichage à l'écran.
 
La formule utilisée pour la projection est très simple. Soit un point 3D de coordonées (x,y,z). Si on veut transformer ces coordonnées en coordonnées 2D (x',y') pour un affichage à l'écran, la formule sera :
 

Citation :


x' = (FOCALE * x) / z
y' = (FOCALE * y) / z


 
Tout simplement.
 
La constante FOCALE représente la distance se trouvant entre le regard de l'utilisateur et la scène 3D. Plus cette constante sera proche de 0, plus le regard sera loin de la scène.
 
L'origine du système de coordonées 3D se trouve en (0,0,0). Ce point se trouve en haut à gauche de l'écran. Plus la coordonnée z augmente, plus la profondeur augmente, plus le point rentre virtuellement dans l'écran. Plus la coordonnée z diminue, plus le point sort de l'écran. En d'autres termes, l'axe Z est positif du regard de l'utilisateur vers l'écran et négatif de la "vitre" de l'écran vers le regard de l'utilisateur.
 
Ces principes sont donc la base fondamentale de la 3D contemporaine. Tous les logiciels actuels sont représentés à l'écran de cette manière.
 
Revenons au Starfield 3D. Par rapport au Starfield 2D, j'ai rajouté une composante Z dans la structure de l'étoile, ainsi qu'une couleur. Dans le 1er article, j'ai indiqué que les couleurs 21 à 31 de la palette système contenaient un dégradé de gris. On réutilise cette palette en calculant une couleur comprise entre ces index. De même, j'ai conservé la sauvegarde de la position pour effacement de l'étoile. Je vous invite à consulter l'article sur le Starfield 2D pour plus d'infos à ce sujet.
 
La procédure moveStars s'occupe de bouger les étoiles. Elle est commentée et ne devrait pas poser de difficulté. L'algo utilisé est très simple :
 
Pour chaque étoile :
- on efface l'étoile de son ancienne position
- on décrémente sa coordonnée Z pour faire défiler le starfield vers nous
- si Z <= 0, alors on réinitialise les valeurs de cette étoile
- on calcule ensuite les coordonnées projetées selon la formule donnée plus haut
- on clippe ces coordonnées pour pas qu'elles sortent de l'écran. Si c'est le cas, on réinitialise les valeurs de l'étoile
- à partir des coordonnées projetées, on calcule l'offset de la mémoire vidéo correspondant au point
- on sauvegarde cet offset pour effacement de l'étoile lors de la prochaine itération
- on affiche l'étoile dans sa couleur
 
Voilà, c'est enfantin. Evidemment, n'hésitez pas à poser des questions si quelque chose vous parait pas clair.
 
Pour le prochain article, on restera sur cet effet, on verra ainsi comment l'améliorer (comme par exemple changer la couleur de l'étoile au fur et à mesure qu'elle se rapproche de nous, pour simuler un relief, ou alors comment optimiser le code pour afficher plus d'étoiles, etc...). D'ici là, amusez vous à l'optimiser par vous mêmes avec le test de temps machine décrit dans le second article :hello:


---------------
J'ai un string dans l'array (Paris Hilton)
n°571152
drasche
Posté le 19-11-2003 à 23:24:00  profilanswer
 

prems!
 
sympa, je dévore :love:


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°571155
the real m​oins moins
Posté le 19-11-2003 à 23:37:54  profilanswer
 

j'ai une question hyper con
si on enleve le waitVBL dans la boucle principale, ispasskoi? [:xx_xx]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°571162
chrisbk
-
Posté le 19-11-2003 à 23:54:54  profilanswer
 

the real moins moins a écrit :

j'ai une question hyper con
si on enleve le waitVBL dans la boucle principale, ispasskoi? [:xx_xx]


 
tu vire la vsynch, donc tu va parfois faire une copie de ton ecran virtuel a la ram graphique alors que le faisceau est justement en train de barbouiller a l'ecran (le vrai)
resultat : effet de dechirure :o (pour shematiser, t'as une moitié de l'image precedente et une moitié de la nouvelle)

n°571166
the real m​oins moins
Posté le 20-11-2003 à 00:11:02  profilanswer
 

bon, alors y'a un truc qui m'echappe qd meme:
- l'ecran est redesinné au moment du "waitVBL": oui?
- tu calcules les pos. des etoiles apres. qu'est-ce qui garantit que ce calcul va pas se terminer apres une vsynch ?  
 


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°571167
chrisbk
-
Posté le 20-11-2003 à 00:14:59  profilanswer
 

the real moins moins a écrit :

bon, alors y'a un truc qui m'echappe qd meme:
- l'ecran est redesinné au moment du "waitVBL": oui?
 


 
tu calcules pendant que l'ecran trace l'image precedente. tu attends la fin remplissage (waitvbl), et quand le faisceau remonte tu balance ton image  
 

Citation :


- tu calcules les pos. des etoiles apres. qu'est-ce qui garantit que ce calcul va pas se terminer apres une vsynch ?


 
absolument rien du tout, par contre tu t'en apercevras paske tes FPS feront une sale gueule :D
 
 

n°571168
the real m​oins moins
Posté le 20-11-2003 à 00:20:51  profilanswer
 

euh la partie "tu balances ton image", c'est ou ds le code?
(désolé si ça fait redite hein)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°571175
chrisbk
-
Posté le 20-11-2003 à 00:36:24  profilanswer
 

[:le kneu]
j'avais pas regardé le code [:le kneu]
 
harko vieux porcho, c koi ces acces direct a la ram video ??

n°571176
chrisbk
-
Posté le 20-11-2003 à 00:37:20  profilanswer
 

bon ben c'est la meme chose :O il attends juste que le faisceau remonte pour faire ses calculs. quand le faisceau est en haut, avec un peu de chance il a fini ses calculs et le faisceau dessine bien la nouvelle image


Message édité par chrisbk le 20-11-2003 à 00:38:09
n°571177
the real m​oins moins
Posté le 20-11-2003 à 00:37:52  profilanswer
 

:lol:
(moi j'avais meme pas pigé ce que c'était ce *(truc+machin)=pouet [:ula] )


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°571179
the real m​oins moins
Posté le 20-11-2003 à 00:38:19  profilanswer
 

ben ui ok mais il calcule qd le faisceau est en haut, mais le tps que ça calcule le faisceau il a deja bougé nan


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°571181
chrisbk
-
Posté le 20-11-2003 à 00:43:05  profilanswer
 

ouais, c'est fin naze cette notation en plus :O
 
 
harko fodra qu'on parle [:shakalagoons]

n°571182
chrisbk
-
Posté le 20-11-2003 à 00:43:34  profilanswer
 

the real moins moins a écrit :

ben ui ok mais il calcule qd le faisceau est en haut, mais le tps que ça calcule le faisceau il a deja bougé nan


 
nope il calcul quand le faisceau commence a remonter

n°571186
the real m​oins moins
Posté le 20-11-2003 à 00:53:49  profilanswer
 

 waitVBL(); // attente du début du balayage vertical.
  moveStars(); // déplacement des étoiles    
 
moi ce que je lis avec juste ça c'est que moveStars commence une fois que le faisceau commence à descendre :??:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°571252
Moktar1er
No one replies...
Posté le 20-11-2003 à 08:39:20  profilanswer
 

Merci Harko ;)
Par contre petite précision [:aloy]
Tu parles ici de projection perspective. Je précise car des types de projections il en existe un paquet (orthogonale, parallèle etc.). En fait la projection se fait sur le plan de vision de la caméra.
C'est juste une précision tout bête, pour le reste tes explications sont très claires.
Bravo

n°571254
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 20-11-2003 à 09:00:03  profilanswer
 

chrisbk a écrit :

[:le kneu]
j'avais pas regardé le code [:le kneu]
 
harko vieux porcho, c koi ces acces direct a la ram video ??


c'était pour préparer mon article suivant sur l'optimisation de ce source, pour démontrer par a+b que l'écriture dans un buffer est beaucoup plus rapide que l'écriture directe en VRAM :o

n°571263
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 20-11-2003 à 09:25:10  profilanswer
 

chrisbk a écrit :

ouais, c'est fin naze cette notation en plus :O
 
 
harko fodra qu'on parle [:shakalagoons]
 


elle a quoi ma notation ? :o

n°571265
chrisbk
-
Posté le 20-11-2003 à 09:26:47  profilanswer
 

Harkonnen a écrit :


elle a quoi ma notation ? :o


 
sde la daube qui surcomplique inutilement le code :O

n°571266
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 20-11-2003 à 09:30:36  profilanswer
 

the real moins moins a écrit :

 waitVBL(); // attente du début du balayage vertical.
  moveStars(); // déplacement des étoiles    
 
moi ce que je lis avec juste ça c'est que moveStars commence une fois que le faisceau commence à descendre :??:


non, regarde mon article sur le Starfield 2D en page 2 : la fonction waitVBL() attend que le faisceau soit en bas de l'écran, et non en haut. donc je fais mes calculs pendant que le faisceau commence à remonter vers le haut, vu la simplicité des calculs, j'ai largement le temps de tout calculer avant qu'une nouvelle image soit redessinée ;)
 
par contre, dans les prochains articles en 3D, je ferais mes calculs pendant que l'image précédente sera dessinée, et je profiterais de la remontée du faisceau pour copier l'écran virtuel (le buffer) dans la ram vidéo. ici ça va, les calculs sont très simples et ont largement le temps de se faire dans l'intervalle d'un retour de balayage. ça risque de plus être le cas quand il faudra calculer des matrices de rotation et tout le bordel.


Message édité par Harkonnen le 20-11-2003 à 09:32:27
n°571268
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 20-11-2003 à 09:31:47  profilanswer
 

moktar1er a écrit :


Par contre petite précision [:aloy]
Tu parles ici de projection perspective. Je précise car des types de projections il en existe un paquet (orthogonale, parallèle etc.). En fait la projection se fait sur le plan de vision de la caméra.


Tu as raison, merci de le préciser :jap:
 

moktar1er a écrit :


C'est juste une précision tout bête, pour le reste tes explications sont très claires.
Bravo


Merci [:rougit] :jap:

n°571270
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 20-11-2003 à 09:32:10  profilanswer
 

chrisbk a écrit :


 
sde la daube qui surcomplique inutilement le code :O


ben expliques toi bordel :o

n°571274
chrisbk
-
Posté le 20-11-2003 à 09:33:44  profilanswer
 

Harkonnen a écrit :


ben expliques toi bordel :o


 
je ne vois pas le gain qu'il y a ecrire
 
 

Code :
  1. * (buffer + offset) = roger;


 
en lieu et place de :
 

Code :
  1. buffer[offset] = roger;


qui est quand meme franchement plus lisible :O
Bon ca fait moins w4rr1Or mais bon.. :O Quand on fais des tutos on se doit de faire le code le plus clair possible :O
 
 
 

n°571277
antp
Super Administrateur
Champion des excuses bidons
Posté le 20-11-2003 à 09:35:30  profilanswer
 

Ouais mais ce sont des tutos pour w4rr10rs justement :o


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°571280
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 20-11-2003 à 09:37:00  profilanswer
 

chrisbk a écrit :


 
je ne vois pas le gain qu'il y a ecrire
 
 

Code :
  1. * (buffer + offset) = roger;


 
en lieu et place de :
 

Code :
  1. buffer[offset] = roger;


qui est quand meme franchement plus lisible :O
Bon ca fait moins w4rr1Or mais bon.. :O Quand on fais des tutos on se doit de faire le code le plus clair possible :O


ben j'ai toujours fait comme ça, les habitudes sont dures à perdre [:sinclaire]
mais bon, je tacherais de faire un effort la prochaine fois :o
 
edit: ceci dit, je préfère cette notation car elle a le mérite de bien mettre en évidence qu'on ajoute un offset à l'adresse de base de la vram pour trouver l'adresse du point


Message édité par Harkonnen le 20-11-2003 à 09:38:13
n°571281
chrisbk
-
Posté le 20-11-2003 à 09:37:16  profilanswer
 

antp a écrit :

Ouais mais ce sont des tutos pour w4rr10rs justement :o


 
:O
 
j'avais un pote qui refusait religieusement d'utiliser la notation tableau. On avait droit a eds :
 
 

Code :
  1. *(roger + *(tata + 2))


 
la blessure est encore vive
 

n°571283
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 20-11-2003 à 09:38:39  profilanswer
 

chrisbk a écrit :


 
:O
 
j'avais un pote qui refusait religieusement d'utiliser la notation tableau. On avait droit a eds :
 
 

Code :
  1. *(roger + *(tata + 2))


 
la blessure est encore vive
 
 


cf mon edit précédent :o

n°571285
Moktar1er
No one replies...
Posté le 20-11-2003 à 09:42:08  profilanswer
 

bah c'est pareil

Code :
  1. tamere[toto]=schmurz;


 
et

Code :
  1. *(tamere+toto)=schmurz;


 
[:sinclaire]
Quand on touche aux tableaux on connait les pointeurs, donc on comprend que c'est pareil... Chais pas, je vois même pas ce qui pose problème en fait...

n°571288
chrisbk
-
Posté le 20-11-2003 à 09:46:23  profilanswer
 

Harkonnen a écrit :


edit: ceci dit, je préfère cette notation car elle a le mérite de bien mettre en évidence qu'on ajoute un offset à l'adresse de base de la vram pour trouver l'adresse du point


 
oué ben comme tous les acces a un tableau hein ? :D
 
 
Regardez ce pauvre javaeux de moins moins il en a ete tout tourneboulé, pensez donc un peu a vos frere codeux qui vivent dans la noirceur de langage d'universitaire sans avenir, cette notation ne leur est pe pas familiere [:totoz]

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  6  7  8  9  10  11  12  13  14  15

Aller à :
Ajouter une réponse
 

Sujets relatifs
Projet de topic tutorial sur la programmation d'effets graphiquesProgrammation jeux video
cherche cours de programmation[ASM] L'assembleur sur TI82
Newbee en recherche d'un bon bon logiciel de programmationProgrammation graphique : choix d'un toolkit
[Programmation windows en C++] Recherche d'un bon tutorial...la fin des langages de programmation... sous Windows evidemment
cherche pro de la programmation 
Plus de sujets relatifs à : La programmation d'effets de demos old-school (Assembleur + C)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR