Bonjour, après un long silence radio, je crée ce topic afin de vous informer des avancées du Castor (ben oui, je bosse toujours dessus ^^).
Je prépare donc la version 0.7.0 et j'en suis là :
- La configuration du rendu passe maintenant par 3 classes : DepthStencilState, BlendState et RasteriserState. J'ai pris ça de Direct3D 11.
- Utilisation des FrameBuffers pour faire entre autres du Render to texture et aussi implémenter le multisampling
- Utilisation d'une classe SamplerState pour configurer les textures, qui peuvent alors partager le même SamplerState.
- Création d'une classe TextureBase et de ses 2 dérivées : DynamicTexture et StaticTexture, la première permettant le RTT et la seconde utilisée pour les textures plus classiques (genre celles chargées dans des fichiers). TextureUnit se base dessus.
- Suppression de Dx9RenderSystem, implémentation de Dx11RenderSystem (il faut savoir vivre avec son temps
), pas encore fonctionnel, mais pas loin, je pense.
- Suppression de la dépendance à GLEW. Je charge les extensions moi-même afin d'en avoir un contrôle plus fin.
- Génération à la volée de shaders, de l'éclairage simple au normal mapping, en passant par la prise en charge des maps d'opacité (détectées dans la passe).
- Affectation de canal aux textures : ambiant, diffuse, normal, opacité, spéculaire, ...
- A l'initialisation, Pass détecte les textures ayant de l'alpha, prend le canal alpha de la première pour une map d'opacité si aucune n'a été définie. Enlève de toutes les autres textures le canal alpha qui ne sera alors pas utilisé.
- Utilisation des évènements pour initialiser et nettoyer les éléments (il faut avoir un contexte actif pour le faire en OpenGL)
- Si disponible,e utilisation de ASSIMP pour charger les modèles, sinon utilisation des importer perso. Utilisation quand même de l'importer PLY car ASSIMP rencontre un problème avec les gros meshes.
- Création d'une classe RenderTechnique à dériver à volonté par l'utilisateur pour personnaliser son rendu. A ce jour il y en a 4 : Direct (rendu classique), MSAA, SSAA, Deferred (deferred rendering).
- Moult et moult corrections de bugs, améliorations des performances, améliorations de comportements...
Et il me reste au moins ça à faire :
- Finaliser Dx11RenderSystem
- Ajouter les animations par squelette
Revoir les Subdivider plugins qui sont tout cassés- Faire fonctionner le premier sample (Ocean Lighting)
- Réparer CastorShape qui n'a pas été mis à jour depuis Mathusalem
Faire fonctionner les shaders Cg.(abandonné)- Frustum Culling
EDIT 01/07/2013 :
La structure des Vertex buffers est prête à accueillir les informations des bones (ID + Weight), on sera par contre limité à 4 bones par vertex (apparemment c'est une limite raisonnable et fréquente).
EDIT 12/11/2013
Quelques évolutions :
- Prise en compte de l'instanciation de meshes en hardware (glDraw{Elements/Arrays}Instanced);
- Impléméntation de billboards via les geometry shaders ;
- Réhabilitation des subdividers (PNTriangles et Loop) ;
- A des fins de débug, réintégration temporaire de Direct3D 9.
- Création d'un renderer Direct3D 10 pour faciliter le passage de D3D9 à D3D11.
- Gestion de l'Alpha to Coverage lorsque MSAA est activé (meilleur rendu de l'alpha, moins gourmand que le tri des faces) ;
Partager