DirectX

14. octobre 2009

On me demande souvent en consulting ce qui fait la différence entre une version de DirectX et une autre. Des millions de choses bien sûr me viennent à l’esprit. Ceci dit pour faire court, voici pour chaque version de DirectX la fonctionnalité qui m’a le plus frappé à chaque fois:

  • DirectX 2 et 3 : Direct3D
  • DirectX 5 : DrawPrimitives (la fin de ces merdes d’execute buffers)
  • DirectX 6 : Le multi-texturing
  • DirectX 7 : Le transform and lighting (Le début des GPU)
  • DirectX 8 : Les shaders
  • DirectX 9 : Les shaders 3.0
  • DirectX 10 : Le geometry shader
  • DirectX 11: Le shader linkage (bizarrement)

Vous noterez au passage pour la petite histoire qu’il n’y a pas de DirectX 4 car à l’époque Microsoft avait lancé simultanément le développement de DirectX 4 (petite mise à jour) et de DirectX 5 (grosse update). Il s’est avéré que les retours utilisateurs se moquaient complétement de la version 4 et étaient impatient quand à la 5. DirectX 4.0 fut donc abandonné. Mais comme il existait des tonnes de documents référençant DirectX 5.0, ce dernier ne fut pas renommé en 4 et il n’y eu donc jamais de DirectX 4.0.

DirectX

Le dressage des draps

6. octobre 2009

Ce qui me choque lorsque je regarde certains films, c’est la capacité quasi-divine qu’ont les draps à se positionner parfaitement sur la poitrine des femmes qui se lévent ou bougent dans un lit.

Je pense qu’il y a un gars dont le métier est de dresser les draps pour qu’ils se positionnent parfaitement afin de cacher ces seins que l’on ne saurait voir.

Parce que les draps ordinaires, ceux qui sont chez vous et chez moi, ils sont sauvages, ils sont dans leur habitat naturel, ils n’ont subis aucun dressage. Résultat, quand ma femme se léve ou bouge dans le lit, au mieux les draps font une boule anarchique et se battent la rondelle de cacher quoique ce soit.

Et finalement, je vous le dis, je préfére le drap sauvage.

Divers, Philo

BSG

30. septembre 2009

Il est rare que je me serve de mon blog pour dire que j’aime quelque chose mais face à la petite merveille qu’est la série Battlestar Galactica je suis obligé de faire une entorse au règlement.

je viens en effet de finir la 4eme et dernière saison de cette petite merveille et face à la fin en apothéose je n’aurai qu’un seul mot “Chapeau bas, c’est du grand art'” (ca fait un peu plus qu’un seul mot mais l’excitation m’a fait débordé).

Au-delà des effets spéciaux remarquables (qui lui  ont d’ailleurs valus de nombreuses récompenses) cette série est étonnamment intelligente et bien construite, se servant de la SF comme un support pour faire réfléchir à des thèmes intéressants.

Les acteurs (notamment l’amiral) sont vraiment profonds et attachants et ils soutiennent l’histoire comme rarement j’ai eu l’occasion de voir ça.

Le truc qui me plait le plus c’est que la trame se construit doucement au fil des épisodes sur plus de 3 saisons pour venir se conclure brillamment dans la dernière.

Donc, voilà j’ai fini mon érection cinématographique. A vous de jouer :)

Divers

Les origines

22. septembre 2009

Après une approche difficile de la bête, nous sommes enfin face à elle. La voilà donc trônant sur son fauteuil de réunion dans son habit d’apparat.

Nous avions déjà rencontré sa progéniture mais nous retrouver face aux origines du mal était très troublant.

La bête plus connue sous le nom de « Papa des connards » attaque d’entrée avec ses remarques aussi profondes que des verres à téquila, il est hautain et pédant comme sa réputation le laissait penser.

Nous essayons de communiquer avec lui mais il semble protéger par un champ de force anti-intelligence de dernière génération. Ses yeux de crapauds mous nous jettent des regards acides que nous évitons de justesse.

Acculé, il tentera une dernière manœuvre grotesque d’intimidation aussi fine qu’une vache dans un lavabo.

L’expérience fut éprouvante mais je pourrai dire « j’y étais ! ».

Divers

Le début de la fin

10. septembre 2009

Déjà que ma femme ne me voit pas beaucoup mais avec l’arrivée de DirectX 11 officillement (le SDK est ici), ca ne va pas s’améliorer.

