<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><!--Generated by Squarespace Site Server v5.11.81 (http://www.squarespace.com/) on Tue, 15 Nov 2011 04:35:54 GMT--><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Dave Prout - Hack This</title><link>http://www.daveprout.com/hack-this/</link><description /><lastBuildDate>Tue, 15 Nov 2011 04:23:08 +0000</lastBuildDate><copyright /><language>en-US</language><generator>Squarespace Site Server v5.11.81 (http://www.squarespace.com/)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/HackThis" /><feedburner:info uri="hackthis" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>Halo: Anniversary</title><dc:creator>Dave Prout</dc:creator><pubDate>Tue, 15 Nov 2011 03:21:27 +0000</pubDate><link>http://feedproxy.google.com/~r/HackThis/~3/GIo-JyY4xRM/halo-anniversary.html</link><guid isPermaLink="false">481292:5483966:13726004</guid><description>&lt;p&gt;&lt;strong&gt;LAUNCHING TONIGHT!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://marketplace.xbox.com/en-US/Product/Halo-Combat-Evolved-Anniversary/66acd000-77fe-1000-9115-d8024d5309b1"&gt;Halo Anniversary&lt;/a&gt; is the 10 year remake of the original Halo: Combat Evolved. &amp;nbsp;&lt;a href="http://www.microsoft-careers.com/go/343-Industries-Jobs/190537/"&gt;Microsoft's 343 Industries&lt;/a&gt; worked with us (&lt;a href="http://www.certainaffinity.com/"&gt;Certain Affinity&lt;/a&gt;) for the&lt;strong&gt; Multiplayer&lt;/strong&gt; and &lt;a href="http://www.saber3d.com/"&gt;Saber Interactive&lt;/a&gt; for the&lt;strong&gt; Single Player&lt;/strong&gt; campaign.&lt;/p&gt;
&lt;p&gt;Here are a bunch of goodies, all in one place.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;FUN FACTS:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There are easter eggs in the MP maps - look for them!&lt;/li&gt;
&lt;li&gt;Certain Affinity used the Halo:Reach engine to create the Multiplayer experience&lt;/li&gt;
&lt;li&gt;This is our third launch for 2011. &amp;nbsp;&lt;a href="http://www.crimsonalliance.com/"&gt;Crimson Alliance&lt;/a&gt; launched in September on XBLA, and it's doing very well. &amp;nbsp;&lt;a href="http://www.wired.com/gamelife/2011/05/343-industries-halo/"&gt;Halo: Reach: Defiant&lt;/a&gt; launched in the spring to a great reception as well.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;REVIEWS&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Destructoid [9.0] - &lt;a href="http://bit.ly/sGeTq6"&gt;http://bit.ly/sGeTq6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;IGN [8.0] - &lt;a href="http://bit.ly/vPDc5r"&gt;http://bit.ly/vPDc5r&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Edge [9.0] - &lt;a href="http://bit.ly/sT4n2p"&gt;http://bit.ly/sT4n2p&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;VIDEOS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(Below videos were captured prior to the "finishing" pass on each of the maps)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Multiplayer ViDoc (Certain Affinity)&lt;/p&gt;
&lt;p&gt;&lt;object style="height: 390px; width: 640px"&gt;&lt;param name="movie" value="http://www.youtube.com/v/NGaAT9YnGCQ?version=3&amp;feature=player_detailpage"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/NGaAT9YnGCQ?version=3&amp;feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;"High Noon" (remake of "Hang 'em High")&lt;/p&gt;
&lt;p&gt;&lt;object style="height: 390px; width: 640px"&gt;&lt;param name="movie" value="http://www.youtube.com/v/fthwBbP11QA?version=3&amp;feature=player_detailpage"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/fthwBbP11QA?version=3&amp;feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;"Battle Creek" (remake of "Beaver Creek")&lt;/p&gt;
&lt;p&gt;&lt;object style="height: 390px; width: 640px"&gt;&lt;param name="movie" value="http://www.youtube.com/v/fUvCUMEwxmc?version=3&amp;feature=player_detailpage"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/fUvCUMEwxmc?version=3&amp;feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;"Pennance" (remake of "Damnation")&lt;/p&gt;
&lt;p&gt;&lt;object style="height: 390px; width: 640px"&gt;&lt;param name="movie" value="http://www.youtube.com/v/GTp8A6jcJi4?version=3&amp;feature=player_detailpage"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/GTp8A6jcJi4?version=3&amp;feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;"Solitary" (remake of "Prisoner")&lt;/p&gt;
&lt;p&gt;&lt;object style="height: 390px; width: 640px"&gt;&lt;param name="movie" value="http://www.youtube.com/v/h_xK5GgxeSc?version=3&amp;feature=player_detailpage"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/h_xK5GgxeSc?version=3&amp;feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;"Breakneck" (remake of "Headlong")&lt;/p&gt;
&lt;p&gt;&lt;object style="height: 390px; width: 640px"&gt;&lt;param name="movie" value="http://www.youtube.com/v/oK6fZtmEhGc?version=3&amp;feature=player_detailpage"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/oK6fZtmEhGc?version=3&amp;feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;"Ridgeline" (remake of "Timberland")&lt;/p&gt;
&lt;p&gt;&lt;object style="height: 390px; width: 640px"&gt;&lt;param name="movie" value="http://www.youtube.com/v/_drexlGrKZQ?version=3&amp;feature=player_detailpage"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/_drexlGrKZQ?version=3&amp;feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;"Installation 04" (Firefight version of "Reunion Tour" from the original Campaign)&lt;/p&gt;
&lt;p&gt;&lt;object style="height: 390px; width: 640px"&gt;&lt;param name="movie" value="http://www.youtube.com/v/YiF5m4m02NM?version=3&amp;feature=player_detailpage"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/YiF5m4m02NM?version=3&amp;feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;As always, development is an exciting road, and this game was no exception. &amp;nbsp;Check it out, and post back here with your thoughts if you like!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/HackThis/~4/GIo-JyY4xRM" height="1" width="1"/&gt;</description><wfw:commentRss>http://www.daveprout.com/hack-this/rss-comments-entry-13726004.xml</wfw:commentRss><feedburner:origLink>http://www.daveprout.com/hack-this/2011/11/14/halo-anniversary.html</feedburner:origLink></item><item><title>Halo Reach: Defiant / Behind the Scenes</title><dc:creator>Dave Prout</dc:creator><pubDate>Wed, 16 Mar 2011 03:15:43 +0000</pubDate><link>http://feedproxy.google.com/~r/HackThis/~3/7ddRVFZe2Yc/halo-reach-defiant-behind-the-scenes.html</link><guid isPermaLink="false">481292:5483966:10807287</guid><description>&lt;iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/RcAGExpiYe8" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;img src="http://feeds.feedburner.com/~r/HackThis/~4/7ddRVFZe2Yc" height="1" width="1"/&gt;</description><wfw:commentRss>http://www.daveprout.com/hack-this/rss-comments-entry-10807287.xml</wfw:commentRss><feedburner:origLink>http://www.daveprout.com/hack-this/2011/3/15/halo-reach-defiant-behind-the-scenes.html</feedburner:origLink></item><item><title>Halo Reach: Defiant Maps</title><dc:creator>Dave Prout</dc:creator><pubDate>Mon, 14 Feb 2011 14:54:37 +0000</pubDate><link>http://feedproxy.google.com/~r/HackThis/~3/w_aafwZRIRw/halo-reach-defiant-maps.html</link><guid isPermaLink="false">481292:5483966:10475737</guid><description>&lt;p&gt;The curtain has finally been lifted on the project my team at Certain Affinity has been working hard on for the past year. &amp;nbsp;I had the fortune of working as a Tech Art Lead for this project, and it's been a blast!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;object width="640" height="390"&gt;&lt;param name="movie" value="http://www.youtube.com/v/BGdzihZV-IQ&amp;hl=en_US&amp;feature=player_embedded&amp;version=3"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/BGdzihZV-IQ&amp;hl=en_US&amp;feature=player_embedded&amp;version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="390"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;Full Article here:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.joystiq.com/2011/02/14/halo-reach-defiant-map-pack/"&gt;http://www.joystiq.com/2011/02/14/halo-reach-defiant-map-pack/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/HackThis/~4/w_aafwZRIRw" height="1" width="1"/&gt;</description><wfw:commentRss>http://www.daveprout.com/hack-this/rss-comments-entry-10475737.xml</wfw:commentRss><feedburner:origLink>http://www.daveprout.com/hack-this/2011/2/14/halo-reach-defiant-maps.html</feedburner:origLink></item><item><title>UDK Lighting and Post Processing</title><dc:creator>Dave Prout</dc:creator><pubDate>Wed, 31 Mar 2010 20:01:49 +0000</pubDate><link>http://feedproxy.google.com/~r/HackThis/~3/gVBRD55TJlE/udk-lighting-and-post-processing.html</link><guid isPermaLink="false">481292:5483966:7189668</guid><description>&lt;p&gt;I mentioned a week or so ago that I've been working on a &lt;a href="http://eat3d.com/blog/eat-3d/coming-soon-udk-lighting-post-processing-dvd"&gt;new UDK training session&lt;/a&gt; through &lt;a href="http://www.eat3d.com"&gt;Eat3D&lt;/a&gt;. &amp;nbsp;It's now headed into production - be sure to check it out!&lt;/p&gt;
&lt;p&gt;&lt;span class="full-image-block ssNonEditable"&gt;&lt;span&gt;&lt;a href="http://eat3d.com/blog/eat-3d/coming-soon-udk-lighting-post-processing-dvd"&gt;&lt;img src="http://www.daveprout.com/storage/blog_news_udk_lighting_rel.jpg?__SQUARESPACE_CACHEVERSION=1270065908581" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://eat3d.com/blog/eat-3d/coming-soon-udk-lighting-post-processing-dvd"&gt;UDK Lighting and Post Processing - Eat3D&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/HackThis/~4/gVBRD55TJlE" height="1" width="1"/&gt;</description><wfw:commentRss>http://www.daveprout.com/hack-this/rss-comments-entry-7189668.xml</wfw:commentRss><feedburner:origLink>http://www.daveprout.com/hack-this/2010/3/31/udk-lighting-and-post-processing.html</feedburner:origLink></item><item><title>Photoshop Folder Batches</title><category>Tips and Tricks</category><category>images in folder</category><category>photoshop</category><category>photoshop batch</category><dc:creator>Dave Prout</dc:creator><pubDate>Fri, 12 Mar 2010 17:40:51 +0000</pubDate><link>http://feedproxy.google.com/~r/HackThis/~3/Qsv4CBapA98/photoshop-folder-batches.html</link><guid isPermaLink="false">481292:5483966:6990104</guid><description>&lt;p&gt;Been head-down for a couple of weeks; I've been earnestly working on some material for &lt;a href="http://www.eat3D.com"&gt;eat3D&lt;/a&gt;, so I've been preoccupied. &amp;nbsp;So I thought I'd poke my head up for a simple trick.&lt;/p&gt;
&lt;p&gt;From time to time, I have a ton of bitmap files I need to adjust in some way (anyone remember &lt;a href="http://www.debabelizer.com/"&gt;Debabelizer&lt;/a&gt;?). &amp;nbsp;Photoshop has a feature to run an action on all of the images in a given folder. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;Here's how to do it:&lt;/p&gt;
&lt;p&gt;&lt;span class="full-image-float-left ssNonEditable"&gt;&lt;span&gt;&lt;img src="http://www.daveprout.com/storage/hack_01.jpg?__SQUARESPACE_CACHEVERSION=1268416464208" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span class="full-image-block ssNonEditable"&gt;&lt;span&gt;&lt;img src="http://www.daveprout.com/storage/hack_02.jpg?__SQUARESPACE_CACHEVERSION=1268416705989" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span class="full-image-block ssNonEditable"&gt;&lt;span&gt;&lt;img src="http://www.daveprout.com/storage/hack_03.jpg?__SQUARESPACE_CACHEVERSION=1268416719652" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;One of those that is occasionally used and often forgotten. &amp;nbsp;Enjoy!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/HackThis/~4/Qsv4CBapA98" height="1" width="1"/&gt;</description><wfw:commentRss>http://www.daveprout.com/hack-this/rss-comments-entry-6990104.xml</wfw:commentRss><feedburner:origLink>http://www.daveprout.com/hack-this/2010/3/12/photoshop-folder-batches.html</feedburner:origLink></item><item><title>Ripples for Free: Sine Wave Water</title><category>Normal Map</category><category>Ripple Shader</category><category>Tips and Tricks</category><category>UDK</category><category>UE3</category><category>Unreal 3</category><category>Unreal Engine 3</category><category>Water Shader</category><dc:creator>Dave Prout</dc:creator><pubDate>Wed, 27 Jan 2010 02:53:36 +0000</pubDate><link>http://feedproxy.google.com/~r/HackThis/~3/0yCYfoUP2vs/ripples-for-free-sine-wave-water.html</link><guid isPermaLink="false">481292:5483966:6439935</guid><description>&lt;p&gt;In early 2008, I had the pleasure of working with several senior graphics engineers at Midway Games Austin. &amp;nbsp;One of them was &lt;a href="http://bit.ly/9OjIgD"&gt;Stephen Baker&lt;/a&gt;, from whom I learned a ton. &amp;nbsp;Though the game ended up being cancelled, some of the solutions we came up with are excellent know-how, worth sharing.&lt;/p&gt;
&lt;p&gt;&lt;span class="full-image-block ssNonEditable"&gt;&lt;span&gt;&lt;img src="http://www.daveprout.com/storage/ripples_image_teaser.jpg?__SQUARESPACE_CACHEVERSION=1264573639608" alt="" /&gt;&lt;/span&gt;&lt;span class="thumbnail-caption" style="width: 700px;"&gt;Epic's DM-Deck map used in this example&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Steve and I worked together on Criminal, which was an open-world game using &lt;a href="http://www.epicgames.com"&gt;Unreal Engine 3&lt;/a&gt; -- an engine which is amazing for games with constrained environments, but struggles with open-world layouts. Needless to say, performance and memory footprint were one of the highest priorities of our lives.&lt;/p&gt;
&lt;p&gt;The credit for this nifty trick goes to Steve, who has given me permission to reproduce it here (thanks Steve!). &amp;nbsp;Be sure to check out &lt;a href="http://sjbaker.org"&gt;Steve's Site as well&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Why do we care about free?&lt;/p&gt;
&lt;p&gt;In particular, a shader which requires a texture (otherwise known as "Maximum Texture Dependency Length", or "M.T.D.L." in UE3) to drive another, is incredibly slow. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt;&amp;nbsp;&lt;em&gt;There is a hidden M.T.D.L. dependency when using the "ReflectionVector" node in the Material Editor --&lt;/em&gt;&lt;em&gt;it will not have the magenta outline&lt;/em&gt;.&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;To quote Steve:&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The problem isn't that the shader has more than one texture - it's that the output of one texture is used (whether directly or indirectly) to drive the texture coordinate for a second texture. &amp;nbsp;I've always called this a "dependant texture" where one texture depends on the other. &amp;nbsp;This is bad because the shader compiler breaks the code up into three bits: &amp;nbsp;Before texture lookup, Texture lookup and After texture lookup. &amp;nbsp;This is so that one GPU processor can be running the "Before" part for one pixel while the texture hardware is looking up the maps for the previous pixel and a different GPU processor is running the "After" part of the pixel before that. &amp;nbsp;That way nobody has to wait while the textures are being looked up. &amp;nbsp;That means that it has to reshuffle your code around so that all of the textures can be looked up at the same time. &amp;nbsp;The texture lookup part can look up a lot of textures in parallel - so putting a modest number of textures into a single shader isn't all that expensive.&lt;br /&gt;&lt;br /&gt;BUT - if you have the texture coordinate input of one map being provided by the output of another map then there is no way to split the program into those three parts because it can't look up the second texture until it's figured out what was in the first one (and maybe done some math on it). &amp;nbsp;So what it has to do is to run the shader in two internal passes where it does the true "Before" part, looks up the first texture, then skips over the "After" part - does a SECOND trip through the "Before" part to run any math that has to be done on the output of the first texture - then it can do the lookup of the second texture and finally run a second "After" bit to. &amp;nbsp;This means that the shader takes at least twice as long as it should - and probably much worse than that because of all of the internal reconfiguring going on.&lt;br /&gt;&lt;br /&gt;Replacing that first texture with some math breaks that double-cost - and makes the shader run at least twice as fast.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here are a couple of videos to compare their motion.&lt;/p&gt;
&lt;p&gt;&lt;object width="601" height="398"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9013505&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=9013505&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="601" height="398"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;&lt;object width="601" height="398"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9013565&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=9013565&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="601" height="398"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;Implemented the standard way in the Material Editor, and a simple puddle can suck entire milliseconds from your GPU time (or if you're less technically inclined, think of it costing a couple of frames per second). &amp;nbsp;Too expensive for a shipping game. &amp;nbsp;BUT....we like rippling water. &amp;nbsp;We like it a lot. &amp;nbsp;And that's why you should care about getting ripples for free. &amp;nbsp;Here's how to do it.&lt;/p&gt;
&lt;p&gt;&lt;span class="thumbnail-image-block ssNonEditable"&gt;&lt;span&gt;&lt;a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fshader_ripples_expensive.jpg%3F__SQUARESPACE_CACHEVERSION%3D1264573760220',1384,2320);"&gt;&lt;img src="http://www.daveprout.com/storage/thumbnails/5459670-5524033-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1264573780217" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="thumbnail-caption" style="width: 250px;"&gt;Expensive Ripples - Shader Graph - click to enlarge&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="thumbnail-image-block ssNonEditable"&gt;&lt;span&gt;&lt;a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fshader_ripples_cheap.jpg%3F__SQUARESPACE_CACHEVERSION%3D1264574144607',1836,2438);"&gt;&lt;img src="http://www.daveprout.com/storage/thumbnails/5459670-5524076-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1264574158686" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="thumbnail-caption" style="width: 250px;"&gt;Cheap Ripples - Shader Graph - click to enlarge&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Again, many thanks to &lt;a href="http://bit.ly/9OjIgD"&gt;Steve&lt;/a&gt;. &amp;nbsp;We can all now have free ripples without fearing the wrath of graphics engineers!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/HackThis/~4/0yCYfoUP2vs" height="1" width="1"/&gt;</description><wfw:commentRss>http://www.daveprout.com/hack-this/rss-comments-entry-6439935.xml</wfw:commentRss><feedburner:origLink>http://www.daveprout.com/hack-this/2010/1/26/ripples-for-free-sine-wave-water.html</feedburner:origLink></item><item><title>Material Post Effects Lab: Distance Color Blending</title><category>Post Process</category><category>Post Processing</category><category>PostFX</category><category>Tips and Tricks</category><category>UDK</category><category>UE3</category><category>Unreal 3</category><category>Unreal Engine 3</category><dc:creator>Dave Prout</dc:creator><pubDate>Tue, 19 Jan 2010 04:51:52 +0000</pubDate><link>http://feedproxy.google.com/~r/HackThis/~3/A6BugbNhN5I/material-post-effects-lab-distance-color-blending.html</link><guid isPermaLink="false">481292:5483966:6364644</guid><description>&lt;p&gt;&lt;span class="thumbnail-image-block ssNonEditable"&gt;As mentioned in past posts, the Unreal Post Effects system is tremendously powerful. &amp;nbsp;One of the least-explored areas of UE3 is material-based post effects, which is simply one of the coolest pieces of the software.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;For this post, I'm using the "DM-Sanctuary" map included in &lt;a href="http://www.epicgames.com/"&gt;Epic's&lt;/a&gt; &lt;a href="http://www.udk.com"&gt;UDK&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;span class="full-image-block ssNonEditable"&gt;&lt;span&gt;&lt;img src="http://www.daveprout.com/storage/shader_pfx_dist_blend_teaser.jpg?__SQUARESPACE_CACHEVERSION=1263875629209" alt="" /&gt;&lt;/span&gt;&lt;span class="thumbnail-caption" style="width: 600px;"&gt;Original Image --&amp;gt; Distance Color Blend Image --&amp;gt; Depth Mask&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Using the Scene Depth node, you can create a realtime depth mask to use in your shader, which I tend to do a lot. &amp;nbsp;One of the quick-and-easy benefits of using a depth mask is that you can tune foreground and background chroma and value independently to dial in the effect you're after.&lt;/p&gt;
&lt;p&gt;&lt;span class="full-image-block ssNonEditable"&gt;&lt;span&gt;&lt;img src="http://www.daveprout.com/storage/shader_pfx_dist_blend_image.jpg?__SQUARESPACE_CACHEVERSION=1263876497278" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;For the purposes of this post, I've created a shader graph that enables foreground- and background-specific colors (currently multiplied), and individual saturation control. &amp;nbsp;The shader graph can easily be modified to control foreground/background brightness as well, or anything else you might dream up. &amp;nbsp;(See the link at the end of this post for the actual .upk file.)&lt;/p&gt;
&lt;p&gt;&lt;span class="ssNonEditable thumbnail-image-block"&gt;&lt;span&gt;&lt;a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fshader_pfx_dist_blend.jpg%3F__SQUARESPACE_CACHEVERSION%3D1263876064395',1126,1597);"&gt;&lt;img src="http://www.daveprout.com/storage/thumbnails/5459670-5428245-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1263876087074" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="thumbnail-caption" style="width: 250px;"&gt;Shader Graph (click to enlarge)&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;To bring the scene's depth into perceptible range, the node must be divided by a relatively large number (what I've labeled as the "Gradient Spread"). &amp;nbsp;Here are some examples at different numbers. &amp;nbsp;Notice the castle fades more quickly to blue the smaller the value:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span class="full-image-block ssNonEditable"&gt;&lt;span&gt;&lt;img src="http://www.daveprout.com/storage/shader_pfx_dist_blend_gradientvals.jpg?__SQUARESPACE_CACHEVERSION=1263876336181" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Once created, the foreground and background colors will of course remain relative to the player's camera, rather than the scene. &amp;nbsp;Notice how distance blues turn into oranges in the following progression:&lt;/p&gt;
&lt;p&gt;&lt;span class="full-image-block ssNonEditable"&gt;&lt;span&gt;&lt;img src="http://www.daveprout.com/storage/shader_pfx_dist_blend_color.jpg?__SQUARESPACE_CACHEVERSION=1263876189622" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Here is the &lt;a href="http://www.daveprout.com/storage/PFX_DistanceBlend.upk"&gt;UDK package file&lt;/a&gt; for the Distance Color Blend post effect material.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/HackThis/~4/A6BugbNhN5I" height="1" width="1"/&gt;</description><wfw:commentRss>http://www.daveprout.com/hack-this/rss-comments-entry-6364644.xml</wfw:commentRss><feedburner:origLink>http://www.daveprout.com/hack-this/2010/1/18/material-post-effects-lab-distance-color-blending.html</feedburner:origLink></item><item><title>The Unreal Post Effects Chain</title><category>Post Effects</category><category>Post Process</category><category>Post Processing</category><category>PostFX</category><category>Tips and Tricks</category><category>UDK</category><category>UE3</category><category>Unreal</category><category>Unreal 3</category><category>Unreal Engine 3</category><dc:creator>Dave Prout</dc:creator><pubDate>Wed, 13 Jan 2010 14:21:31 +0000</pubDate><link>http://feedproxy.google.com/~r/HackThis/~3/NuMbAIjgv04/the-unreal-post-effects-chain.html</link><guid isPermaLink="false">481292:5483966:6306898</guid><description>&lt;p&gt;&lt;span class="full-image-block ssNonEditable"&gt;&lt;span&gt;&lt;a href="http://www.udk.com"&gt;&lt;img src="http://www.daveprout.com/storage/UDK_badge_posteffects.jpg?__SQUARESPACE_CACHEVERSION=1263357726955" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Due to the tremendous response to &lt;a href="http://www.daveprout.com/hack-this/2009/12/26/material-post-effects.html"&gt;Edge Detection using Material Post Effects&lt;/a&gt;, over the next couple of weeks I'll be posting some additional tips and tricks regarding Post Processing in Unreal. &amp;nbsp;So check back often!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(This tutorial is utilizing&amp;nbsp;&lt;a href="http://www.epicgames.com/"&gt;Epic's&lt;/a&gt; free version of the Unreal Engine, &lt;a href="http://www.udk.com/"&gt;the Unreal Developer's Kit, or UDK&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;-------------------&lt;/h3&gt;
&lt;p&gt;For those just starting to experiment with post processing effects in Unreal, at the heart of it all is the default Post Process chain node. &amp;nbsp;Here's how to find it:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1. Locate the DefaultEditor.ini file in your tree.&lt;/p&gt;
&lt;p&gt;&lt;span class="full-image-block ssNonEditable"&gt;&lt;span&gt;&lt;img src="http://www.daveprout.com/storage/ini_file.jpg?__SQUARESPACE_CACHEVERSION=1263356103938" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2. In Unreal's Content Browser, sort the packages by "All" and locate the post process node.&lt;/p&gt;
&lt;p&gt;&lt;span class="full-image-block ssNonEditable"&gt;&lt;span&gt;&lt;img src="http://www.daveprout.com/storage/find_node.jpg?__SQUARESPACE_CACHEVERSION=1263356504612" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;3. Open the post process node to see the post process chain.&lt;/p&gt;
&lt;p&gt;&lt;span class="full-image-block ssNonEditable"&gt;&lt;span&gt;&lt;img src="http://www.daveprout.com/storage/postprocess_view.jpg?__SQUARESPACE_CACHEVERSION=1263356560707" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The nodes in the chain can be moved and reorganized to get different effects, so experiment. &amp;nbsp;Each node adds something new to your rendered frame. &amp;nbsp;To get more detail, of course, click the node:&lt;/p&gt;
&lt;p&gt;&lt;span class="full-image-block ssNonEditable"&gt;&lt;span&gt;&lt;img src="http://www.daveprout.com/storage/postprocess_materials.jpg?__SQUARESPACE_CACHEVERSION=1263357149735" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;To preview the post process effects in your viewport, make sure "PostProcess Effects" is enabled:&lt;/p&gt;
&lt;p&gt;&lt;span class="full-image-block ssNonEditable"&gt;&lt;span&gt;&lt;img src="http://www.daveprout.com/storage/enable_view.jpg?__SQUARESPACE_CACHEVERSION=1263357431315" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;-------------------------------------&lt;/p&gt;
&lt;p&gt;Coming Soon: The Material Post FX Laboratory&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/HackThis/~4/NuMbAIjgv04" height="1" width="1"/&gt;</description><wfw:commentRss>http://www.daveprout.com/hack-this/rss-comments-entry-6306898.xml</wfw:commentRss><feedburner:origLink>http://www.daveprout.com/hack-this/2010/1/13/the-unreal-post-effects-chain.html</feedburner:origLink></item><item><title>"Perception &amp; Hallucination"</title><category>Normal Map</category><category>Tips and Tricks</category><dc:creator>Dave Prout</dc:creator><pubDate>Mon, 04 Jan 2010 15:16:49 +0000</pubDate><link>http://feedproxy.google.com/~r/HackThis/~3/EqJ0vzd3jb4/perception-hallucination.html</link><guid isPermaLink="false">481292:5483966:6192210</guid><description>&lt;h2&gt;Got a Camera? &amp;nbsp;Have some Normal Maps!&lt;/h2&gt;
&lt;p&gt;It amazes me how discoveries as profound as this one take so long to permeate relevant industries in which they could affect. &amp;nbsp;So, I'm here to do my part to spread the word on the genius discovery by Mashhuda Glenncross's team at the University of Manchester.&lt;/p&gt;
&lt;p&gt;This technique produces much more accurate results than even &lt;a href="http://www.zarria.net/nrmphoto/nrmphoto.html"&gt;the great flashlight technique by Ryan Clark.&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Called &lt;em&gt;"A Perceptually Validated Model for Surface Depth Hallucination"&lt;/em&gt; (which is really just a fancy way of saying, &lt;em&gt;"Look, instant normal maps!"&lt;/em&gt;), this team has devised a way to create great normal maps based off of two photographs - one with a flash, and one without.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;object id="flashObj" width="486" height="412" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0"&gt;&lt;param name="movie" value="http://c.brightcove.com/services/viewer/federated_f9/2227271001?isVid=1&amp;publisherID=981571807" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="flashVars" value="videoId=1756096294&amp;playerID=2227271001&amp;domain=embed&amp;" /&gt;&lt;param name="base" value="http://admin.brightcove.com" /&gt;&lt;param name="seamlesstabbing" value="false" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="swLiveConnect" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed src="http://c.brightcove.com/services/viewer/federated_f9/2227271001?isVid=1&amp;publisherID=981571807" bgcolor="#FFFFFF" flashVars="videoId=1756096294&amp;playerID=2227271001&amp;domain=embed&amp;" base="http://admin.brightcove.com" name="flashObj" width="486" height="412" seamlesstabbing="false" type="application/x-shockwave-flash" allowFullScreen="true" swLiveConnect="true" allowScriptAccess="always" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Further examination of &lt;a href="http://aig.cs.man.ac.uk/publications/papers/daedalus/GlencrossWard2008.pdf"&gt;the whitepaper&lt;/a&gt; details the steps one needs to take in order to reproduce this technique. &amp;nbsp;(Warning: math content).&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;span class="full-image-block ssNonEditable"&gt;&lt;span&gt;&lt;img src="http://www.daveprout.com/storage/flowchart.gif?__SQUARESPACE_CACHEVERSION=1262384706331" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;I have attempted myself to reproduce their results several times over the past year or so, but always run into the problem of needing to find a true subtract algorithm. &amp;nbsp;If anyone out there knows of one, we'd love to hear about it. &amp;nbsp;If you're up for some experimenting yourself, some of the images used in the video are&amp;nbsp;&lt;a href="http://aig.cs.man.ac.uk/research/daedalus/hallucination.php"&gt;available here&lt;/a&gt;. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/HackThis/~4/EqJ0vzd3jb4" height="1" width="1"/&gt;</description><wfw:commentRss>http://www.daveprout.com/hack-this/rss-comments-entry-6192210.xml</wfw:commentRss><feedburner:origLink>http://www.daveprout.com/hack-this/2010/1/4/perception-hallucination.html</feedburner:origLink></item><item><title>Got Signed Distance Fields? Think about it.</title><category>Distance Field</category><category>Distance Fields</category><category>Tips and Tricks</category><category>texture memory</category><dc:creator>Dave Prout</dc:creator><pubDate>Wed, 30 Dec 2009 01:31:07 +0000</pubDate><link>http://feedproxy.google.com/~r/HackThis/~3/D9ENKb4FFzc/got-signed-distance-fields-think-about-it.html</link><guid isPermaLink="false">481292:5483966:6161490</guid><description>&lt;p&gt;While working on a project at Midway Austin called Criminal, which was &lt;a href="http://news.softpedia.com/news/Midway-Cancels-Game-Fires-80-91769.shtml"&gt;ultimately cancelled&lt;/a&gt;, a lot of excellent folks were pushing hard to get that open-world game to function within a Midway-augmented version of Unreal Engine 3.&lt;/p&gt;
&lt;p&gt;For the environments, we set an aggressive 60MB memory + 12ms gpu limit, and we made great strides toward achieving it.&lt;/p&gt;
&lt;p&gt;One of the excellent techniques we came across is Signed Distance Fields. &amp;nbsp;Originally we learned of it via &lt;a href="http://www.valvesoftware.com/publications/2007/SIGGRAPH2007_AlphaTestedMagnification.pdf"&gt;this Valve whitepaper&lt;/a&gt; and implemented a version of it in the Criminal engine. &amp;nbsp;It essentially allows for crisp edges on tiny, blurry bitmaps at infinite magnification.&amp;nbsp; (Think TrueType fonts.)&lt;/p&gt;
&lt;p&gt;&lt;span class="full-image-block ssNonEditable"&gt;&lt;span&gt;&lt;img src="http://www.daveprout.com/storage/image_valve_SDF.jpg?__SQUARESPACE_CACHEVERSION=1262060532685" alt="" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Earlier this year, Epic incorporated the technique into it light maps, and immediately switched the default light baking for static meshes back to light maps (from color vertex lighting, where it had been for years).&amp;nbsp; It's briefly mentioned on &lt;a href="http://udn.epicgames.com/Three/Lightmass.html#Signed%20Distance%20Field%20shadows"&gt;this publicly available page on the UDN&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The result is great looking light maps for dramatically lower memory footprint, and can be baked in a fraction of the time.&amp;nbsp; Visually, they become simplified in the same manner as the above logo.&lt;/p&gt;
&lt;p&gt;It's an excellent and practical application of the technique to achieve high quality results.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/HackThis/~4/D9ENKb4FFzc" height="1" width="1"/&gt;</description><wfw:commentRss>http://www.daveprout.com/hack-this/rss-comments-entry-6161490.xml</wfw:commentRss><feedburner:origLink>http://www.daveprout.com/hack-this/2009/12/29/got-signed-distance-fields-think-about-it.html</feedburner:origLink></item></channel></rss>

