<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>GFunc( )</title>
	<atom:link href="http://gfunc.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://gfunc.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Tue, 26 Jul 2011 02:38:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='gfunc.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/6f5eebc6d7ee3756c00ae5da8f7d4ad6?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>GFunc( )</title>
		<link>http://gfunc.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://gfunc.wordpress.com/osd.xml" title="GFunc( )" />
	<atom:link rel='hub' href='http://gfunc.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Kung Fu Panda 2 The Video Game</title>
		<link>http://gfunc.wordpress.com/2011/07/01/kung-fu-panda-2-the-video-game/</link>
		<comments>http://gfunc.wordpress.com/2011/07/01/kung-fu-panda-2-the-video-game/#comments</comments>
		<pubDate>Sat, 02 Jul 2011 02:15:54 +0000</pubDate>
		<dc:creator>Gene Walters</dc:creator>
				<category><![CDATA[My Games]]></category>

		<guid isPermaLink="false">http://gfunc.wordpress.com/?p=303</guid>
		<description><![CDATA[My first commercial release! All the hard work and late nights paid off!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gfunc.wordpress.com&amp;blog=9361129&amp;post=303&amp;subd=gfunc&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://gfunc.files.wordpress.com/2011/07/kung-fu-panda-2-poster2.jpg"><img src="http://gfunc.files.wordpress.com/2011/07/kung-fu-panda-2-poster2.jpg?w=200&#038;h=300" alt="" title="Kung Fu Panda 2" width="200" height="300" class="alignleft size-medium wp-image-308" /></a><br />
 <a href="http://www.kungfupanda2videogame.com/" title="Kung Fu Panda2 The Video Game"> My first commercial release!  All the hard work and late nights paid off!</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gfunc.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gfunc.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gfunc.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gfunc.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gfunc.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gfunc.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gfunc.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gfunc.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gfunc.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gfunc.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gfunc.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gfunc.wordpress.com/303/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gfunc.wordpress.com/303/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gfunc.wordpress.com/303/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gfunc.wordpress.com&amp;blog=9361129&amp;post=303&amp;subd=gfunc&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gfunc.wordpress.com/2011/07/01/kung-fu-panda-2-the-video-game/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0e2d089c631a09ca8ae13fa944c22572?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gwalters86</media:title>
		</media:content>

		<media:content url="http://gfunc.files.wordpress.com/2011/07/kung-fu-panda-2-poster2.jpg?w=200" medium="image">
			<media:title type="html">Kung Fu Panda 2</media:title>
		</media:content>
	</item>
		<item>
		<title>Ru8n &#8211; iPhone Game</title>
		<link>http://gfunc.wordpress.com/2010/06/07/iphone-app-update/</link>
		<comments>http://gfunc.wordpress.com/2010/06/07/iphone-app-update/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 09:56:44 +0000</pubDate>
		<dc:creator>Gene Walters</dc:creator>
				<category><![CDATA[My Games]]></category>
		<category><![CDATA[Personal Projects]]></category>

		<guid isPermaLink="false">http://gfunc.wordpress.com/?p=271</guid>
		<description><![CDATA[Introducing Ru8n in the iTunes app store. You help a happy-go-lucky square dude escape death by turning his world (the iPhone) left, right, up and down all while he continually skips to his right. I made the game with my dad . It uses our engine built off of c++, objective c, OpenGLES, XML and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gfunc.wordpress.com&amp;blog=9361129&amp;post=271&amp;subd=gfunc&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Introducing <strong>Ru8n</strong> in the <strong>iTunes app store</strong>.<br />
<img alt="" src="http://i5.photobucket.com/albums/y165/efghijk/photo10.jpg" title="Ru8n Main Menu" class="alignnone" width="320" height="480" /></p>
<p>You help a happy-go-lucky square dude escape death by turning his world (the iPhone) left, right, up and down all while he continually skips to his right.<br />
<img alt="" src="http://i5.photobucket.com/albums/y165/efghijk/photo.jpg" title="Ru8n1" class="alignnone" width="160" height="240" /> <img alt="" src="http://i5.photobucket.com/albums/y165/efghijk/photo7.jpg" title="Ru8n2" class="alignnone" width="160" height="240" /> <img alt="" src="http://i5.photobucket.com/albums/y165/efghijk/photo5.jpg" title="Ru8n3" class="alignnone" width="160" height="240" /><br />
I made the game with my dad <img src='http://s2.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .  It uses our engine built off of c++, objective c, OpenGLES, XML and OpenAL.<br />
There are 30+ levels each involving different timing puzzles.  Take your time progressing levels or go for a highscore by collecting stars along the way as fast as possible.  OpenFient&#8217;s online gaming community is used to keep track of leaderboards and achievements.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gfunc.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gfunc.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gfunc.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gfunc.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gfunc.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gfunc.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gfunc.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gfunc.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gfunc.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gfunc.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gfunc.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gfunc.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gfunc.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gfunc.wordpress.com/271/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gfunc.wordpress.com&amp;blog=9361129&amp;post=271&amp;subd=gfunc&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gfunc.wordpress.com/2010/06/07/iphone-app-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0e2d089c631a09ca8ae13fa944c22572?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gwalters86</media:title>
		</media:content>

		<media:content url="http://i5.photobucket.com/albums/y165/efghijk/photo10.jpg" medium="image">
			<media:title type="html">Ru8n Main Menu</media:title>
		</media:content>

		<media:content url="http://i5.photobucket.com/albums/y165/efghijk/photo.jpg" medium="image">
			<media:title type="html">Ru8n1</media:title>
		</media:content>

		<media:content url="http://i5.photobucket.com/albums/y165/efghijk/photo7.jpg" medium="image">
			<media:title type="html">Ru8n2</media:title>
		</media:content>

		<media:content url="http://i5.photobucket.com/albums/y165/efghijk/photo5.jpg" medium="image">
			<media:title type="html">Ru8n3</media:title>
		</media:content>
	</item>
		<item>
		<title>iPhone App</title>
		<link>http://gfunc.wordpress.com/2010/03/10/iphone-app/</link>
		<comments>http://gfunc.wordpress.com/2010/03/10/iphone-app/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 14:13:37 +0000</pubDate>
		<dc:creator>Gene Walters</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://gfunc.wordpress.com/?p=257</guid>
		<description><![CDATA[I have been really busy working on my iPhone game. I am enjoying: 1) iPhone SDK 2) XCode 3) OpenGL ES We expect a July 2010 release. &#8230; more on that soon &#8230;<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gfunc.wordpress.com&amp;blog=9361129&amp;post=257&amp;subd=gfunc&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have been really busy working on my iPhone game.<br />
I am enjoying:<br />
1) iPhone SDK<br />
2) XCode<br />
3) OpenGL ES</p>
<p>We expect a July 2010 release.</p>
<p>&#8230; more on that soon &#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gfunc.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gfunc.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gfunc.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gfunc.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gfunc.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gfunc.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gfunc.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gfunc.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gfunc.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gfunc.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gfunc.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gfunc.wordpress.com/257/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gfunc.wordpress.com/257/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gfunc.wordpress.com/257/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gfunc.wordpress.com&amp;blog=9361129&amp;post=257&amp;subd=gfunc&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gfunc.wordpress.com/2010/03/10/iphone-app/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0e2d089c631a09ca8ae13fa944c22572?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gwalters86</media:title>
		</media:content>
	</item>
		<item>
		<title>Engine Update</title>
		<link>http://gfunc.wordpress.com/2009/12/02/cs562-engine-update/</link>
		<comments>http://gfunc.wordpress.com/2009/12/02/cs562-engine-update/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 09:28:02 +0000</pubDate>
		<dc:creator>Gene Walters</dc:creator>
				<category><![CDATA[Personal Projects]]></category>
		<category><![CDATA[School Projects]]></category>

		<guid isPermaLink="false">http://gfunc.wordpress.com/?p=225</guid>
		<description><![CDATA[Here&#8217;s an update on the graphics engine I am building for my last class at DigiPen. Model loading, MTR managing, camera controls, texture managing and fragment/vertex/geometry shaders are all handled by yours truly. One focus I had on this particular engine was setting up a fast/user-friendly post processing system. I&#8217;v implemented a system of string-recognized [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gfunc.wordpress.com&amp;blog=9361129&amp;post=225&amp;subd=gfunc&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s an update on the graphics engine I am building for my last class at DigiPen.  Model loading, <a href="http://www.gamedev.net/reference/articles/article2333.asp">MTR managing</a>, camera controls, texture managing and fragment/vertex/geometry shaders are all handled by yours truly.  One focus I had on this particular engine was setting up a fast/user-friendly post processing system.  I&#8217;v implemented a system of string-recognized render buffers and post processing fragment shaders that can be chained along to stack post-processing effects until you&#8217;ve reach your final picture.  Instead of drudging through having to bind FBOs, igniting shader programs and sending uniforms etc., this allows the user to simply say&#8230; <code>PostProcess( "MyScene", "ToneMapShader", "MyHDRScene" );</code>.  Where &#8220;MyScene&#8221; is the name of the render target you want to be shaded using &#8220;ToneMapShader&#8221; and then store the output into &#8220;MyHDRScene&#8221;.  All that is required is an offline step where the user verifies all that is needed by the shader.<br />
Also by going through my system, instructions to GPU are saved by only updating the graphics pipeline when necessary.  I can keep track of the current GPU state and thus save time such that if someone wanted to use the same texture sampler on TEXTURE2&#8242;s unit there&#8217;s no need to re-bind the texture thus saving communication time on the slow bus between CPU and GPU.  This can save loads of time and any good graphics engineer needs to be weary of GPU state changes; especially changing shader programs which my system also handles.<br />
This demonstration is ready to run on an <a href="http://www.nvidia.com/page/geforce_6600.html">Nvidia 6600GT</a>.<br />
<span style="text-align:center; display: block;"><a href="http://gfunc.wordpress.com/2009/12/02/cs562-engine-update/"><img src="http://img.youtube.com/vi/9rvcvLnJqvw/2.jpg" alt="" /></a></span></p>
<p><em>Extra Features in Demo:</em><br />
Beside self-shadowing parallax, I was able to get global shadow maps to work with the parallax occlusion.  Because parallax mapping actually takes place on flat geometry, depth comparisons with the light buffer will conclude that something parallaxed is in shadow when it really isn&#8217;t; this causes &#8220;floating&#8221; shadows where no matter how steep the parallax-occlusion becomes, the shadow test still determines shade with the flat piece of geometry.  I modified the G-Buffer such that when an object is using parallax-mapping, I alter it&#8217;s world-space position in the G-Buffer.  This is easy to do via shaders by simply moving the world-space position along the object&#8217;s normal*parallax_value.</p>
<p><a href="http://www.talula.demon.co.uk/DeferredShading.pdf">Deferred Lighting</a><br />
<a href="developer.amd.com/media/gpu_assets/Tatarchuk-POM-SI3D06.pdf">Steep Parallax Mapping with Soft Shadows</a><br />
<a href="http://www.punkuser.net/vsm/vsm_paper.pdf">Variance Shadow Maps</a><br />
<a href="http://http.developer.nvidia.com/GPUGems3/gpugems3_ch27.html">Screen Space Motion Blur</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gfunc.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gfunc.wordpress.com/225/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gfunc.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gfunc.wordpress.com/225/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gfunc.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gfunc.wordpress.com/225/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gfunc.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gfunc.wordpress.com/225/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gfunc.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gfunc.wordpress.com/225/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gfunc.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gfunc.wordpress.com/225/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gfunc.wordpress.com/225/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gfunc.wordpress.com/225/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gfunc.wordpress.com&amp;blog=9361129&amp;post=225&amp;subd=gfunc&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gfunc.wordpress.com/2009/12/02/cs562-engine-update/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0e2d089c631a09ca8ae13fa944c22572?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gwalters86</media:title>
		</media:content>
	</item>
		<item>
		<title>hacked slerp</title>
		<link>http://gfunc.wordpress.com/2009/11/19/hacked-slerp/</link>
		<comments>http://gfunc.wordpress.com/2009/11/19/hacked-slerp/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 02:06:15 +0000</pubDate>
		<dc:creator>Gene Walters</dc:creator>
				<category><![CDATA[Personal Projects]]></category>

		<guid isPermaLink="false">http://gfunc.wordpress.com/?p=191</guid>
		<description><![CDATA[I don&#8217;t want to turn this to a blog about quaternions, but if you are familiar with animation you&#8217;ve probably had your fair share of quaternions. Spherical linear interpolation AKA slerp is then used to interpolate between two orientations ( quaternions ). Your generic slerp function would look something like this&#8230; Quaternion Slerp( const Quaternion&#38; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gfunc.wordpress.com&amp;blog=9361129&amp;post=191&amp;subd=gfunc&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t want to turn this to a blog about quaternions, but if you are familiar with animation you&#8217;ve probably had your fair share of quaternions. Spherical linear interpolation AKA <em>slerp</em> is then used to interpolate between two orientations ( quaternions ).  Your generic slerp function would look something like this&#8230;</p>
<pre>
Quaternion Slerp( const Quaternion&amp; lhs, const Quaternion&amp; rhs, float t )
{
   float cosAlpha = lhs.Dot( rhs );
   Quaternion r = rhs;

   if( cosAlpha &lt; 0.0f )
   { // if cos(alpha) is positive, then the path from q1 to q2 is shorter.
       r = -1.0f*r;
   }
   cosAlpha = lhs.Dot( r );

   float alpha = acos( cosAlpha );
   if( fabs( alpha ) &lt; epsilon )
   { //&lt; these quaternions are too close to slerp between.
       return lhs;
   }
   float a = sin( ( 1.0f - t ) * alpha ) / sin( alpha );
   float b = sin( t*alpha ) / sin( alpha );
   Quaternion q = a*lhs + b*r;

   q.Normalize(); //&lt; we want a unit quaternion
   return q;
}
</pre>
<p>Lots of slow trig functions for hundreds of slerps can really bog you down.<br />
Well, <a href="http://www.number-none.com/product/Hacking%20Quaternions/index.html">this article by Jonathan Blow</a> has a nice hack that approximates slerp.  It uses generic lerp between two quaternions and then normalizes the quaternion to project it back onto the unit sphere.<br />
Our new code looks something like&#8230;<br />
<PRE>
Quaternion Slerp( const Quaternion&amp; lhs, const Quaternion&amp; rhs, float t )
{
   Quaternion hackQuat;
   hackQuat.x = lhs.x + t*(rhs.x &#8211; lhs.x);
   hackQuat.y = lhs.y + t*(rhs.y &#8211; lhs.y);
   hackQuat.z = lhs.z + t*(rhs.z &#8211; lhs.z);
   hackQuat.w = lhs.w + t*(rhs.w &#8211; lhs.w);

   hackQuat.Normalize();
   return hackQuat;
}
</pre><br />
Unfortunately, where slerp moves through at constant speed, linear interpolation moves quickly at the endpoints and slowly in the middle; worst case being where the original angle b/t quaternions is 90degrees.  They fix this by "splining" <em>t</em> to compensate for the speed issues.<br />
I decided to put both methods to the test in my homemade animation loader/updater/viewer!  Each bone only has a maximum of 16 keyframes creating pretty decent angles between orientations.  Can you tell which is which?!</p>
<p><span style="text-align:center; display: block;"><a href="http://gfunc.wordpress.com/2009/11/19/hacked-slerp/"><img src="http://img.youtube.com/vi/55AKLDWHhTE/2.jpg" alt="" /></a></span><br />
Of course, a better method would be to just implement incremental slerp which is both computationally fast and takes care of any speed issues.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gfunc.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gfunc.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gfunc.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gfunc.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gfunc.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gfunc.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gfunc.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gfunc.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gfunc.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gfunc.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gfunc.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gfunc.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gfunc.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gfunc.wordpress.com/191/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gfunc.wordpress.com&amp;blog=9361129&amp;post=191&amp;subd=gfunc&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gfunc.wordpress.com/2009/11/19/hacked-slerp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0e2d089c631a09ca8ae13fa944c22572?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gwalters86</media:title>
		</media:content>
	</item>
		<item>
		<title>Soft Particles</title>
		<link>http://gfunc.wordpress.com/2009/11/16/soft-particles/</link>
		<comments>http://gfunc.wordpress.com/2009/11/16/soft-particles/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 06:26:14 +0000</pubDate>
		<dc:creator>Gene Walters</dc:creator>
				<category><![CDATA[Personal Projects]]></category>

		<guid isPermaLink="false">http://gfunc.wordpress.com/?p=138</guid>
		<description><![CDATA[Particles are used everywhere in games for transparent objects like smoke, fog, dust etc; they can potentially add a lot of extra detail and polish. If you&#8217;ve ever added particles to your game you&#8217;d notice that one major problem is that they produce ugly artifacts and unnaturally sharp edges where they intersect the rest of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gfunc.wordpress.com&amp;blog=9361129&amp;post=138&amp;subd=gfunc&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Particles are used everywhere in games for transparent objects like smoke, fog, dust etc; they can potentially add a lot of extra detail and polish.  If you&#8217;ve ever added particles to your game you&#8217;d notice that one major problem is that they produce ugly artifacts and unnaturally sharp edges where they intersect the rest of the scene ( see below ).<br />
<a href="http://gfunc.files.wordpress.com/2009/11/softparticle_hard.jpg"><img src="http://gfunc.files.wordpress.com/2009/11/softparticle_hard.jpg?w=655&#038;h=491" alt="" title="Hard Particle" width="655" height="491" class="aligncenter size-full wp-image-139" /></a></p>
<p>Implementing soft particles is a way to alleviate the harsh collision that occurs between particle sprites and existing geometry.  If you are doing deferred rendering you probably already have some way of retrieving your scene&#8217;s depth buffer.  While rendering the particles into your scene, alpha blend out fragments who&#8217;s depth is close the the existing scene&#8217;s depth.  You can make a simple fade out function such as:<br />
D = clamp( ( Zscene – Zparticle ) * scale, 0.0, 1.0 ).</p>
<p><a href="http://developer.download.nvidia.com/whitepapers/2007/SDK10/SoftParticles_hi.pdf">Nvidia&#8217;s article on soft particles</a>, however, recommends using a piecewise function or a smoother function to create a nicer fadeout.  Here is my soft particle using a smoothing curve.<br />
<a href="http://gfunc.files.wordpress.com/2009/11/softparticle_soft1.jpg"><img src="http://gfunc.files.wordpress.com/2009/11/softparticle_soft1.jpg?w=655&#038;h=491" alt="" title="Soft Particle" width="655" height="491" class="aligncenter size-full wp-image-142" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gfunc.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gfunc.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gfunc.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gfunc.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gfunc.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gfunc.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gfunc.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gfunc.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gfunc.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gfunc.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gfunc.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gfunc.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gfunc.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gfunc.wordpress.com/138/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gfunc.wordpress.com&amp;blog=9361129&amp;post=138&amp;subd=gfunc&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gfunc.wordpress.com/2009/11/16/soft-particles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0e2d089c631a09ca8ae13fa944c22572?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gwalters86</media:title>
		</media:content>

		<media:content url="http://gfunc.files.wordpress.com/2009/11/softparticle_hard.jpg" medium="image">
			<media:title type="html">Hard Particle</media:title>
		</media:content>

		<media:content url="http://gfunc.files.wordpress.com/2009/11/softparticle_soft1.jpg" medium="image">
			<media:title type="html">Soft Particle</media:title>
		</media:content>
	</item>
		<item>
		<title>Too Much is Never Good</title>
		<link>http://gfunc.wordpress.com/2009/11/14/motion-blur-badness/</link>
		<comments>http://gfunc.wordpress.com/2009/11/14/motion-blur-badness/#comments</comments>
		<pubDate>Sat, 14 Nov 2009 12:03:52 +0000</pubDate>
		<dc:creator>Gene Walters</dc:creator>
				<category><![CDATA[Personal Projects]]></category>

		<guid isPermaLink="false">http://gfunc.wordpress.com/?p=131</guid>
		<description><![CDATA[Funny things can happen if one shader calculation goes wrong. I was making a screen space motion blur post-proc effect in glsl. I sent the current world-to-view matrix and the previous world-to-view matrix to the PS to find out the pixels previous and current screen-space position from that and blur along the resultant vector. if [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gfunc.wordpress.com&amp;blog=9361129&amp;post=131&amp;subd=gfunc&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Funny things can happen if one shader calculation goes wrong. I was making a screen space motion blur post-proc effect in glsl. I sent the current world-to-view matrix and the previous world-to-view matrix to the PS to find out the pixels previous and current screen-space position from that and blur along the resultant vector. if you happen to accidentally scale that vector, fun ensues!<br />
<span style="text-align:center; display: block;"><a href="http://gfunc.wordpress.com/2009/11/14/motion-blur-badness/"><img src="http://img.youtube.com/vi/ooUVDETsYm0/2.jpg" alt="" /></a></span><br />
Maybe I&#8217;ll use this accident for a dizzy/drugged effect in my next game.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gfunc.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gfunc.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gfunc.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gfunc.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gfunc.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gfunc.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gfunc.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gfunc.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gfunc.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gfunc.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gfunc.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gfunc.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gfunc.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gfunc.wordpress.com/131/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gfunc.wordpress.com&amp;blog=9361129&amp;post=131&amp;subd=gfunc&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gfunc.wordpress.com/2009/11/14/motion-blur-badness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0e2d089c631a09ca8ae13fa944c22572?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gwalters86</media:title>
		</media:content>
	</item>
		<item>
		<title>Deferred Lighting, SSAO, VSM, SSMotionBlur, Steep Parallax v1.1</title>
		<link>http://gfunc.wordpress.com/2009/11/10/deferred-lighting-ssao-vsm-ssmotionblur-steep-parallax-v1-1/</link>
		<comments>http://gfunc.wordpress.com/2009/11/10/deferred-lighting-ssao-vsm-ssmotionblur-steep-parallax-v1-1/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 04:00:38 +0000</pubDate>
		<dc:creator>Gene Walters</dc:creator>
				<category><![CDATA[Personal Projects]]></category>
		<category><![CDATA[School Projects]]></category>

		<guid isPermaLink="false">http://gfunc.wordpress.com/?p=125</guid>
		<description><![CDATA[These titles are getting rather long, but this is just an update to my previous post for a project in my CS562 class. SSAO works on the parallax mapping for free which is pretty nice.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gfunc.wordpress.com&amp;blog=9361129&amp;post=125&amp;subd=gfunc&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>These titles are getting rather long, but this is just an update to my previous post for a project in my CS562 class.  SSAO works on the parallax mapping for free which is pretty nice.</p>
<span style="text-align:center; display: block;"><a href="http://gfunc.wordpress.com/2009/11/10/deferred-lighting-ssao-vsm-ssmotionblur-steep-parallax-v1-1/"><img src="http://img.youtube.com/vi/ksaEWg79zG0/2.jpg" alt="" /></a></span>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gfunc.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gfunc.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gfunc.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gfunc.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gfunc.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gfunc.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gfunc.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gfunc.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gfunc.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gfunc.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gfunc.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gfunc.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gfunc.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gfunc.wordpress.com/125/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gfunc.wordpress.com&amp;blog=9361129&amp;post=125&amp;subd=gfunc&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gfunc.wordpress.com/2009/11/10/deferred-lighting-ssao-vsm-ssmotionblur-steep-parallax-v1-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0e2d089c631a09ca8ae13fa944c22572?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gwalters86</media:title>
		</media:content>
	</item>
		<item>
		<title>Deferred Lighting + SSAO + VSM v1.0</title>
		<link>http://gfunc.wordpress.com/2009/11/05/deferred-lighting-ssao-vsm-v1-0/</link>
		<comments>http://gfunc.wordpress.com/2009/11/05/deferred-lighting-ssao-vsm-v1-0/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 08:27:56 +0000</pubDate>
		<dc:creator>Gene Walters</dc:creator>
				<category><![CDATA[Personal Projects]]></category>
		<category><![CDATA[School Projects]]></category>

		<guid isPermaLink="false">http://gfunc.wordpress.com/2009/11/05/deferred-lighting-ssao-vsm-v1-0/</guid>
		<description><![CDATA[Just an update on a school/personal project. The scene is rendered using deferred lighting, screen space ambient occlusion and variance shadow mapping. There are 300 local lights and 1 global light contributing to all the colors; I just randomly pick the local lights&#8217; position and size to get some interesting looks. Next I want to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gfunc.wordpress.com&amp;blog=9361129&amp;post=114&amp;subd=gfunc&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Just an update on a school/personal project. The scene is rendered using deferred lighting, screen space ambient occlusion and variance shadow mapping. There are 300 local lights and 1 global light contributing to all the colors; I just randomly pick the local lights&#8217; position and size to get some interesting looks.  Next I want to add some textures and implement <a href="http://developer.amd.com/media/gpu_assets/Tatarchuk-POM-SI3D06.pdf">ATI&#8217;s Tatarchuk &#8220;Dynamic Parallax Occlusion Mapping with Approximate Soft Shadows&#8221;</a> for the floor and such =P.</p>
<p>Deferred shading is a shading algorithm where information is stored to several intermediate buffers instead of straight to the color buffer.  Many times, in forward rendering, lighting calculations will be spent on fragments that end up being overwritten by occluding objects in the scene.  The idea behind deferred shading is that we hold off on lighting calculations until needed.  </p>
<p>1) Render all the geometry of your scene to a G-Buffer.  The G-Buffer will hold fragment normals, positions and any other information you&#8217;d need to have later on for your lighting calculation.  Usually the following step-up will get you far enough along to see some results&#8230;<br />
Render Target1: gl_FragData[0] = 3DPosition.x, 3DPosition.y, 3DPosition.z, Free<br />
Render Target2: gl_FragData[1] = Diffuse.r, Diffuse.g, Diffuse.b, Specular<br />
Render Target3: gl_FragData[2] = Normal.x, Normal.y, Normal.z, Free<br />
However, you&#8217;ll want to optimize this setup based on your hardware caps.<br />
<em>Tip: Storing only Normal.x and Normal.y you can re-derive Normal.z later knowing that it has unit length.</em><br />
<em>Tip: You derive Position.xyz for each pixel by using 2D screen coordinates and a reconstructed linear depth.</em><br />
2) Now that you have the G-Buffer you can run your global lighting shader by passing in the G-Buffer and exciting each pixel on the screen with a full-screen quad.  The global lighting shader will use the information from the g-buffer to light everything on screen.<br />
3) Local lighting works the same way.  &#8220;Excite&#8221; only the pixels you want to light by rending small spheres or cones or whatever.  This will, in-turn, ignite the fragment shader to work on only parts of the scene that are effected by each local light.<br />
4) Sky&#8217;s the limit&#8230;  do what ever post-processing effect you want.  Just know that the idea here is <strong>run calculation on as few pixels as possible</strong>.  If you have 100 HUGE local lights that fill the entire screen 100xtimes over, you&#8217;re missing the point.<br />
There are many optimizations to be have, I&#8217;ll touch on these later.</p>
<span style="text-align:center; display: block;"><a href="http://gfunc.wordpress.com/2009/11/05/deferred-lighting-ssao-vsm-v1-0/"><img src="http://img.youtube.com/vi/pwpezZxiVmQ/2.jpg" alt="" /></a></span>
<p>PS: I created the cloth using springs and Verlet integration.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gfunc.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gfunc.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gfunc.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gfunc.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gfunc.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gfunc.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gfunc.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gfunc.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gfunc.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gfunc.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gfunc.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gfunc.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gfunc.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gfunc.wordpress.com/114/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gfunc.wordpress.com&amp;blog=9361129&amp;post=114&amp;subd=gfunc&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gfunc.wordpress.com/2009/11/05/deferred-lighting-ssao-vsm-v1-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0e2d089c631a09ca8ae13fa944c22572?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gwalters86</media:title>
		</media:content>
	</item>
		<item>
		<title>Hierarchical Occlusion Maps</title>
		<link>http://gfunc.wordpress.com/2009/10/25/hierarchical-occlusion-maps/</link>
		<comments>http://gfunc.wordpress.com/2009/10/25/hierarchical-occlusion-maps/#comments</comments>
		<pubDate>Sun, 25 Oct 2009 08:43:28 +0000</pubDate>
		<dc:creator>Gene Walters</dc:creator>
				<category><![CDATA[School Projects]]></category>

		<guid isPermaLink="false">http://gfunc.wordpress.com/?p=111</guid>
		<description><![CDATA[1) A pre-process step concludes which objects will make good occluders; 2) after which these &#8220;big guys&#8217;&#8221; AABB is rendered to the scene each frame in low resolution. 3) Using depth and stencil information we can then figure out which objects are occluded from the occluders using simple AABB calculations. This technique works great to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gfunc.wordpress.com&amp;blog=9361129&amp;post=111&amp;subd=gfunc&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>1) A pre-process step concludes which objects will make good occluders;<br />
2) after which these &#8220;big guys&#8217;&#8221; AABB is rendered to the scene each frame in low resolution.<br />
3) Using depth and stencil information we can then figure out which objects are occluded from the occluders using simple AABB calculations.<br />
This technique works great to cull out complex objects in scenes where one object can play a significant roll in occluding others ( ie., forest canopy ).<br />
<span style="text-align:center; display: block;"><a href="http://gfunc.wordpress.com/2009/10/25/hierarchical-occlusion-maps/"><img src="http://img.youtube.com/vi/YSE-vAMAd2c/2.jpg" alt="" /></a></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gfunc.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gfunc.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gfunc.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gfunc.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gfunc.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gfunc.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gfunc.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gfunc.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gfunc.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gfunc.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gfunc.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gfunc.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gfunc.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gfunc.wordpress.com/111/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gfunc.wordpress.com&amp;blog=9361129&amp;post=111&amp;subd=gfunc&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gfunc.wordpress.com/2009/10/25/hierarchical-occlusion-maps/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0e2d089c631a09ca8ae13fa944c22572?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gwalters86</media:title>
		</media:content>
	</item>
	</channel>
</rss>
