-
OpenGL Shadow Mapping
Bonjour, j'essaie de faire un moteur graphique pour un jeu d'action qui serait top down. J'ai commencer par generer une map de cube et maintenant j'essaie d'y mettre les shaders. J'ai decider d'utiliser le shadow mapping quand je considere mes grahique comme étant tres simple alors une autre technique ne serait pas forcément nécessaire.
J'ai 2 question:
1- trouver un endroit et une maniere de mettre des texture sur les cube.
2- comment devrais-je faire pour mettre plusieur lumiere?
Une bonne partie de mon code source est disponible ici
http://pastebin.com/sXTr2ets
et si vous vouler des image qui montre ce que mon moteur peut faire :
http://www.gamedev.net/topic/616709-opengl-lighting/
-
1) Tu utilise quoi pour dessiner tes cubes?
2) Si tu veux avoir plusieurs lumières, il te faut une shadow map par lumière.
-
Ok merci pour les shadow map, c'est ce que je croyait. Cependant, j'effectue le dessin en 3 passe pour pouvoir appliquer les ombre. Dois-je refaire les 3 passe pour chaque lumiere en utilisant une ligthmatrix et une shadowmap differente a chaque fois? Et pour le cube, j'utilise simplement la fonction glutsolidCube, mais je l'ai redefini pour pouvoir insérer le code de la texture. Si tu click sur le lien, c la function drawCube qui est la redéfinition (en fait elle est identique pour l'instant).
J'ai une autre question en fait: lorsque mes ombre sont trop eloigner de la lumiere, il dessine en se basant sur les ombre qui était plus près pour arriver a faire des ombre sur la map au complet. Je prefererai qu'une fois arriver a la ''limite'' de ce qu'il peut tracer, qu'il ombrage tout le reste. Parce que quelqufois il étire la lumiere en plus des ombre pour couvrir la map, résultant en de fausse zone éclairer.
-
Je serais tenté de dire que tu dois faire la premiere passe à tous les coups. Ensuite une fois que tu as toutes tes shadow map, tu effectue la 2e puis la 3e en plaquant bien toutes tes textures. Mais bon avant de le faire pour N lumières, il faut le faire correctement pour une 1.
Si tu as redefinit glutSolidCube, ou est ton problème pour y plaquer des textures?
Pour infos, tu dois activer le multitexturing et placer les textures de ton cube sur une unité de texture puis placer les shadow map sur une 2e unité de texture.
Je n'ai pas regardé ton 3e problème mais ca me semble assez bizarre. J'essaierai de regarderer demain matin.
Sinon, voila un lien vers un code que j'avais fait il y a 2 ans:
http://www.developpez.net/forums/d76...hadow-mapping/
Si tu ne l'as pas vu, je te conseille de le regarder.
Concrètement dans ce code, je calcule et applique une shadow map sur une scène, quelquesoit la géométrie de la scène avec:
- unité de texture 0= decal texture
- unité de texture 1= lightmap texture
- unité de texture 2= shadow map
-
Merci pour l'info, je crois que mes difficulté venais du fait que je n'avait pas activer le multitexturing. Je vais regarder tout sa ;)
en passant, le lien vers ton code ne fonctionne pas. Si tu a le temp, jette y un coup d'oeil car j'aimerais bien pouvoir voir comment tu a fait. Merci
EDIT: J'ai aussi inclu 2 screenshot qui montre une vue d'esemble de la scene pour que tu voit quelle est le probleme.
http://a1.sphotos.ak.fbcdn.net/hphot...82881235_n.jpg
http://a6.sphotos.ak.fbcdn.net/hphot...83244847_n.jpg (la meme image mais avec du surlignage rouge pour indiquer ou sa ne correspond pas)