PDA

Voir la version complète : Mon moteur de jeu



TheToune
25/05/2011, 13h39
C'est avec une grande joie que je vous annonce la naissance d'un moteur de jeu absolument incroyable et fantastique !
Evidemment comme tout les papa je suis peu être probablement optimiste mais voici un premier Screenshots de la bête en action :

http://tof.canardpc.com/preview2/fdf8ceb9-4b47-4ebb-8b1d-72518042bfd0.jpg (http://tof.canardpc.com/view/fdf8ceb9-4b47-4ebb-8b1d-72518042bfd0.jpg) :ph34r:

Tremblez Unreal engine et autres cry engine. :o

Bon ok il y a encore du boulot ! C'est même carrément moche ! Mais il faut bien commencer !

Cette première scène de test contient quand même environ 30000 polygones dont 20000 fleurs paint moche :cigare:, la camera tourne autour du point fixe central et je suis à 38 fps sur le pc de dev (pas un foudre de guerre ):
Intel Core2 Duo T9300 à 2.5Ghz
2go de ram
Nvidi 8600 M

Sinon au delà de ce qui est visible il y a d'autres choses de fonctionnelles:
- Architecture en modules indépendants ( gestion os,graphismes, son, entrée )
- Ces module sont indépendant de la technologie ( actuellement j'utilise directx et j'ai du tricher un peu pour obtenir des premiers rendu pour me motiver ) mais à terme je devrais pouvoir programmer un rendu opengl par exemple sans toucher au reste. Même si je ne fais pas de cette indépendance une priorité ( c'est très sympas pour un moteur pro mais pour un moteur amateur c'est totalement inutile ).
- Gestionnaire d'état (pour pouvoir passer d'un menu à un autre, au jeu,à la carte du monde, faire pause)
- graphe de scène ( La construction n'est pas encore automatique mais je devrais implémenter très rapidement quadtree/octtree et bsp )
- gestionnaire de ressources

Je devrais implémenter rapidement ces fonctionnalités, hérité d'un précédent essai de moteur et donc déjà testées ( je dois un peu les réadaptés par contre ) :
- Gestion des lumières de base
- Moteur de particules
- Gestion des contrôles

Et puis m'attaquer ensuite au GUI/HUD ...

Evidemment c'est quelque chose que je fait sur mon temps libre et la progression est donc soumise à mes disponibilités et surtout mon envie ( Comme je suis programmeur c'est parfois difficile après une journée de code :( ). C'est d'ailleurs un projet que j'avais finit par mettre de côté pendant plus d'1 an, à un stade où je ne codais que son architecture. Mais maintenant qu'il a atteint un stade fonctionnel et surtout plus concret j’espère bien finir par arriver à en faire quelque chose.

Sylvine
25/05/2011, 13h42
Euh.

T'as pas d'autres images?
Parce que là j'arrive même pas à m'imaginer à quoi ça ressemble en mouvement, on dirait un montage sur paint.

TheToune
25/05/2011, 13h44
J'ai eu quelques soucis avec l'image ^^ !

Sylvine
25/05/2011, 13h46
J'ai eu quelques soucis avec l'image ^^ !

Ah, je me disais bien, j'ai cru que c'était encore le forum qui merdait.

TheToune
25/05/2011, 14h15
Euh.

T'as pas d'autres images?
Parce que là j'arrive même pas à m'imaginer à quoi ça ressemble en mouvement, on dirait un montage sur paint.

C'est sur que sans un meilleur éclairage (uniquement éclairage ambiant pour le moment) et des textures moches le Screenshots fait très plat.

En voici quelques autres qui permettent de voir le parcours du moteur depuis les premiers affichages en attendant que je produise quelque chose de plus agréable :

http://tof.canardpc.com/preview2/e597f5bf-b403-4e1e-81fd-4b049fb6f052.jpg (http://tof.canardpc.com/view/e597f5bf-b403-4e1e-81fd-4b049fb6f052.jpg)

http://tof.canardpc.com/preview2/3a9e3bc8-4b4e-48bc-81fd-6ffe31d735c9.jpg (http://tof.canardpc.com/view/3a9e3bc8-4b4e-48bc-81fd-6ffe31d735c9.jpg)

Froyok
25/05/2011, 20h48
Whooooa ! :o

Vivement la gestion des normal maps ! :p

TheToune
25/05/2011, 20h54
Whooooa ! :o

Vivement la gestion des normal maps ! :p

Entre autres chose :ph34r:

Don Moahskarton
25/05/2011, 20h55
Qu'utilises tu comme bibliothèque ?
OpenGL ? DirectX ?
...
SDL ?

TheToune
25/05/2011, 21h33
Direct3D et D3DX pour le rendu !
Direct Input pour les entrées !

Don Moahskarton
26/05/2011, 14h29
Ah oui, a la dure quoi !

Madvince
27/05/2011, 10h41
Pour la 3D , tu ne fais pas de wrapper vers Ogre , Irrlicht ou autre pour aller plus vite ?
Tu préfères tout coder toi même ?

TheToune
30/05/2011, 03h22
Pour la 3D , tu ne fais pas de wrapper vers Ogre , Irrlicht ou autre pour aller plus vite ?
Tu préfères tout coder toi même ?

Non, je préfère tout coder moi même !
Le but c'est pas tellement d'arriver à un truc fabuleux, mais plutôt de coder moi même et d'apprendre des trucs.

Là j'ai un système avec des contrôles fonctionnels ( je me balade comme je veux dans la scène ) et j'ai le GUI/HUD qui commence à fonctionner !

TheToune
30/05/2011, 23h58
Quelques progrès :

http://tof.canardpc.com/preview2/da4b9e05-f8d6-4ecf-a48d-82576b459f7d.jpg (http://tof.canardpc.com/view/da4b9e05-f8d6-4ecf-a48d-82576b459f7d.jpg)

Alors plusieurs choses :

J'ai modifié la génération de la scène d'essai pour ajouter du relief avec un bête bruit de Perlin.
On aperçois les premiers battements de coeur du moteur de GUI/HUD.
Et si vous avez d’extrêmement bon yeux vous remarquerez le léger rougeoiement sur le modèle du nain qui est en fait un premier résultat d’éclairage.

http://tof.canardpc.com/preview2/6916a349-b30d-40c2-b42e-8742e21b7a6d.jpg (http://tof.canardpc.com/view/6916a349-b30d-40c2-b42e-8742e21b7a6d.jpg)

Le modèle de tigre du sdk ( dont est tiré aussi le nain ), je crois que c'est le même depuis le sdk de directx6 !

http://tof.canardpc.com/preview2/ee353a5c-f4ee-4a1f-b9cd-c026155f2bcf.jpg (http://tof.canardpc.com/view/ee353a5c-f4ee-4a1f-b9cd-c026155f2bcf.jpg)

Effet indésirable de l’éclairage directionnel sur la SkyBox! D'ailleurs le GUI est lui même encore "éclairé" ce qui n'est évidement pas prévu. :ph34r:

http://tof.canardpc.com/preview2/7c4f15ad-9f68-4f60-8c4a-d11c497c1f9b.jpg (http://tof.canardpc.com/view/7c4f15ad-9f68-4f60-8c4a-d11c497c1f9b.jpg)

Ma fonction d'ajout d'herbe/fleur aléatoire qui refuse de s'aligner sur la height map ! ^_^

http://tof.canardpc.com/preview2/5cda11dc-a19e-480a-a998-38080b7f506e.jpg (http://tof.canardpc.com/view/5cda11dc-a19e-480a-a998-38080b7f506e.jpg)

Le mode pause, implémenté pour tester la navigation entre états, avec changement de GUI dans la foulé !

Froyok
31/05/2011, 12h13
Si t'as besoin de modèles ou textures, hésite pas à demander, ça me ferait plaisir de t'aider ! ;)
J'adore voir des moteur 3D perso en développement !

