<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tromoz Engine</title>
	<atom:link href="http://www.alprema.com/Index.php?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.alprema.com</link>
	<description>Blog de développement du projet Tromoz</description>
	<lastBuildDate>Sat, 27 Jun 2009 11:15:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Petite pause</title>
		<link>http://www.alprema.com/?p=107</link>
		<comments>http://www.alprema.com/?p=107#comments</comments>
		<pubDate>Sat, 31 Jan 2009 16:23:49 +0000</pubDate>
		<dc:creator>alprema</dc:creator>
				<category><![CDATA[Développement]]></category>

		<guid isPermaLink="false">http://www.alprema.com/?p=107</guid>
		<description><![CDATA[Suite à l&#8217;annonce des plannings de projets / mémoires en cours je me suis rendu compte que je ne pourrais plus trop travailler sur ce projet pendant quelques mois, donc je vais faire une petite pause.
Mais comme le projet que je dois faire pour les cours peut être intéressant, je ferais peut-être quelques annonces sur [...]]]></description>
			<content:encoded><![CDATA[<p>Suite à l&#8217;annonce des plannings de projets / mémoires en cours je me suis rendu compte que je ne pourrais plus trop travailler sur ce projet pendant quelques mois, donc je vais faire une petite pause.</p>
<p>Mais comme le projet que je dois faire pour les cours peut être intéressant, je ferais peut-être quelques annonces sur ce blog, donc Stay tuned !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alprema.com/?feed=rss2&amp;p=107</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Une démo qui marche sur tous les PCs?</title>
		<link>http://www.alprema.com/?p=98</link>
		<comments>http://www.alprema.com/?p=98#comments</comments>
		<pubDate>Sat, 17 Jan 2009 23:39:31 +0000</pubDate>
		<dc:creator>alprema</dc:creator>
				<category><![CDATA[Développement]]></category>

		<guid isPermaLink="false">http://www.alprema.com/?p=98</guid>
		<description><![CDATA[L&#8217;absence de posts depuis environ deux semaines s&#8217;explique par le fait que j&#8217;étais en train de faire une modification en profondeur du moteur : je suis passé de Managed DirectX (MDX) à SlimDX.
Sous ces noms étranges se cachent des librairies permettant à du code C# de communiquer avec DirectX (et donc la carte graphique). La [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;absence de posts depuis environ deux semaines s&#8217;explique par le fait que j&#8217;étais en train de faire une modification en profondeur du moteur : je suis passé de <u>Managed DirectX (MDX)</u> à <u>SlimDX</u>.</p>
<p>Sous ces noms étranges se cachent des librairies permettant à du code C# de communiquer avec DirectX (et donc la carte graphique). La précédente (MDX) était la librairie officielle développée par Microsoft, mais ce dernier ayant choisi d&#8217;en arrêter le développement j&#8217;ai préféré passer sur une librairie maintenue à jour : SlimDX.</p>
<p>Concrètement pour l&#8217;utilisateur final, cela permet d&#8217;utiliser les applications utilisant le <u>Tromoz Engine</u> sur n&#8217;importe quel PC en installant simplement le runtime de SlimDX (7.9Mo). </p>
<p>Donc pour essayer cette démo, installez le runtime de SlimDX <a href="http://slimdx.googlecode.com/files/SlimDX%20Runtime%20%28November%202008%29.msi">ICI</a> et vous pourrez ensuite lancer la démo <a href="http://www.alprema.com/download/tromoz.zip">ICI</a>. N&#8217;hésitez pas à essayer et à poster un petit commentaire pour me dire comment ça s&#8217;est passé (problème pour le lancer, fps, etc&#8230;).</p>
<p><b>[Edit]</b> Petite précision, il faut avoir le Framework .net 3.5 installé pour faire marcher tout ça, et ça se trouve <a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&#038;displaylang=fr">ICI</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alprema.com/?feed=rss2&amp;p=98</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Des ombres plus vraies que nature</title>
		<link>http://www.alprema.com/?p=94</link>
		<comments>http://www.alprema.com/?p=94#comments</comments>
		<pubDate>Mon, 05 Jan 2009 20:20:45 +0000</pubDate>
		<dc:creator>alprema</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Technique]]></category>

		<guid isPermaLink="false">http://www.alprema.com/?p=94</guid>
		<description><![CDATA[Ca fait quelque temps que je suis sur un point assez technique de la réalisation : les ombres, et plus exactement les Soft shadows. Sous ce nom barbare se cache une technique permettant de simuler des ombres floues, comme dans la réalité. Dans la pratique, on voit la clairement la différence avec les ombres aliasée [...]]]></description>
			<content:encoded><![CDATA[<p>Ca fait quelque temps que je suis sur un point assez technique de la réalisation : les ombres, et plus exactement les <u>Soft shadows</u>. Sous ce nom barbare se cache une technique permettant de simuler des ombres floues, comme dans la réalité. Dans la pratique, on voit la clairement la différence avec les ombres aliasée du début sur les captures d&#8217;écran.</p>
<p>Avant : <img src="images/aliased_shadow_zoom.jpg"/></p>
<p>Après : <img src="images/smooth_shadow_zoom.jpg"/></p>
<p>Techniquement j&#8217;ai utilisé une publication de nVidia pour arriver à ce résultat : les <u>Variances shadow maps</u> (<a target="_blank" href="http://www.punkuser.net/vsm/">lien</a>). Pour faire simple, cette variation des <u>Shadow maps</u> consiste à ne plus considérer la distance entre la lumière et un objet (habituellement utilisée pour savoir si un objet est éclairé) comme une donnée connue mais comme une variable aléatoire discrète, et d&#8217;ensuite étudier la probabilité que l&#8217;objet soit éclairé. Cette difference de conception permet d&#8217;appliquer des traitements à la shadow map comme par exemple un flou. </p>
<p>Pour vous récompenser d&#8217;avoir lu la partie technique, une petite image de ce que ca peut donner : <img src="images/smooth_sapin.jpg"/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.alprema.com/?feed=rss2&amp;p=94</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Joyeux Noël !</title>
		<link>http://www.alprema.com/?p=84</link>
		<comments>http://www.alprema.com/?p=84#comments</comments>
		<pubDate>Sat, 27 Dec 2008 01:27:50 +0000</pubDate>
		<dc:creator>alprema</dc:creator>
				<category><![CDATA[Développement]]></category>

		<guid isPermaLink="false">http://www.alprema.com/?p=84</guid>
		<description><![CDATA[Un joyeux noël un petit peu en retard, mais je devais finir le morceau sur lequel je travaillais, à savoir les particules. Après quelques problèmes de répartition de mes particules dans l&#8217;espace, j&#8217;ai pu enfin simuler l&#8217;effet que je voulais : la neige !
Voila ce que ça donne en image, avec un modèle un peu [...]]]></description>
			<content:encoded><![CDATA[<p>Un joyeux noël un petit peu en retard, mais je devais finir le morceau sur lequel je travaillais, à savoir les particules. Après quelques problèmes de répartition de mes particules dans l&#8217;espace, j&#8217;ai pu enfin simuler l&#8217;effet que je voulais : la neige !</p>
<p>Voila ce que ça donne en image, avec un modèle un peu plus festif que le vaisseau habituel :</p>
<p><img src="images/sapin.jpg"/></p>
<p>J&#8217;ai du au passage modifier le rendu pour supporter les modèles 3D qui ont des matériaux à la place des textures.</p>
<p>L&#8217;étape suivante concerne les ombres, car je voudrais implémenter des <u>Soft Shadows</u>, c&#8217;est à dire des ombres dont les bords sont plus réalistes, grâce aux <u>Variance shadow maps</u>.</p>
<p>Malheureusement je vais devoir prendre un peu de recul sur le projet car je dois avancer d&#8217;avantage sur un projet scolaire, mais je tiendrais à jour le blog pour donner des informations sur l&#8217;avancement.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alprema.com/?feed=rss2&amp;p=84</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Les particules arrivent</title>
		<link>http://www.alprema.com/?p=76</link>
		<comments>http://www.alprema.com/?p=76#comments</comments>
		<pubDate>Sat, 06 Dec 2008 18:01:45 +0000</pubDate>
		<dc:creator>alprema</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Technique]]></category>

		<guid isPermaLink="false">http://www.alprema.com/?p=76</guid>
		<description><![CDATA[
Ça fait quelque temps que je n&#8217;ai rien posté car j&#8217;étais en train de bosser sur une grosse partie : le moteur de particules. J&#8217;ai passé pas mal de temps sur la conception pour avoir quelque chose de suffisamment flexible, et j&#8217;ai ensuite perdu du temps avec une technique sensée m&#8217;en faire gagner : les [...]]]></description>
			<content:encoded><![CDATA[<p>
Ça fait quelque temps que je n&#8217;ai rien posté car j&#8217;étais en train de bosser sur une grosse partie : le moteur de particules. J&#8217;ai passé pas mal de temps sur la conception pour avoir quelque chose de suffisamment flexible, et j&#8217;ai ensuite perdu du temps avec une technique sensée m&#8217;en faire gagner : les <u>Point Sprites</u>.
</p>
<p>
Il s&#8217;agit d&#8217;un mode de rendu qui permet d&#8217;afficher facilement des particules, simplement en envoyant à la carte graphique des coordonnées pour chaque particule, et une texture à afficher. Direct3D s&#8217;occupe alors de créer des quads texturés (une sorte de panneau carré) et de les orienter pour qu&#8217;ils soient toujours face à la caméra. Dans la théorie c&#8217;est super, mais dans la pratique c&#8217;est très limité quand on l&#8217;utilise avec des techniques de rendu un peu avancées comme le <u>Deferred rendering</u>, car il est impossible de passer des informations depuis le vertex shader vers le pixel shader. Il m&#8217;était donc impossible de gérer la profondeur, et les particules étaient visibles à travers les objets solides.<br/>
</p>
<p>
Avec les point sprites, les particules pourtant situées sous les vaisseaux sont visibles à travers :<br />
<img src="images/point_stripes.jpg"/>
</p>
<p>
J&#8217;ai donc du abandonner cette technique et utiliser le <u>Billboarding</u>, qui consiste à générer les quads à la main et les orienter (à la main aussi, mais dans le vertex shader). Le problème est que je passe beaucoup plus d&#8217;informations à la carte graphique, ce qui est moins performant, mais au moins ça fonctionne.
</p>
<p>
Le rendu avec le <u>Billboarding</u>, les particules sont correctement masquées par les vaisseaux :<br />
<img src="images/billboards.jpg"/>
</p>
<p>
La partie graphique étant au point, il ne reste plus qu&#8217;à gérer la dynamique des particules, mais ça devrait être beaucoup plus rapide.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alprema.com/?feed=rss2&amp;p=76</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A propos de Shadow Maps</title>
		<link>http://www.alprema.com/?p=66</link>
		<comments>http://www.alprema.com/?p=66#comments</comments>
		<pubDate>Mon, 24 Nov 2008 22:09:51 +0000</pubDate>
		<dc:creator>alprema</dc:creator>
				<category><![CDATA[Technique]]></category>

		<guid isPermaLink="false">http://www.alprema.com/?p=66</guid>
		<description><![CDATA[Je devais corriger un bug d&#8217;éclairage avant d&#8217;attaquer le système de particules, et pour une fois je n&#8217;ai pas passé la nuit à débugger des shaders !
Le problème était que certaines zones étaient illuminées alors qu&#8217;elles étaient hors champs, le souci venait d&#8217;une mauvaise lecture du ShadowMap par le texture sampler, qui était en mode [...]]]></description>
			<content:encoded><![CDATA[<p>Je devais corriger un bug d&#8217;éclairage avant d&#8217;attaquer le système de particules, et pour une fois je n&#8217;ai pas passé la nuit à débugger des shaders !</p>
<p>Le problème était que certaines zones étaient illuminées alors qu&#8217;elles étaient hors champs, le souci venait d&#8217;une mauvaise lecture du ShadowMap par le texture sampler, qui était en mode <code>AddressU = clamp</code>. Ce mode utilise la couleur du bord de la texture pour les coordonnées qui sont au delà des limites de la texture, causant mes problèmes d&#8217;éclairage. J&#8217;ai pu découvrir en fouillant sur le net un mode de sampling très pratique pour ces utilisations&nbsp;:&nbsp;<code>AddressU = border</code> (à utiliser conjointement avec <code>BorderColor = 0x000000;</code>) qui utilise une couleur donnée pour les coordonnées à l&#8217;extérieur de la texture.</p>
<p>La projection des spots est maintenant correcte, prochaine étape : les particules.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alprema.com/?feed=rss2&amp;p=66</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Publication</title>
		<link>http://www.alprema.com/?p=63</link>
		<comments>http://www.alprema.com/?p=63#comments</comments>
		<pubDate>Tue, 18 Nov 2008 22:16:50 +0000</pubDate>
		<dc:creator>alprema</dc:creator>
				<category><![CDATA[Développement]]></category>

		<guid isPermaLink="false">http://www.alprema.com/?p=63</guid>
		<description><![CDATA[Suite à la demande de certains, je met à disposition les sources via SVN.
Vous pourrez trouver les sources ici : svn://svn.alprema.com/tromoz/trunk, pas besoin d&#8217;identifiants pour les accès en lecture.
Je rappelle juste qu&#8217;il faut le SDK SlimDX pour compiler, have fun !
]]></description>
			<content:encoded><![CDATA[<p>Suite à la demande de certains, je met à disposition les sources via SVN.</p>
<p>Vous pourrez trouver les sources ici : svn://svn.alprema.com/tromoz/trunk, pas besoin d&#8217;identifiants pour les accès en lecture.</p>
<p>Je rappelle juste qu&#8217;il faut le SDK SlimDX pour compiler, have fun !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alprema.com/?feed=rss2&amp;p=63</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Première démo</title>
		<link>http://www.alprema.com/?p=53</link>
		<comments>http://www.alprema.com/?p=53#comments</comments>
		<pubDate>Wed, 12 Nov 2008 23:12:39 +0000</pubDate>
		<dc:creator>alprema</dc:creator>
				<category><![CDATA[Développement]]></category>

		<guid isPermaLink="false">http://www.alprema.com/?p=53</guid>
		<description><![CDATA[Ça fait quelques jours que je n&#8217;ai pas bossé sur le moteur, mais je m&#8217;y remet ! Après avoir mis en place les déplacements, j&#8217;ai implémenté le contrôle de la caméra à la souris façon FPS.
J&#8217;en profite pour mettre un disposition une petite démo, dans le but de voir combien elle obtient de FPS sur [...]]]></description>
			<content:encoded><![CDATA[<p>Ça fait quelques jours que je n&#8217;ai pas bossé sur le moteur, mais je m&#8217;y remet ! Après avoir mis en place les déplacements, j&#8217;ai implémenté le contrôle de la caméra à la souris façon FPS.</p>
<p>J&#8217;en profite pour mettre un disposition une petite <a href="download/tromoz.zip">démo</a>, dans le but de voir combien elle obtient de FPS sur différentes machines et si elle passe correctement.</p>
<p>Il s&#8217;agit juste d&#8217;une démo technique, je suis au courant de quelques bugs (comme le redimensionnement qui plante) mais n&#8217;hésitez pas à me transmettre ceux que vous constatez via un petit commentaire (appuyez sur &#8220;Echap&#8221; pour quitter la démo).</p>
<p><b>[Edit le 14/11/2008 à 10:06]</b> Il semble que le SDK de DirectX soit nécessaire pour faire tourner la démo, je remédierais au problème ce week-end.</p>
<p><b>[Edit le 15/11/2008 à 04:19]</b> Le problème venait des dépendances vers Managed DirectX, j&#8217;ai pu trouver un package complet qui résout le problème <a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?familyid=C1367BC3-4676-481A-BFAA-5C15D1D7199D&#038;displaylang=fr">ici</a> ! Il suffit de le télécharger, de l&#8217;installer, et la démo devrait fonctionner, merci de me faire parvenir vos feedbacks.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alprema.com/?feed=rss2&amp;p=53</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Ca bouge !</title>
		<link>http://www.alprema.com/?p=44</link>
		<comments>http://www.alprema.com/?p=44#comments</comments>
		<pubDate>Thu, 30 Oct 2008 00:08:14 +0000</pubDate>
		<dc:creator>alprema</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Technique]]></category>

		<guid isPermaLink="false">http://www.alprema.com/?p=44</guid>
		<description><![CDATA[Petite update du mercredi soir, il est maintenant possible de déplacer la caméra avec le clavier, le déplacement de la vue avec la souris façon Quake étant pour bientôt.
Autre petite joyeuseté, suite à un gros problème de performances j&#8217;ai fouillé un peu et activé le HardwareVertexProcessing ce qui m&#8217;a permis de passer de 40fps à [...]]]></description>
			<content:encoded><![CDATA[<p>Petite update du mercredi soir, il est maintenant possible de déplacer la caméra avec le clavier, le déplacement de la vue avec la souris façon Quake étant pour bientôt.</p>
<p>Autre petite joyeuseté, suite à un gros problème de performances j&#8217;ai fouillé un peu et activé le <code>HardwareVertexProcessing</code> ce qui m&#8217;a permis de passer de 40fps à 240 sur mon PC de développement (GeForce 8800GTX) par contre aucune amélioration du coté de mon portable (GeForce Go 6600), qui reste bloqué à 8fps <img src='http://www.alprema.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> . Je pense que le problème vient des appels fréquents au <code>DrawIndexedPrimitives</code>, à confirmer !</p>
<p><b>[Edit le 31 octobre à 00:51]</b> Le problème venait bien du <code>HardwareVertexProcessing</code>, il s&#8217;agissait d&#8217;une erreur due à la fatigue hier soir :/ J&#8217;atteins maintenant les 22 fps sur le portable, ce qui n&#8217;est pas mauvais pour 140K polygones avec deux lumières.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alprema.com/?feed=rss2&amp;p=44</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Optimisation pour le Multi Render Target (MRT)</title>
		<link>http://www.alprema.com/?p=41</link>
		<comments>http://www.alprema.com/?p=41#comments</comments>
		<pubDate>Sun, 26 Oct 2008 11:29:24 +0000</pubDate>
		<dc:creator>alprema</dc:creator>
				<category><![CDATA[Technique]]></category>

		<guid isPermaLink="false">http://alprema.com/blog/?p=41</guid>
		<description><![CDATA[Au cours du développement j&#8217;ai pu rencontrer un problème de fuite mémoire assez conséquent, il était causé par un nombre croissant de Surface qui n&#8217;étaient pas libérés.
Le souci venait des Device.GetRenderTarget(); que j&#8217;utilisais à chaque changement de RenderTarget pour récupérer le BackBuffer, ce qui créait un objet Surface à chaque fois, sans le libérer.
Il suffisait [...]]]></description>
			<content:encoded><![CDATA[<p>Au cours du développement j&#8217;ai pu rencontrer un problème de fuite mémoire assez conséquent, il était causé par un nombre croissant de Surface qui n&#8217;étaient pas libérés.<br />
Le souci venait des <code>Device.GetRenderTarget();</code> que j&#8217;utilisais à chaque changement de RenderTarget pour récupérer le BackBuffer, ce qui créait un objet Surface à chaque fois, sans le libérer.</p>
<p>Il suffisait en fait de garder une référence vers le BackBuffer tout au long de l’exécution et de l’utiliser pour rétablir la bonne RenderTarget avant l’affichage sur écran.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alprema.com/?feed=rss2&amp;p=41</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
