Avec des démos scenes qui utilisent les fonctionnalités du moteur. (Ce sont des débuts de jeux que je voudrais créer avec mon moteur)
Mais je manque cruellement de graphismes il faudrait que je m'initie aussi à l'infographie.
Avec des démos scenes qui utilisent les fonctionnalités du moteur. (Ce sont des débuts de jeux que je voudrais créer avec mon moteur)
Mais je manque cruellement de graphismes il faudrait que je m'initie aussi à l'infographie.
Salut! J'ai fait plusieurs mises à jours pour optimiser le moteur je suis passé de 5 à 50 FPS en 3D.
Bonjour j'ai un compteur de FPS on m'a dit que le FPS et le frametime c'est à peu près la même chose.
Voici une vidéo qui montre un peu l'avancement du moteur : (j'ai corrigé le bug avec la combo box dans l'éditeur depuis bug visible dans la vidéo) : https://dai.ly/x9y5gye
Entre 5 et 50 FPS il y a un gain de 45 FPS, mais un gain de 180 ms.
Entre 105 et 150 FPS, il y a un gain de 45 FPS, mais un gain de 2.9 ms.
Donc non, c'est pas la même chose...
En tant que joueur, les FPS c'est suffisant. En tant que développeur tu as besoin du frame time.
Et ton gain de 5 à 50 FPS, là, c'est sur quel genre de scène ?
EDIT:
Pour faire tes ombres... Me dis pas que tu dessines ton objet en noir transparent couché sur le sol ? Oo
Si vous ne trouvez plus rien, cherchez autre chose...
Vous trouverez ici des tutoriels OpenGL moderne.
Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).
Salut pour mes ombres j'utilise la technique du shadow mapping, donc non je ne dessine pas l'objet en noir transparent sur le sol mais le soucis c'est que je suis obligé de transformer l'objet avant d'effectuer le shadow mapping sinon l'ombre n'est pas à la bonne place elle est sur l'objet et donc on ne la voit pas..., du coup ça donne cette impression d'ombre 3D.
Dans ton poste tu parles d'être passé de 5fps à 50fps, pourtant dans la vidéo on voit des 100fps
Si vous ne trouvez plus rien, cherchez autre chose...
Vous trouverez ici des tutoriels OpenGL moderne.
Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).
Oui probablement mais je ne trouve pas le problème pourtant j'applique la technique du shadow mapping classique, comme enseignée dans le tutoriel sur learnopengl..., je met la caméra à la place de la lumière et je la fais regarder vers la caméra de la scène, je stocke les distances en z pour faire la shadow map, et la deuxième passe ou je récupère la distance sur la shadow map avec la vue de la lumière et je test si le pixel est dans l'ombre c'est à dire si la distance est plus grande que celle entre l'objet le plus proche et la lumière. Mais ça ne fonctionne pas...
salut! J'ai un soucis avec le shadow mapping on dirait que ça dessine l'ombre de mes objets 3D sur ceux-ci même et pas sur le sol je ne comprend pas pourquoi quand j'applique la vue de la lumière c'est comme si c'était la même vue que celle de la caméra. Hors les matrices de vues et projections semble correcte pour la lumière bien passées à mon shader. Du coup je vais revenir à mon ancien système je pense transformer mes modèles et les projeter à l'aide d'une matrice sur le sol en noir transparent, il n'y a que comme ça que j'arrive à faire des ombres...
Tu tournes en rond, fais un jeu au lieu de changer à chaque fois de cible, une fois c'est le moteur après c'est l'éditeur ensuite les ombres avec lesquelles tu boucles depuis des années.. Bref je ne comprends pas bien ton objectif si il y en a un.
Si vous ne trouvez plus rien, cherchez autre chose...
Vous trouverez ici des tutoriels OpenGL moderne.
Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).
Cependant j'ai un problème avec renderdoc, quand je veux lancer l'exécutable ça me dit failed to create vulkan instance et pourtant quand je lance l'exécutable avec code::blocks je n'ai aucune problème et pour déboguer les shaders l'extension fragment shader interlock n'est pas supportée par renderdoc...
EDIT : Je sais comment je vais débuguer cela je vais partir sur un code qui fonctionne comme celui sur learnopengl puis faire le même avec mon moteur, comparer les valeurs et voir ce qui va pas...
Salut! Bon j'ai trouvé le bug, en fait je ne sais pas pourquoi mais gl_FragCoord.z est inversé quand je multiplie par la matrice de vue et de projection de la lumière.
J'ai dû faire donc : float z = 1 - gl_FragCoord.z; dans mes shaders après la multiplication par les matrices de vue et de projection de la lumière (j'ai vu le bug en affichant la shadow map) et j'ai également rajouté un bias.
Ici j'ai bien des ombres qui s'affichent sur le sol (avec l'exemple de scène repris dans le tutoriel learnopengl.com) :
Ca rend plutôt bien je suis plutôt content. ^^
Bonjour,
D'après moi, en regardant l'image précédente, il me semble y voir des problèmes de rendu, notamment sur le dessous des boites :
- pourquoi la boite la plus en haut, à la face de dessous partiellement ombrée, je penserai qu'une face de dessous soit simplement moins illuminé (de manière uniforme) ;
- c'est quoi l'ombrage "bizarre" de la boîte de droite ?
Et, je ne peux pas me retenir plus, mais que pensez vous de repartir from scratch en partant de toutes les expériences et chose que vous avez apprises, mais vraiment, le code, à partir de zéro et sans aucun copier coller avec votre moteur actuel ? Je sais que cela peut faire mal et que cela peut sembler déroutant comme approche, mais vous enlèverez sûrement le spaghetti de code que vous avez du faire au fil de dix ans ?
Autrement, pourquoi ne pas utiliser un petit peu d'assistance de l'IA pour écrire votre code (ou même le déboguer, vu la situation avec renderDoc).
Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi
Ma page sur DVP
Mon Portfolio
Qui connaît l'erreur, connaît la solution.
Oui mais avec le code de learnopengl.com que j'ai reprit il y a le même problème des ombres à l'intérieur des cubes, c'est parce que en fait, les faces des cubes sont projeté sur la shadow map, donc comme la face de droite est devant la face de gauche ça crée une ombre à l'intérieur du cube même chose pour la face du dessus et celle du dessous et je ne vois pas comment corrigé ce problème...peut être avec en activant le culling pour la shadow map..., je ne sais pas.
Au sinon j'ai rajouté une matrice de transformation des ombres et cette fois l'ombre est bien projetée plate sur le sol il n'y a plus cette impression que je transforme mon modèle 3D et que je le rend en noir transparent :
EDIT : je ne pense pas que repartir de 0 corrigerait tout les bugs du moteur..., ça m'a quand même prit 10 ans et je ne l'ai même pas encore fini...
EDIT 2 : oui j'utilise l'IA quand je ne trouve pas la solution à un problème....
Salut j'ai trouvé la solution pour corriger le bug avec les ombres bizarroïdes sur les cubes, j'ai juste effectué un culling sur les faces arrières des cubes avant de dessiner la shadow map et ça rend déjà beaucoup mieux!
EDIT : je ne sais pas comment on détache une pièce jointe, la bonne c'est celle du dessous.![]()
N'y a t-il pas de test de profondeur pour le rendu de l'ombre ? On voit l'ombre du cube à droite, alors qu'elle est derrière celle-ci.
Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi
Ma page sur DVP
Mon Portfolio
Qui connaît l'erreur, connaît la solution.
EDIT : problème réglé j'avais un bias trop élevé ici :
Et si je met un bias trop faible ça me dessine des bandes d'ombre...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 if (stencil.z - bias > 1 - projCoords.z) { if (depth.z - bias >= z) { shadowFactor = 1.0; } else { //debugPrintfEXT("draw shadow"); shadowFactor = clamp(dot(normalize(n), normalize(lightDir)), 0.0, 1.0); } vec4 litColor = vec4(1.0, 1.0, 1.0, alpha.a); vec4 shadowColor = vec4(0.5, 0.5, 0.5, color); fColor = mix(shadowColor, litColor, shadowFactor); } else { discard; }
Suffisait de bien paramétrer...
EDIT 2 : je pense écrire un article sur mon devblog tient pour expliquer comment j'ai fais le shadow mapping. (avec vulkan)
Partager