Tylers
31/05/2011, 19h12
Très intéressant. Quels sont tes objectifs finaux ?

TheToune
01/06/2011, 20h44
C'est évident : Conquérir le monde !

Spécial kasdédit à Froyok voici les premiers résultat de l’éclairage combiné aux normales :
http://tof.canardpc.com/preview2/b7841066-8be9-4df2-8e0c-818b89857f56.jpg (http://tof.canardpc.com/view/b7841066-8be9-4df2-8e0c-818b89857f56.jpg)

Avec quelques ajustements :
http://tof.canardpc.com/preview2/555cd5d0-a247-4c30-9019-266b452b832e.jpg (http://tof.canardpc.com/view/555cd5d0-a247-4c30-9019-266b452b832e.jpg)

Hoooo une texture procédurale :
http://tof.canardpc.com/preview2/740d15c7-3800-406a-bc89-bf83d53f1171.jpg (http://tof.canardpc.com/view/740d15c7-3800-406a-bc89-bf83d53f1171.jpg)

La même avec des couleurs dépendantes de la hauteur:
http://tof.canardpc.com/preview2/5f96fb24-de73-4b78-8116-51b4570e032f.jpg (http://tof.canardpc.com/view/5f96fb24-de73-4b78-8116-51b4570e032f.jpg)

