<?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>AS_Blog &#187; Pixel Bender</title>
	<atom:link href="http://www.tsoin.com/asblog/category/pixel-bender/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tsoin.com/asblog</link>
	<description>AS2, AS3, Flash, Flex, AIR....</description>
	<lastBuildDate>Tue, 22 Dec 2009 14:27:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Pixel Bender Prerelease 6</title>
		<link>http://www.tsoin.com/asblog/2009/04/09/pixel-bender-prerelease-6/</link>
		<comments>http://www.tsoin.com/asblog/2009/04/09/pixel-bender-prerelease-6/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 11:42:48 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Pixel Bender]]></category>
		<category><![CDATA[Pixel Bender Toolkit]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=330</guid>
		<description><![CDATA[Mise à jour du labs.adobe.com, le 2 avril, Adobe nous propose la prerelease 6 de Pixel Bender.
Au programme, la possibilité de créer, compiler, et visualiser des graphs Pixel bender directement dans l&#8217;IDE
Les nouveautés de la prerelease »
Télécharger Pixel Bender Toolkit
Developer’s Guide »
Reference »
]]></description>
			<content:encoded><![CDATA[<p>Mise à jour du <a href="http://labs.adobe.com/" target="_blank">labs.adobe.com</a>, le 2 avril, Adobe nous propose la prerelease 6 de Pixel Bender.<br />
Au programme, la possibilité de créer, compiler, et visualiser des graphs Pixel bender directement dans l&#8217;IDE</p>
<p><a href="http://labs.adobe.com/technologies/pixelbender/releasenotes.html#new" target="blank">Les nouveautés de la prerelease »</a><br />
<a href="http://labs.adobe.com/downloads/pixelbender.html" target="_blank">Télécharger Pixel Bender Toolkit</a></p>
<p><a href="http://www.tsoin.com/asblog/documentation/PixelBenderGuide_prerelease.pdf" target="_blank">Developer’s Guide »</a><br />
<a href="http://www.tsoin.com/asblog/documentation/PixelBenderReference_prerelease.pdf" target="_blank">Reference »</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2009/04/09/pixel-bender-prerelease-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pixel Bender Prerelease  5</title>
		<link>http://www.tsoin.com/asblog/2008/11/17/pixel-bender-prerelease-5/</link>
		<comments>http://www.tsoin.com/asblog/2008/11/17/pixel-bender-prerelease-5/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 10:31:47 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Pixel Bender]]></category>
		<category><![CDATA[Pixel Bender Plugin]]></category>
		<category><![CDATA[Pixel Bender Toolkit]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=129</guid>
		<description><![CDATA[Parmi les mises à jours du 17 novembre sur labs.adobe.com, la prerelease 5 de Pixel Bender.
Au menu de cette mise à jour, le réglèment de quelques bugs, le plugin pour Photoshop CS4 et une documentation complète (Developer&#8217;s Guide &#038; Reference).
Les nouveautés de la prerelease &#187;
Télécharger Pixel Bender Toolkit &#038; le plugin Photoshop CS4
Developer&#8217;s Guide &#187;
Reference [...]]]></description>
			<content:encoded><![CDATA[<p>Parmi les mises à jours du 17 novembre sur <a href="http://labs.adobe.com" target="_blank">labs.adobe.com</a>, la prerelease 5 de Pixel Bender.<br />
Au menu de cette mise à jour, le réglèment de quelques bugs, le plugin pour Photoshop CS4 et une documentation complète (Developer&#8217;s Guide &#038; Reference).</p>
<p><a href="http://labs.adobe.com/technologies/pixelbender/releasenotes.html#new" target="blank">Les nouveautés de la prerelease &raquo;</a><br />
<a href="http://labs.adobe.com/downloads/pixelbender.html" target="_blank">Télécharger Pixel Bender Toolkit &#038; le plugin Photoshop CS4</a></p>
<p><a href="http://www.tsoin.com/asblog/documentation/PixelBenderGuide.pdf" target="_blank">Developer&#8217;s Guide &raquo;</a><br />
<a href="http://www.tsoin.com/asblog/documentation/PixelBenderReference.pdf" target="_blank">Reference &raquo;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/11/17/pixel-bender-prerelease-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Modifier les paramètres d&#8217;un filtre PixelBender en AS3</title>
		<link>http://www.tsoin.com/asblog/2008/10/28/modifier-les-parametres-dun-filtre-pixelbender-en-as3/</link>
		<comments>http://www.tsoin.com/asblog/2008/10/28/modifier-les-parametres-dun-filtre-pixelbender-en-as3/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 14:50:54 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Pixel Bender]]></category>
		<category><![CDATA[Flash10]]></category>
		<category><![CDATA[PBJ]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=107</guid>
		<description><![CDATA[Pour illustrer le changement de valeur d&#8217;un paramètre dans un filtre Pixel Bender, j&#8217;ai utilisé un filtre de Frank Reitberger &#187;, ce filtre est téléchargeable sur le Pixel Bender Exchange &#187;.
Pour accéder aux paramètres du filtre &#171;&#160;smudge&#160;&#187;, il suffit de passer par la propriété data de la classe Shader. Le filtre smudge n&#8217;a qu&#8217;un seul [...]]]></description>
			<content:encoded><![CDATA[<p>Pour illustrer le changement de valeur d&#8217;un paramètre dans un filtre Pixel Bender, j&#8217;ai utilisé un filtre de <a href="http://www.prinzipiell.com" target="_blank">Frank Reitberger &raquo;</a>, ce filtre est téléchargeable sur le <a href="http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&#038;loc=en_us&#038;extid=1557018" target="blank">Pixel Bender Exchange &raquo;</a>.</p>
<p>Pour accéder aux paramètres du filtre &laquo;&nbsp;smudge&nbsp;&raquo;, il suffit de passer par la propriété data de la classe Shader. Le filtre smudge n&#8217;a qu&#8217;un seul paramètre : <em>amount</em>. On peut le modifier de cette façon :</p>
<div class="codeAS">
[Embed("pb/smudger.pbj", mimeType="application/octet-stream")]<br />
private var _pbjFilter:Class;<br />
private var _shader:Shader = new Shader( new _pbjFilter() as ByteArray );<br />
private var _filtre:ShaderFilter = new ShaderFilter( _shader );</p>
<p><b>_shader.data.amount.value = [ 5.0 ]; </b>
</div>
<p>Le filtre ayant changé, il ne faut pas oublier de le réaffecter à la propriété <em>filters</em> de l&#8217;élément à modifier, au risque de ne voir aucun changement, malgré le changement de valeur des paramètres&#8230;. </p>
<p>Ci-dessous un exemple, la valeur du paramètre est modifiée suivant la position de la souris en x ( Flash 10 ) :<br />
<center>[kml_flashembed movie="http://tsoin.com/asblog/tutoriel/PixelBender/003/Pixelbender003.swf" height="370" width="600" /]</center></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/10/28/modifier-les-parametres-dun-filtre-pixelbender-en-as3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utiliser un filtre Pixel Bender en AS3</title>
		<link>http://www.tsoin.com/asblog/2008/10/28/utiliser-un-filtre-pixel-bender-en-as3/</link>
		<comments>http://www.tsoin.com/asblog/2008/10/28/utiliser-un-filtre-pixel-bender-en-as3/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 11:24:02 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Pixel Bender]]></category>
		<category><![CDATA[Filtre]]></category>
		<category><![CDATA[Flash10]]></category>
		<category><![CDATA[Shader]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=105</guid>
		<description><![CDATA[Après avoir vu comment créer un filtre pixel bender, nous allons maintenant voir comment utiliser ce filtre en as3&#8230;
Il faut tout d&#8217;abord exporter son filtre en .pbj, fichier qui sera loader en as3. Une fois cette première opération réaliser, il faut charger le pbj :
- Méthode 1, avec un fichier externe au swf :
package {
&#160;&#160;&#160;
&#160;&#160;&#160;/**
&#160;&#160;&#160;*
&#160;&#160;&#160;* [...]]]></description>
			<content:encoded><![CDATA[<p>Après avoir vu comment créer un <a target="_blank">filtre pixel bender</a>, nous allons maintenant voir comment utiliser ce filtre en as3&#8230;</p>
<p>Il faut tout d&#8217;abord exporter son filtre en .pbj, fichier qui sera loader en as3. Une fois cette première opération réaliser, il faut charger le pbj :<br />
- Méthode 1, avec un fichier externe au swf :</p>
<div class="codeAS">package {<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;/**<br />
&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;* 	Auteur: Vincent Helwig<br />
&nbsp;&nbsp;&nbsp;* 	Date: 27.10.2008<br />
&nbsp;&nbsp;&nbsp;* 	Website: http://www.tsoin.com<br />
&nbsp;&nbsp;&nbsp;* 	Description: Chargement d&#8217;un fichier PBJ Pixel Bender<br />
&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;**/</p>
<p>&nbsp;&nbsp;&nbsp;import flash.display.Sprite;<br />
&nbsp;&nbsp;&nbsp;import flash.events.Event;<br />
&nbsp;&nbsp;&nbsp;import flash.net.URLLoader;<br />
&nbsp;&nbsp;&nbsp;import flash.net.URLRequest;<br />
&nbsp;&nbsp;&nbsp;import flash.net.URLLoaderDataFormat;<br />
&nbsp;&nbsp;&nbsp;import flash.display.Shader;</p>
<p>&nbsp;&nbsp;&nbsp;[SWF(width = "600", height = "400", backgroundColor = "#000000", framerate = "30")]</p>
<p>&nbsp;&nbsp;&nbsp;public class Main extends Sprite {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var _loader:URLLoader;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var _shader:Shader;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public function Main():void {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_loader = new URLLoader();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_loader.dataFormat = URLLoaderDataFormat.BINARY;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_loader.addEventListener(Event.COMPLETE, onLoadComplete);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_loader.load(new URLRequest(&laquo;&nbsp;bleu.pbj&nbsp;&raquo;));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private function onLoadComplete(event:Event):void {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_shader = new Shader( _loader.data );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;}</p>
<p>}
</p></div>
<p>- Méthode 2, avec un fichier intégré au swf :</p>
<div class="codeAS">package {	</p>
<p>&nbsp;&nbsp;&nbsp;/**<br />
&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;* 	Auteur: Vincent Helwig<br />
&nbsp;&nbsp;&nbsp;* 	Date: 27.10.2008<br />
&nbsp;&nbsp;&nbsp;* 	Website: http://www.tsoin.com<br />
&nbsp;&nbsp;&nbsp;* 	Description: Embed d&#8217;un fichier PBJ Pixel Bender<br />
&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;**/</p>
<p>&nbsp;&nbsp;&nbsp;import flash.display.Sprite;<br />
&nbsp;&nbsp;&nbsp;import flash.display.Shader;<br />
&nbsp;&nbsp;&nbsp;import flash.utils.ByteArray;</p>
<p>&nbsp;&nbsp;&nbsp;[SWF(width = "600", height = "400", backgroundColor = "#000000", framerate = "30")]</p>
<p>&nbsp;&nbsp;&nbsp;public class Embed extends Sprite {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[Embed("bleu.pbj", mimeType="application/octet-stream")]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var _pbjFilter:Class;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var _shader:Shader;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public function Embed():void {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_shader = new Shader( new _pbjFilter() as ByteArray );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;}</p>
<p>}
</p></div>
<p>Quelque soit la méthode du chargement, la méthode d&#8217;utilisation est ensuite la même :</p>
<div class="codeAS">
private var _filtre:ShaderFilter;<br />
_filtre = new ShaderFilter(_shader);
</div>
<p>On peut alors utiliser le ShaderFitler sur tous les enfants héritant de la class DisplayObject, avec la propriété filters :</p>
<div class="codeAS">
private var _display:DisplayObject = new DisplayObject();<br />
_display.filters = [ _fitltre];
</div>
<p>On peut donc appliquer un filtre Pixel Bender sur un champ texte, sur une vidéo, sur une image, sur un bitmap, un Sprite, un UIComponent etc&#8230;</p>
<p>Ci-dessous un exemple de différent filtre sur une vidéo&#8230;. ( Flash 10 nécessaire, bien sur <img src='http://www.tsoin.com/asblog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  )</p>
<p><center>[kml_flashembed movie="http://tsoin.com/asblog/tutoriel/PixelBender/001/Pixelbender001.swf" height="450" width="600" /]</center></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/10/28/utiliser-un-filtre-pixel-bender-en-as3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Créer un filtre Pixel Bender</title>
		<link>http://www.tsoin.com/asblog/2008/09/18/creer-un-filtre-pixel-bender/</link>
		<comments>http://www.tsoin.com/asblog/2008/09/18/creer-un-filtre-pixel-bender/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 15:09:19 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[Pixel Bender]]></category>
		<category><![CDATA[effets]]></category>
		<category><![CDATA[filtres]]></category>
		<category><![CDATA[PBJ]]></category>
		<category><![CDATA[PBK]]></category>
		<category><![CDATA[Pixel Bender Toolkit]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=67</guid>
		<description><![CDATA[Après l&#8217;introduction à Pixel Bender, passons à la pratique, et voyons comment créer un filtre Pixel Bender, avec Pixel Bender Toolkit, que vous pouvez télécharger ici »
L&#8217;application est découpée en trois parties :


La visualisation du filtre sur une image
Le code du filtre
Les paramètres du filtre

Le source du filtre Pixel Bender a pour extension .pbk (Pixel [...]]]></description>
			<content:encoded><![CDATA[<p>Après l&#8217;<a href="2008/09/08/introduction-a-pixel-bender/" target="_blank">introduction à Pixel Bender</a>, passons à la pratique, et voyons comment créer un filtre Pixel Bender, avec Pixel Bender Toolkit, que vous pouvez <a href="http://labs.adobe.com/wiki/index.php/Pixel_Bender_Toolkit#Installation_Instructions" target="_blank">télécharger ici »</a></p>
<p>L&#8217;application est découpée en trois parties :</p>
<p><center><img src="http://www.tsoin.com/asblog/wp-content/uploads/2008/09/pixel_bender.jpg" /></center></p>
<ol>
<li>La visualisation du filtre sur une image</li>
<li>Le code du filtre</li>
<li>Les paramètres du filtre</li>
</ol>
<p>Le source du filtre Pixel Bender a pour extension .pbk (Pixel Bender Kernel), et le fichier compilé a pour extension .pbj (Pixel Bender Byte Code).  Évidemment si vous voulez modifier un filtre, il vous faudra le fichier source .pbk, si vous essayer d&#8217;ouvrir un fichier .pbj vous n&#8217;en tirerez rien&#8230;.</p>
<p>Le code est composé de deux parties obligatoire, une déclaration de langage et le noyau (kernel, en anglais) du code. Le kernel est définit comme une class C++, une nouveauté pour les Flasheurs qui ne viennent pas du monde du développement &laquo;&nbsp;classique&nbsp;&raquo;. Le kernel est un object qui définit le résultat de sortie d&#8217;un pixel, quelque soit le nombre d&#8217;images en entrée. Il s&#8217;execute en parrallèle de chaque pixel pour générer une seule image en sortie. il doit au moins avoir une fonction <em>evaluatePixel</em>, ainsi qu&#8217;un paramètre de sortie de type <em>pixel</em>, et depuis la dernière beta du Toolkit, des MetaData&#8230;</p>
<p>Le kernel est executé pour chaque pixel de l&#8217;image de sortie, c&#8217;est à dire que vous ne pouvez pas définir un kernel pour tel partie l&#8217;image et un kernel pour tel partie de l&#8217;image, vous devez gérer  dans un seul et même kernel les filtres que vous voulez utiliser. La seule chose qui change a chaque pixel étant la fonction <em>outCoord() </em>qui renvoit la position du pixel &laquo;&nbsp;courrant&nbsp;&raquo;.</p>
<p>IMPORTANT !<br />
Avant de rentrer dans le vif du sujet, petits conseils, suite à quelques tests :<br />
- Ne pas mettre d&#8217;accent dans le nom de son kernel : kernel EffetCrypté ne fonctionnera pas&#8230;<br />
- Mettre les chiffre en float, il ne semble pas prendre les integer (apparement ca vient du C)</p>
<p>Pour créer un nouveau filtre Kernel, seléctionner File &gt; New Kernel Filter, il apparaitra alors le code ci-dessous, qui est le code de base d&#8217;un filtre :</p>
<div class="codeAS">&lt;languageVersion : 1.0;&gt;<br />
kernel NewFilter<br />
&lt;  <br />
&nbsp;&nbsp;&nbsp;namespace : &laquo;&nbsp;Your Namespace&nbsp;&raquo;;<br />
&nbsp;&nbsp;&nbsp;vendor : &laquo;&nbsp;Your Vendor&nbsp;&raquo;;<br />
&nbsp;&nbsp;&nbsp;version : 1;<br />
&nbsp;&nbsp;&nbsp;description : &laquo;&nbsp;your description&nbsp;&raquo;;<br />
&gt;<br />
{<br />
&nbsp;&nbsp;&nbsp;input image4 src;<br />
&nbsp;&nbsp;&nbsp;output pixel4 dst;</p>
<p>&nbsp;&nbsp;&nbsp;void<br />
&nbsp;&nbsp;&nbsp;evaluatePixel() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dst = sampleNearest(src,outCoord());<br />
&nbsp;&nbsp;&nbsp;}<br />
}</p>
<p><a href="http://www.tsoin.com/asblog/wp-content/uploads/2008/09/default_pbk.pbk">Télécharger le .pbk &raquo;</a></div>
<p>Si vous cliquez sur le bouton <em>Run</em>, et que vous avez sélectionner une image, vous aurez comme résultat de votre filtre&#8230; la même image. C&#8217;est logique si nous regardons le code, l&#8217;image de sortie dst, est juste une copie de l&#8217;image d&#8217;entré src, la fonction <em>sampleNearest </em>accède au pixel et à l&#8217;image passé en paramètre. La fonction <em>outCoord()</em> renvoit la position du position actuel, donc à chaque pixel de l&#8217;image src, le kernel renvoit en dst le même pixel, sans modification&#8230;.</p>
<p>Si on veut maintenant faire des modifications sur l&#8217;image, il suffit de les faire sur le pixel de l&#8217;image en entrée.<br />
Pour changer les canaux de l&#8217;image, on définit la variable p en <em>pixel4</em>, puis on modifie les propriétés, dans le cas suivant, on modifie le bleu de l&#8217;image :</p>
<div class="codeAS">&lt;languageVersion : 1.0;&gt;<br />
kernel ModificationBleu<br />
&lt;<br />
&nbsp;&nbsp;&nbsp;namespace : &laquo;&nbsp;com.tsoin.asblog&nbsp;&raquo;;<br />
&nbsp;&nbsp;&nbsp;vendor : &laquo;&nbsp;Vincent Helwig&nbsp;&raquo;;<br />
&nbsp;&nbsp;&nbsp;version : 1;<br />
&nbsp;&nbsp;&nbsp;description : &laquo;&nbsp;Modification du bleu&nbsp;&raquo;;<br />
&gt;<br />
{<br />
&nbsp;&nbsp;&nbsp;input image4 src;<br />
&nbsp;&nbsp;&nbsp;output pixel4 dst;</p>
<p>&nbsp;&nbsp;&nbsp;void<br />
&nbsp;&nbsp;&nbsp;evaluatePixel() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pixel4 p = sampleNearest(src,outCoord() );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.b *= 5.0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// p.r *= 5.0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// p.g *= 5.0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dst = p;<br />
&nbsp;&nbsp;&nbsp;}<br />
}</p>
<p><a href="http://www.tsoin.com/asblog/wp-content/uploads/2008/09/bleu.pbk">Télécharger le .pbk &raquo;</a></div>
<p>On rajoutant un paramètre au kernel, on pourra modifier le filtre directement d&#8217;ActionScript, la création de ce paramètre affichera automatiquement la variable dans la partie &laquo;&nbsp;Paramètre du Filtre -&gt; 3&#8243;, cité plus haut.<br />
On rajoute donc le paramètre delta pour modifier l&#8217;intensité du bleu :</p>
<div class="codeAS">&lt;languageVersion : 1.0;&gt;<br />
kernel ModificationBleuParametre<br />
&lt;  <br />
&nbsp;&nbsp;&nbsp;namespace : &laquo;&nbsp;com.tsoin.asblog&nbsp;&raquo;;<br />
&nbsp;&nbsp;&nbsp;vendor : &laquo;&nbsp;Vincent Helwig&nbsp;&raquo;;<br />
&nbsp;&nbsp;&nbsp;version : 1;<br />
&nbsp;&nbsp;&nbsp;description : &laquo;&nbsp;Modification du bleu en paramètre&nbsp;&raquo;;<br />
&gt;<br />
{<br />
&nbsp;&nbsp;&nbsp;input image4 src;<br />
&nbsp;&nbsp;&nbsp;output pixel4 dst;</p>
<p>&nbsp;&nbsp;&nbsp;parameter float delta<br />
&nbsp;&nbsp;&nbsp;&lt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;minValue: 0.0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxValue: 5.0;<br />
&nbsp;&nbsp;&nbsp;&gt;;</p>
<p>&nbsp;&nbsp;&nbsp;void<br />
&nbsp;&nbsp;&nbsp;evaluatePixel() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pixel4 p = sampleNearest(src,outCoord() );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.b *= delta;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dst = p;<br />
&nbsp;&nbsp;&nbsp;}<br />
}</p>
<p><a href="http://www.tsoin.com/asblog/wp-content/uploads/2008/09/bleu_param.pbk">Télécharger le .pbk &raquo;</a></div>
<p>Après quelques bidouillages, voici un petit exemple de qu&#8217;il est possible de faire (effet &laquo;&nbsp;Effet Canal Plus&nbsp;&raquo;) :</p>
<p><center><img src="http://www.tsoin.com/asblog/wp-content/uploads/2008/09/pixel_bender_cplus.jpg" /></center></p>
<div class="codeAS">&lt;languageVersion : 1.0;&gt;<br />
kernel EffetCanalPlus<br />
&lt;  <br />
&nbsp;&nbsp;&nbsp;namespace : &laquo;&nbsp;com.tsoin.asblog&nbsp;&raquo;;<br />
&nbsp;&nbsp;&nbsp;vendor : &laquo;&nbsp;Vincent Helwig&nbsp;&raquo;;<br />
&nbsp;&nbsp;&nbsp;version : 1;<br />
&nbsp;&nbsp;&nbsp;description : &laquo;&nbsp;Effet Canal Plus&nbsp;&raquo;;<br />
&gt;<br />
{<br />
&nbsp;&nbsp;&nbsp;input image4 src;<br />
&nbsp;&nbsp;&nbsp;output pixel4 dst;</p>
<p>&nbsp;&nbsp;&nbsp;parameter float delta<br />
&nbsp;&nbsp;&nbsp;&lt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;minValue: 0.0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxValue: 5.0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;defaultValue: 2.5;<br />
&nbsp;&nbsp;&nbsp;&gt;;</p>
<p>&nbsp;&nbsp;&nbsp;void<br />
&nbsp;&nbsp;&nbsp;evaluatePixel() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float2 coord = outCoord();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;coord.y += sin(coord.y) * delta;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pixel4 p = sampleNearest(src,coord);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dst = p;<br />
&nbsp;&nbsp;&nbsp;}<br />
}</p>
<p><a href="http://www.tsoin.com/asblog/wp-content/uploads/2008/09/effet_crypte.pbk">Télécharger le .pbk &raquo;</a></div>
<p>Pour finir, l&#8217;intégration dans flash nécessite le fichier compilé de Pixel Bender : .pbj, pour cela, il faut faire dans Pixel Bender Toolkit : Files > Export Kernel File For Flash Player&#8230;<br />
Je posterais bientôt l&#8217;intégration du fichier .pbj dans Flash&#8230;.</p>
<p>Quelques exemples :<br />
 &#8211; <a href="http://www.anttikupila.com/flash/pixel-bender-levels-example/" target="_blank">Levels Exemples &raquo;</a><br />
 &#8211; <a href="http://www.mikechambers.com/blog/2008/09/17/pixel-bender-tv-scanline-filter//" target="_blank">TV Scanline &raquo;</a><br />
- <a href="http://labs.adobe.com/wiki/index.php/Pixel_Bender_Toolkit:Gallery" target="_blank">Gallery Labs.adobe.com &raquo; ( certains scripts ne fonctionnent plus&#8230;)</a><br />
- <a href="http://www.adobe.com/cfusion/exchange/index.cfm?event=productHome&#038;exc=26&#038;loc=en_us" target="_blank">Pixel Bender Exchange &raquo;</a></p>
<p><a href="http://www.adobe.com/cfusion/webforums/forum/categories.cfm?forumid=72&#038;catid=661&#038;entercat=y" target="_blank">Forum Pixel Bender &raquo;</a><br />
<!--</p>
<p>http://www.adobe.com/cfusion/exchange/index.cfm?event=productHome&amp;exc=26&amp;loc=en_us</p>
<p>--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/09/18/creer-un-filtre-pixel-bender/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introduction à Pixel Bender</title>
		<link>http://www.tsoin.com/asblog/2008/09/08/introduction-a-pixel-bender/</link>
		<comments>http://www.tsoin.com/asblog/2008/09/08/introduction-a-pixel-bender/#comments</comments>
		<pubDate>Mon, 08 Sep 2008 16:27:32 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[Pixel Bender]]></category>
		<category><![CDATA[effets]]></category>
		<category><![CDATA[filtres]]></category>
		<category><![CDATA[Flash10]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=66</guid>
		<description><![CDATA[Développer sous le nom de code Hydra, Pixel Bender est la grosse nouveauté de Flash 10, cette technologie développé par Adobe permet la création de filtres et d&#8217;effets personnalisés, et paramétrables directement via Flash. Le langage de programmation est basé sur le GLSL (OpenGL Shading Language, langage de programmation des shaders), lui même basé sur [...]]]></description>
			<content:encoded><![CDATA[<p>Développer sous le nom de code Hydra, Pixel Bender est la grosse nouveauté de Flash 10, cette technologie développé par Adobe permet la création de filtres et d&#8217;effets personnalisés, et paramétrables directement via Flash. Le langage de programmation est basé sur le <a href="http://en.wikipedia.org/wiki/GLSL" target="_blank">GLSL</a> (OpenGL Shading Language, langage de programmation des shaders), lui même basé sur le C.</p>
<p>Vous me direz, quel est l&#8217;intérêt de faire des effets / filtres avec PixelBender, alors qu&#8217;on peut aussi en faire dans Flash ? Dans ce cas, je vous dirais, que malgré le fait de devoir assimilé un nouveau langage de programmation, les effets / filtres de PixelBender sont gérés directement pas la carte de graphique, et permet de libérer le processeur et donc de gagner en performance et fuildité. De plus la programmation est plus rapide, et moins lourde en GLSL qu&#8217;en AS3 :</p>
<div class="codeAS">
<u>GLSL</u></p>
<p>kernel NewFilter {<br />
&nbsp;&nbsp;&nbsp;void evaluatePixel(in image4 src, out pixel4 dst) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pixel4 temp = sampleNearest(src,outCoord());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dst = pixel4( temp.r * .5, temp.b, temp.g * .8, temp.a );<br />
&nbsp;&nbsp;&nbsp;}<br />
}
</p></div>
<div class="codeAS">
<u>AS3</u></p>
<p>for (var x:Number = xMin; x &lt; xMax; x++) {<br />
&nbsp;&nbsp;&nbsp;for (var y:Number = yMin; y &lt; yMax; y++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// get the pixel&#8217;s RGB value:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var rgba:Number = bmp.getPixel32(x,y);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// isolate channels:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var red:Number = (rgba &amp; 0xFF000000) &gt;&gt; 24;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var green:Number = (rgba &amp; 0&#215;00FF0000) &gt;&gt; 16;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var blue:Number = (rgba &amp; 0&#215;0000FF00) &gt;&gt; 8;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var alpha:Number = (rgba &amp; 0&#215;000000FF);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;red = red * .5;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;green = green * .8;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var output:Number = (red &lt;&lt; 24) | (blue &lt;&lt; 16) | (green &lt;&lt; 8 ) | alpha;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;outbmp.setPixel32(x,y,output);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}
</p></div>
<p>Pour voir un exemple des possibilités de Pixel Bender (vidéo Adobe), <a href="http://labs.adobe.com/technologies/flashplayer10/demos/videos/pixelbender.html" target="_blank">cliquer ici »</a></p>
<p>La Pre-Release 4 de Pixel Bender est sortit le 16 juillet 2008, vous pouvez la <a href="http://labs.adobe.com/wiki/index.php/Pixel_Bender_Toolkit#Installation_Instructions" target="_blank">télécharger ici »</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/09/08/introduction-a-pixel-bender/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
