Moteur Voxel et de l'Optimisation

Récemment, j'ai commencé à développer le moteur voxel. Ce dont j'ai besoin est à seulement coloré voxels sans texture, mais en très grande quantité (beaucoup plus petite que minecraft) - et la question est de savoir comment mettre en scène très rapide? Je suis à l'aide de c#/xna, mais c'est à mon avis pas très important dans ce cas, parlons-en cas généraux. Regardez ces deux jeux:

  1. http://www.youtube.com/watch?v=EKdRri5jSMs
  2. http://www.youtube.com/watch?v=in0bavLJ8KQ

En particulier, je pense que la vidéo numéro 2 représente un excellent méthodes d'optimisation (ma carte gfx commence étouffement juste à 192 x 192 x 64) la Façon dont ils atteindre cela?

Ce que je voudrais avoir dans le moteur:

  • coloré voxels sans texture, mais ombragée
    • beaucoup, beaucoup de voxels, disons minimum de 512 x 512 x 128 pour obtenir quelque chose comme la vidéo #2
    • ombres (lisse ombres seront très grand, mais il n'est pas nécessaire)
    • en option: éclairage dynamique (par exemple à partir de boules de feu volant, où la lumière jusqu'à près de voxel structures)
    • framerate minimum de 40 FPS
    • caméra avez 3 façons de liberté (se déplacer dans l'axe des x, se déplacer dans l'axe des y, déplacer dans l'axe z), pas de rotation de la caméra est nécessaire
    • enfin fonctionnalité optionnelle peut être la Profondeur de Champ (il sera doux ^^ )

Ce que l'optimisation, j'ai déjà savoir:

  • supprimer invisible voxels qui réside à l'intérieur de voxel structure (couvert
    à partir de six directions par d'autres voxels)

    • supprimer les visages cachés de voxels - parce que la caméra n'avons pas de rotation et de toujours regarder aslant en avant comme en PPT jeux, donc si on divise l'écran
      en coupe verticale, à gauche de voxels de droite et de voxels montrent seulement 3 faces
    • garder les voxels dans le Dictionnaire au lieu de 3-dimensions de la matrice de sauts travers le tableau de taille 512 x 512 x 128 prend millisecondes qui est
      inacceptable - mais dictionnaire int:couleur int décrit emballé
      La position 3D est beaucoup beaucoup plus rapide
    • utilisez l'instanciation où applciable
    • de l'occlusion? (comment faire?)
    • espace divisant /octtree (est-ce une bonne idée?)

Je serai très reconnaissant si quelqu'un me donner un conseil pour améliorer les optimisations énumérés ci-dessus ou d'échanger des idées, de nouvelles améliorations. Grâce

Notez que les deux vidéos montrent des moteurs qui ne semblent pas à l'appui de la rotation. Aussi, la deuxième vidéo est probablement à l'aide de panneaux d'affichage pour le flou des objets plutôt que de voxel objets.

OriginalL'auteur komorra | 2011-10-12