Et puis on génère une HeightMap :
http://tof.canardpc.com/preview2/6ad57a1a-27c8-44f2-bfa6-5a14f60d78a0.jpg (http://tof.canardpc.com/view/6ad57a1a-27c8-44f2-bfa6-5a14f60d78a0.jpg)

Version Wireframe :
http://tof.canardpc.com/preview2/31bf9b82-b918-4ba5-a9ca-05738f05cc89.jpg (http://tof.canardpc.com/view/31bf9b82-b918-4ba5-a9ca-05738f05cc89.jpg)

J'en ai chié pour mettre tous les triangles dans le bon sens ! :sad:

cailloux
03/06/2011, 17h18
C'est évident : Conquérir le monde !

Spécial kasdédit à Froyok voici les premiers résultat de l’éclairage combiné aux normales :
3102

Je trouve le rendu des montagnes excellent, on dirait du Brake ou Picasso période cubiste !

war-p
03/06/2011, 22h06
Code un truc comme ça on en reparle après...

Froyok
04/06/2011, 03h50
Je suis amoureux.
The toune, épouse-moi. :emo:

Dark Fread
04/06/2011, 23h42
Ben dis donc, chapeau. :O

TheToune
06/06/2011, 00h32
Je trouve le rendu des montagnes excellent, on dirait du Brake ou Picasso période cubiste !

Bas ouais coco ! Maintenant les jeux vidéo c'est de l'art ! :cigare: ^_^

Merci pour vos encouragements en tout cas !

J'ai encore un peu avancé mais surtout sur du fond avec une première mise en place du quadtree et une meilleure gestion du GUI qui gère maintenant le curseur, des composants organisé hiérarchiquement (par exemple plusieurs fenêtres avec chacune leur contenus, et les éléments qui compose la fenêtre se déplacent avec elle ), il possède sa propre résolution configurable indépendamment de la résolution du rendu et chaque élément peut être positionné dans son parent selon différent repères (par exemple un champ texte qui resterais toujours en bas a droite d'une fenêtre ). Enfin accessoirement les composants du GUI sont maintenant "décoré" grâce a des cadres autodimensionable.

Je reprend le boulot demain par contre ! Je risque d'avancer plus lentement pendant quelques temps ! :sad:

lincruste
06/06/2011, 01h30
Félicitations. Hésite pas à rentrer dans les détails si tu en as le temps et l'envie. Genre développer le "J'en ai chié pour mettre tous les triangles dans le bon sens !" c'est toujours intéressant. Bonne continuation.

TheToune
08/06/2011, 00h38
Je posterai probablement des explications sur le fonctionnement quand j'aurais le temps !

CC Tu veut voir mon GUI !

Voici un écran de menu principal :
http://tof.canardpc.com/preview2/d7e54ed5-11f1-4880-ade7-b644ab392b60.jpg (http://tof.canardpc.com/view/d7e54ed5-11f1-4880-ade7-b644ab392b60.jpg)
Les boutons sont fonctionnels et change d'apparence quand on passe dessus ou qu'on click !

