Je vois que tu comptes utilisé Vulkan, je suppose que tu as déjà passer le stade mais j'avais écris quelques petits articles à propos de Vulkan, mais il y a néanmoins quelques petites coquilles qui ont pu s'y glisser. Si des gens veulent avoir une vue d'approche sur Vulkan (bien que ce soit pas parfait) ça se passe ici http://cpp-rendering.io/
Ensuite je recommande de lire les blogs de nvidia etc, il y a pas mal d'article sur Vulkan ou méthodes de rendu qui sont intéressantes ^^.
Voilà des bisous !
Et encore félicitation pour ton travail
Ne t'en fait pas je me tiens très au courant pour Vulkan, mais merci pour ton lien il risque de m'être quand même utile !
Alors, ça faisait longtemps depuis le dernier bulletin d'infos, j’ai pas mal de choses à vous annoncer !
Le Deferred Shading est de retour, aux environs de l’apparition du SDK le Deferred Shading (technique de rendu moderne permettant de gérer des centaines voire des milliers de lumières dynamiquement) a cessé de fonctionner, ce que je n’avais pas remarqué car j’utilisais le ForwardShading pour mes rendus durant cette période, c’est maintenant corrigé et il suffit d’une ligne pour l’activer: world->GetSystem<Ndk::RenderSystem>().ChangeRenderTechnique<Nz::DeferredRenderTechnique>()
Il est maintenant possible de cloner les entités, cloner les entités permet de constituer des entités dite template, désactivées (n’ayant aucun impact dans le monde) mais servant de base pour créer de nouvelles entités, avec leurs composants déjà en place et paramétrés comme bon vous semble.
Le Deferred Shading a été optimisé, il prend moins de mémoire et est légèrement plus rapide (l’intérêt était surtout de faire de la place dans le G-Buffer pour la suite).
Comme je vous en parlais, la classe Material a été changée, une nouvelle classe MaterialPipeline a fait son apparition, gérée de façon transparente. Chaque matériau est lié automatiquement à un MaterialPipeline unique en fonction de ses paramètres, utilisé lors du batching pour activer les paramètres du rendu. Cela signifie que vous pouvez avoir par exemple une dizaine de matériaux quasiment identiques (n’ayant que leurs textures pour les différencier) qui vont utiliser le même MaterialPipeline, et lors du rendu seront regroupés ensemble par le moteur, qui ne changera l’état du GPU (shader compris) qu’une fois.
Nazara propose dorénavant une console et un compteur de FPS pour chaque programme, il vous suffit maintenant d’utiliser Ndk::Application::EnableFPSOverlay(true); pour obtenir un compteur de FPS dans le coin haut-gauche de chaque fenêtre de votre application. Cela fonctionne également avec la console, intégrée directement au moteur, qui vous permet de modifier les applications à votre guise. De plus, vous pouvez lancer une application faite avec Nazara en rajoutant en ligne de commande les paramètres -console ou -fpscounter pour obtenir automatiquement ces deux choses (bien entendu vous pouvez forcer leurs désactivation).
Grâce aux efforts de Gawaboumga, la documentation intègre maintenant le SDK !
Désolé pour le gros bloc de texte indigeste, mais je vous avais promis du progrès !
Viennent ensuite d’autres changements qui ne touchent pas directement au code:
Tout d’abord dans un avenir proche je pense intégrer (enfin) le PBR dans Nazara, ainsi que d’autres améliorations graphiques (dont une presque terminée que je vous laisserai en aperçu à la fin de ce message).
Une autre nouvelle, concernant le logo vieillissant, celui-ci va être changé, pour l’instant j’hésite sur deux variations que voici:
Personnellement je préfère les traits du premier mais votre avis m’intéresse
C'est du très beau travail, encore félicitations .
Concernant les lumières, comment fait tu pour envoyer les informations de position, couleur, radius etc. au shader, tu utilises des tableaux où tu envois ces informations à l'aide de textures. c'est juste une question de curiosité et tant donné que je m'intéresse un peu à OpenGL.
Pour ce qui est du logo, je préfère le premier aussi .
C'est du très beau travail, encore félicitations .
Merci !
Erwan28250 a écrit:
Concernant les lumières, comment fait tu pour envoyer les informations de position, couleur, radius etc. au shader, tu utilises des tableaux où tu envois ces informations à l'aide de textures. c'est juste une question de curiosité et tant donné que je m'intéresse un peu à OpenGL.
Ces informations sont envoyée par uniforme, via plusieurs appels à glUniform* pour l'instant (mais avec le nouveau Renderer je vais passer à un uniform block, que ça soit avec Vulkan ou OpenGL ).
Erwan28250 a écrit:
Pour ce qui est du logo, je préfère le premier aussi .
Merci je me sens moins seul ! Mais je pense demander à mon ami designer de tenter un mélange des deux.
J'aime bien le premier logo mais le fait que les "A" soient différents donne un rendu un peu bizarre...
Le second est pas mal mais fait trop "Times New Roman". J'opterai pour une modification du premier, pour le rendre plus régulier. Le "R" est aussi un peu bizarre. Le "Z" est parfait ceci dit !
En tant que "vieux" sur le sujet, je suis content de voir que le projet avance -- Perso, j'ai une préférence pour le deuxième logo, j'ai l'immpression que le 1er logo utilise plusieurs style écriture différents. Le R est étrange^^
Je voulais d'ailleurs savoir, car je ne touche pas trop à l'aspects technique du moteurs, si tu avais toujours en tête le projet de jeu de programmation ? il me semble que c'était utopia ?
Hello, Déjà, comme à chaque message, bravo pour le travail réalisé (et de ne pas t'être découragé depuis tout le temps que tu est sur ce projet) Personellement, je trouve le deuxième plus lisible, mais je trouve qu'aucun des logo ne correspond à l'aspect moderne de ton moteur, il font très "vieux" (dans le sens "passé de mode" ^^). Je pense que tu gagnerai bcp à faire appel aux services d'un graphiste pro, pour avoir un set d'image de com' qui donnerait plus de crédibilité à ton projet parce que là, je crois que je préfère encore le logo d'ogre xD
Effectivement, on me l'a fait remarquer il y a peu et le problème est déjà corrigé, mais merci de ton retour !
Mais ça fait deux fois que tu me fais remarquer plutôt rapidement que le moteur ne compile pas après une modification de ma part (d'ailleurs le moteur dispose depuis peu d'une intégration continue pour Visual Studio, d'autres plateformes à venir !), et donc je suis curieux, tu utilises Nazara pour tes propres projets ?
..donc je suis curieux, tu utilises Nazara pour tes propres projets ?
Oui en quelques sortes, je développe un outil pour compiler du C++ plus facilement sous Windows.
Nazara est le candidat idéal pour tester ça Je vous reviens là dessus bientôt .
Merci pour la correction. Tu semble avoir ajouté Clang comme compilateur. Je me demande si ça va passer sur Windows, on risque d’avoir le même problème. Avec Windows comme plateforme cible, on peut compiler de 2 façons avec Clang, l’une avec compatibilité de l’ABI MSVC, et l’autre GNU (Pour celle-ci c’est mort, car ça ne supporte pas les exceptions). Avec l’ABI MSVC, si tu considère la compilation comme NAZARA_COMPILER_MSVC ça pourrait peut-être passer ou sinon il faudrait faire un define plus spécifique.
- Edité par Maeiky 16 septembre 2016 à 19:42:23
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
Oui en quelques sortes, je développe un outil pour compiler du C++ plus facilement sous Windows.
Nazara est le candidat idéal pour tester ça Je vous reviens là dessus bientôt .
Personnellement (et surtout vu la facilité que j'ai eu à configurer AppVeyor), je ne trouve pas qu'il soit très compliqué de compiler du C++ sous Windows, mais j'attends de voir.
Maeiky a écrit:
Merci pour la correction.
Tu semble avoir ajouté Clang comme compilateur. Je me demande si ça va passer sur Windows, on risque d’avoir le même problème. Avec Windows comme plateforme cible, on peut compiler de 2 façons avec Clang, l’une avec compatibilité de l’ABI MSVC, et l’autre GNU (Pour celle-ci c’est mort, car ça ne supporte pas les exceptions). Avec l’ABI MSVC, si tu considère la compilation comme NAZARA_COMPILER_MSVC ça pourrait peut-être passer ou sinon il faudrait faire un define plus spécifique.
Clang compile le moteur sans problème (en tout cas sur Linux), pour ce qui est de Windows il faut voir, mais Clang est un caméléon par excellence (il se fait passer pour GCC et ça ne m'étonnerait pas qu'il se fasse passer pour MSVC également avec Windows comme target).
Encore bien plus facile, avec également de nombreux outils: sanitizer , meilleur output, multi-process compilation etc, etc.
J'ai toujours le bug de SocketImpl.cpp
N'étant pas expert de git, faut-il que tu update la branche principal, ou bien de mon coté comment j’obtiens les dernières modif, avec la commande "clone" par exemple?
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
N'étant pas expert de git, faut-il que tu update la branche principal, ou bien de mon coté comment j’obtiens les dernières modif, avec la commande "clone" par exemple?
Un simple git pull fera l'affaire normalement, de mon côté j'ai réussi à compiler la branche master avec MinGW (version fournie avec CodeBlocks) sans problème aujourd'hui même.
Voici un bref aperçu des principales commandes utilisées avec git. L'explication est grossière et se veut simpliste : il y a en effet pléthore de tutos sur internet relatant de git.
git clone repo.git # Cloner un dépôt dans un nouveau répertoire.
git pull # Récupérer les modifications qu'il y a sur le serveur distant.
# Peut entraîner des conflits si les modifications locales coïncident avec celles distantes.
git status # Affiche l'état du dépôt local.
# Indique notamment si des modifications non encore publiées existent.
git add directory # Ajoute les fichiers du répertoire à l'index.
# Ceux-ci seront pris en compte lors du prochain commit.
git commit -m "commit comment" # Sauvegarde les changements MAIS en local.
git push # Publie le travail sur la branche master (ou la courante --> je ne sais plus trop).
# on peut aussi effectuer: git push branch
Ainsi, voici un possible enchaînement de commandes git:
# Clôner un déoôt
git clone repo.git
# Je modifie des fichiers dans le dépôt.
# Je peux vérifier que des modifications ont eu lieu.
git status
# Je sauvegarde mon travail en local.
git add .
git commit -m "change + refactor"
# Je suis prêt pour publier mon travail.
# Mais avant (surtout en cas de collaboration autour d'un projet)
git pull
# S'il y a conflits après le pull, résoudre ceux-ci.
# Ensuite
git add .
git commit -m "commit message"
git push
Dans ton cas donc,
soit tu n'as pas encore réalisé de modifications importantes, auquel cas tu peux recloner le dépôt (à un nouvel emplacement ou en supprimant l'ancien repository de ton disque dur) et tout devrait être ok.
soit tu veux conserver ton travail et dans ce cas, il faudra "pull" (depuis le repository que tu as précédemment "pull"). Cela peut par contre entraîner des conflits.
Euh je n'ai pas vraiment compris la question. Aussi, le second lien ne s'ouvre pas dans mon navigateur (peut-être est-il foireux). J'ignore ce que tu as déjà essayé avec Git mais tu pourrais peut-être vérifier si un "git clone" te permet de recommencer sur de bonnes bases. Quoique, normalement, si Lynix a bien "push", un "git pull" de ton côté devrait suffire.
Ya aussi un autre problème un peu gênant, les dll Newton et assimp demande VCRUNTIME140.dll Ça prend donc obligatoirement le "Redistributable" de Visual Studio pour faire tourner Nazara
- Edité par Maeiky 19 septembre 2016 à 7:53:58
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
Ça semble fonctionner (testé avec MinGW 4.9 et MinGW 5.1), j'ai commit, merci pour le correctif.
Maeiky a écrit:
Ya aussi un autre problème un peu gênant, les dll Newton et assimp demande VCRUNTIME140.dll Ça prend donc obligatoirement le "Redistributable" de Visual Studio pour faire tourner Nazara
Effectivement, c'est parce que j'ai compilé Newton avec Visual Studio (ce que MinGW accepte) avec le runtime en shared visiblement, il va falloir que je recompile tout ça.
D'ailleurs je pense de plus en plus à compiler ces dépendances en statique (Newton et Assimp), ainsi qu'à éjecter libsndfile, ça me permettra de me débarrasser des dépendances dynamiques (en plus du moteur).
Il faudra ensuite que je regarde pour proposer de nouveau la compilation de Nazara en statique.
Bref désolé si c'est embêtant pour le moment, j'essaierai de regarder ça sous peu.
Bon, puisque c'est la seule façon d'arrêter de prendre ce topic pour un débat CPU/GPU:
J'invite tout le monde ici, moi-même y compris, à ne pas répondre, peu importe ce que vous pensez, des preuves que vous avez pour ou contre cet argument.
Je pense que les débats n'ayant aucun rapport vis-à-vis du moteur sont dommageables pour ce topic, voire même d'une certaine manière irrespectueux.
Ainsi, même si ça me démange de te répondre, je ne le ferais pas, et je t'invite à démarrer un nouveau topic pour discuter de la question et d'éditer ton message pour rajouter un lien vers ce topic
Ça semble fonctionner (testé avec MinGW 4.9 et MinGW 5.1), j'ai commit, merci pour le correctif.
Super ça marche #1 , j'inclue donc Nazara comme première démo (compilable automatiquement) Je vais publier une première version de mon projet demain.
Je me demandais, tu as fais plein de démos de particules et tout, mais elles ne se retrouvent pas dans tes sources, ce qui aurai été intéressant à tester.
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
Super ça marche #1 , j'inclue donc Nazara comme première démo (compilable automatiquement)
Je vais publier une première version de mon projet demain.
J'ai hâte de voir ça
Maeiky a écrit:
Je me demandais, tu as fais plein de démos de particules et tout, mais elles ne se retrouvent pas dans tes sources, ce qui aurai été intéressant à tester.
Effectivement, un des gros reproches qu'on peut me faire c'est de montrer pas mal de choses mais de ne pas distribuer les sources de ces démos (le pire étant encore avec la démo House qui est la plus intéressante du moteur), la raison derrière est toute simple: généralement j'implémente très mal ces démos car mon objectif est avant tout d'obtenir un résultat, pas de le faire d'une façon maintenable ou même présentable.
Sans oublier le fait que ces démos datent d'un temps où l'interface du moteur était plutôt instable, la preuve: pour adapter le code de ces démos aujourd'hui, il vaut encore mieux les refaire.
Néanmoins je suis conscient de ce défaut et je compte bien y remédier, c'est la raison pour laquelle je fais une démo présentant les particules (car bien qu'intégrées récemment dans le SDK, elles font partie du moteur depuis deux ans déjà), tout en m'essayant à quelques idées pour un éventuel futur jeu de programmation impliquant des vaisseaux.
Je pensais d'ailleurs refaire la démo House en mieux, en bien architecturé et en open-source.
Concernant la démo des particules, elle n'est pas encore prête, je vais essayer de la sortir pour la fin du mois (autant me mettre une deadline quitte à ne pas la respecter, sinon je ne vais jamais le faire).
Ce qui est drôle c'est le fait de voir que même si tout le monde ne parle pas, on voit qu'il y a quand même au moins 10 personnes activent sur ce sujet, et qui suivent et lisent les avancements (d'où les 13 ups) !
× 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.
Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)
Erwan28250
Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)
Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)
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.
Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)
Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.
Mes articles | Nazara Engine | Discord NaN | Ma chaîne Twitch (programmation)
GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.