Je me suis codé un visualiseur OpenGL BSP pour un ancien format de jeu. Il est très similaire au format de fichier Quake 3. Parce que mon intérêt est de développer des moteurs graphiques, je veux développer tout en utilisant la technologie actuelle. Je me tourne donc vers vous, les experts du sujet, pour savoir sur quoi vous concentrer. Je voudrais que ce soit aussi rapide que possible et étant donné que les anciens formats de fichiers sont très simples et ont peu de polygones, je pense que cela devrait être faisable. Voici mes questions:
Éclairage a. Est-il judicieux pour moi d'apprendre l'éclairage des sommets ou dois-je simplement implémenter l'éclairage par pixel à la place? b. Je sais qu'OpenGL a une limite de 8 lumières. Dois-je en réalité n'utiliser qu'un seul de ceux-ci pour la lumière ambiante et le reste de l'ordinateur via des shaders? Sinon, que dois-je faire?
Tri / élimination a. Quel est l'algorithme le plus couramment utilisé pour trier les surfaces à restituer. La complexité n'est pas vraiment un problème. Je veux savoir ce qui est actuellement utilisé et comment afficher uniquement les choses que je peux voir. J'ai vu un certain nombre d'algorithmes décrits comme l'algorithme du peintre et je me demande ce qui a le plus de sens pour la géométrie basée sur BSP. b. Si j'ai des textures avec des masques alpha, on m'a dit que le tri avait une sorte d'implication dans ce processus. Comment puis-je leur permettre de s'afficher correctement dans l'espace 3D?
Pipeline graphique a. Dois-je envoyer mes données de géométrie via des VBO? Est-ce la norme utilisée aujourd'hui? b. Si j'ai un certain nombre de "régions", peut-être 200-300, dois-je trouver un meilleur moyen de les envoyer au GPU sans envoyer de 200-300 morceaux. Dois-je les combiner en un seul et garder une référence associée à chacun.
D'autres conseils pour le rendu basé sur BSP et des choses de cette nature?
De plus, si j'ai dit quelque chose de incorrect, veuillez me corriger. Je suis cette personne qui préfère être corrigée et légèrement embarrassée qu'ignorante et ignorante.
Merci pour votre temps. J'apprécie vraiment cela.
Réponses:
Si vous êtes - comme vous le dites - intéressé par la technologie actuelle :
1) Éclairage: éclairage par pixel, certainement. Si vous voulez regarder le rendu de la génération actuelle, vous allez envisager d'écrire des vertex et des pixelshaders. Aussi simple que cela. Ils offrent une flexibilité presque illimitée et ne sont pas beaucoup plus difficiles à utiliser que le pipeline à fonction fixe, si vous commencez à les apprendre correctement. La limite de 8 lumières d'OpenGL ne s'applique qu'aux anciennes configurations de pipeline à fonction fixe. N'allez pas dans cette voie, apprenez OpenGL Core et oubliez tous les trucs glBegin / glEnd datés.
2) Tri / Culling: Pour commencer: ne triez que si vous avez besoin de transparence. Ne supprimer que les objets qui se trouvent en dehors du tronc de vue.
3) Si vous utilisez OpenGL, utilisez les VBO et les VAO.
-
Unasked: si vous créez une visionneuse pour un format BSP à l'ancienne (je soupçonne quelque chose d'un moteur ould Valve / ID?), Vous devriez pouvoir vous débrouiller avec le dessin du niveau entier sans aucune optimisation (élimination / bsp ) du tout et toujours obtenir une fréquence d'images complète sur du matériel moderne;)
Astuce OpenGL: Obtenez la 5e édition d'OpenGL Superbible. Cela vous apprendra à faire OpenGL moderne et ne troublera pas votre esprit avec des choses que vous découvrirez plus tard comme obsolètes.
la source
1.a L'éclairage par sommet est plus facile que l'éclairage par pixel (l'éclairage par sommet est intégré à OpenGL, l'éclairage perpixel nécessite un shader personnalisé).
1.b Si vous avez huit lampes, utilisez-les! Vous devrez cependant calculer les lumières visibles.
3.a Utilisez VBOS. N'utilisez jamais glBegin / glEnd (sauf si vous utilisez des listes d'affichage, mais dans votre situation, les VBO sont la meilleure solution)
3.b Vous ne devez pas vous soucier des performances pendant que le programme est en cours de développement. Surtout avec le matériel d'aujourd'hui. Alors, envoyez vos morceaux 200-300.
Je ne connais pas suffisamment les cartes BSP pour vous aider avec vos autres questions.
la source