La scène 1, toujours aussi moche mais avec un viseur en plus, les infos regroupées dans une fenêtre mère ( c'est du texte fixe çà ne correspond à rien ) et le pointeur en plus qui se trimbale malgré son inutilité dans cette scène parce que je n'ai pas encore implémenter de fonction ON/OFF :
http://tof.canardpc.com/preview2/29de76b4-c273-4aa6-8935-c27f379b0842.jpg (http://tof.canardpc.com/view/29de76b4-c273-4aa6-8935-c27f379b0842.jpg)

Plus intéressant la scène 2 pour jouer avec la génération de heightmaps avec différentes effets :
http://tof.canardpc.com/preview2/ebb58cec-3537-462e-81ea-99259cd1853b.jpg (http://tof.canardpc.com/view/ebb58cec-3537-462e-81ea-99259cd1853b.jpg)
http://tof.canardpc.com/preview2/91844a37-910f-4f34-babc-245ee08f34ea.jpg (http://tof.canardpc.com/view/91844a37-910f-4f34-babc-245ee08f34ea.jpg)
http://tof.canardpc.com/preview2/a3a26a82-b6dc-45c7-be5e-d862a2ff2202.jpg (http://tof.canardpc.com/view/a3a26a82-b6dc-45c7-be5e-d862a2ff2202.jpg)
http://tof.canardpc.com/preview2/f1524c33-e70a-4c53-89d1-d856d56b8a20.jpg (http://tof.canardpc.com/view/f1524c33-e70a-4c53-89d1-d856d56b8a20.jpg)
http://tof.canardpc.com/preview2/02002fec-9ca5-492a-83c7-eb3ddf415b39.jpg (http://tof.canardpc.com/view/02002fec-9ca5-492a-83c7-eb3ddf415b39.jpg)

Retour au menu principal avec echap. Menu qui garde la scène en mémoire et continu de faire le rendu derriére le GUI avec en bonus un BUG qui multiplie l’éclairage :
http://tof.canardpc.com/preview2/19f1b444-8491-4c33-87b8-399596c571d7.jpg (http://tof.canardpc.com/view/19f1b444-8491-4c33-87b8-399596c571d7.jpg)

Je me concentre pas mal sur le GUI maintenant parce que je vais en avoir pas mal besoin pour pouvoir continuer le dev du reste dans de bonne conditions.

alecool
08/06/2011, 13h43
T'as un objectif particulier pour ton moteur, un jeu que tu veux réaliser, ou tu fais "juste" un moteur de jeu comme ca?

TheToune
08/06/2011, 16h01
Il s'agit évidement de pouvoir réaliser des jeux plus concrets dessus ! Et oui j'ai des idées et des objectifs mais je me les garde pour le moment ! Surtout qu'avant de réaliser ces idées absolument géniales et révolutionnaires (:ph34r: ) je commencerais surement par quelques mini jeux à la con pour roder le moteur.

Je pourrais utiliser un moteur tout prêt et bourré de trucs géniaux pour ça mais au final j'en trouve très peu qui correspondent à ce que je veut faire.
A chaque fois que j'ai l'impression de vouloir faire une maison de Légo avec une machine de montage programmée pour assembler des maisons playmobil à la chaine !
Plus la curiosité et le challenge ...

TheToune
13/06/2011, 14h38
Et bien malheureusement comme prévu j'avance moins vite. Mais j'avance quand même.

Beaucoup de modifications dans le code avec l'ajout d'un gestionnaire de variables comparable à une base de registre et pas mal de nettoyage et d'ajout de fonctions utilitaires. J'ai également amélioré l'indépendance entre le moteur et directx, encore quelques corrections et tout passera proprement par l'interface intermédiaire. Et les contrôles du GUI sont linkable directement sur les variables du gestionnaire. Ce qui m'a permit d'ajouter l'affichage de variables, des check box et des radio button.

Ecran principal :
http://tof.canardpc.com/preview2/4b279df7-4f70-4c5a-839a-2102f92efe89.jpg (http://tof.canardpc.com/view/4b279df7-4f70-4c5a-839a-2102f92efe89.jpg)

Les options. De l'affichage pour le moment seulement, vu que j'ai pas encore coder les sliders. Il y a bien le full screen d'activable mais il n'est prit en compte qu'au redémarrage ( et les valeurs sont correcte mais elles ne sont prise en compte que pour le fullscreen ):
http://tof.canardpc.com/preview2/00e2fe5c-b7a8-4094-96d3-f746c9f2b8ec.jpg (http://tof.canardpc.com/view/00e2fe5c-b7a8-4094-96d3-f746c9f2b8ec.jpg)

La scène de test 2 avec cette fois ci des radio button et des check box :
http://tof.canardpc.com/preview2/253f4c2b-c069-42e1-8710-c55a172cbcc3.jpg (http://tof.canardpc.com/view/253f4c2b-c069-42e1-8710-c55a172cbcc3.jpg)
http://tof.canardpc.com/preview2/3961f476-2fe1-45b2-9af6-28c22ef0aa60.jpg (http://tof.canardpc.com/view/3961f476-2fe1-45b2-9af6-28c22ef0aa60.jpg)

L'option wireframe activable/desactivable à volonté :
http://tof.canardpc.com/preview2/193d3158-05d7-47c1-8e3c-a4564bea88aa.jpg (http://tof.canardpc.com/view/193d3158-05d7-47c1-8e3c-a4564bea88aa.jpg)

Je vais entamer le codage des barres de progression, sliders et edit box mais j'ai encore pas mal de code à normaliser et de fonction utilitaire à coder ( principalement pour sécuriser et uniformiser la création des entités qui compose la scéne, le GUI ou les variables ).

Donc pas de screen avant un moment, par contre je posterai peut être des trucs concernant la façon dont le moteur fonctionne si je le temps de poser tout ça sur papier ( enfin sous word :tired:).

war-p
13/06/2011, 19h48
Documentation mon ami, documentation!

Froyok
15/06/2011, 08h44
Ho, tu nous fais de la tesselation sans dx11 steuplé ? :emo:

TheToune
16/06/2011, 23h55
Documentation mon ami, documentation!

Quoi ?
:ninja:


Ho, tu nous fais de la tesselation sans dx11 steuplé ? :emo:

Je vais déjà essayer d'exploiter plus d'1/10ême de DX9 ! ^_^

TheToune
20/06/2011, 22h29
Aujourd'hui j'ai vécu un véritable drame !

Suite à une série de malencontreux copié collé j'ai faillit perdre deux semaines de boulot ! :sad:

Apres quelques longues minutes en position foetale j'ai effectué une recuperation de fichier sur un anciens repertoires et je me suis retrouvé à vendredi soir.

Et je recite war-p :

Documentation mon ami, documentation!

Parce que justement grâce à doxygen j'ai pus récupérer une bonne partie de mes modifs de ce week end dans les entêtes !
Heureusement la plupart de mes modifs importantes était sur des fonctions inline. Le reste c’était de la réorganisation et de la documentation justement.
J'avais mit en place des premier essais pour le systeme de sauvegarde mais je devait le revoir complètement de toute façon.

J'ai donc retrouvé un statu acceptable ... même si je doit me retaper quelques modifs et me retaper un gros morceaux de commentaires de fonctions j'ai au moins sauvé le plus gros. :|

Sinon j'ai maintenant du LOD ( level of détail : pour afficher des modèles différent en fonction de la distance ) et les quadtree sont fonctionnels et donc le système de sauvegarde qui fonctionne comme je le voulais mais que je dois réécrire en partie.

Maintenant je vais manger et me foutre devant la télé pour évacuer ma frustration et faire baisser ma tension ! :tired:

Je me posais la question de savoir si ça valait la peine de me mettre un SVN en place ! La question ne se pose même plus ! :O

Froyok
21/06/2011, 13h52
Avant le SVN tu peux essayer dropbox.
Ça m'a sauvé de nombreuses fois.

TheToune
21/06/2011, 14h33
Avant le SVN tu peux essayer dropbox.
Ça m'a sauvé de nombreuses fois.

Vu l'actu de dropbox je ne crois pas ! ^^

Sinon je parle d'un SVN mais hébergé chez moi , pas d'un serveur sur internet.
Ça aurait pas particulièrement de sens pour un projet solo !

Froyok
21/06/2011, 15h44
C'est quoi le problème avec dropbox ? :huh:
Pas après un SVN je trouve ça compliqué pour moi à mettre en place.

TheToune
21/06/2011, 16h05
C'est quoi le problème avec dropbox ? :huh:
Pas après un SVN je trouve ça compliqué pour moi à mettre en place.

Des problèmes de sécurité avec une méchante faille ce week end ...
Des clés pas si privés ! Mais un dropbox dans google actu devrait te donner une idée plus précise !

Sinon pour mettre en place un svn local :

- Télécharger et installer tortoise svn.
- Créer un répertoire ( sur un disque réseau par exemple) -> click droit -> Create repository here.
- créer un répertoire de travail sur le pc de travail -> click droit -> SVN Checkout avec dans url le chemin réseau vers le précédent répertoire

Même pas besoin d'un service serveur dans ce cas ... ( nécessaire si tu veut faire un vrai serveur dédié évidement )

TheToune
13/07/2011, 17h58
Contrairement à la mise à jour de ce topic, mon projet n'est pas mort !
Je suis peu productif mais par contre j’étudie beaucoup :

Le monde merveilleux des shaders
Les API son ( Je pense utiliser OpenAl )
Et Les API physique ... ( Au départ je partais vers Newtown mais je pense plutôt utiliser ODE )

En tout cas une chose est sure, pour pouvoir utiliser les shaders correctement je vais devoir gérer différemment le rendu :
- Implémenter le rendu sur texture, ce qui était prévu et plus ou moins préparé.
- Gérer les passes multiples. Prévu aussi mais pas forcement de la façon dont les shaders vont me l'imposer. J'avais bien prévu de pouvoir gérer plusieurs passe sur la scène pour certains effet mais certains shaders peuvent avoir besoin qu'on redessine plusieurs fois le même objet.
- Et le plus "complexe": gérer les paramètres des shaders entre ma scéne et le moteur graphique. Pour ça je pense utiliser le moteur de variables en ajoutant un type de variable pouvant faire référence à une ressource.

Froyok
14/07/2011, 00h38
Intéressant ce planning ! :)
Tu avais également regardé du côté de Bullet Physics (http://bulletphysics.org/wordpress/) pour ton moteur physique ?

TheToune
14/07/2011, 01h13
Intéressant ce planning ! :)
Tu avais également regardé du côté de Bullet Physics (http://bulletphysics.org/wordpress/) pour ton moteur physique ?

J'ai jeté un coup d'oeil mais j'ai pas trouvé de Tutorial spécialement convainquant alors j'ai pas insisté.

Sinon pour les shaders je me suis intéressé à Cg ( le language de shader de Nvidia ) et c'est assez intéressant, je pense que je vais utiliser leur API.
Par contre je suis confronté à pas mal de zone de floue sur le fonctionnement des shader et surtout ce qu'on doit leur passer en parametre.
Mais là j'ai mal la tête alors j’arrête pour aujourd'hui. :zzz:

TheToune
15/07/2011, 18h48
Je vais définitivement utiliser Cg ! Il y a des trucs formidables dans cette API qui colle parfaitement avec ma façon de vouloir gérer les Shaders !

Par contre la doc fait 356 pages ( en anglais évidement ) ! :mellow:

Froyok
15/07/2011, 21h58
Et encore, t'as pas vu la doc pour le COLLADA. :p

TheToune
19/07/2011, 20h17
Doxygen me génère une doc de 392 pages :

http://tof.canardpc.com/preview2/9c0a6707-f86c-4776-94a0-955f54d75800.jpg (http://tof.canardpc.com/view/9c0a6707-f86c-4776-94a0-955f54d75800.jpg)

:O :o

Tomaka17
20/09/2011, 17h55
Je suis tombé sur ce topic par hasard, je sais pas s'il est encore actif
EDIT : en fait c'est tout ce sous-forum qui a l'air inactif :p

Quoiqu'il en soit si tu cherches un p'tit serveur SVN gratuit et tout, y a unfuddle.com qui permet d'héberger ses p'tits projets de manière privée sans prise de tête (j'ai un peu fait le tour de tous les sites qui proposent ce genre de service, et c'est un des meilleurs avec FogBugz, mais ce dernier utilise Mercurial et non Subversion)

En ce qui concerne Cg je te déconseille d'utiliser leur API : il est lent et n'est pas souvent mis à jour (du coup il manque pas mal de fonctionnalités). Par exemple depuis la version 3.0 d'OpenGL les fonctions du genre glVertexPointer, glColorPointer, etc. sont deprecated, or Cg ne propose pas d'alternative. Plutôt que d'utiliser entièrement l'API de Cg, personnellement j'utilise juste leur compilo pour transformer le Cg en HLSL ou GLSL, puis je passe le résultat dans le compilo de DirectX ou d'OpenGL.

Evidemment l'autre problème c'est que Cg ne supporte que les vertex et fragment shaders, mais ça c'est plus délicat à résoudre

TheToune
20/09/2011, 22h05
Ouais il est encore "actif" ... Mais malheureusement depuis quelques temps j'ai un peu la tête dans le guidon au boulot et c'est dur de rentrer le soir et de re-coder encore ! :/
Même si je continue à me documenter et faire des modifs de temps en temps, c'est vraiment au ralentis.

Pour le moment je me contente d'outils locaux, je trouve pas d’intérêt à faire de l’hébergement distant sur un projet solo. Et comme c'est moi qui manage Mantis et Svn au boulot ça me convient très bien.

Ce qui m’intéressait dans cg c'est surtout d'avoir une interface commune qui comprend un peu tout. Mais même si j'ai fait preuve de beaucoup d'enthousiasme je ne suis pas totalement fixé encore. Il se peu qu'au final je reste sur les fonctions dédié de directx, principalement pour une question de paramétrage.

TheToune
25/10/2011, 00h16
Bon ben pour info je peut maintenant charger des fichier ".fx" donc HLSL en passant directement par DirectX et j'arrive à les appliquer sur mes objets ... mais sans paramètres pour ce soir.
C’était finalement moins laborieux que ce que je craignais.
Le plus chiant maintenant va être de gérer les paramètres de façon correcte ...

Tomaka17
25/10/2011, 07h11
Si tu parles des "uniform" personnellement je me fais pas chier pour ça
Au moment de créer le shader, je créé aussi les constant buffers de la taille correspondante, et je mets dans une unordered_map (c'est la hash map du C++11) la liste des paramètres avec leur nom, leur offset et leur taille dans le buffer (même si la taille c'est juste pour vérifier qu'on ne fasse pas de connerie en copiant des trucs trop grands)

Ensuite quand j'active un shader, j'active en même temps tous ses constant buffers.
Si mon code veut modifier un paramètre du shader, je map le constant buffer en mémoire, je copie la valeur dedans mais je ne le démap qu'au moment de l'appel à DrawElements, comme ça on évite de map/démap plusieurs fois si on veut modifier plusieurs paramètres.

C'est pas forcément la méthode la plus optimisée (même s'il n'y a pas de gouffre), mais c'est la moins chiante car tout ça se fait de manière transparente pour le reste du moteur

TheToune
25/10/2011, 08h31
Non, en fait je parle plus simplement de paramétrer mes objets pour qu'ils envois ensuite les bon paramètres au shader.
En fait j'essaye de respecter une certaine conception, ce qui complique un peu les choses si je veut rester propre.

J'ai un gestionnaire de scène, un gestionnaire de ressources, un gestionnaire de variables. Chacun des gestionnaires peu posséder des objets avec des données à envoyer à l'effet.
La scène par exemple va contenir un "noeud" qui contient les informations de positions, ainsi que des "pseudos pointeurs intelligent" vers des objets du gestionnaire de ressource ( modèles, textures et shaders ).
Il faut donc que je trouve un moyen propre pour paramétrer mon élément de scène afin qu'il puisse envoyer ces différents objets dans les variables correspondantes de l'effet.