Tutoriels et actualités sur la programmation de jeux vidéos avec XNA

mercredi, le 10 février 2010

Victor Porof, à qui l'on doit déjà quelques autres tutoriaux notamment sur la gestion de terrains, vient de publier un nouveau billet sur son blog. Il s'attaque cette fois ci à un effet de post-processing, le motion blur (flou de mouvement). Le motion blur est souvent utilisé pour rajouter une impression de fluidité dans les mouvements. et est notamment utilisé dans certains jeux de voitures (le premier à ma connaissance l'ayant utilisé intensivement est Need For Speed Underground).

Exemple de motion blur avec Need For Speed Underground

Victor explore les différentes manières d'effectuer le flou de mouvement, et se base au final sur la différenciation de la position de la caméra entre deux frames (chose qui peut être réalisée par la classe BufferedState) pour connaitre le vecteur de mouvement à appliquer à un point donné de l'écran.

lundi, le 11 janvier 2010

Pour obtenir un résultat de qualité professionnelle au niveau d'un jeu vidéo, il faut non seulement faire de jolis graphismes, mais aussi être capable de gérer le paramètre gamma de l'écran d'un utilisateur (dont les réglages de contraste et de luminosité sont différents du poste du développeur).

Comme le soulève Matt Pettineo dans son blog, la gestion du gamma dans XNA n'est pas triviale, chose due notamment aux différences entre Xbox et Windows; il existe toutefois une solution pour faire de la correction gamma, mais cette solution n'est malheureusement valable que sous Windows.

lundi, le 4 janvier 2010

Nous avions déjà parlé précédemment d'un tutoriel de Lens flare par MJP, mais cette fois ci c'est Dave Charlile qui s'y colle. Ce tutoriel a la particularité de faire du masking de l'effet lorsque la source n'est pas présente à l'image (parce que masquée par un objet 3D, ou hors champ).

Pour ce faire, Dave Charlile a utilisé les occlusion queries qui permettent d'avoir des informations sur le rendu d'une scène, comme par exemple le nombre de pixels appartenant au soleil et masqués sur la scène:

Lire la suite ...

Matt Pettineo, plus connu sous le pseudo MJP, vient de publier un tutoriel sur la création d'effets de post-processing avec XNA, dont notamment une implémentation du High Dynamic Range (HDR), technique popularisée par Valve dans son jeu Half-Life².

Le High Dynamic Range permet de simuler certains effets de lumière très spécifiques comme des contre-jours, ou des éblouissements. L'image suivante, tirée du jeu Half-Life², montre une différence entre un rendu avec ou sans HDR:

Lire la suite ...

mardi, le 15 décembre 2009

Tutoriel de Lens Flare sur le GPU par Matt Pettineo

Matt Pettineo vient d'ajouter un nouveau billet sur son blog qui traite des effets de lens flare qui peuvent arriver quand une optique filme un point très lumineux. Son traitement du sujet est basé sur des travaux fait sur le jeu Killzone 2; sa méthode, effectuée entièrement via le GPU, à l'avantage de pouvoir s'insérer dans une chaine de post-processing, mais a le désavantage de ne pas être très réaliste.

dimanche, le 6 décembre 2009

MJP, décidément très productif ces temps ci, nous gratifie d'un nouveau tutoriel sur l'utilisation d'effets de type Depth Of Field (simulation de focale en français), ce qui permet de simuler un effet d'optique genre caméra, ou appareil photo.

Depth of Field is a visual effect that seems to be a must-have for just about every game that comes out these days. In case you somehow don't know what it is, it's an effect designed to simulate camera optics by making certain portions of the screen in-focus or out-of-focus depending on their distance from the camera.

This sample will demonstrate a simple post-processing-based technique that's simple and easy to integrate.

Vous pouvez consulter l'article en entier sur son blog. .

Example d'utilisation du Motion Blur avec XNA

Un nouvel article a été publié sur le site MJP’s XNA Danger Zone:

Motion blur is a visual effect that is becoming increasingly common in modern video games. The effect is designed to simulate the blurring that occurs when a standard camera takes a photo of objects that are moving relative to the camera, due to the camera's shutter being open for a short period of time. The end result is a more "cinematic" and smooth look to the graphics.

This sample will demonstrate two techniques that apply the effect as a full-screen post-process, making them simple to integrate into existing rendering implementations.

In particular they are well-suited to integration with deferred renderers, since they can make use of G-Buffer attributes.

Vous pouvez consulter l'article en entier sur le site de MJP XNA's Danger Zone.

Une nouvelle version de DPSF (Dynamic Particle System Framework), un framework pour la création et la gestion de systèmes de particules sous XNA vient de paraître sur le site de CNET.

Parmi les fonctionnalités de la librairie DPSF, on peut notamment citer:

  • Système commun pour le management, le rendu et l'émission des particules
  • Des templates pré-faits sont fournis de base pour créer des nouveaux système de particules rapidement et facilement
  • Le système est facilement extensible pour créer n'importe quel type d'effets désirés. Votre imagination est la limite
  • Contrôle total du système de particules et des particules en elles-même
  • Possibilité d'affecter des évènements aux particules
  • Possibilité de rendu des particules en tant que Point Sprites, Sprites, Pixels, Quads et Quads texturés
  • Facilité d'intégration: il suffit juste de rajouter une référence à la librairie DLL
  • Les système de particules peuvent être implémentés en tant que DrawableGameComponent
  • Fonctionne sur Windows et Xbox 360

Pour plus de simplicité, la librairie est également disponible en téléchargement en annexe de ce billet.

Tutoriel sur l'utilisation d'effets de transparence avec XNA

Un nouveau tutoriel plutôt concis a été publié par sur le site AzerDark sur son blog, sur l'utilisation de sprites semi-transparents:

If all you want to do is a 50% alpha, you can create that via a Vector4 in the color.

The alpha float will be between 0 and 1 (0% and 100%) and you%u2019d just use this color in your spritebatch while drawing the particle.

Vous pouvez consulter le billet en entier sur son blog.

Rendu "Light Pre Pass" avec XNA

Un nouvel article a été publié sur le blog de Michael Quandt:

In this part I will cover how to implement the basic form of the Light Pre Pass renderer, with support for point lights, and the basic Blinn-Phong shader, including Albedo texture support.

As this article is fairly advanced in nature, I have to make certain assumptions about my audience, so that I do not spend half my time explaining basics.

Firstly, you should have an understanding of basic concepts such as Cameras, Fullscreen Quads (including how to render one) and rendering a mesh with custom effects.

This pretty much means that as long as you have done some 3D work before, you should be fine.

It would be best if you also knew XNA, as I will be using that to write this implementation, however as long as you can translate from C# and get the basic idea, that should be enough.

Vous pouvez consulter le billet en entier sur son site, et lire ses addendums disponibles aux urls suivantes:

vendredi, le 27 novembre 2009

RandomChaos continue à nous faire saliver avec ses vidéos de rendus instanciés. C'est grâce à ce genre de vidéos qu'on se rend compte que XNA n'est pas limité à faire des petits jeux amateurs, mais pourrait très bien être la nouvelle méthode de création de jeux vidéos dans un futur pas si éloigné que cela:

mercredi, le 25 novembre 2009

Rendu de fourrure avec XNA

Un nouvel article vient d'être publié sur le site de Chris Cascioli:

I was pretty sick last weekend, and sticking to my odd "get sick, code something" habit, I decided to finally try to make a fur rendering demo.

I read a few articles about it years ago, so I knew the general concept behind it: render lots of "shells" around the model with an appropriate fur texture.

The fur texture is basically a transparent texture with dots on it, and as the shells get layered on top of each other, the dots are essentially extruded into individual furs (without having to render each fur individually).

Vous pouvez consulter l'article, qui contient entre autres des liens vers des tutoriaux sur le site de Chris Cascioli.