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

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5  6  7  8  9  10
Auteur Sujet :

Article: un raytracer de base en C++

n°795845
LeGreg
Posté le 14-07-2004 à 19:42:33  profilanswer
 

Reprise du message précédent :
Update :  
Les articles ont été remis à jours et sont disponibles sur mon site web:
 
premiers pas:
http://www.massal.net/article/raytrace/page1.html
éclairage spéculaire (blinn-phong), post processing et antialiasing:
http://www.massal.net/article/raytrace/page2.html
textures (Perlin noise, cubic environment mapping, bump mapping)
http://www.massal.net/article/raytrace/page3.html
Flou (depth of field), Fresnel, blobs (isosurfaces):
http://www.massal.net/article/raytrace/page4.html
HDR, loi de beer, aberration chromatique:
http://www.massal.net/article/raytrace/page5.html
Global ilumination, photon mapping:
http://www.massal.net/article/raytrace/page6.html  
 
Le code et les commentaires y sont plus récents. Vous pouvez continuer à utiliser ce topic pour les questions
et commentaires.
 
Voilà, si vous voulez l'historique du sujet, vous pouvez continuer à lire la suite.
Fin de l'Update  
 

farib a écrit :

sinon, j'arrive po à faire fonctionner blinn en utilisant le modèle (S+V)/2*N  (l'autre produit scalaire marche)


 
tu as du t'emmeler dans le sens (et la signification) de tes vecteurs..


Message édité par LeGreg le 12-07-2008 à 00:04:45

---------------
voxel terrain render engine | animation mentor
mood
Publicité
Posté le 14-07-2004 à 19:42:33  profilanswer
 

n°804821
TBone
Pouet.
Posté le 23-07-2004 à 17:37:38  profilanswer
 

propre et simple. il ne faut rien de plus pour habiller un algo :jap:
 
edit: j'ajouterais cependant un label mentionnant le temps mis pour créer l'image histoire de pouvoir comparer les différentes méthodes.


Message édité par TBone le 23-07-2004 à 17:39:03

---------------
A straight line is a special case of a curve. It's a curve which is uncurved. -- Susskind.
n°805235
farib
Posté le 24-07-2004 à 12:01:45  profilanswer
 

ouais, ouais, enfin je fais surtout ça pour apprendre.
 
Par contre, j'en arrive à la réflexion suivante : les GUI sassert à rien :D
 
là ca fait 15 jours que je suis dessus, me faudra sans doute 15 jours pour rendre le truc entièrement blindé et fignolé, et y'aura que les premieres notions de raytracing
 
ma conclusion : font chier les ***** de users à pas aimer éditer des fichiers texte ;)


---------------
Bitcoin, Magical Thinking, and Political Ideology
n°805318
farib
Posté le 24-07-2004 à 14:38:19  profilanswer
 

je me demande si y'a des optimisations à faire genre à un endroit comme ici
 

