Silverlight 2 3D - Part 5

25. avril 2008

CA Y EST!!!! J'ai enfin pu faire un simili pixel shader. En gros grâce à un encoder PNG, je peux générer une image en mémoire, la compresser en PNG et la donner à un contrôle image via un BitmapImage:

scene.Render();
BitmapImage image = new BitmapImage();

image.SetSource(scene.BackBuffer.GetStream());
renderImage.Source = image;

A partir de ça, j'ai pu simuler un Depth Buffer. Résultat : les objets s'affichent bien, les faces ne se passent plus les unes sur les autres.

De plus j'ai mis en place un interpolateur qui va me permettre de gérer des textures.

Finalement, je vais rajouter une gestion multi-threads pour supporter les multi-cores.

Pour la petite histoire, sans la génération PNG (qui n'est utile que parce que le contrôle Image ne sait pas manger du bmp), le moteur irai deux fois plus vite.

Par contre, grâce à tout ça, les objets complexes sont carrément plus rapide. J'en veux pour preuve le nain qui tourne à 20fps chez moi là ou il tournait à 9fps précédemment.

Tout ce passe ici.

.Net, Silverlight

Commentaires (3) -

Valentin
26/04/2008 18:46:26 #
Salut, je bosse là dessus sur mon moteur 3D en silverlight : le view frustum.

Tu as un soucis si l'objet sort de la caméra. Place par exemple ton avion derrière la camera et tu vas soit planter ton appli sans considérablement la ralentir.

Bravo pour le reste.

Je bosse sur un Zbuffer en essayant de dessiner une image "backbuffer" comme toi, et moi par contre j'y arrive pas Frown
27/04/2008 14:13:34 #
Tout a fait pour le view frustrum. Je n'ai rien intégré la dessus encore. Je me concentre aujourdh'ui sur les perfs generales et surtout sur les textures Smile.
Fab
22/05/2008 20:19:51 #
Ca sent bon tout ça !!!