Bienvenue sur mon projet, depuis plusieurs années je travaille sur un moteur C++/C~ qui ne demande absolument aucune dépendance en plus d'être multiplateformes.
Pour une utilisation complète, voir les projets relatif de la triologie :
Ce projet à pour but de servir de base pour n'importe quel projet, ce sera votre Ground Zero.
En savoir plus sur le projet
Genèse
Au départ, l'idée était de faire du graphique, en manipulant un tableau de pixels sans utilisé de librairie pour être compatible partout et fonctionner sur de petite système, tel un microcontrôleur. C'est maintenant bien plus que ça, avec entre autre l'ajout d'OpenGL. Le moteur fait aussi bien 2D que de la 3D. C’est comme ça qu’est né GroundZero, le moteur graphique fait à partir de zéro
Le moteur est programmé en C++/C~, il est prévu pour n'importe quel compilateur C++. Je m’en tiens au minimum pour que ça puisse fonctionner sur le plus grand nombre de machine et que ça soit facilement portable. Le moteur sera également compatible OpengGL ES2, pour supporter les mobiles/tablettes, les navigateurs Web (WebGL) ainsi que le petite plateforme comme Raspberry Pie.
-N'importe quel Microcontrôleurs 32bit en spécifiant le pointer sur le buffer de pixels
Moteur graphique :
Coordonnées 2d/3d
Rotation X, Y, Z
Easing/interpolation complet des objets sur tout les propriétés.
Redimensionnement: ( height, width) + inversion
Brightness : global, par couleur
Transparence
Gestion par imbrication de clips, l’enfant obtient la propriété du parent (coordonné et tous ce qui est mentionné ci-dessus)
Autres caractéristiques:
Possibilité de faire des fenêtres transparente, sans bordure avec la gestion indépendante des pixels semi-transparents, parfait pour ceux qui veulent créer des Widgets. Fonctionne à la fois sous Windows et Linux.
Système d'inclusion des fichiers ressources à même le binaire, par exemple les images .png sont "embed" dans le .exe
Types de bases fait maison: String, Array dynamique, Liste, le tout muni de pointeurs intelligents intégrés (comptage par référence)
Delegate sur fonction membre avec ou sans paramètres
Optimisations :
Boucle graphique optimisé au maximum, pratiquement que des "bitwise" et aucun appel de fonction.
L'écran est dessiné à l’envers (du plus près au plus loin), ce qui me permet d’éviter de recalculer les pixels cachés
Compilation rapide.
Aucun DLL requis.
Binaire léger.
Objectifs
Correction de bogues (En cours)
Animation (Séquence d'images) (En cours)
Font et texte dynamique
Rafraichissement des zones de changements uniquement (Ce qui permet au programme de dormir complètement)
Dessin de lignes, courbes et remplissage de formes
Moteur de physique 2d
Audio, lecture midi/wav/mp3/ogg
Version WebGL
Le projet et son originalité
Le projet n'est pas qu'un moteur graphique, c'est tout un framework avec tout les outils nécessaires pour la base d'un projet, au même titre que la SDL et SFML. Je mise tout sur la simplicité, sans perte de performances, ni de libertés. Je souhaite aussi un maximum de portabilité sur le plus grand nombre de machines.
Pour l’instant vous pouvez tester les débuts du moteur, le tout ne comprend qu'un seul fichier puisque qu’aucun dll/so n'est requis et que toutes les images sont incluses dans le binaire.
Linux: (Bouton droit->enregistrer sous, ensuite Bouton droit sur l'application -> Propriété -> Permissions -> Cochez "Allow executing file as program")
Je ne doute pas que ça a été un travail de longue haleine et qu'il y a des choses très intéressantes dedans, mais de là à dire des choses comme "je trouve les langages de programmation actuels inutilement complexes", "j'ai tout recodé pour que ça soit plus performant", je trouve ça un peu présomptueux quand on sait que lesdits langages ont impliqué des tas de programmeurs de très grand talent durant des années, travaillant en communautés nombreuses et actives. Aucun code écrit par une personne seule ne pourra rivaliser avec ce genre de choses, alors je doute franchement que recoder les utilitaires de base comme les string soit une idée grandiose.
Après, tu parles beaucoup du moteur graphique mais tu ne fais qu'évoquer vaguement le langage créé, ça serait pourtant intéressant non ? Enfin, bravo pour ta combattivité (5 ans pour un projet solo, il faut être bien motivé) et tes résultats jusqu'à maintenant.
Merci Ce que je dis c'est que je les trouves inutilement complexes OUtrès limités. Donc je veux un langage simple, qui permet autant de possibilités tout en étant aussi performant que le C++.
Tout recoder peut être plus performant car l'on a une meilleurs vision d'ensemble et tout s’agence bien mieux. Mais mon principal but de tout refaire est de me débarrasser de toute les librairies complexes qui peuvent ne pas être portable sur absolument tout. Le moteur graphique ici est coder à 95% par moi, se sont tous mes algorithmes. Un algo reste un algo, ce n'est qu'une logique facilement transposable. J'ai déjà commencé à convertir le moteur sur un microcontrôleur ARM, un STM32f4. Je vous en redonne des nouvelles bientôt.
- Edité par Maeiky 20 août 2014 à 2:15:57
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
Mais ne vaudrait-il pas mieux faire d'abord une version Linux ? (en général tu as plus de chance de tomber sur quelqu'un qui utilise une distrib Linux que quelqu'un qui utilise un microcontrôleur....) Du coup je peux pas tester (flemme d'installer wine ...)
Je fais un portage sur microcontrôleur car le moteur graphique à été initialement pensé pour ça. C'est à dire tout le traitement des pixels, le fait d'utiliser le moins de libraires possible et aussi aucune utilisation des templates. En même temps ça sort de l'ordinaire, et puis j'adore l'électronique
Mais en effet, je crois qu'il y a beaucoup d'utilisateur Linux ici, donc je vais probablement en faire une version juste après.
Pour l'open source, eh bien après avoir passé autant de temps sur mes fonctions graphique, je suis un peu retissant à donner mes sources. Je crois que je vais les fournir, mais ce sera avec une licence, du genre : gratuit pour des logiciels gratuits et payant pour les logiciels commerciales.
- Edité par Maeiky 20 août 2014 à 2:15:04
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
Je fais un portage sur microcontrôleur car l'engin graphique à été initialement pensé pour ça. C'est à dire tout le traitement des pixels, le fait d'utiliser le moins de libraires possible et aussi aucune utilisation des templates. En même temps ça sort de l'ordinaire, et puis j'adore l'électronique
Ah d'accord mais alors ça change tout ... Je pensais que tu faisais ça pour PC d'ailleurs je comprenais pas bien le but de tout ça mais maintenant que tu le dis, si je résume tu essayes de créer un programme pour manipuler des images qui fonctionne sur un microprocesseur ? et donc pour faire ça tu utilises un langage que tu as crée ? J'ai tout bon ? J'ai lu trop vite ton premier post je n'avais pas exactement compris ça....
Pour les sources tu fais comme tu veux mais en général il est plus profitable de les fournir à moins que tu ne poursuives un but commercial (--> ici on parle bien des sources de ton moteur graphique ? ou celle de ton langage ? je m'y perd un peu, présenter deux projets en un c'est un peu dur de tout comprendre )
EDIT: Qu'est-ce que tu appelles un "engin graphique " ?
Ah d'accord mais alors ça change tout ... Je pensais que tu faisais ça pour PC d'ailleurs je comprenais pas bien le but de tout
Je fais ça pour le PC avant tout, mais je veux également que ça fonctionne sur un microcontrôleur. Pour les sources, seul ceux de l'engin graphique et ceux générés par mon langage seront accessibles.
Je m'en excuse si ce n'est pas très clair, ici je ne présente que l'engin graphique, car mon langage n'est pas encore au point et c'est plutôt indépendant, puis je préfère me créer un IDE avant de faire une release.
En attendant, j'ai fais quelques progrès sur microcontrôleur. J'ai réussi à gérer le vertical sync pour une animation fluide et je suis parvenu à compiler tout l'engin dessus. Il ne me reste qu'a charger des PNG, donc pour l'instant je n'affiche qu'un carré noir Je suis contant que ça ne rame pas pour l'instant, j'espère que ça sera de même avec une image.
Bien sûr, mais les images, les transformations et animations ne sont qu'une infime partie. Il y a tout un framework derrière qui sera portable partout, car ce sera des fichiers sources standard compilable sur n'importe quel compilateur C++. Sans parler qu'il sera possible d'y inclure du C++, donc la limite est tout simplement votre imagination.
- Edité par Maeiky 7 juillet 2014 à 5:59:26
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
En effet, faire simple consiste à toujours repenser ma structure et de diriger le plus possible l'utilisateur sans trop le limiter. Il y a beaucoup de casse-tête, j'ai encore quelques bogues et il me reste encore beaucoup de travail avant d'avoir de quoi de clean.
La cross compilation sur microcontrôleur, un Stm32f4 est un succès, je compile le programme Windows et MCU avec exactement la même source pour le même résultat. Mise à part, peut-être, un petit problème de rapidité, tout fonctionne. Je parle ici d'un microcontrôleur qui tourne à 168mhz. Si ça roule la dessus, alors ça va pourvoir marcher sur n’importe quoi.
Bientôt je vais me pencher sur les autres systèmes d'exploitations, puis android et autre.
- Edité par Maeiky 7 juillet 2014 à 5:59:57
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
Quelques news, dernièrement j'ai beaucoup travaillé sur les systèmes embarqués, entre autre, j’étais sur un projet de drum électronique parmis une équipe de 3 personnes, j'ai réaliser la partie graphique, vous pouvez voir le résultat ici :
En effet j'ai spécifier l'API32 parce que je n'avais que la version Windows de disponible. Comme j'ai mentionné j'utilise le moins de fonctions natives possible et de dépendances, donc si on trouve l'équivalent de ces quelques fonctions sur un autre système, on se retrouve à avoir effectué un portage. Comme je n'utilise pas de template, multiple héritage et autre choses pouvant ne pas fonctionner pas sur certain compilateur, on peu compiler sur des systèmes embarqués.
Évidement c'est un projet qui en est à ses débuts, donc je n'ai pas eu le temps de créer toutes les fonctions équivalentes pour les OS les plus populaires. Pour l'instant j'ai fais le portage pour microcontrôleurs avec ou sans DMA2D, de plus je suis très avancé pour la version Linux x32/x64 utilisant X11, je vais en faire une release très prochainement.
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
J'ai enfin créer une version Linux 32 et 64bit, en même temps j'ai fais celle de 64bit pour Windows. Vous pouvez les télécharger dans mon post initial.
Je ne sais pas si quelqu'un aurait une solution, mais puisque les programmes ne font qu'un fichier et que sous Linux il n'y a pas d’extension, le navigateur ne les voie pas comme téléchargeable. De plus, j'ai un problème de permission dessus. Je dois les activer pour lancer l'application, ce pourrait-il que ce soit à cause que j'ai uploader les fichiers à partir de Windows?
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
Bonjours, petit renseignement : "Graphic Engine" ne se traduit pas par "Engin graphique" mais par "moteur graphique", cette remarque car dans ta vidéo tu parle bien de Graphic Engine et dans ce post tu parle d'engin graphique ce qui n'existe pas ...
Je ne voulais pas limiter les utilisateurs qu'à la 2D, donc je me suis engagé dans le monde laborieux de la 3 dimensions. Quelques maux de tête plus tard, je suis parvenue à adapter mes algorithmes de dessin CPU à la 3D. L'ajout de simple dimension ma obligé à revoir tout mon code.
Voici le résultat de mon image test qui tourne d'une combinaison de rotation Roll et Yaw
Merci, je suis content de savoir que ça intéresse quelqu'un
Les tutos ne sont pas encore réalisé, mais je compte bien en faire d'une part pour l'installation du moteur sur un OS fraichement installer, que se soit sous Windows ou Linux, qui ne devrait pas demander plus de 2 minutes à suivre vu la simplicité de la compilation
Puis aussi un tutoriel/doc sur les fonctions disponibles avec des démos.
En se moment j'hésite à sortir quelque chose rapidement et pas vraiment au point ou attendre et avoir quelque chose de plus stable. Je ne voudrais pas découragé l'utilisateur tout de suite pour qu'il ajoute le moteur dans sa blacklist
Il y a plein de chose de pas finalisé comme la gestion de plan des sprites, animations ou bien les textes dynamiques/fonts, l'audio et OpenGL.
Il me reste encore beaucoup de travail avant d'avoir quelque chose de potable.
- Edité par Maeiky 21 octobre 2014 à 3:14:47
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
Je ne peux que t'encourager à le finir surtout surtout la partie Android (et si possible ios) car ça m'intéresse beaucoup et ça intéressera beaucoup de gens,
car à l'heure actuelle il n'y a que SDL2 qui supporte Android et ios, ... bientôt la SFML.
Merci, oui pour Android je vois déjà comment faire, ça ne sera pas trop compliqué car j’utilise OpenGL 3.3 et OpenGL ES 2.0 est très similaire. Je tiens aussi à préciser que je n'ai aucune dépandance aussi pour OpenGL que ce soit GLEW Glut,GLU, seulement un include :#include <GL/gl.h> (Contrairement à SDL et SMLF)
Pour IOS ça va dépendre de la demande, car j'ai beaucoup de chose à faire, mais je crois que ça reste similaire.
- Edité par Maeiky 21 octobre 2014 à 14:04:59
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
Quelques avancements pour mon futur système de lumière. Au départ, je croyais qu'il serait facile de faire une interpolation des couleurs dans openGL en associant la couleur à chaque vertex. Le problème est qu'OpenGL fonctionne en triangle avec une interpolation barycentrique, l'interpolation sur un carré devient donc très étrange.
Voici la différence de ce que jeux obtenir comme le "Color Picker" et OpenGL :
Le résultat est complètement faux, j'ai donc fait un système pour déterminer la position du pixel par rapport aux coins.
Voici le résultat, je fais une interpolation des couleur RGB et même le Alpha :
- Edité par Maeiky 25 octobre 2014 à 20:11:56
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
Tu me fais pensé que j'ai omis ce feature de ma description. La possibilité d'une fenêtre avec des pixels semi-transparent, je l'ai découvert un peu par hasard en tombant sur une fonction MSDN. Il n'y a pas vraiment d'exemple sur ça. Ceux que j'ai vue était soit pour changé le degré de transparence de la fenêtre entière ou soit d'avoir des pixels, complètement transparent avec un masque. J'ai aussi vue des exemples avec OpenGL, mais ils ne gèrent pas la semi-transparence, les coutours en sont donc pas très beau.
De plus j'ai trouvé l'équivalent sur Linux, je suppose qu'il y à la même chose sur OSX Par contre mon petit programme exemple est dessiné par CPU et non par OpenGL. Ça ce fait aussi, car on peu lire le rendu d'un FBO, et il ne resterait plus qu'a envoyer le tout sur GDI, je vais sans doute l'inclure éventuellement.
Tes encouragements ne sont pas de trop, je suis en train de tout restructurer le rendu OpenGL, car je fait trop d'opération côté CPU, je veux des performances optimales, il me faut donc transférer le plus de calculs dans les Shaders.
J'ai fais quelques recherche et j'ai trouvé le moyen de faire du Batch Processing de Sprites, ce qui veux dire réduire tout les appels d'OpenGL (qui cause de la latence) au minimum, le tout avec un seul appel de glDrawElements par frame. Même SFML n'a pas cette fonctionnalité. J'ai hâte de voir combien de Sprites, je vais pouvoir afficher simultanément :).
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.