Code :
  1. for (int y = 0; y < myScene.sizey; ++y) {
  2.           for (int x = 0 ; x < myScene.sizex; ++x) {
  3.               float red = 0, green = 0, blue = 0; 
  4.    
  5.      for(float fragmentx = x; fragmentx < x + 1.0f; fragmentx += 0.5f)
  6.           {for(float fragmenty = y; fragmenty < y + 1.0f; fragmenty += 0.5f)
  7.    {


 
 
la premiere double boucle, c'est pour les pixels, la 2e, pour l'antialias.
 
supponsons que je fasse donc un test pour dessiner avec ou sans antialias.
 

Code :
  1. for (int y = 0; y < myScene.sizey; ++y) {
  2.           for (int x = 0 ; x < myScene.sizex; ++x) {
  3.               float red = 0, green = 0, blue = 0; 
  4.     if (antialias)
  5.      for(float fragmentx = x; fragmentx < x + 1.0f; fragmentx += 0.5f)
  6.           {for(float fragmenty = y; fragmenty < y + 1.0f; fragmenty += 0.5f)
  7.    {


 
 
ça rajoutera 640*480 tests, qu'on pourait sauter en faisant "2 fois" ce code, un avec antialias, un sans.
 
 
ou bien c'est dérisoire par rapport au cout de calcul général ? (enfin je suis en train de penser que c'est le cas)
 
ou toute optimisation est bonne à prendre.


---------------
Bitcoin, Magical Thinking, and Political Ideology
n°805364
TBone
Pouet.
Posté le 24-07-2004 à 17:06:26  profilanswer
 

je n'ai pas analysé le code de LeGreg mais il a dit qques pages plus tôt que son code avait des fins éducatives et donc pas nécessairement optimisé ni fouilli.
 
c'est p-ê ça...


---------------
A straight line is a special case of a curve. It's a curve which is uncurved. -- Susskind.
n°805381
bjone
Insert booze to continue
Posté le 24-07-2004 à 17:30:20  profilanswer
 

le coût du if( antialias ) par pixel devant le côut de la récusions de calculs d'intersections est assez faible.
 
mais le mieux serait de faire une fonction qui accepte en paramètre le vecteur de vue d'un pixel.
 
ce qui permetterait d'une part d'avoir quelque chose de réutilisable (générateur de normal map pour un modèle low poly à partir du même modèle high poly), de plus propre, de plus réorganisable, du style:
 
if( antialias )
{
  for( y
    for( x
      for( fragx
         for( fragy  
         {
            RayTrace(....
         }
}
else
{
  for( y
      for( x
         RayTrace( ...
}
 
bref, éclate son code en sous-fonctions, ce qui te permetera de faire des trucs plus marrants, et de voir plus clair pour mieux optimiser.


Message édité par bjone le 24-07-2004 à 17:30:37
n°805400
farib
Posté le 24-07-2004 à 18:17:20  profilanswer
 

TBone a écrit :

je n'ai pas analysé le code de LeGreg mais il a dit qques pages plus tôt que son code avait des fins éducatives et donc pas nécessairement optimisé ni fouilli.
 
c'est p-ê ça...


 
disons que je cherche pas à optimiser mais plutot à débourriner :o


---------------
Bitcoin, Magical Thinking, and Political Ideology
n°805507
LeGreg
Posté le 24-07-2004 à 23:06:04  profilanswer
 

farib a écrit :

disons que je cherche pas à optimiser mais plutot à débourriner :o


 
??

n°805516
LeGreg
Posté le 24-07-2004 à 23:38:41  profilanswer
 

sinon pour ce qui est de ta question:  
si tu avais lu toute la série d'articles :D
tu saurais la solution que j'ai adopté pour un supersampling variable.
(conclusion: pourquoi est-ce que tu ne commences pas par là ?)
 
Et pour ce qui est du cout d'une modification de code je ne saurais trop te recommander une commande qui s'appelle "time".
 
man time
http://www.rt.com/man/time.1.html

n°805539
farib
Posté le 25-07-2004 à 00:15:50  profilanswer
 


 
je cherche à utiliser ton code en le modifiant le moins possible pour qu'il reste le plus fidèle à ce que tu as écrit.
 
Par contre, en combinant les différentes formes d'effet, je rajoute des tests supplémentaires, sur lesquels je me pose des questions sur le cout induit.
 
Oui, t'as peut-être fait quelque chose sur le supersampling variable, mais moi hein je vais pas vite :)


---------------
Bitcoin, Magical Thinking, and Political Ideology
mood
Publicité
Posté le 25-07-2004 à 00:15:50  profilanswer
 

n°816601
BoB_le_Pan​da
Posté le 06-08-2004 à 14:45:14  profilanswer
 

Hey tlm salut greg bon moi chu un nioub ^^ pr linstant japprends le c ;) mais j'ai fait un copier coller de ton source et sous visual C++ y me met ke ya une erreur... c pa moi ké di c mon compilateur :p En tt cas je trouve ça très bo et g hâte de savoir faire ttes ces belles choses =)


---------------
LOVE
n°817326
WhatDe
Posté le 08-08-2004 à 00:01:32  profilanswer
 

Putain ca m'troue le cul !  :ouch:

n°817328
WhatDe
Posté le 08-08-2004 à 00:03:31  profilanswer
 

(par contre y'a pas un petit bug entre la boule rose et la rouge ? le reflet de la rose dans la rouge à l'ai coupé)
 
enfin il est tard mon cerveau est déjà dans la purée


Message édité par WhatDe le 08-08-2004 à 00:05:09
n°818770
l'eau de l​a
Posté le 10-08-2004 à 11:40:57  profilanswer
 

bon j'ai lu le thread super vite, et cela me sidère que l'on puisse écrire un raytracer en si peu de ligne :)
 
Juste comme ça, est-il possible de facilement le transformer en lancer de rayon avec la méthode de montécarlo  (orth?) ? En gros, les surfaces ne sont plus des mirroirs mais renvois la lumière dans toutes les directions comme c'est impossible de tout faire, on tire au hasard les rayons à calculer.

n°823021
LeGreg
Posté le 14-08-2004 à 01:46:13  profilanswer
 

Tu dois modifier le code de lecture dans la cubemap
pour lire le sample correspondant du filtre bilinéaire dans le bon carré. Ou alors pour limiter l'effet clamper le sampling strictement à l'intérieur du carré (centroid sampling)
 
Si ça se trouve je l'ai déjà fait dans les versions suivantes. Enfin je ne m'en souviens plus trop et j'ai pas le code sous les yeux.

n°823023
LeGreg
Posté le 14-08-2004 à 01:53:55  profilanswer
 

l'eau de la a écrit :

Juste comme ça, est-il possible de facilement le transformer en lancer de rayon avec la méthode de montécarlo  (orth?) ? En gros, les surfaces ne sont plus des mirroirs mais renvois la lumière dans toutes les directions comme c'est impossible de tout faire, on tire au hasard les rayons à calculer.


 
oui c'est possible de faire Monte Carlo.
 
Le code (pas au début mais plus loin dans le topic) utilise les techniques stochastiques pour limiter le nombre de rayons et c'est l'idée qui sous tend Monte Carlo. Mais comme tout méthode purement statistique ça rajoute du bruit (le nombre de tirage a effectuer est souvent plus important que ce que tu veux passer comme temps à calculer une simple image). On peut réduire le bruit et le temps de calcul en utilisant des heuristiques basées sur l'importance des samples sur l'image finale (c'est aussi développé un peu plus loin meme si c'est très basique pour l'exemple).
 
Le photon mapping agit comme un cache pour accelerer ces calculs.
 
Par contre si tu fais un vrai miroir, tu n'as pas à envoyer plusieurs samples. Un miroir réaliste renvoie les rayons lumineux dans une seule direction (c'est le cas de la reflexion sur l'eau ou toute autre surface plane).

n°823039
farib
Posté le 14-08-2004 à 09:26:47  profilanswer
 

LeGreg a écrit :

Tu dois modifier le code de lecture dans la cubemap
pour lire le sample correspondant du filtre bilinéaire dans le bon carré. Ou alors pour limiter l'effet clamper le sampling strictement à l'intérieur du carré (centroid sampling)
 
Si ça se trouve je l'ai déjà fait dans les versions suivantes. Enfin je ne m'en souviens plus trop et j'ai pas le code sous les yeux.


 
en fait c'est ça, c'est présent dans tes premiers rendus avec la méthode repeat/modulo, et ça s'en va avec la méthode min-max
 
t'aurais des liens vers des explications concrètes dans la méthode d'application de la cubemap ? ( et qui t'auraient inspiré, à moins que tu n'ai tout inventé tout seul :D )
 
j'ai trouvé ça
http://www.opengl.org/resources/tu [...] de180.html
et ça
http://ct.radiology.uiowa.edu/~jia [...] ode67.html
(un peu d'explication sur l'interpolation bilinéaire)
 
mais je peine à faire le lien ( genre le role de umin/vcoef etc...)


Message édité par farib le 14-08-2004 à 09:33:32

---------------
Bitcoin, Magical Thinking, and Political Ideology
n°823053
LeGreg
Posté le 14-08-2004 à 10:01:50  profilanswer
 

farib a écrit :

t'aurais des liens vers des explications concrètes dans la méthode d'application de la cubemap ? ( et qui t'auraient inspiré, à moins que tu n'ai tout inventé tout seul :D )


 
nan j'ai pas inventé la cubemap
mais le code est lui meme est pas très compliqué.
 
Tu as un rayon qui a une certaine direction. Cette direction définit un unique point à l'infini. La cubemap c'est juste une manière de représenter facilement la totalité des directions possibles.
 
Tu n'as qu'à t'imaginer être au centre d'un cube géant. Tu vas lancer un rayon dans une certaine direction et il va intersecter le cube.
 
La fonction de texturing depuis le cube fait juste ça: calculer l'intersection entre un rayon et un cube imaginaire. Tu as six cas possibles, un pour chaque face du cube. Une fois la face déterminée tu vas calculer précisément quel texel tu dois lire pour une direction donnée. C'est de la triangulation tout ce qu'il y a de simple.
Comme le rayon ne tombe jamais précisemment sur un texel, usuellement il tombe entre quatre de ces texels, tu vas donc faire une interpolation linéaire entre les quatre couleurs pour déterminer la couleur intermédiaire. La encore rien de bien sorcier.

n°823055
farib
Posté le 14-08-2004 à 10:18:03  profilanswer
 

LeGreg a écrit :


 
La fonction de texturing depuis le cube fait juste ça: calculer l'intersection entre un rayon et un cube imaginaire. Tu as six cas possibles, un pour chaque face du cube. Une fois la face déterminée tu vas calculer précisément quel texel tu dois lire pour une direction donnée. C'est de la triangulation tout ce qu'il y a de simple.
Comme le rayon ne tombe jamais précisemment sur un texel, usuellement il tombe entre quatre de ces texels, tu vas donc faire une interpolation linéaire entre les quatre couleurs pour déterminer la couleur intermédiaire. La encore rien de bien sorcier.


ça j'ai compris mais c'est au niveau du readcubemap
 
 
on a (u,v) qui correspond aux coordonnées sur la texture en coordonnées [-1,1]x[-1,1], qu'ont ramène en [0-512]x[0-512] avant de faire l'interpolation
 
je comprend pas pourquoi on fait un
 

Code :
  1. u = fabsf(u);
  2. v = fabsf(v);


qui nous symétrise le tout
 
 
avec ma logique tordue, j'ai fait pour tester un

Code :
  1. couleur output = tab[(int)((u+1)/2*512)+(int)((v+1)/2*512)*512];


qui évidemment donne un résultat qui ne correspond à rien mais c'est ce que j'aurais vu comme transformations des coordonnées [-1,1] vers [0,512]
 
j'ai du louper qq chose dans l'histoire.


Message édité par farib le 14-08-2004 à 10:19:03

---------------
Bitcoin, Magical Thinking, and Political Ideology
n°823460
farib
Posté le 15-08-2004 à 12:58:04  profilanswer
 

ouin...
 
a partir de la profondeur de champ, il manque des headers  
:cry:


---------------
Bitcoin, Magical Thinking, and Political Ideology
n°825569
LeGreg
Posté le 17-08-2004 à 23:21:22  profilanswer
 

farib a écrit :

ouin...
 
a partir de la profondeur de champ, il manque des headers  
:cry:


 
Quels headers manque-t-il ?
 
J'ai du poster le source complet un peu plus loin, tu l'as téléchargé ?

n°825623
farib
Posté le 18-08-2004 à 08:38:46  profilanswer
 

hum, en effet, j'ai du me chier dans mes grep


---------------
Bitcoin, Magical Thinking, and Political Ideology
n°825868
_darkalt3_
Proctopathe
Posté le 18-08-2004 à 15:02:50  profilanswer
 

[:drapal]

n°827330
pospos
Posté le 19-08-2004 à 23:06:36  profilanswer
 

tres interessant ce topic! merci LeGreg
si ca interese des gens, voila un lien vers un article et un scipt de raytracing en Perl:
http://perl.plover.com/RayTracer/
evidement c'est du raytracing tres "basique", mais ca peut faire une petite introduction

n°860839
farib
Posté le 30-09-2004 à 11:46:08  profilanswer
 

boh, c'est mort :(


---------------
Bitcoin, Magical Thinking, and Political Ideology
n°861739
spokup
Posté le 01-10-2004 à 09:17:56  profilanswer
 

J'ai compilé le code de la première page avec gcc. J'obtien cette image ! savez vous d'ou peut venir le probleme ?
 
http://www.chez.com/hlmapping/out.jpg

n°864728
LeGreg
Posté le 05-10-2004 à 00:04:00  profilanswer
 

c'est très joli !
 
Essaie de comparer tes sources avec ceux qui ont été postés au format Zip un peu plus loin. Est-ce qu'il y a des différences ?

n°864744
bjone
Insert booze to continue
Posté le 05-10-2004 à 01:04:59  profilanswer
 

huhu c'est original.
 
il doit y avoir une variable qui est pas réinitialisée le long d'une ligne horizontale. ou un décalage sur les accès aux propriétées des sphères. (le test rayon/sphère est bon, mais le bouzin accède à la mauvaise sphère pour obtenir les propriétées de surface)
 

n°864745
bjone
Insert booze to continue
Posté le 05-10-2004 à 01:06:24  profilanswer
 

pospos a écrit :

tres interessant ce topic! merci LeGreg
si ca interese des gens, voila un lien vers un article et un scipt de raytracing en Perl:
http://perl.plover.com/RayTracer/
evidement c'est du raytracing tres "basique", mais ca peut faire une petite introduction


 
comme j'aime pas les langages où il faut mettre des $ ou autre devant les variables :D


Message édité par bjone le 05-10-2004 à 01:06:34
n°876032
farib
Posté le 18-10-2004 à 15:21:03  profilanswer
 
n°876044
Mr Mala
Posté le 18-10-2004 à 15:30:04  profilanswer
 

farib a écrit :

saimoooort :(


 
ben non !

n°876181
farib
Posté le 18-10-2004 à 16:43:38  profilanswer
 
n°876186
bjone
Insert booze to continue
Posté le 18-10-2004 à 16:45:52  profilanswer
 

mé non

n°876192
farib
Posté le 18-10-2004 à 16:53:02  profilanswer
 
n°876196
Mr Mala
Posté le 18-10-2004 à 16:59:40  profilanswer
 


 
oui c'est ça d'accord t'as raison ... je dois avoir un browser magique ... :/

n°876198
Lam's
Profil: bas.
Posté le 18-10-2004 à 17:01:15  profilanswer
 

Question !
 
Pourquoi est-ce qu'un rendu qui utilise radiosité+photon maps est-il plus "réaliste" qu'un rendu qui n'utilise que les photon-maps ?  
 
Est-ce parce qu'il existe des échanges de lumière liés d'une part à la lumière ambiante, et d'autre part à la lumière diffuse, les 2 technologies travaillant de façon différente?  
 
De façon naïve, je me suis dis que toute lumière qui arrive à un point vient d'une source de lumière (de façon directe ou pas), et donc doit être simulé par photon-maps. Or, ce n'est pas le cas... Sous pov-ray, le résultat est beaucoup plus probant si j'utilise les 2 techniques.

n°876370
LeGreg
Posté le 18-10-2004 à 19:18:30  profilanswer
 

Lam's a écrit :

Question !
Pourquoi est-ce qu'un rendu qui utilise radiosité+photon maps est-il plus "réaliste" qu'un rendu qui n'utilise que les photon-maps ?


 
Tout simplement parce que les deux techniques ne simulent pas les mêmes effets.  
 
Parler d'unification des méthodes de lighting est encore un peu prématuré..

n°878448
farib
Posté le 20-10-2004 à 20:21:17  profilanswer
 

hum, j'aimerais bien continuer à coder un peu. J'ai fini (et compris) la première page mais là je commence à décrocher, le code devient complexe avec la profondeur de champ :o
 
(je veux dire retrouver l'effet dans le code, qui mixe tous les effets)


Message édité par farib le 20-10-2004 à 20:21:49
n°878564
LeGreg
Posté le 21-10-2004 à 00:01:55  profilanswer
 

farib a écrit :


(je veux dire retrouver l'effet dans le code, qui mixe tous les effets)


 
la profondeur de champ n'est pas mélangée au reste du code !
contrairement aux autres composantes elle est simplement contenue dans ces quelques lignes:
 

Code :
  1. float sampleRatio = 0.25f * 0.25 ;
  2. float fClearPoint = 450.0f;
  3. float fDispersion = 50.0f;
  4. ray viewRay = { {float(fragmentx), float(fragmenty), 0.0f}, { 0.0f, 0.0f, 1.0f}};
  5.      
  6. if (myScene.viewer.z == 0.0f)
  7. {
  8.    viewRay.start.z = -10000.0f;
  9. }
  10. else
  11. {
  12.    viewRay.dir = - (1.0f / myScene.viewer.z ) * (viewRay.start - myScene.viewer); 
  13.    float temp = viewRay.dir * viewRay.dir;
  14.    if (temp == 0.0f)
  15.        break;
  16.    viewRay.dir = ( 1.0f / sqrtf(temp) )* viewRay.dir;
  17.    viewRay.start = myScene.viewer;
  18.    vecteur vDisturbance;                       
  19.    vDisturbance.x = (fDispersion / RAND_MAX) * (1.0f * rand());
  20.    vDisturbance.y = (fDispersion / RAND_MAX) * (1.0f * rand());
  21.    vDisturbance.z = 0.0f;
  22.    point ptVise = viewRay.start + fClearPoint * viewRay.dir;
  23.    viewRay.start = viewRay.start + vDisturbance;
  24.    viewRay.dir = ptVise - viewRay.start;
  25.    temp = viewRay.dir * viewRay.dir;
  26.    if (temp == 0.0f)
  27.        break;
  28.    viewRay.dir = ( 1.0f / sqrtf(temp) )* viewRay.dir;
  29. }


 
Bon je suis désolé du côté haqueux du truc, qui fait que le code est ridiculement simple.
 
A la rigueur essaie de tracer un dessin avec les différents vecteurs (fais le en 2D vu que c'est le meme probleme qu'en 3D) normalement une fois que tu traces sur une feuille, le point cible, le rayon effectif, les rayons "virtuels", etc.. tu devrais y voir plus clair. C'est que de la géométrie.
 
LeGreg

n°899442
c0wb0y
:d
Posté le 15-11-2004 à 22:06:39  profilanswer
 

LeGreg a écrit :

Farib,
si tu veux vraiment te former la dessus je ne peux que te conseiller
http://www.amazon.com/exec/obidos/ [...] 0?v=glance
 
ça ne remplacera pas un cours que tu pourrais suivre à ton école mais c'est l'un des bouquins de référence.


 
Salut,  
Connaitrais tu un équivalent de ce livre en francais ?
J'ai fais des recherches sur amazon et alapage, mais je n'ai pas trouvé ce livre =/
merci :)

n°899585
LeGreg
Posté le 16-11-2004 à 00:58:53  profilanswer
 

Update :  
Les articles ont été remis à jours et sont disponibles sur mon site web:
 
premiers pas:
http://www.massal.net/article/raytrace/page1.html
éclairage spéculaire (blinn-phong), post processing et antialiasing:
http://www.massal.net/article/raytrace/page2.html
textures (Perlin noise, cubic environment mapping, bump mapping)
http://www.massal.net/article/raytrace/page3.html
Flou (depth of field), Fresnel, blobs (isosurfaces):
http://www.massal.net/article/raytrace/page4.html
HDR, loi de beer, aberration chromatique:
http://www.massal.net/article/raytrace/page5.html
Global ilumination, photon mapping:
http://www.massal.net/article/raytrace/page6.html  
 
Le code et les commentaires y sont plus récents. Vous pouvez continuer à utiliser ce topic pour les questions
et commentaires.
 
Voilà, si vous voulez l'historique du sujet, vous pouvez continuer à lire la suite.
Fin de l'Update  
 

c0wb0y a écrit :

Salut,  
Connaitrais tu un équivalent de ce livre en francais ?
J'ai fais des recherches sur amazon et alapage, mais je n'ai pas trouvé ce livre =/
merci :)


 
A ma connaissance, il n'a pas de traduction française et n'a pas d'equivalents autre qu'en anglais.
 
C'est le cas de nombreux bouquins malheureusement et meme les auteurs français publient en anglais.


Message édité par LeGreg le 12-07-2008 à 00:05:05

---------------
voxel terrain render engine | animation mentor
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  6  7  8  9  10

Aller à :
Ajouter une réponse
 

Sujets relatifs
c koi un nombre entier en base octale ou hexadécimale ??Phpbb et base de données
Formulaire de modification d'une base mysqlTransformer/Intégrer un XLS dans une base SQL/mySQL
[PHP] question de base sur la structure du if...then...else ?[SGBD] Base de données sans serveur ?
ResourceBundle basé sur un fichier situé à une url spécifiqueformulaire --> direction email à la place de la base mySQL
Temps de transfert Base Access ...SQL serveurplacé un element sous plusieurs catégorie dans une base de donnéés
Plus de sujets relatifs à : Article: un raytracer de base en C++


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)