<?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>What Ev</title>
	<atom:link href="http://what-ev.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://what-ev.net</link>
	<description>Chris Cascioli - Graphics Programming &#124; Game Design</description>
	<lastBuildDate>Mon, 07 Mar 2011 04:48:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Reflections on the Water Demo*</title>
		<link>http://what-ev.net/2011/03/07/reflections-on-the-water-demo/</link>
		<comments>http://what-ev.net/2011/03/07/reflections-on-the-water-demo/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 04:39:23 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[My Graphics Programming]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[graphics programming]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[water]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://what-ev.net/?p=160</guid>
		<description><![CDATA[*Pun definitely intended
Since it was GDC time again, I ended up thinking about the water demo I created with my fellow grad student Ada.  It was our first foray into shaders, and I think it turned out pretty well for a 10 week project.  We had gone into the project thinking we might buy a [...]]]></description>
			<content:encoded><![CDATA[<p>*Pun definitely intended</p>
<p>Since it was GDC time again, I ended up thinking about the water demo I created with my fellow grad student Ada.  It was our first foray into shaders, and I think it turned out pretty well for a 10 week project.  We had gone into the project thinking we might buy a book and follow a few tutorials.  Instead, we were given the task of creating an impressive-looking scrolling water system that combined deep ocean &amp; shallow water wave systems.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="390" 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://www.youtube.com/v/xqjLw6SfJfM?fs=1&amp;hl=en_US&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="390" src="http://www.youtube.com/v/xqjLw6SfJfM?fs=1&amp;hl=en_US&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>As is always the case, the more I look at the water demo the more problems and mistakes I find.  I&#8217;ve been thinking about creating a new version for a few years now, if only to appease the constant requests for a boat.  Since this project is comprised of the first real shaders I wrote, digging through the code makes me want to rewrite it even more.  I&#8217;ve learned (and done) so much since we first toyed around with shaders.</p>
<p>It was originally written in XNA 1.0 Refresh, and upgraded to XNA 3.1 recently (before 4.0 arrived).  Since I&#8217;ve been using XNA so much lately (mostly working on the <a title="Darkwind Media" href="http://darkwindmedia.com" target="_blank">Darkwind Media</a> game <a title="Blocks" href="http://blocksthegame.com" target="_blank">Blocks</a>), it might be nice to start over in C++ &amp; DirectX 10.  I&#8217;ve been itching to do something in that area again, and I think it&#8217;d be fun to improve upon the project that got me into graphics programming.</p>
<p>-Chris</p>
]]></content:encoded>
			<wfw:commentRss>http://what-ev.net/2011/03/07/reflections-on-the-water-demo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dynamic Billboarded Integer Rendering</title>
		<link>http://what-ev.net/2010/06/13/dynamic-billboarded-integer-rendering/</link>
		<comments>http://what-ev.net/2010/06/13/dynamic-billboarded-integer-rendering/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 21:06:48 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[My Graphics Programming]]></category>
		<category><![CDATA[My Stuff]]></category>
		<category><![CDATA[Aliens]]></category>
		<category><![CDATA[graphics programming]]></category>

		<guid isPermaLink="false">http://what-ev.net/?p=115</guid>
		<description><![CDATA[
A few months ago I was working on Aliens and implementing a new scoring system.  I ran into an issue: I needed a way to dynamically render a number (basically a point value) on a billboarded quad.  It had to be dynamic because the value of each item would change based on a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://what-ev.net/wordpress/wp-content/uploads/2010/06/scores.png" target="_blank"><img class="size-medium wp-image-119 alignnone" title="Aliens Dynamic Score 2" src="http://what-ev.net/wordpress/wp-content/uploads/2010/06/scores-300x145.png" alt="Aliens Dynamic Score" width="300" height="145" /></a></p>
<p>A few months ago I was working on Aliens and implementing a new scoring system.  I ran into an issue: I needed a way to dynamically render a number (basically a point value) on a billboarded quad.  It had to be dynamic because the value of each item would change based on a multiplier, which could also change at any time.  I could have done it as a UI element instead of actual geometry, but that didn&#8217;t feel right for the game.  I was committed to having the scores be billboarded quads in the scene.</p>
<p><img class="size-medium wp-image-118   alignright" title="Aliens Dynamic Score" src="http://what-ev.net/wordpress/wp-content/uploads/2010/06/score-261x300.png" alt="Aliens Dynamic Score" width="190" height="218" /></p>
<p>My first thought was to simply render a number to a texture and apply that texture to the quads.  This would work great if I needed few unique numbers.  I could render the current numbers to a few textures, or create a large texture with multiple numbers and map the numbers to different quads.  I quickly realized that this wouldn&#8217;t work for Aliens; if different items were worth different amounts, and your multiplier was frequently changing, the quantity of different numbers that were required would be changing as well.  Since the quads fade in and out, the player could destroy an object worth 500 points, get a multiplier, and then destroy the same type of object which is now worth 1000 points.  Both quads would be on the screen at the same time.  It could get hairy fast.</p>
<p>I needed the whole process to be dynamic, so that I could feed an integer to the shader and have it render.  I wrestled with it for a few days until I came up with the solution I ended up using: If I could get both the number of digits in a number, and any one digit based on the position inside the quad, I could render that number.  The results were exactly what I wanted: Dynamic numbers on geometry in the scene, in a font that matched the rest of the game.</p>
<p>So how does it work?  I&#8217;ve got some shader code below that shows the process.  Several pieces of data are passed in: the number itself, the number of digits, the age of the quad, a scale and a color.  The number, scale and color are self-explanatory.  The number of digits is used in several places.  It could have been calculated in the shader, but it seemed better to calculate it once when the quad was created.  The age of the quad is used to fade it in and out, as well as make it float upwards.  The numbers are pulled from a greyscale texture:</p>
<p><img class="size-full wp-image-116  alignnone" title="Digit Texture" src="http://what-ev.net/wordpress/wp-content/uploads/2010/06/digits.png" alt="Digit Texture" width="512" height="64" /></p>
<p>Below is my vertex shader code.  The first block of code does the billboarding and scaling.  The overall scale and Y position are based on age.  This allows the quad to grow and move upwards over time.  The width is based on the number of digits that we need to render; the quad auto-adjusts to fit the number.  The BigUV output parameter scales the overall UV by the number of digits, which is used in the pixel shader to determine which digit a particular pixel represents.  There are constants mixed in which adjust the height and alpha (to achieve the exact look I wanted).</p>
<div class="codecolorer-container glsl default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td><div class="glsl codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// Calculate the position</span><br />
scale <span style="color: #000066;">*=</span> 1<span style="color: #000066;">.</span>0f <span style="color: #000066;">+</span> age<span style="color: #000066;">;</span><br />
<span style="color: #333399; font-weight: bold;">output</span><span style="color: #000066;">.</span><span style="color: #006600;">Position</span> <span style="color: #000066;">=</span> mul<span style="color: #000066;">&#40;</span>float4<span style="color: #000066;">&#40;</span><span style="color: #0000ff;">0</span><span style="color: #000066;">,</span> <span style="color: #0000ff;">0</span><span style="color: #000066;">,</span> <span style="color: #0000ff;">0</span><span style="color: #000066;">,</span> <span style="color: #0000ff;">1</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">,</span> mul<span style="color: #000066;">&#40;</span>World<span style="color: #000066;">,</span> View<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span><br />
<span style="color: #333399; font-weight: bold;">output</span><span style="color: #000066;">.</span><span style="color: #006600;">Position</span><span style="color: #000066;">.</span><span style="color: #006600;">x</span> <span style="color: #000066;">+=</span> <span style="color: #333399; font-weight: bold;">input</span><span style="color: #000066;">.</span><span style="color: #006600;">Position</span><span style="color: #000066;">.</span><span style="color: #006600;">x</span> <span style="color: #000066;">*</span> scale <span style="color: #000066;">*</span> numDigits<span style="color: #000066;">;</span><br />
<span style="color: #333399; font-weight: bold;">output</span><span style="color: #000066;">.</span><span style="color: #006600;">Position</span><span style="color: #000066;">.</span><span style="color: #006600;">y</span> <span style="color: #000066;">+=</span> <span style="color: #333399; font-weight: bold;">input</span><span style="color: #000066;">.</span><span style="color: #006600;">Position</span><span style="color: #000066;">.</span><span style="color: #006600;">y</span> <span style="color: #000066;">*</span> scale <span style="color: #000066;">*</span> 1<span style="color: #000066;">.</span>5f <span style="color: #000066;">+</span> <span style="color: #000066;">&#40;</span>15<span style="color: #000066;">.</span>0f <span style="color: #000066;">*</span> age<span style="color: #000066;">&#41;</span> <span style="color: #000066;">+</span> 5<span style="color: #000066;">.</span>0f<span style="color: #000066;">;</span><br />
<span style="color: #333399; font-weight: bold;">output</span><span style="color: #000066;">.</span><span style="color: #006600;">Position</span> <span style="color: #000066;">=</span> mul<span style="color: #000066;">&#40;</span><span style="color: #333399; font-weight: bold;">output</span><span style="color: #000066;">.</span><span style="color: #006600;">Position</span><span style="color: #000066;">,</span> Projection<span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Pass the UVs through</span><br />
<span style="color: #333399; font-weight: bold;">output</span><span style="color: #000066;">.</span><span style="color: #006600;">UV</span> <span style="color: #000066;">=</span> <span style="color: #333399; font-weight: bold;">input</span><span style="color: #000066;">.</span><span style="color: #006600;">UV</span><span style="color: #000066;">;</span><br />
<span style="color: #333399; font-weight: bold;">output</span><span style="color: #000066;">.</span><span style="color: #006600;">BigUV</span> <span style="color: #000066;">=</span> <span style="color: #333399; font-weight: bold;">input</span><span style="color: #000066;">.</span><span style="color: #006600;">UV</span><span style="color: #000066;">.</span><span style="color: #006600;">x</span> <span style="color: #000066;">*</span> numDigits<span style="color: #000066;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Adjust the alpha based on age</span><br />
<span style="color: #333399; font-weight: bold;">output</span><span style="color: #000066;">.</span><span style="color: #006600;">Alpha</span> <span style="color: #000066;">=</span> saturate<span style="color: #000066;">&#40;</span>5<span style="color: #000066;">.</span>0f <span style="color: #000066;">-</span> <span style="color: #993333; font-weight: bold;">abs</span><span style="color: #000066;">&#40;</span>age <span style="color: #000066;">*</span> 10<span style="color: #000066;">.</span>0f <span style="color: #000066;">-</span> 5<span style="color: #000066;">.</span>0f<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span></div></td></tr></tbody></table></div>
<p>The pixel shader code below determines which place the current pixel represents and which digit from the digit texture it needs to sample.</p>
<div class="codecolorer-container glsl default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td><div class="glsl codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// Get the current digit</span><br />
<span style="color: #000066; font-weight: bold;">float</span> place <span style="color: #000066;">=</span> numDigits <span style="color: #000066;">-</span> <span style="color: #993333; font-weight: bold;">floor</span><span style="color: #000066;">&#40;</span><span style="color: #333399; font-weight: bold;">input</span><span style="color: #000066;">.</span><span style="color: #006600;">BigUV</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span><br />
<span style="color: #000066; font-weight: bold;">float</span> digit <span style="color: #000066;">=</span> <span style="color: #993333; font-weight: bold;">floor</span><span style="color: #000066;">&#40;</span><span style="color: #000066;">&#40;</span>number <span style="color: #000066;">%</span> <span style="color: #993333; font-weight: bold;">pow</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">10</span><span style="color: #000066;">,</span> place<span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span> <span style="color: #000066;">/</span> <span style="color: #993333; font-weight: bold;">pow</span><span style="color: #000066;">&#40;</span><span style="color: #0000ff;">10</span><span style="color: #000066;">,</span> place <span style="color: #000066;">-</span> <span style="color: #0000ff;">1</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Calculate the correct U coord</span><br />
<span style="color: #000066; font-weight: bold;">float</span> u <span style="color: #000066;">=</span> <span style="color: #333399; font-weight: bold;">input</span><span style="color: #000066;">.</span><span style="color: #006600;">BigUV</span><span style="color: #000066;">.</span><span style="color: #006600;">x</span> <span style="color: #000066;">-</span> <span style="color: #993333; font-weight: bold;">floor</span><span style="color: #000066;">&#40;</span><span style="color: #333399; font-weight: bold;">input</span><span style="color: #000066;">.</span><span style="color: #006600;">BigUV</span><span style="color: #000066;">.</span><span style="color: #006600;">x</span><span style="color: #000066;">&#41;</span><span style="color: #000066;">;</span><br />
u <span style="color: #000066;">*=</span> 0<span style="color: #000066;">.</span>1f<span style="color: #000066;">;</span><br />
u <span style="color: #000066;">+=</span> digit <span style="color: #000066;">*</span> 0<span style="color: #000066;">.</span>1f<span style="color: #000066;">;</span><br />
<span style="color: #333399; font-weight: bold;">input</span><span style="color: #000066;">.</span><span style="color: #006600;">UV</span><span style="color: #000066;">.</span><span style="color: #006600;">x</span> <span style="color: #000066;">=</span> u<span style="color: #000066;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Return the correct color</span><br />
color<span style="color: #000066;">.</span><span style="color: #006600;">a</span> <span style="color: #000066;">=</span> <span style="color: #333399; font-weight: bold;">input</span><span style="color: #000066;">.</span><span style="color: #006600;">Alpha</span><span style="color: #000066;">;</span><br />
<span style="color: #000000; font-weight: bold;">return</span> tex2D<span style="color: #000066;">&#40;</span>digitSampler<span style="color: #000066;">,</span> <span style="color: #333399; font-weight: bold;">input</span><span style="color: #000066;">.</span><span style="color: #006600;">UV</span><span style="color: #000066;">&#41;</span> <span style="color: #000066;">*</span> color<span style="color: #000066;">;</span></div></td></tr></tbody></table></div>
<p><a href="http://what-ev.net/wordpress/wp-content/uploads/2010/06/DynamicBillboardInteger.jpg" target="_blank"><img class="alignright size-thumbnail wp-image-117" title="Dynamic Billboarded Integer Rendering" src="http://what-ev.net/wordpress/wp-content/uploads/2010/06/DynamicBillboardInteger-80x150.jpg" alt="Dynamic Billboarded Integer Rendering" width="80" height="150" /></a></p>
<p>That&#8217;s about it!  I haven&#8217;t really done any optimization, and my math may be a little verbose, but it works pretty well.  I&#8217;ve been meaning to make a post about this for a while, but I haven&#8217;t been working on Aliens since development started on Blocks.  Once Blocks wraps up, I&#8217;ll probably revisit this (and start refactoring most of Aliens).  I made a simple <a href="http://what-ev.net/wordpress/wp-content/uploads/2010/06/DynamicBillboardInteger.jpg" target="_blank">info-graphic</a> on the overall process, which may or may not help visualize what&#8217;s going on.</p>
<p>-Chris</p>
]]></content:encoded>
			<wfw:commentRss>http://what-ev.net/2010/06/13/dynamic-billboarded-integer-rendering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XNA Fur Rendering</title>
		<link>http://what-ev.net/2009/11/22/xna-fur-rendering/</link>
		<comments>http://what-ev.net/2009/11/22/xna-fur-rendering/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 02:24:54 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[My Graphics Programming]]></category>
		<category><![CDATA[fur]]></category>
		<category><![CDATA[graphics programming]]></category>
		<category><![CDATA[tech demo]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://what-ev.net/?p=109</guid>
		<description><![CDATA[I was pretty sick last weekend, and sticking to my odd &#8220;get sick, code something&#8221; habit, I decided to finally try to make a fur rendering demo.  I read a few articles about it years ago, so I knew the general concept behind it: render lots of &#8220;shells&#8221; around the model with an appropriate [...]]]></description>
			<content:encoded><![CDATA[<p>I was pretty sick last weekend, and sticking to my odd &#8220;get sick, code something&#8221; habit, I decided to finally try to make a fur rendering demo.  I read a few articles about it years ago, so I knew the general concept behind it: render lots of &#8220;shells&#8221; around the model with an appropriate fur texture.  The fur texture is basically a transparent texture with dots on it, and as the shells get layered on top of each other, the dots are essentially extruded into individual furs (without having to render each fur individually).</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" 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://www.youtube.com/v/o36G4AiapiE&amp;hl=en_US&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/o36G4AiapiE&amp;hl=en_US&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>I&#8217;ve seen fur effects used in a few games, notably <a href="http://cubemedia.ign.com/media/previews/image/starfoxa/fur1_640w.jpg">Star Fox Adventures</a> for the GameCube, and the more recent <a href="http://image.com.com/gamespot/images/2007/303/915692_20071030_screen109.jpg">Super Mario Galaxy</a> for the Wii.  I have no idea if they are using the same technique, but the Super Mario Galaxy queen bee looks similar.</p>
<p>What really got me thinking about finally starting this demo was an article I found on <a href="http://www.reddit.com">reddit</a>.  The article is from <a href="http://www.xbdev.net">xbdev.net</a>, and is (appropriately) called <a href="http://www.xbdev.net/directx3dx/specialX/Fur/index.php">Generating Fur in DirectX or OpenGL Easily</a>.  While it&#8217;s not the most well-written article I&#8217;ve ever read (especially the comments in the provided code), it has some nice diagrams and screenshots of the technique in progress.  If you&#8217;re interested in learning more about fur rendering, I&#8217;d suggest starting there.</p>
<p>After reading that article, I decided to go for it.  I got the basics up and running pretty quickly.  I added some camera controls and the ability to change a few things on the fly (like the fur length), mostly for testing purposes.  One of the first things you notice with basic fur rendering is that everything is the same color, so you only notice the &#8220;fur&#8221; aspect of it around the edges.  I added some basic N dot L lighting and I modified the fur by the model&#8217;s texture so it wasn&#8217;t all the exactly the same.  This helped a bit, but the hairs were still bleeding into each other and not looking very fur-like.  Clearly some sort of individual fur shading was needed.</p>
<p>I went back to the fur article linked above to check out their shadowing technique.  To be honest, I&#8217;m not 100% sure I even implemented it the way they explained it (which I would have to describe as &#8220;poorly&#8221;).  The gist of it is to re-render each shell, offsetting the texture a bit and making it look like a shadow.  I didn&#8217;t like it from the start.  Double the number of shells that need to be rendered?  No thanks.  I didn&#8217;t need to render an actual shadow of each fur.  I just wanted the fur to get darker the &#8220;deeper&#8221; it was, so that&#8217;s what I did.  The shells closer to the model are rendered a bit darker, and they get brighter as they get further away.  The last piece of this puzzle was to make sure the model itself was rendered slightly darker, giving the illusion that the fur is shading the scalp.</p>
<p>One thing I did implement from the article was the concept of gravity affecting the fur.  Each shell is offset a tiny bit in the negative Y direction (based on a power function) to give the impression that the fur is bending due to gravity.  It&#8217;s a very nice effect, and it was easy to implement.  I decided to take it a step further and make the fur react as you drag the model around.  When you drag it, the fur gets stretched in the opposite direction and slowly interpolates back to its normal &#8220;bent&#8221; position.  It&#8217;s fake physics, but it looks neat.</p>
<p>I&#8217;ve got some plans to continue this the next time I&#8217;m bored.  A few features off the top of my head would be: multiple models &amp; swapping at run time, more controls for different settings (gravity, fur density, etc) and adding a fur length map, so certain sections of the model can have different lengths of fur (or be bald).</p>
<p>UPDATE: I created a newer version of my fur demo using Luster.  This one uses a fur map to mask out non-fur areas.</p>
<p><object width="425" height="349"><param name="movie" value="http://www.youtube.com/v/FqRGM5jWEXQ?fs=1&amp;hl=en_US&amp;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/FqRGM5jWEXQ?fs=1&amp;hl=en_US&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="349"></embed></object></p>
<p>-Chris</p>
]]></content:encoded>
			<wfw:commentRss>http://what-ev.net/2009/11/22/xna-fur-rendering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My World of Warcraft Video</title>
		<link>http://what-ev.net/2009/06/17/my-world-of-warcraft-video/</link>
		<comments>http://what-ev.net/2009/06/17/my-world-of-warcraft-video/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 07:02:05 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[My Videos]]></category>
		<category><![CDATA[Contested]]></category>
		<category><![CDATA[World of Warcraft]]></category>

		<guid isPermaLink="false">http://what-ev.net/?p=78</guid>
		<description><![CDATA[I just did a quick update to include the World of Warcraft video/movie I did.  It won 6th place in the Comedy category of the very first World of Warcraft / Xfire movie contest.  I ended up getting a PCMCIA sound card as a prize.  Woohoo?  I still have the thing [...]]]></description>
			<content:encoded><![CDATA[<p>I just did a quick update to include the World of Warcraft video/movie I did.  It won 6th place in the Comedy category of the very first World of Warcraft / Xfire movie contest.  I ended up getting a PCMCIA sound card as a prize.  Woohoo?  I still have the thing in a drawer somewhere, unopened.</p>
<p>I had actually forgotten all about this movie until today.  Luckily I recently put Windows 7 on my old Alienware laptop, so I was able to get the original video file off of there with no problems.  I even found some old pictures of the setup I used when recording the in-game &#8220;footage&#8221;, so I threw them in the portfolio as well.</p>
<p>I had a lot of fun writing the script, blocking out all the shots and editing everything together.  I definitely learned a lot about the whole process as well.  The biggest lesson was: don&#8217;t try to do it in a weekend.  I had planned on doing it for so long, gave up on the idea right as the contest started, and finally said &#8220;screw it, I&#8217;m doing it&#8221; 4 days before it was due.  I had so much footage to go through, and not enough time to really tighten everything up.  Overall I think it was decent, although I can&#8217;t stand watching it anymore.  All I see are the problems and the areas I wasn&#8217;t satisfied with.  I always meant to do a sequel, or at least another movie, but school has taken up most of my time until recently (when I graduated).</p>
<p>I&#8217;m embedding a version that was uploaded to Google Video below.  I didn&#8217;t actually do the upload; some random person decided to download it from the official movie site and upload it.  Fair enough.  Looks like they uploaded it on March 14th, 2006.  Crazy.  I think I still have a higher resolution version on a hard drive somewhere.</p>
<p><object id="VideoPlayback" style="width: 400px; height: 326px;" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100" height="100" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://video.google.com/googleplayer.swf?docid=1669051560122926368&amp;hl=en&amp;fs=true" /><param name="allowfullscreen" value="true" /><embed id="VideoPlayback" style="width: 400px; height: 326px;" type="application/x-shockwave-flash" width="100" height="100" src="http://video.google.com/googleplayer.swf?docid=1669051560122926368&amp;hl=en&amp;fs=true" allowfullscreen="true"></embed></object></p>
<p>-Chris</p>
]]></content:encoded>
			<wfw:commentRss>http://what-ev.net/2009/06/17/my-world-of-warcraft-video/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arthas Gettin&#8217; Down In Luster</title>
		<link>http://what-ev.net/2009/06/12/arthas-gettin-down-in-luster/</link>
		<comments>http://what-ev.net/2009/06/12/arthas-gettin-down-in-luster/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 01:32:38 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Luster]]></category>
		<category><![CDATA[Arthas]]></category>
		<category><![CDATA[Darkwind Media]]></category>
		<category><![CDATA[tech demo]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://what-ev.net/?p=51</guid>
		<description><![CDATA[
I recently finished up a really cool skeletal animation tech demo for Darkwind.  I was able to get the model of Arthas (aka the Lich King) from World of Warcraft and do my own little animation on it.  I brought the animated model into Luster and added some nice lighting and shadow effects.  These [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://what-ev.net/wordpress/wp-content/uploads/2009/06/arthas_1-300x168.jpg" alt="Arthas in Luster" title="Arthas In Luster" width="300" height="168" class="size-full wp-image-59" /></p>
<p>I recently finished up a really cool skeletal animation tech demo for <a href="http://www.darkwindmedia.com" target="_blank">Darkwind</a>.  I was able to get the model of Arthas (aka the Lich King) from World of Warcraft and do my own little animation on it.  I brought the animated model into <a href="http://www.luster3d.com" target="_blank">Luster</a> and added some nice lighting and shadow effects.  These effects include per-pixel lighting, normal maps, shadows maps and variance shadow maps (VSMs).  There is a <a href="http://www.youtube.com/watch?v=Q5knZEkkG58" target="_blank">video</a> of the <a href="http://luster3d.com/tech_demos/skeletalanimation.php" target="_blank">Skeletal Animation Tech Demo</a> below, and more screenshots available in the <a href="http://luster3d.com/gallery.php" target="_blank">Luster Gallery</a>. </p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" 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://www.youtube.com/v/Q5knZEkkG58&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/Q5knZEkkG58&amp;hl=en&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>I also did a longer <a href="http://darkwindmedia.com/blog/2009/05/28/arthas-of-warcraft-fame-gettin-down-in-luster/" target="_blank">write-up of the whole process</a> on the <a href="http://www.darkwindmedia.com/blog" target="_blank">Darkwind Media blog</a>.</p>
<p>-Chris</p>
]]></content:encoded>
			<wfw:commentRss>http://what-ev.net/2009/06/12/arthas-gettin-down-in-luster/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Dimension Break Video</title>
		<link>http://what-ev.net/2009/05/13/new-dimension-break-video/</link>
		<comments>http://what-ev.net/2009/05/13/new-dimension-break-video/#comments</comments>
		<pubDate>Wed, 13 May 2009 21:19:21 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[My Games]]></category>
		<category><![CDATA[Dimension Break]]></category>
		<category><![CDATA[portals]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://what-ev.net/wordpress/?p=32</guid>
		<description><![CDATA[I finally got around to putting together a video of the old portal tech test I did for Dimension Break.  It&#8217;s nothing fancy, but I&#8217;ve wanted to be able to show it for a while now. I&#8217;d really like to go back and polish it up a bit. Maybe finally implement the more Portal-esque [...]]]></description>
			<content:encoded><![CDATA[<p>I finally got around to putting together a video of the old portal tech test I did for Dimension Break.  It&#8217;s nothing fancy, but I&#8217;ve wanted to be able to show it for a while now. I&#8217;d really like to go back and polish it up a bit. Maybe finally implement the more <em>Portal</em>-esque portals for fun.</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/6UscfH0DMT8&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/6UscfH0DMT8&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>-Chris</p>
]]></content:encoded>
			<wfw:commentRss>http://what-ev.net/2009/05/13/new-dimension-break-video/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dimension Break Video</title>
		<link>http://what-ev.net/2009/04/05/dimension-break-video/</link>
		<comments>http://what-ev.net/2009/04/05/dimension-break-video/#comments</comments>
		<pubDate>Sun, 05 Apr 2009 05:08:35 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[My Games]]></category>
		<category><![CDATA[Dimension Break]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://what-ev.net/wordpress/?p=27</guid>
		<description><![CDATA[I made a video of Dimension Break with some footage I took before the GDC.  I have it up on games.rit.edu, as well as YouTube.

I wish I could have taken some better videos, but the game isn&#8217;t quite ready yet.  Hopefully soon though!
-Chris
]]></description>
			<content:encoded><![CDATA[<p>I made a video of Dimension Break with some footage I took before the GDC.  I have it up on games.rit.edu, as well as YouTube.</p>
<p><object width="425" height="344" data="http://www.youtube.com/v/oe0MjVY04U8&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/oe0MjVY04U8&amp;hl=en&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></p>
<p>I wish I could have taken some better videos, but the game isn&#8217;t quite ready yet.  Hopefully soon though!</p>
<p>-Chris</p>
]]></content:encoded>
			<wfw:commentRss>http://what-ev.net/2009/04/05/dimension-break-video/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

