IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

Nombre de lumières limitées !!!! (de 0 à 7) mais alors...<


Sujet :

OpenGL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 195
    Points : 82
    Points
    82
    Par défaut Nombre de lumières limitées !!!! (de 0 à 7) mais alors...<
    hello world.

    Je souhaiterais savoir si le nombre de lumières dans OpenGL est bien limité
    à 7 !! (j'ai regardé dans "GL.h" les adresses vont de 0x4000 à 0x4007)
    ARGG ??


    MA QUESTION: Mais alors comment font les développeurs de jeux pour placer plusieurs sources lumineuses dans leurs cartes.
    Parce que des sources lumineuses dans certains jeux, ca y va !!


    En d'autres mots, quelle technique faut-il appliquer pour obtenir un nombre quasi illimité de sources lumineuses????

    merci encore.
    j'y est déjà réfléchi, mais je doit peut-être le faire exprès

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    En d'autres mots, quelle technique faut-il appliquer pour obtenir un nombre quasi illimité de sources lumineuses????
    Simplement sélectionner à chaque instant les 8 (ou moins) sources de lumière contribuant le plus. Sinon en passant par des shaders on n'a plus cette limite, mais bon de toute façon au-delà de 4 c'est déjà bien assez lent.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 195
    Points : 82
    Points
    82
    Par défaut
    Ok.
    L'image que j'avais en tête était l'éditeur de niveau d'UT2004.
    Dans celui-ci, on peut placer des sprites symbolisant des sources lumineuses et ce, tant que nous le souhaitons....et sans que ca soit lent !!

    Donc, il y a bien une technique qu'emploient ces développeurs de jeux....
    Utiliseraient-ils QUE les shaders alors ??

    merci.

  4. #4
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    tout d'abord, attention à bien faire la différence entre une lumière opengl classique et une lumière telles que celles que UT ou Quake utilisent, qui sont en fait des lightmap, tu peux mettre autant de lumières que tu veux si tu sais les gérer, et les lightmap ne sont rien d'autre que des textures projetées (tu fais du multitexturing)

    tu peux voir une petite démo/tutorial ici : http://www.3ddrome.com/articles/dynamiclightmaps.php

    note qu'il existe des static lightmap et des dynamic lightmap
    les static pour les lumières qui ne bougent pas
    les dynamic pour les lumières qui bougent (tiens donc )

    fais quelques petites recherches ou si tu en as le courage décortique l'un des moteurs de quake
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 195
    Points : 82
    Points
    82
    Par défaut
    AAAH! Ben voilà l'astuce !!

    Il est clair qu'avec du multi-texturing, on va vraiment faire quelque chose d'optimisé (), c'est plus que sûre même !!

    Un GRAND merci à toi Shenron666 pour ces infos plus que vitales (et encore, c'est loin d'être le mot) et surtout .... pour ce tuto qui m'a l'air bien (clair).


    Et merci à loulou24, pour les infos sur les lumières OpenGL. Je ne doutais pas qu'avec >4 limières OGL, on pourrait avoir quelque chose de lent!
    (même si les shaders peuvent résoudrent le problème)


    Mission completed pour ce post !!
    8)

  6. #6
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    pour preciser un peut :

    a l'origine des moteur 3D avec une gestion avancée de la lumiere il y avait...
    Quake premier du nom.
    de nombreuses techniques on été essayé sur ce moteur, lumiere par vertex et autres mais le probleme de cette methode d'eclairage par vertex est que pour avoir un eclairage correct il faut un nombre important de vertex (tesselation), hors plus on augmente les vertex d'un niveau, plus ca fait ramer :
    - le moteur graphique
    - le moteur de collision
    - le moteur d'IA qui se basait sur le BSP
    En plus de cela, il y avait des problemes d'eclairage lié a l'interpolation et d'autre truc encore plus tordu, genre l'eclairage qui change quand on tournait la camera...

    Pour resoudre ce probleme, Carmake a eut la merveilleuse idée de precalculer l'eclairage dans des textures qui servaient a assombrire les textures du jeu, les lightmap etait née
    Bien entendu, a l'epoque de quake, Carmake n'utilisait pas openGL, etant donnée qu'il attaquait directement la carte graphique en ASM, il n'avait donc pas de probleme de nombre de lumieres mais ses lightmap, sans le savoir, permettait de gerer autant de lumiere qu'on veut...
    Par la suite, ils ont ajouté au moteur de quake la gestion des lumiere dynamiques (de facon assez immonde d'ailleurs, etant donnée que pour chaque surface touchée par la lumiere, ils effectuent une copie de la lightmap, et la modifie en fonction de la lumiere dynamique... beurk), mais a la base, le principe des lightmap ne peut marcher qu'avec des lumiere statiques, sinon on est obligé de rajouter un algo gerant les ombres...

    Il est d'ailleur interessant de remarquer que Carmake a été le premier a inventer les lightmap, mais il est aussi le premier à les avoir abandonnée avec Doom 3 alors que tout les autres moteurs graphiques les utilisent encore (Unreal engine 3, source et co...), alors que ce systeme d'eclairage n'est absolument pas adapté a la gestion dynamique des objets et des lumieres... Tout ceci pour dire que les lightmap ont été un tres bon systeme d'eclairage pendant 10 ans mais que maintenant il serait peut etre temps de passer à autre chose...
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 195
    Points : 82
    Points
    82
    Par défaut
    Bonjour à tous.

    bafman à écrit:
    Tout ceci pour dire que les lightmap ont été un tres bon systeme d'eclairage pendant 10 ans mais que maintenant il serait peut être temps de ...
    C'est-à-dire ("passer à autre chose") ??

    MA QUESTION ESSENTIELLE:
    Dans ce cas, si Carmack à supprimé de son moteur les lightmaps dans Doom3, alors, quelle technologie utilise-t-il pour parrer à ce système??


    merci encore.


  8. #8
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    dynamic lighting pour l'ensemble des lumiere, c'est a dire que chaque pixel est illuminé en temps réel a chaque frame... + des shadows volums pour les ombres
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    salut à tous, je me posait exactement la même question que cyber_N mais ce sujet ne répond pas totalement à ma question, en effet, j'ai pu lire un peu partout que l'on pouvait disposer d'au moins 8 lumières mais qu'on pouvait en avoir beaucoup plus et que cela variait et que l'on pouvait connaitre la valeur du nombre maximum de lumières à l'aide de la constante GL_MAX_LIGHTS, je teste et ca me répond : 3377, bon là je me dis que ca va aller, si on arrive à placer 3377 lumières dans une scène faut le faire, pourtant je n'arrive pas à acceder a plus que GL_LIGHT_7 (soit 8 lumières maximum), et ce que j'apprend ici me rend donc à penser qu'il n'y en aurait que 8 maximum, j'ai effectué un test avec blender et seul 8 lumières éclairent au maximum (pas en rendu, en phase de modelage bien sur)
    ma question est donc la suivante : est-on réèllement limité à 8 et dans ce cas pourquoi GL_MAX_LIGHTS
    j'ai bien fais une recherche avec GL_MAX_LIGHTS mais rien de trouvé à par des choses du genre :

    Citation:
    Lors de la définition de la source lumineuse (à l'aide d'une fonction du type glLight*) il faut lui attribuer un nom de la forme GL_LIGHTi avec i compris entre 0 et GL_MAX_LIGHTS


    merci de votre réponse

  10. #10
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    8 doit être la limite du hardware, non d'OpenGL. Je ne sais pas si tu peux faire du TnL en software comme avec DirectX, mais si c'est le cas alors c'est certainement là que tu auras accès à plus de 8 lumières simultanément.

    A confirmer tout de même.

  11. #11
    Membre éclairé
    Avatar de Edouard Kaiser
    Profil pro
    Inscrit en
    Février 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2004
    Messages : 521
    Points : 756
    Points
    756
    Par défaut
    J'ai trouvé ça sur Paul's project :

    http://www.paulsprojects.net/opengl/manylights/manylights.html

    Un petit programme gérant bien plus que 8 lumières, aprés je ne sais pas comment ça se passe, j'ai pas fouillé le code

  12. #12
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    ton appel a getGetIntergerv(GL_MAX_LIGHTS) est bien effectué APRES avoir crée le context openGL ? si ce n'est pas le cas, il peut te retourner une valeur completement arbitraire (pour info certaines carte support 16 lumieres openGL...)
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Loulou24>>je sais pas mais si ca serait possible comment y acceder
    Zoso_>> sur le lien que tu à donnée il n'utilise que 8 lumières à la fois d'apres ce que j'ai compris de la source
    bafman>>il me semble que oui

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Limite du Sql? Exec, mais après?
    Par MicaelFelix dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 04/06/2007, 15h32
  2. nombre d'enregistrements limite dans une table sql
    Par lilou229 dans le forum Outils
    Réponses: 3
    Dernier message: 30/01/2007, 15h21
  3. [Configuration] nombre de scripts limité avec buffers de sorties
    Par alcor dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 08/04/2006, 22h59
  4. Réponses: 1
    Dernier message: 06/11/2005, 17h55
  5. Récupération d'un nombre d'enregistrement limité
    Par hugo123 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/09/2005, 17h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo