Idéalement :
- Lancer le shader.
- Définir la géométrie à afficher.
- Passage des informations de transformations en espace monde.
- Mettre à jour les paramètres du shader.
- Lancement du rendu de la géométrie.
Comme vous pouvez le constater l’idéal n’était pas ce que faisait la version 0.3 dans ce cas.
Quelques conclusions :
Le shader est toujours le « maître » du processus (comme dans le cas 1). La géométrie vient ensuite, puis la transformation qui n’est plus la finalité du processus puisque les paramètres du shaders doivent être mis à jour en fonction du nœud de transformation. Il faut donc ajouter une dernière étape. Nous allons appeler cet objet « MyMaterial » qui est de type « MaterialParameters ».
Organiser ce système de rendu dans le nxEngine 0.4 :
- « MyShader » est un objet de type « Material ». On passe dans le constructeur l’option afin de définir que ce matériau voit ses paramètres « déportés ».
- « MyGeometry » est un objet de type « GeometryBuffer ».
- « MyWorldNode » est un objet de type « WorldNode ».
- « MyMaterial » est un objet de type « MaterialParameters ». (paramètres de matériau déportés)
Afin de reproduire le schéma de rendu vu plus haut on défini les relations suivantes.
- MyMaterial est attaché à MyWorldNode
- MyWorldNode est attaché à MyGeometry
- MyGeometry est attaché à MyShader
Il me reste plus qu’a ajouter le nœud de contexte « MyShader » au root de la scène et le rendu sera effectué dans l’ordre souhaité. |