<?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>V // Pixelnerve &#187; Java</title>
	<atom:link href="http://www.pixelnerve.com/v/category/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pixelnerve.com/v</link>
	<description></description>
	<lastBuildDate>Sun, 30 Oct 2011 23:43:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Kinect Cloth Simulation</title>
		<link>http://www.pixelnerve.com/v/2011/02/17/kinect-cloth-simulation/</link>
		<comments>http://www.pixelnerve.com/v/2011/02/17/kinect-cloth-simulation/#comments</comments>
		<pubDate>Thu, 17 Feb 2011 11:50:16 +0000</pubDate>
		<dc:creator>victormartins</dc:creator>
				<category><![CDATA[GPU]]></category>
		<category><![CDATA[Interaction]]></category>
		<category><![CDATA[Interactive]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Processing]]></category>
		<category><![CDATA[Works]]></category>
		<category><![CDATA[cgfx]]></category>
		<category><![CDATA[CLNUI]]></category>
		<category><![CDATA[kinect]]></category>
		<category><![CDATA[shader]]></category>

		<guid isPermaLink="false">http://www.pixelnerve.com/v/?p=1399</guid>
		<description><![CDATA[During my christmas holidays i had time to spare and some ideas to develop, so with all the party-feeling and booze i started working on the one i wanted the most. This is a cloth simulation running on the CPU which you can interact with using the kinect. With the 3d information from the kinect [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">During my christmas holidays i had time to spare and some ideas to develop, so with all the party-feeling and booze i started working on the one i wanted the most. This is a cloth simulation running on the CPU which you can interact with using the kinect. With the 3d information from the kinect i&#8217;m able to change the cloth in some cool ways. The most interesting is plain and simple, offset each connection point by the depth at that point. With that done i had to go with the visual side (fun fun!), so i started playing with per-pixel lighting and some cool patterns.</p>
<p><iframe src="http://player.vimeo.com/video/18049823?title=0&amp;byline=0&amp;portrait=0&amp;color=80ceff" width="640" height="360" frameborder="0"></iframe></p>
<p style="text-align: justify;">Then added self-shadowing to the mixture and some color control just for the fun and looks of it.</p>
<p><iframe src="http://player.vimeo.com/video/18178562?title=0&amp;byline=0&amp;portrait=0&amp;color=80ceff" width="640" height="360" frameborder="0"></iframe></p>
<p><iframe src="http://player.vimeo.com/video/18188808?title=0&amp;byline=0&amp;portrait=0&amp;color=80ceff" width="640" height="360" frameborder="0"></iframe></p>
<p style="text-align: justify;">In the end i thought it would be nice to take my carpet out to clean. Happy holidays!</p>
<p><iframe src="http://player.vimeo.com/video/18219268?title=0&amp;byline=0&amp;portrait=0&amp;color=80ceff" width="640" height="360" frameborder="0"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pixelnerve.com/v/2011/02/17/kinect-cloth-simulation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CLNUI 4 Java (Kinect)</title>
		<link>http://www.pixelnerve.com/v/2010/11/19/clnui-4-java-kinect/</link>
		<comments>http://www.pixelnerve.com/v/2010/11/19/clnui-4-java-kinect/#comments</comments>
		<pubDate>Fri, 19 Nov 2010 02:14:44 +0000</pubDate>
		<dc:creator>victormartins</dc:creator>
				<category><![CDATA[Interaction]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Libraries]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Processing]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[CLNUI]]></category>
		<category><![CDATA[JNA]]></category>
		<category><![CDATA[kinect]]></category>

		<guid isPermaLink="false">http://www.pixelnerve.com/v/?p=1343</guid>
		<description><![CDATA[Kinect is a new product from Microsoft for XBox360. With an RGB camera, a 3D depth sensor (structured IR light) and  a multi-array microphone , it is able to compute a depth map, something very interesting for the interactive world of creativity and gaming. Nothing new as technology, but still, interesting and cheap. Since its [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><a title="Kinect" href="http://en.wikipedia.org/wiki/File:KinectTechnologiesE3.jpg" rel="shadowbox[sbpost-1343];player=img;" target="_blank">Kinect</a> is a new product from Microsoft for XBox360. With an RGB camera, a 3D depth sensor (structured IR light) and  a multi-array microphone , it is able to compute a depth map, something very interesting for the interactive world of creativity and gaming. Nothing new as technology, but still, interesting and cheap. Since its release people have been trying to work in order to hack it and get it to work with windows and mac OS. Quite a few people have been working on drivers and a way to hack the gadget to get access to the color/depth data. One of these people is called Alex from <a title="CL" href="http://codelaboratories.com/forums/viewthread/416/" target="_blank">Code Laboratories</a>, the man behind the PS3eye camera drivers for PC&#8217;s. Recently, he released a new package (C and C#) that includes drivers and SDK for Kinect. I took the SDK and with  <a title="JNA" href="https://jna.dev.java.net/" target="_blank">JNA</a> i wrote a library for java that wraps the original one and also tries to make its use easy for starters.</p>
<p style="text-align: justify;"><a href="../wp-content/uploads/2010/11/Frame_0471.png" rel="shadowbox[sbpost-1343];player=img;"></a><a href="http://www.pixelnerve.com/v/wp-content/uploads/2010/11/Frame_0471.jpg" rel="shadowbox[sbpost-1343];player=img;"><img class="alignnone size-medium wp-image-1348" title="Frame_0471" src="http://www.pixelnerve.com/v/wp-content/uploads/2010/11/Frame_0471-638x358.jpg" alt="" width="638" height="358" /></a></p>
<p style="text-align: justify;">A very early release is available <a title="CLNUI4J" href="http://victamin.googlecode.com/files/CLNUI4J_01.zip" target="_blank">http://victamin.googlecode.com/files/CLNUI4J_01.zip</a>. This might or might not work out-of-the-box and it sure needs improvement and more work, but as they say, release early, release often. This package includes the library and basic examples running on Eclipse IDE <span style="text-decoration: line-through;">and processing IDE (untested)</span>. It is known that this library does not work directly with Processing.</p>
<p>EDIT! Version 0.2 is now available at: <a title="CLNUI4J" href="http://victamin.googlecode.com/files/CLNUI4J_02.zip" target="_blank">http://victamin.googlecode.com/files/CLNUI4J_02.zip</a>.<br />
You can now find a friendly wrapper and a couple of examples to get you started.</p>
<p style="text-align: justify;">I would love to get some feedback, so if you&#8217;re a Kinect owner and you&#8217;re into java<span style="text-decoration: line-through;">/processing</span>, give it a  spin and let me know how it works out for you.</p>
<p style="text-align: justify;">Have fun.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pixelnerve.com/v/2010/11/19/clnui-4-java-kinect/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>DroidTUIO</title>
		<link>http://www.pixelnerve.com/v/2010/11/04/dt/</link>
		<comments>http://www.pixelnerve.com/v/2010/11/04/dt/#comments</comments>
		<pubDate>Thu, 04 Nov 2010 19:40:30 +0000</pubDate>
		<dc:creator>victormartins</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[Works]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[opengl]]></category>
		<category><![CDATA[tuio]]></category>

		<guid isPermaLink="false">http://www.pixelnerve.com/v/?p=1317</guid>
		<description><![CDATA[DroidTUIO is my first application made for Android OS. It was created for OS version 2.1+  with OpenGL ES renderer. This application is available to the public as i hope to get feedback, so please, spare a few minutes and let me know how it worked out for you. Now.. on with the application.  First [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><strong>DroidTUIO</strong> is my first application made for Android OS. It was created for OS version 2.1+  with OpenGL ES renderer. This application is available to the public as i hope to get feedback, so please, spare a few minutes and let me know how it worked out for you. Now.. on with the application.  First thing you need to do is to run the application and then press MENU/Settings. Enter your network IP and press connect. Once connected, use your phone to send TUIO events (2dcursor only for the moment). Have fun.</p>
<p style="text-align: justify;">Update! The link has been removed as the application was removed from online. I will get a new link ASAP.<a href="http://www.pixelnerve.com/v/wp-content/uploads/2010/11/dT.png" rel="shadowbox[sbpost-1317];player=img;"><br />
</a></p>
<p style="text-align: center;">
]]></content:encoded>
			<wfw:commentRss>http://www.pixelnerve.com/v/2010/11/04/dt/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MSAOpenCL for Java and Processing</title>
		<link>http://www.pixelnerve.com/v/2010/07/29/msaopencl-for-java-and-processing/</link>
		<comments>http://www.pixelnerve.com/v/2010/07/29/msaopencl-for-java-and-processing/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 01:57:33 +0000</pubDate>
		<dc:creator>victormartins</dc:creator>
				<category><![CDATA[GPU]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Libraries]]></category>
		<category><![CDATA[Processing]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[JavaCL]]></category>
		<category><![CDATA[msaopencl]]></category>
		<category><![CDATA[OpenCL]]></category>

		<guid isPermaLink="false">http://www.pixelnerve.com/v/?p=1248</guid>
		<description><![CDATA[Recently I have been doing some work with OpenCL and i found myself messing up with old code and re-writing most of it .  At first it was interesting and quite funny but no more, so,  I thought it was time to make things easier for myself and just make things reusable by creating a [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Recently I have been doing some work with <a title="OpenCL" href="http://www.nvidia.com/object/cuda_opencl_new.html" target="_blank">OpenCL</a> and i found myself messing up with old code and re-writing most of it .  At first it was interesting and quite funny but no more, so,  I thought it was time to make things easier for myself and just make things reusable by creating a wrapper which would wrap most of the boring and time-consuming parts. This would be a wrapper on OpenCL for Java and/or Processing. Well, a well known guy named <a title="Memo" href="http://www.memo.tv" target="_blank">Mehmet &#8220;Memo&#8221; Akten</a> has done such a wrapper in C++ for the <a title="OF" href="http://www.openframeworks.cc" target="_blank">OpenFrameworks</a> and <a title="Cinder" href="http://www.libcinder.org" target="_blank">Cinder</a> libraries. I have ported it  to Java.</p>
<p style="text-align: justify;">There are some problems with reading/writing from/to GL textures. For some reason it crashes on me. I have been working with <a title="JavaCL" href="http://code.google.com/p/javacl/" target="_blank">JavaCL</a>&#8216;s author, so hopefully it will be working soon.</p>
<p style="text-align: justify;">
<p style="text-align: justify;">:: <a title="MSAOpenCL for Java/Processing" href="http://code.google.com/p/victamin/downloads/detail?name=msaopencl.zip" target="_blank">Download</a></p>
<p style="text-align: justify;">Download it, install it and try it.<br />
If you find any problems or if you have suggestions, let me know.</p>
<p style="text-align: justify;">Have fun.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pixelnerve.com/v/2010/07/29/msaopencl-for-java-and-processing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ping-pong technique on GPU</title>
		<link>http://www.pixelnerve.com/v/2010/07/20/pingpong-technique/</link>
		<comments>http://www.pixelnerve.com/v/2010/07/20/pingpong-technique/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 06:06:26 +0000</pubDate>
		<dc:creator>victormartins</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[GPU]]></category>
		<category><![CDATA[Graphics programming]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[gpu]]></category>
		<category><![CDATA[opengl]]></category>
		<category><![CDATA[ping pong]]></category>
		<category><![CDATA[shader]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.pixelnerve.com/v/?p=1205</guid>
		<description><![CDATA[Hello there. Here is a new tutorial, this time about ping-pong on the gpu. I&#8217;ve been wanting to write about it for sometime, finally it&#8217;s off my todo list. Let&#8217;s get down to business. Ping-pong technique is normally used with a shader that needs it&#8217;s result as a source parameter for it&#8217;s next iteration. This [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Hello there. Here is a new tutorial, this time about ping-pong on the gpu. I&#8217;ve been wanting to write about it for sometime, finally it&#8217;s off my todo list. Let&#8217;s get down to business. Ping-pong technique is normally used with a shader that needs it&#8217;s result as a source parameter for it&#8217;s next iteration. This is usually used in the gpu as for now it is not possible to write a program&#8217;s result to itself, so, we&#8217;ll need another equal buffer to save the current result for how next step/iteration. That was too hard?</p>
<p style="text-align: justify;">So imagine we have 2 image buffers Image1, Image2. Usually to change data from Image1, you would simply access it and write directly back to the same positioion. Now, when we&#8217;re talking about a shader fragment program we can&#8217;t simply do that.  You may ask now, what&#8217;s the solution? Ping-pong it!</p>
<p style="text-align: justify;">Here is what i&#8217;m talking about:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//</span>
<span style="color: #666666; font-style: italic;">// Initialization</span>
<span style="color: #666666; font-style: italic;">//</span>
<span style="color: #000066; font-weight: bold;">int</span> W <span style="color: #339933;">=</span> <span style="color: #cc66cc;">100</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> H <span style="color: #339933;">=</span> <span style="color: #cc66cc;">100</span><span style="color: #339933;">;</span>
ImageArray <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>W<span style="color: #339933;">*</span>H<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> CurrActiveBuffer <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Current active buffer index</span>
&nbsp;
&nbsp;
<span style="color: #666666; font-style: italic;">//</span>
<span style="color: #666666; font-style: italic;">// Mainloop</span>
<span style="color: #666666; font-style: italic;">//</span>
<span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span> <span style="color: #000066; font-weight: bold;">int</span> j<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> j<span style="color: #339933;">&lt;</span>H<span style="color: #339933;">;</span> j<span style="color: #339933;">++</span> <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span> <span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>W<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span> <span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">// ERROR! Write to same buffer. Not possible in gpu shader</span>
		<span style="color: #666666; font-style: italic;">//Image1[i+j*W] = Image1[i+j*W] * 2;  // Mul by 2</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// Ping-pong version</span>
		<span style="color: #000066; font-weight: bold;">int</span> src <span style="color: #339933;">=</span> CurrActiveBuffer<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Current active buffer (Input)</span>
		<span style="color: #000066; font-weight: bold;">int</span> dest <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">-</span>CurrActiveBuffer<span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">// Back buffer (Output)</span>
		ImageArray<span style="color: #009900;">&#91;</span>dest<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>i<span style="color: #339933;">+</span>j<span style="color: #339933;">*</span>W<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> ImageArray<span style="color: #009900;">&#91;</span>src<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>i<span style="color: #339933;">+</span>j<span style="color: #339933;">*</span>W<span style="color: #009900;">&#93;</span> <span style="color: #339933;">*</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">// Mul by 2</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Swap back and front buffers (read becomes write and vice-versa)</span>
CurrActiveBuffer <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">-</span>CurrActiveBuffer<span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;">// CurrActiveBuffer ? 0 : 1;</span></pre></div></div>

<p style="text-align: justify;">As you can see we start with buffer 0. That&#8217;s where we get out data from (read) and write it to Buffer 1. Once the operation is done, we swap buffers every frame. This way we&#8217;ll be able to use last iteration&#8217;s data as input for the next iteration.</p>
<p style="text-align: justify;">Now let&#8217;s put this in OpenGL language. I will be using a FrameBufferObject (FBO) and 2 textures here. The framebuffer will be holding to both textures as 2 Color Attachments. So let&#8217;s get coding:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//</span>
<span style="color: #666666; font-style: italic;">// Initialization</span>
<span style="color: #666666; font-style: italic;">//</span>
<span style="color: #000066; font-weight: bold;">int</span> W <span style="color: #339933;">=</span> <span style="color: #cc66cc;">100</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> H <span style="color: #339933;">=</span> <span style="color: #cc66cc;">100</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> FboID<span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> TexID<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> CurrActiveBuffer <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">// Current active buffer index</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Create the frambuffer</span>
glGenFramebuffersEXT<span style="color: #009900;">&#40;</span> <span style="color: #cc66cc;">1</span>, <span style="color: #339933;">&amp;</span>FboID <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
glBindFramebufferEXT<span style="color: #009900;">&#40;</span> GL_FRAMEBUFFER_EXT, FboID <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Create 2 textures for input/output.</span>
glGenTextures<span style="color: #009900;">&#40;</span> <span style="color: #cc66cc;">2</span>, TexID <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span> <span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span> <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	glBindTexture<span style="color: #009900;">&#40;</span> GL_TEXTURE_2D, TexID<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	glTexParameteri<span style="color: #009900;">&#40;</span> GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	glTexParameteri<span style="color: #009900;">&#40;</span> GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	glTexParameteri<span style="color: #009900;">&#40;</span> GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	glTexParameteri<span style="color: #009900;">&#40;</span> GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #666666; font-style: italic;">// RGBA8 buffer</span>
	glTexImage2D<span style="color: #009900;">&#40;</span> GL_TEXTURE_2D, <span style="color: #cc66cc;">0</span>, GL_RGBA, W, H, <span style="color: #cc66cc;">0</span>, GL_RGBA, GL_UNSIGNED_BYTE, <span style="color: #000066; font-weight: bold;">NULL</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span> _hasMipmapping <span style="color: #009900;">&#41;</span>  glGenerateMipmapEXT<span style="color: #009900;">&#40;</span> GL_TEXTURE_2D <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Now attach textures to FBO</span>
<span style="color: #000066; font-weight: bold;">int</span> src <span style="color: #339933;">=</span> CurrActiveBuffer<span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> dest <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">-</span>CurrActiveBuffer<span style="color: #339933;">;</span>
glFramebufferTexture2DEXT<span style="color: #009900;">&#40;</span> GL_FRAMEBUFFER_EXT, 
                           GL_COLOR_ATTACHMENT0_EXT, 
                           GL_TEXTURE_2D, TexID<span style="color: #009900;">&#91;</span>src<span style="color: #009900;">&#93;</span>, <span style="color: #cc66cc;">0</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
glFramebufferTexture2DEXT<span style="color: #009900;">&#40;</span> GL_FRAMEBUFFER_EXT, 
                           GL_COLOR_ATTACHMENT1_EXT, 
                           GL_TEXTURE_2D, TexID<span style="color: #009900;">&#91;</span>dest<span style="color: #009900;">&#93;</span>, <span style="color: #cc66cc;">0</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
&nbsp;
<span style="color: #666666; font-style: italic;">//</span>
<span style="color: #666666; font-style: italic;">// Mainloop</span>
<span style="color: #666666; font-style: italic;">//</span>
<span style="color: #000066; font-weight: bold;">int</span> src <span style="color: #339933;">=</span> CurrActiveBuffer<span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> dest <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">-</span>CurrActiveBuffer<span style="color: #339933;">;</span>
&nbsp;
FBO.<span style="color: #006633;">Bind</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
glDrawBuffer<span style="color: #009900;">&#40;</span> dest <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
glBindTexture<span style="color: #009900;">&#40;</span> GL_TEXTURE_2D, TexID<span style="color: #009900;">&#91;</span>src<span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
ShaderProgram.<span style="color: #006633;">SetTextureUniform</span><span style="color: #009900;">&#40;</span> <span style="color: #cc66cc;">0</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
RenderScene<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
FBO.<span style="color: #006633;">Unbind</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #666666; font-style: italic;">// Swap back and front buffers (read becomes write and vice-versa)</span>
CurrActiveBuffer <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">-</span>CurrActiveBuffer<span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;">// CurrActiveBuffer ? 0 : 1;</span></pre></div></div>

<p style="text-align: justify;">Why would you want to ping-pong? Well for instance imagine you are doing a water effect in the gpu. You&#8217;ll need to access data from your previous buffer right? Using the CPU that would be trivial as you have the last frame&#8217;s memory buffer allocated somewhere which you can read/write access directly. That doesn&#8217;t really work on the gpu side that way (but we&#8217;re getting closer with CL, CUDA, DC) </p>
<p>Have fun.</p>
<p><a href="http://flattr.com/thing/40440/Ping-pong-technique-explained" target="_blank"><br />
<img src="http://api.flattr.com/button/button-compact-static-100x17.png" alt="Flattr this" title="Flattr this" border="0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pixelnerve.com/v/2010/07/20/pingpong-technique/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Float</title>
		<link>http://www.pixelnerve.com/v/2010/05/06/float/</link>
		<comments>http://www.pixelnerve.com/v/2010/05/06/float/#comments</comments>
		<pubDate>Thu, 06 May 2010 17:30:31 +0000</pubDate>
		<dc:creator>victormartins</dc:creator>
				<category><![CDATA[Demos]]></category>
		<category><![CDATA[Generative]]></category>
		<category><![CDATA[Graphics programming]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Processing]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[Works]]></category>
		<category><![CDATA[cgfx]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[demoscene]]></category>
		<category><![CDATA[shader]]></category>
		<category><![CDATA[vitamin]]></category>

		<guid isPermaLink="false">http://www.pixelnerve.com/v/?p=1100</guid>
		<description><![CDATA[I have recently released at inércia Demoparty, a gift i made for Sue. It started as a christmas gift that would express myself and ofcourse keep me from following everybody else to the local shop and spend my money on something  made by others. There is no executable this time, as i don&#8217;t know if [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">I have recently released at inércia Demoparty, a gift i made for <a title="S*" href="http://www.pixelnerve.com/s" target="_blank">Sue</a>. It started as a christmas gift that would express myself and ofcourse keep me from following everybody else to the local shop and spend my money on something  made by others.</p>
<p style="text-align: justify;">There is no executable this time, as i don&#8217;t know if i can spread the music, still, nobody can stop me  (for the moment) from giving you a video. So here it is, <a title="Float" href="http://vimeo.com/11463562" target="_blank">Float</a>.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="360" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=11463562&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="640" height="360" src="http://vimeo.com/moogaloop.swf?clip_id=11463562&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pixelnerve.com/v/2010/05/06/float/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mass cube rendering</title>
		<link>http://www.pixelnerve.com/v/2010/04/03/mass-cube-rendering/</link>
		<comments>http://www.pixelnerve.com/v/2010/04/03/mass-cube-rendering/#comments</comments>
		<pubDate>Sat, 03 Apr 2010 12:02:01 +0000</pubDate>
		<dc:creator>victormartins</dc:creator>
				<category><![CDATA[Generative]]></category>
		<category><![CDATA[Graphics programming]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Processing]]></category>
		<category><![CDATA[geometry shader]]></category>
		<category><![CDATA[gpu]]></category>
		<category><![CDATA[instancing]]></category>
		<category><![CDATA[opengl]]></category>
		<category><![CDATA[shaders]]></category>

		<guid isPermaLink="false">http://www.pixelnerve.com/v/?p=1033</guid>
		<description><![CDATA[I have recently done some experimental work in order to render mass amounts of cubes. I was moved by this video from Smash, i wanted to know how far i would be able to go on my NVidia GT240M (rendering side). My first choice was Geometry Shaders. I quickly wrote an app that sent a [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">I have recently done some experimental work in order to render mass amounts of cubes. I was moved by <a href="http://vimeo.com/9888065" target="_blank">this video from Smash</a>, i wanted to know how far i would be able to go on my NVidia GT240M (rendering side). My first choice was <a href="http://en.wikipedia.org/wiki/Geometry_shader" target="_blank">Geometry Shaders</a>.<br />
I quickly wrote an app that sent a list of points in space to the GPU and a geometry shader would generate a cube mesh for each one of  the points. Tested it on 100.000 cubes and the framerate was bad(10fps or so). The time was now for optimization.</p>
<p><a href="http://www.pixelnerve.com/v/wp-content/uploads/2010/04/frame_127.png" rel="shadowbox[sbpost-1033];player=img;"><img class="size-medium wp-image-1051" title="100k cubes using GS + cpu animation" src="http://www.pixelnerve.com/v/wp-content/uploads/2010/04/frame_127-634x356.png" alt="" width="634" height="356" /></a></p>
<p style="text-align: justify;">Next step was to optimize the cube generation by lowering from a 24 vertex cube to 14 vertex triangle strip. Things got better, but nothing close to my expectations. I was not satisfied, i mean, i had alot of cubes on screen (100K which was not that much) and that was it, nothing else. We&#8217;re talking about 20fps or so, for 100.000 cubes (around 1.2 million triangles per frame). Later on i added vertex normals to the geometry shader and started to work on some lighting/shadowing, but i ended up going back on the rendering side of the job. Meanwhile, i was speaking with a <a href="http://diogo.codingcorner.net/" target="_blank">friend of mine</a> about this idea and we were discussing ways to compute lighting but i couldn&#8217;t stop thinking about my real problem. So it came to me.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="360" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=10501999&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="640" height="360" src="http://vimeo.com/moogaloop.swf?clip_id=10501999&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p style="text-align: justify;">Previously, i have done some experiments with opengl hardware instancing, but never got  to do much about it .  What better time than now, so i grabbed the project and took it for a spin. After a few hours i had the same amount of cubes on screen with a much much better framerate. Quickly implemented some eye-candy (coloring, texturing, vertex lighting), some tweaking here and there and as i was listening to Mr. Peter Broderick (hi, i love you man) added some audio analysis to the feature list.<br />
Last but not least, a kind of &#8220;Brownian Motion&#8221; was used to generate points in space, increased the cube count to 512*512 and watched it flow ( at 20fps ).</p>
<p style="text-align: justify;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="360" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=10503489&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="640" height="360" src="http://vimeo.com/moogaloop.swf?clip_id=10503489&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p style="text-align: justify;">In conclusion, Hardware instancing was much easier to implement  and performance seems much better at first sight. Above is a video of 262.144 audio-reactive cubes with GPU animation and basic lighting at around 20fps. For my video card i think that is very good. On a sidenote, i have not given up on the geometry shaders. I am not sure what will be my next step regarding the subject (back to geometry shaders?) but for now this is it. Hardware Instancing kicked Geometry Shaders in the ass.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pixelnerve.com/v/2010/04/03/mass-cube-rendering/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Monologue Muet &#8211; Outside projection</title>
		<link>http://www.pixelnerve.com/v/2010/03/07/monologue-muet-outside-projection/</link>
		<comments>http://www.pixelnerve.com/v/2010/03/07/monologue-muet-outside-projection/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 20:18:22 +0000</pubDate>
		<dc:creator>victormartins</dc:creator>
				<category><![CDATA[Generative]]></category>
		<category><![CDATA[Graphics programming]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Processing]]></category>
		<category><![CDATA[Works]]></category>
		<category><![CDATA[exhibition]]></category>
		<category><![CDATA[projection mapping]]></category>

		<guid isPermaLink="false">http://www.pixelnerve.com/v/?p=981</guid>
		<description><![CDATA[This is the outside projection for Monologue Muet exhibition, a photography work by Sue Elie Andrade De. Based on her video called The Rain, i have created the outside projection with response to physical properties, like doors and windows.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">This is the outside projection for <a title="Monologue Muet" href="http://www.pixelnerve.com/s/index.php?/projects/work-in-progress-research/" target="_blank">Monologue Muet</a> exhibition, a photography work by <a href="http://www.sueelieandradede.com/" target="_blank">Sue Elie Andrade De</a>.<br />
Based on her video called <a title="The Rain" href="http://vimeo.com/8760693" target="_blank">The Rain</a>, i have created the outside projection with response to physical properties, like doors and windows.</p>
<p style="text-align: justify;"><a rel="attachment wp-att-986" href="http://www.pixelnerve.com/v/2010/03/07/monologue-muet-outside-projection/pic_1198/"><img class="alignnone size-medium wp-image-986" title="PIC_1198" src="http://www.pixelnerve.com/v/wp-content/uploads/2010/03/PIC_1198-634x475.jpg" alt="" width="634" height="475" /></a></p>
<p style="text-align: justify;"><a rel="attachment wp-att-988" href="http://www.pixelnerve.com/v/2010/03/07/monologue-muet-outside-projection/pic_1205/"><img class="alignnone size-medium wp-image-988" title="PIC_1205" src="http://www.pixelnerve.com/v/wp-content/uploads/2010/03/PIC_1205-634x475.jpg" alt="" width="634" height="475" /></a></p>
<p style="text-align: justify;"><a rel="attachment wp-att-987" href="http://www.pixelnerve.com/v/2010/03/07/monologue-muet-outside-projection/pic_1203/"><img class="alignnone size-medium wp-image-987" title="PIC_1203" src="http://www.pixelnerve.com/v/wp-content/uploads/2010/03/PIC_1203-634x475.jpg" alt="" width="634" height="475" /></a></p>
<p style="text-align: justify;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="480" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=9908918&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="640" height="480" src="http://vimeo.com/moogaloop.swf?clip_id=9908918&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pixelnerve.com/v/2010/03/07/monologue-muet-outside-projection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaCL, the new OpenCL4Java</title>
		<link>http://www.pixelnerve.com/v/2010/02/17/javacl-the-new-opencl4java/</link>
		<comments>http://www.pixelnerve.com/v/2010/02/17/javacl-the-new-opencl4java/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 07:11:21 +0000</pubDate>
		<dc:creator>victormartins</dc:creator>
				<category><![CDATA[Graphics programming]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Libraries]]></category>
		<category><![CDATA[Processing]]></category>
		<category><![CDATA[Source Code]]></category>
		<category><![CDATA[gpu]]></category>
		<category><![CDATA[JavaCL]]></category>
		<category><![CDATA[OpenCL]]></category>
		<category><![CDATA[opencl4java]]></category>
		<category><![CDATA[realtime]]></category>

		<guid isPermaLink="false">http://www.pixelnerve.com/v/?p=940</guid>
		<description><![CDATA[I have noticed that OpenCL4Java is on version 1.4beta by now and that my examples were crashing when running on a GPU device. Today i took the time to do something about it. I have downloaded the new version and have updated the examples to run with 1.4beta. Everything seems to work just fine now, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">I have noticed that OpenCL4Java is on version 1.4beta by now and that my examples were crashing when running on a GPU device. Today i took the time to do something about it. I have downloaded the new version and have updated the examples to run with 1.4beta. Everything seems to work just fine now, if you have a different opinion, please do let me know.</p>
<p style="text-align: justify;"><a rel="attachment wp-att-926" href="http://www.pixelnerve.com/v/2010/02/17/javacl-the-new-opencl4java/frame_2225/"><img title="GreeblesCL" src="http://www.pixelnerve.com/v/wp-content/uploads/2010/02/frame_2225-634x356.png" alt="" width="634" height="356" /></a></p>
<p style="text-align: justify;">Download: <a title="JavaCL" href="http://victamin.googlecode.com/files/JavaCL_1_4b.zip" target="_blank">http://victamin.googlecode.com/files/JavaCL_1_4b.zip</a></p>
<p style="text-align: justify;">Have fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pixelnerve.com/v/2010/02/17/javacl-the-new-opencl4java/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>(hmm) Greebles</title>
		<link>http://www.pixelnerve.com/v/2009/11/04/hmm-greebles/</link>
		<comments>http://www.pixelnerve.com/v/2009/11/04/hmm-greebles/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 11:37:08 +0000</pubDate>
		<dc:creator>victormartins</dc:creator>
				<category><![CDATA[Graphics programming]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Processing]]></category>
		<category><![CDATA[audio reactive]]></category>
		<category><![CDATA[gpu]]></category>
		<category><![CDATA[greebles]]></category>
		<category><![CDATA[realtime]]></category>

		<guid isPermaLink="false">http://www.pixelnerve.com/v/?p=862</guid>
		<description><![CDATA[Since Star Wars(tm) (so i&#8217;ve read), texture-based techniques have been used to improve the detail on planar and easily curved surfaces. The one i&#8217;m talking about here is called Greebles. Apply an heightmap texture on a surface and on a per-pixel basis, geometry is generated acoording to the pixel&#8217;s intensity. By doing it you get [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Since  Star Wars(tm) (so i&#8217;ve read), texture-based techniques have been used to  improve the detail on planar and easily curved surfaces. The one i&#8217;m  talking about here is called Greebles. Apply an heightmap texture on a  surface and on a per-pixel basis, geometry is generated acoording to the  pixel&#8217;s intensity. By doing it you get more detailed surfaces without  having to model every little part by yourself, making things more  interesting, realistic and much more appealing.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="360" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=8384130&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="640" height="360" src="http://vimeo.com/moogaloop.swf?clip_id=8384130&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>To achieve this i&#8217;ve picked <a href="http://www.opengl.org/wiki/Vertex_Texture_Fetch" target="_blank">Vertex Texture Fetch</a>. It allows you to access texture data on the vertex shader. Pass a texture to the vertex shader and offset the surface vertices by the pixel&#8217;s intensity. To improve the looks, bump-mapping with multiple lights have been used. Everything presented here is generated on the GPU, even the objects. Runs nicely on a Nvidia 8200M. Lots of  space for improvement.</p>
<p style="text-align: justify;"><a href="http://www.pixelnerve.com/v/wp-content/uploads/2009/11/greebles_0001332.jpg" rel="shadowbox[sbpost-862];player=img;"><img class="alignnone size-thumbnail wp-image-861" title="greebles_0001332" src="http://www.pixelnerve.com/v/wp-content/uploads/2009/11/greebles_0001332-150x150.jpg" alt="greebles_0001332" width="150" height="150" /></a><a href="http://www.pixelnerve.com/v/wp-content/uploads/2009/11/greebles_0004509.jpg" rel="shadowbox[sbpost-862];player=img;"><img class="alignnone size-thumbnail wp-image-860" title="greebles_0004509" src="http://www.pixelnerve.com/v/wp-content/uploads/2009/11/greebles_0004509-150x150.jpg" alt="greebles_0004509" width="150" height="150" /></a><a href="http://www.pixelnerve.com/v/wp-content/uploads/2009/11/greebles_0004451.jpg" rel="shadowbox[sbpost-862];player=img;"><img class="alignnone size-thumbnail wp-image-859" title="greebles_0004451" src="http://www.pixelnerve.com/v/wp-content/uploads/2009/11/greebles_0004451-150x150.jpg" alt="greebles_0004451" width="150" height="150" /></a><a href="http://www.pixelnerve.com/v/wp-content/uploads/2009/11/greebles_0004315.jpg" rel="shadowbox[sbpost-862];player=img;"><img class="alignnone size-thumbnail wp-image-858" title="greebles_0004315" src="http://www.pixelnerve.com/v/wp-content/uploads/2009/11/greebles_0004315-150x150.jpg" alt="greebles_0004315" width="150" height="150" /></a><a href="http://www.pixelnerve.com/v/wp-content/uploads/2009/11/greebles_0004301.jpg" rel="shadowbox[sbpost-862];player=img;"><img class="alignnone size-thumbnail wp-image-857" title="greebles_0004301" src="http://www.pixelnerve.com/v/wp-content/uploads/2009/11/greebles_0004301-150x150.jpg" alt="greebles_0004301" width="150" height="150" /></a><a href="http://www.pixelnerve.com/v/wp-content/uploads/2009/11/greebles_0004050.jpg" rel="shadowbox[sbpost-862];player=img;"><img class="alignnone size-thumbnail wp-image-856" title="greebles_0004050" src="http://www.pixelnerve.com/v/wp-content/uploads/2009/11/greebles_0004050-150x150.jpg" alt="greebles_0004050" width="150" height="150" /></a><a href="http://www.pixelnerve.com/v/wp-content/uploads/2009/11/greebles_0001137.jpg" rel="shadowbox[sbpost-862];player=img;"><img class="alignnone size-thumbnail wp-image-855" title="greebles_0001137" src="http://www.pixelnerve.com/v/wp-content/uploads/2009/11/greebles_0001137-150x150.jpg" alt="greebles_0001137" width="150" height="150" /></a><a href="http://www.pixelnerve.com/v/wp-content/uploads/2009/11/greebles_0000360.jpg" rel="shadowbox[sbpost-862];player=img;"><img class="alignnone size-thumbnail wp-image-854" title="greebles_0000360" src="http://www.pixelnerve.com/v/wp-content/uploads/2009/11/greebles_0000360-150x150.jpg" alt="greebles_0000360" width="150" height="150" /></a></p>
<p style="text-align: justify;">
]]></content:encoded>
			<wfw:commentRss>http://www.pixelnerve.com/v/2009/11/04/hmm-greebles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