En vrac, on va pouvoir s’amuser avec:

  • Shaders de tesselation (gestion de la tesselation dans les shaders (LOD, skinning, etc…) : Hull shader, tesselator (non programmable directement) et domain shader (ca fait du monde).
  • Compute shader (utilisation de la puissance de la carte graphique pour faire des calculs)
  • Fortes améliorations pour un meilleur support du multithreading
  • Link dynamique au niveau des shaders : Cette fonction semble être bien sympa. En effet avec les shaders actuels il est complexe de ne pas faire un gros shader qui fait tout. Avec le link dynamique on pourra dynamiquement assembler ses shaders à la volée à partir de plusieurs méthodes dispatchées et maintenues à part. C’est l’apparition des sous-routines!!

De nombreuses autres choses sont présentes et je reviendrai dessus dès que j’aurai explorer la bête.

Pour la petite histoire, la partie tesselation est directement issue de ce qui existe sur XBox 360.

3D, DirectX

Ouh le beau ColorPicker

18. juillet 2009

Voila je suis tout fier de mon ColorPicker pour le nouveau Nova alors je bloggue dessus (oui je sais ça ne sert à rien mais ça me fait plaisir).

La bête:

image

Le papa et la maman vont bien :).

Nova

Le truc à la con du jour : Associer un designer par défaut à un type pour la PropertyGrid

18. juillet 2009

Le problème est le suivant : je voudrais mettre un TypeConverter et un designer par défaut sur un type donné sans pour autant aller me mettre les tags [TypeConverter] et [Editor] sur chaque propriété utilisant mon type.

Et comme souvent avec le framework .Net la solution est simple : Il est possible de référencer de manière statique ces attributs sur les types plutôt que sur les propriétés.

La solution en image:

            TypeDescriptor.AddAttributes(typeof(RGBAColor),
                new EditorAttribute(typeof(RGBAColorDesigner), typeof(UITypeEditor)),
                new TypeConverterAttribute(typeof(RGBATypeConverter))
                );

Ainsi on peut voir que j’associe directement un éditeur et un TypeConverter sur mon type RGBAColor.

Elle est pas belle la vie?

Windows Forms, .Net

Rencontres extra-terrestres

4. juillet 2009

Si l’on regarde l’histoire brillante de l’humanité en ce qui concerne les conquêtes, force est de constater que chaque fois qu’un peuple technologiquement supérieur à un autre est rentré en contact avec ce dernier ce ne fût jamais pour lui apprendre l’art subtil du point de croix. D’aussi loin que l’on regarde les schémas relationnels peuvent être rangés dans trois catégories:

  • Je te marave la tête et je viole tes femmes
  • Je te réduits en esclave et je viole tes femmes
  • je te “colonise” et si possible je viole tes femmes

Que ce soit les conquistadors, les colons américains, les grands conquérants du passé, on se retrouve toujours dans une de ces catégories.

Maintenant, même si par pure curiosité, j’adorerai qu’un peuple extra-terrestre vienne à notre rencontre, je souhaiterai juste qu’ils n’aient rien d’humain.
Parce que si ils ont la capacité de traverser les espaces sidéraux alors que l’on se traine le jonc sur Terre et que pour aller sur la lune (le palier d’à coté au sens spatial) il faut juste qu’on s’y prenne 20 ans à l’avance, je pense que l’on se prendrait une jolie petite branlée bien proprette.

Alors oui j’en vois déjà qui disent qu’ils ne seront pas forcément hostile mais j’avoue que du haut de ma condition humaine, j’aurai toujours un petit à priori.

Philo

MVP Once again

1. juillet 2009

Et bien la news vient de tomber, je suis renouvelé dans mon statut de MVP (Client App Dev of course) auprès de Microsoft et ça me fait bien plaisir :)

Voila, pour une fois, un post qui sert pas à grand chose mais qui me fait plaisir!

Divers

Evolutions du moteur 3D soft

20. juin 2009

Je viens de rajouter la gestion d’une source lumineuse à mon moteur 3D soft.

Notre modèle objet est donc composé des entités suivantes:

  • Scene
  • Objet
  • Camera
  • Light

La scène est composée d’une liste d’objets, d’une lumière et d’une caméra active.

Un objet est composé d’une liste de vertices (des points 3D) et de faces. Chaque face est responsable de son rendu.

Pour optimiser un peu tout ça, j’ai rajouté une classe qui simule les buffers de travail dans une image (la classe UnsafeBitmap).

La prochaine étape va être d’accèlerer le rendu en refaisant l’algorithme de remplissage de faces (rastérisation).

Tout ceci se trouve ici.

3D, .Net, Win32, Windows