Comme vous le savez (ou pas), j'utilise essentiellement pour concevoir des jeux Vidéos commerciaux en 2D et j'espère prochainement en 3D.
J'ai aussi commencé l'élaboration d'un level Editor pour faciliter la création de level de jeu 3D.
Suite à cela, j'ai noté une liste d'ajout qui je pense pourraient être intéressant au niveau 3D.
Je les ai classé par "Groupe", et j'ai essayé d'expliquer la raison de la fonction à ajouter, si possible.
En espérant que cela vous sera utile. Si c'est déjà possible n'hésitez pas à poster un petit exemple

A) Light et shadow
A mon avis, les 2 ajouts sur les lights (intensité et range) sont essentiels pour la création de jeux professionnels et commerciaux.
1) Light intensité : pouvoir modifier l'intensité de la lumière (diffuse et spéculaire) d'une light (point, directionnal, spot) au delà de 1
Par exemple une light ayant une intensité à 15 ferait qu'une light éclaire 15 fois plus qu'une lampe blanche normale. Bon c'est surtout intéressant pour la couleur diffuse, mais modifier les 2, ce serait encore mieux.
Pourquoi ? Et bien simplement car certaines lumières peuvent très fortes dans certains cas.
2) Light Range : avoir l'atténuation pour chaque type de light, pas uniquement les spots.
Pour le moment, je rapproche la light du sol pour que son éclairage diminue en fonction de la distance, mais ce serait mieux de pouvoir le gérer directement
exemple : LightPower(#light, intensity,[range[, flag]])
rang : la distance à partir de la laquelle la limière est de moins en forte
flag : #PB_Light_DiffuseColor|#PB_Light_SpecularColor
C'est très important, car la plupart des jeux vidéos utilisent les lights pour créer des ambiances très différentes d'un jeu à un autre.
De plus, avec les materials, on peut gérer le lighting via les vertex_color (comme dans Torchlight), et ça permet d'avoir un lighting vraiment intéressant si on a l'atténuation et l'intensité des light.
3) Avoir du shadow mapping ou des ombres douces : j'imagine que ça peut sans doute se faire avec un shader.
Si c'est le cas, ce serait intéressant d'avoir un exemple

4) Avoir un retour d'information sur la position et les rotations de la light : lightX(), lightY(), LightZ(), lightRoll(), lightPitch(), lightYaw().
ça peut être utile, notamment pour créer un éditeur de level pour purebasic et Ogre
pour le moment, pour faire ça, "j'attache" une entity à une light et la light est modifiée en fonction de cet entity.
Donc, ce n'est pas très important comme fonction, mais ça peut être utile.
B) Material et Shaders
6) Avoir des exemples 3D de shaders dans le répertoire d'exemples fournis avec purebasic : réflexion, réfraction, cubemapping, normal_map/bump, speculaires, parallax mapping, ombres douces, Fresnel.
Je sais que certains essaient de créer une sorte de librairie (Kelebrindae, G-rom, moi), ce serait pas mal de mettre ça en commun et de vérifier que ça fonctionne pour la plupart des scènes

On pourrait poster cette proposition sur le forum Anglais.
7) pouvoir recharger un material script ou le modifier en temps réel. Ca permettrait de créer un éditeur de shaders.
Kelebrindae est en train de travailler sur un éditeur permettant de recharger le material, donc, à voir si son système suffirait ou non.
Si cela fonctionne et suffit, on n'aurait pas besoin forcément de pouvoir recharger/modifier un material en temps réel.
C) Post Filters
Les compositors devraient permettre d'ajouter des post-filters, mais ce serait intéressant d'avoir quelques exemples dans le répertoire d'exemples (ou sur le forum).
Je ne sais pas ce qu'il est possible de faire à ce niveau-là, c'est peut être déjà faisable :
8 ) Avoir des exemples fonctionnels avec les compositors : bloom, distortion (par exemple du feu émet de la chaleur et déforme ce qui est derrière), depth of field, couleur, saturation, lightscattering (je ne sais pas si c'est faisable mais je l'ai vu dans pas mal de moteur en shader post-filters : horde3D, dbpro..)
D) Mesh
9) Connaitre les dimensions d'un mesh (hauteur, largeur, profondeur).
10) connaitre la position du pivot MeshPivotX(), MeshPivotY(),MeshPivotZ(), éventuellement pouvoir le modifier (get/set ?). Peut être serait-il intéressant d'avoir la position du "centre" du mesh (GetMeshCenterX(),GetMeshCenterZ(),GetMeshCenterY()) histoire de pouvoir comparer avec le pivot ou quelque chose comme ça : ça permettrait de bien replacer les bounding box si besoin.
E) Collisions
11) la possibilité de modifier manuellement des points pour la/les boîte(s) de collisions (cube) d'un mesh ou de modifier les dimensions de cette boite.
F) World
12) Pouvoir supprimer un skydom, une skybox, ou un fog : pour un fog, on met intensity à zéro et on ne le voit plus, mais pour les autres ?
13) pouvoir modifier la texture d'un skydom ou d'une skybox une fois créé : le fait de refaire skydom() modifie la texture ou ajoute un deuxième skydom ?
14) pouvoir modifier la courbure d'un skydom une fois créé : idem ?
15) pourvoir modifier la vitesse de la texture (skydom, skybox) avant et après création
G) particule
16 ) avoir les particules scripts
H) animations
17) pouvoir définir une animation sur une entity particulière et peut être même connaitre les animations disponibles d'un fichier skeleton..
Exemple : si robert et michel (2 mesh de personnages semblables) ont le même squelette, ils pourraient utiliser le même skeleton et on pourrait choisir l'animation qu'on veut jouer.
voiloutch .