<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Squarespace Site Server v5.11.81 (http://www.squarespace.com/) on Tue, 29 May 2012 00:41:03 GMT--><feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"><title>Dave Prout - Hack This</title><subtitle>Hack This</subtitle><id>http://www.daveprout.com/hack-this/</id><link rel="alternate" type="application/xhtml+xml" href="http://www.daveprout.com/hack-this/"/><link rel="self" type="application/atom+xml" href="http://www.daveprout.com/hack-this/atom.xml"/><updated>2011-11-15T04:23:08Z</updated><generator uri="http://www.squarespace.com/" version="Squarespace Site Server v5.11.81 (http://www.squarespace.com/)">Squarespace</generator><entry><title>Halo: Anniversary</title><id>http://www.daveprout.com/hack-this/2011/11/14/halo-anniversary.html</id><link rel="alternate" type="text/html" href="http://www.daveprout.com/hack-this/2011/11/14/halo-anniversary.html"/><author><name>Dave Prout</name></author><published>2011-11-15T03:21:27Z</published><updated>2011-11-15T03:21:27Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p><strong>LAUNCHING TONIGHT!</strong></p>
<p><a href="http://marketplace.xbox.com/en-US/Product/Halo-Combat-Evolved-Anniversary/66acd000-77fe-1000-9115-d8024d5309b1">Halo Anniversary</a> is the 10 year remake of the original Halo: Combat Evolved. &nbsp;<a href="http://www.microsoft-careers.com/go/343-Industries-Jobs/190537/">Microsoft's 343 Industries</a> worked with us (<a href="http://www.certainaffinity.com/">Certain Affinity</a>) for the<strong> Multiplayer</strong> and <a href="http://www.saber3d.com/">Saber Interactive</a> for the<strong> Single Player</strong> campaign.</p>
<p>Here are a bunch of goodies, all in one place.</p>
<p>&nbsp;</p>
<p><strong>FUN FACTS:</strong></p>
<ul>
<li>There are easter eggs in the MP maps - look for them!</li>
<li>Certain Affinity used the Halo:Reach engine to create the Multiplayer experience</li>
<li>This is our third launch for 2011. &nbsp;<a href="http://www.crimsonalliance.com/">Crimson Alliance</a> launched in September on XBLA, and it's doing very well. &nbsp;<a href="http://www.wired.com/gamelife/2011/05/343-industries-halo/">Halo: Reach: Defiant</a> launched in the spring to a great reception as well.</li>
</ul>
<p>&nbsp;</p>
<p><strong>REVIEWS</strong></p>
<ul>
<li>Destructoid [9.0] - <a href="http://bit.ly/sGeTq6">http://bit.ly/sGeTq6</a></li>
<li>IGN [8.0] - <a href="http://bit.ly/vPDc5r">http://bit.ly/vPDc5r</a></li>
<li>Edge [9.0] - <a href="http://bit.ly/sT4n2p">http://bit.ly/sT4n2p</a></li>
</ul>
<p>&nbsp;</p>
<p><strong>VIDEOS</strong></p>
<p><em>(Below videos were captured prior to the "finishing" pass on each of the maps)</em></p>
<p>Multiplayer ViDoc (Certain Affinity)</p>
<p><object style="height: 390px; width: 640px"><param name="movie" value="http://www.youtube.com/v/NGaAT9YnGCQ?version=3&feature=player_detailpage"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://www.youtube.com/v/NGaAT9YnGCQ?version=3&feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"></object></p>
<p>&nbsp;</p>
<p>"High Noon" (remake of "Hang 'em High")</p>
<p><object style="height: 390px; width: 640px"><param name="movie" value="http://www.youtube.com/v/fthwBbP11QA?version=3&feature=player_detailpage"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://www.youtube.com/v/fthwBbP11QA?version=3&feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"></object></p>
<p>&nbsp;</p>
<p>"Battle Creek" (remake of "Beaver Creek")</p>
<p><object style="height: 390px; width: 640px"><param name="movie" value="http://www.youtube.com/v/fUvCUMEwxmc?version=3&feature=player_detailpage"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://www.youtube.com/v/fUvCUMEwxmc?version=3&feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"></object></p>
<p>&nbsp;</p>
<p>"Pennance" (remake of "Damnation")</p>
<p><object style="height: 390px; width: 640px"><param name="movie" value="http://www.youtube.com/v/GTp8A6jcJi4?version=3&feature=player_detailpage"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://www.youtube.com/v/GTp8A6jcJi4?version=3&feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"></object></p>
<p>"Solitary" (remake of "Prisoner")</p>
<p><object style="height: 390px; width: 640px"><param name="movie" value="http://www.youtube.com/v/h_xK5GgxeSc?version=3&feature=player_detailpage"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://www.youtube.com/v/h_xK5GgxeSc?version=3&feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"></object></p>
<p>&nbsp;</p>
<p>"Breakneck" (remake of "Headlong")</p>
<p><object style="height: 390px; width: 640px"><param name="movie" value="http://www.youtube.com/v/oK6fZtmEhGc?version=3&feature=player_detailpage"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://www.youtube.com/v/oK6fZtmEhGc?version=3&feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"></object></p>
<p>&nbsp;</p>
<p>"Ridgeline" (remake of "Timberland")</p>
<p><object style="height: 390px; width: 640px"><param name="movie" value="http://www.youtube.com/v/_drexlGrKZQ?version=3&feature=player_detailpage"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://www.youtube.com/v/_drexlGrKZQ?version=3&feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"></object></p>
<p>&nbsp;</p>
<p>"Installation 04" (Firefight version of "Reunion Tour" from the original Campaign)</p>
<p><object style="height: 390px; width: 640px"><param name="movie" value="http://www.youtube.com/v/YiF5m4m02NM?version=3&feature=player_detailpage"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://www.youtube.com/v/YiF5m4m02NM?version=3&feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"></object></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>As always, development is an exciting road, and this game was no exception. &nbsp;Check it out, and post back here with your thoughts if you like!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content></entry><entry><title>Halo Reach: Defiant / Behind the Scenes</title><id>http://www.daveprout.com/hack-this/2011/3/15/halo-reach-defiant-behind-the-scenes.html</id><link rel="alternate" type="text/html" href="http://www.daveprout.com/hack-this/2011/3/15/halo-reach-defiant-behind-the-scenes.html"/><author><name>Dave Prout</name></author><published>2011-03-16T03:15:43Z</published><updated>2011-03-16T03:15:43Z</updated><content type="html" xml:lang="en-US"><![CDATA[<iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/RcAGExpiYe8" frameborder="0" allowfullscreen></iframe>]]></content></entry><entry><title>Halo Reach: Defiant Maps</title><id>http://www.daveprout.com/hack-this/2011/2/14/halo-reach-defiant-maps.html</id><link rel="alternate" type="text/html" href="http://www.daveprout.com/hack-this/2011/2/14/halo-reach-defiant-maps.html"/><author><name>Dave Prout</name></author><published>2011-02-14T14:54:37Z</published><updated>2011-02-14T14:54:37Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>The curtain has finally been lifted on the project my team at Certain Affinity has been working hard on for the past year. &nbsp;I had the fortune of working as a Tech Art Lead for this project, and it's been a blast!</p>
<p>&nbsp;</p>
<p><object width="640" height="390"><param name="movie" value="http://www.youtube.com/v/BGdzihZV-IQ&hl=en_US&feature=player_embedded&version=3"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/BGdzihZV-IQ&hl=en_US&feature=player_embedded&version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="390"></embed></object></p>
<p>Full Article here:</p>
<p><a href="http://www.joystiq.com/2011/02/14/halo-reach-defiant-map-pack/">http://www.joystiq.com/2011/02/14/halo-reach-defiant-map-pack/</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Enjoy!</p>]]></content></entry><entry><title>UDK Lighting and Post Processing</title><id>http://www.daveprout.com/hack-this/2010/3/31/udk-lighting-and-post-processing.html</id><link rel="alternate" type="text/html" href="http://www.daveprout.com/hack-this/2010/3/31/udk-lighting-and-post-processing.html"/><author><name>Dave Prout</name></author><published>2010-03-31T20:01:49Z</published><updated>2010-03-31T20:01:49Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>I mentioned a week or so ago that I've been working on a <a href="http://eat3d.com/blog/eat-3d/coming-soon-udk-lighting-post-processing-dvd">new UDK training session</a> through <a href="http://www.eat3d.com">Eat3D</a>. &nbsp;It's now headed into production - be sure to check it out!</p>
<p><span class="full-image-block ssNonEditable"><span><a href="http://eat3d.com/blog/eat-3d/coming-soon-udk-lighting-post-processing-dvd"><img src="http://www.daveprout.com/storage/blog_news_udk_lighting_rel.jpg?__SQUARESPACE_CACHEVERSION=1270065908581" alt="" /></a></span></span></p>
<p><a href="http://eat3d.com/blog/eat-3d/coming-soon-udk-lighting-post-processing-dvd">UDK Lighting and Post Processing - Eat3D</a></p>
<p>&nbsp;</p>]]></content></entry><entry><title>Photoshop Folder Batches</title><category term="Tips and Tricks"/><category term="images in folder"/><category term="photoshop"/><category term="photoshop batch"/><id>http://www.daveprout.com/hack-this/2010/3/12/photoshop-folder-batches.html</id><link rel="alternate" type="text/html" href="http://www.daveprout.com/hack-this/2010/3/12/photoshop-folder-batches.html"/><author><name>Dave Prout</name></author><published>2010-03-12T17:40:51Z</published><updated>2010-03-12T17:40:51Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>Been head-down for a couple of weeks; I've been earnestly working on some material for <a href="http://www.eat3D.com">eat3D</a>, so I've been preoccupied. &nbsp;So I thought I'd poke my head up for a simple trick.</p>
<p>From time to time, I have a ton of bitmap files I need to adjust in some way (anyone remember <a href="http://www.debabelizer.com/">Debabelizer</a>?). &nbsp;Photoshop has a feature to run an action on all of the images in a given folder. &nbsp;</p>
<p>Here's how to do it:</p>
<p><span class="full-image-float-left ssNonEditable"><span><img src="http://www.daveprout.com/storage/hack_01.jpg?__SQUARESPACE_CACHEVERSION=1268416464208" alt="" /></span></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;<span class="full-image-block ssNonEditable"><span><img src="http://www.daveprout.com/storage/hack_02.jpg?__SQUARESPACE_CACHEVERSION=1268416705989" alt="" /></span></span></p>
<p>&nbsp;<span class="full-image-block ssNonEditable"><span><img src="http://www.daveprout.com/storage/hack_03.jpg?__SQUARESPACE_CACHEVERSION=1268416719652" alt="" /></span></span></p>
<p>&nbsp;One of those that is occasionally used and often forgotten. &nbsp;Enjoy!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content></entry><entry><title>Ripples for Free: Sine Wave Water</title><category term="Normal Map"/><category term="Ripple Shader"/><category term="Tips and Tricks"/><category term="UDK"/><category term="UE3"/><category term="Unreal 3"/><category term="Unreal Engine 3"/><category term="Water Shader"/><id>http://www.daveprout.com/hack-this/2010/1/26/ripples-for-free-sine-wave-water.html</id><link rel="alternate" type="text/html" href="http://www.daveprout.com/hack-this/2010/1/26/ripples-for-free-sine-wave-water.html"/><author><name>Dave Prout</name></author><published>2010-01-27T02:53:36Z</published><updated>2010-01-27T02:53:36Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>In early 2008, I had the pleasure of working with several senior graphics engineers at Midway Games Austin. &nbsp;One of them was <a href="http://bit.ly/9OjIgD">Stephen Baker</a>, from whom I learned a ton. &nbsp;Though the game ended up being cancelled, some of the solutions we came up with are excellent know-how, worth sharing.</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://www.daveprout.com/storage/ripples_image_teaser.jpg?__SQUARESPACE_CACHEVERSION=1264573639608" alt="" /></span><span class="thumbnail-caption" style="width: 700px;">Epic's DM-Deck map used in this example</span></span></p>
<p>Steve and I worked together on Criminal, which was an open-world game using <a href="http://www.epicgames.com">Unreal Engine 3</a> -- 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.</p>
<p>The credit for this nifty trick goes to Steve, who has given me permission to reproduce it here (thanks Steve!). &nbsp;Be sure to check out <a href="http://sjbaker.org">Steve's Site as well</a>.</p>
<p>Why do we care about free?</p>
<p>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. &nbsp;</p>
<p><strong>NOTE:</strong>&nbsp;<em>There is a hidden M.T.D.L. dependency when using the "ReflectionVector" node in the Material Editor --</em><em>it will not have the magenta outline</em>.&nbsp;</p>
<div></div>
<p>To quote Steve:&nbsp;</p>
<blockquote>
<p>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. &nbsp;I've always called this a "dependant texture" where one texture depends on the other. &nbsp;This is bad because the shader compiler breaks the code up into three bits: &nbsp;Before texture lookup, Texture lookup and After texture lookup. &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. &nbsp;That way nobody has to wait while the textures are being looked up. &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. &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.<br /><br />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). &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. &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.<br /><br />Replacing that first texture with some math breaks that double-cost - and makes the shader run at least twice as fast.</p>
</blockquote>
<p>Here are a couple of videos to compare their motion.</p>
<p><object width="601" height="398"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9013505&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=9013505&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="601" height="398"></embed></object></p>
<p><object width="601" height="398"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9013565&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=9013565&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="601" height="398"></embed></object></p>
<p>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). &nbsp;Too expensive for a shipping game. &nbsp;BUT....we like rippling water. &nbsp;We like it a lot. &nbsp;And that's why you should care about getting ripples for free. &nbsp;Here's how to do it.</p>
<p><span class="thumbnail-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fshader_ripples_expensive.jpg%3F__SQUARESPACE_CACHEVERSION%3D1264573760220',1384,2320);"><img src="http://www.daveprout.com/storage/thumbnails/5459670-5524033-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1264573780217" alt="" /></a></span><span class="thumbnail-caption" style="width: 250px;">Expensive Ripples - Shader Graph - click to enlarge</span></span></p>
<p><span class="thumbnail-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fshader_ripples_cheap.jpg%3F__SQUARESPACE_CACHEVERSION%3D1264574144607',1836,2438);"><img src="http://www.daveprout.com/storage/thumbnails/5459670-5524076-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1264574158686" alt="" /></a></span><span class="thumbnail-caption" style="width: 250px;">Cheap Ripples - Shader Graph - click to enlarge</span></span></p>
<p>Again, many thanks to <a href="http://bit.ly/9OjIgD">Steve</a>. &nbsp;We can all now have free ripples without fearing the wrath of graphics engineers!</p>
<p>&nbsp;</p>]]></content></entry><entry><title>Material Post Effects Lab: Distance Color Blending</title><category term="Post Process"/><category term="Post Processing"/><category term="PostFX"/><category term="Tips and Tricks"/><category term="UDK"/><category term="UE3"/><category term="Unreal 3"/><category term="Unreal Engine 3"/><id>http://www.daveprout.com/hack-this/2010/1/18/material-post-effects-lab-distance-color-blending.html</id><link rel="alternate" type="text/html" href="http://www.daveprout.com/hack-this/2010/1/18/material-post-effects-lab-distance-color-blending.html"/><author><name>Dave Prout</name></author><published>2010-01-19T04:51:52Z</published><updated>2010-01-19T04:51:52Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p><span class="thumbnail-image-block ssNonEditable">As mentioned in past posts, the Unreal Post Effects system is tremendously powerful. &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.&nbsp;</span></p>
<p>For this post, I'm using the "DM-Sanctuary" map included in <a href="http://www.epicgames.com/">Epic's</a> <a href="http://www.udk.com">UDK</a>.</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://www.daveprout.com/storage/shader_pfx_dist_blend_teaser.jpg?__SQUARESPACE_CACHEVERSION=1263875629209" alt="" /></span><span class="thumbnail-caption" style="width: 600px;">Original Image --&gt; Distance Color Blend Image --&gt; Depth Mask</span></span></p>
<p>Using the Scene Depth node, you can create a realtime depth mask to use in your shader, which I tend to do a lot. &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.</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://www.daveprout.com/storage/shader_pfx_dist_blend_image.jpg?__SQUARESPACE_CACHEVERSION=1263876497278" alt="" /></span></span></p>
<p>&nbsp;</p>
<p>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. &nbsp;The shader graph can easily be modified to control foreground/background brightness as well, or anything else you might dream up. &nbsp;(See the link at the end of this post for the actual .upk file.)</p>
<p><span class="ssNonEditable thumbnail-image-block"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2Fshader_pfx_dist_blend.jpg%3F__SQUARESPACE_CACHEVERSION%3D1263876064395',1126,1597);"><img src="http://www.daveprout.com/storage/thumbnails/5459670-5428245-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1263876087074" alt="" /></a></span><span class="thumbnail-caption" style="width: 250px;">Shader Graph (click to enlarge)</span> </span></p>
<div></div>
<p>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"). &nbsp;Here are some examples at different numbers. &nbsp;Notice the castle fades more quickly to blue the smaller the value:</p>
<p>&nbsp;</p>
<p>&nbsp;<span class="full-image-block ssNonEditable"><span><img src="http://www.daveprout.com/storage/shader_pfx_dist_blend_gradientvals.jpg?__SQUARESPACE_CACHEVERSION=1263876336181" alt="" /></span></span></p>
<p>Once created, the foreground and background colors will of course remain relative to the player's camera, rather than the scene. &nbsp;Notice how distance blues turn into oranges in the following progression:</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://www.daveprout.com/storage/shader_pfx_dist_blend_color.jpg?__SQUARESPACE_CACHEVERSION=1263876189622" alt="" /></span></span></p>
<p>&nbsp;</p>
<p>Here is the <a href="http://www.daveprout.com/storage/PFX_DistanceBlend.upk">UDK package file</a> for the Distance Color Blend post effect material.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content></entry><entry><title>The Unreal Post Effects Chain</title><category term="Post Effects"/><category term="Post Process"/><category term="Post Processing"/><category term="PostFX"/><category term="Tips and Tricks"/><category term="UDK"/><category term="UE3"/><category term="Unreal"/><category term="Unreal 3"/><category term="Unreal Engine 3"/><id>http://www.daveprout.com/hack-this/2010/1/13/the-unreal-post-effects-chain.html</id><link rel="alternate" type="text/html" href="http://www.daveprout.com/hack-this/2010/1/13/the-unreal-post-effects-chain.html"/><author><name>Dave Prout</name></author><published>2010-01-13T14:21:31Z</published><updated>2010-01-13T14:21:31Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p><span class="full-image-block ssNonEditable"><span><a href="http://www.udk.com"><img src="http://www.daveprout.com/storage/UDK_badge_posteffects.jpg?__SQUARESPACE_CACHEVERSION=1263357726955" alt="" /></a></span></span></p>
<p>Due to the tremendous response to <a href="http://www.daveprout.com/hack-this/2009/12/26/material-post-effects.html">Edge Detection using Material Post Effects</a>, over the next couple of weeks I'll be posting some additional tips and tricks regarding Post Processing in Unreal. &nbsp;So check back often!</p>
<p><em>(This tutorial is utilizing&nbsp;<a href="http://www.epicgames.com/">Epic's</a> free version of the Unreal Engine, <a href="http://www.udk.com/">the Unreal Developer's Kit, or UDK</a>)</em></p>
<h3>-------------------</h3>
<p>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. &nbsp;Here's how to find it:</p>
<p>&nbsp;</p>
<p>1. Locate the DefaultEditor.ini file in your tree.</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://www.daveprout.com/storage/ini_file.jpg?__SQUARESPACE_CACHEVERSION=1263356103938" alt="" /></span></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>2. In Unreal's Content Browser, sort the packages by "All" and locate the post process node.</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://www.daveprout.com/storage/find_node.jpg?__SQUARESPACE_CACHEVERSION=1263356504612" alt="" /></span></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>3. Open the post process node to see the post process chain.</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://www.daveprout.com/storage/postprocess_view.jpg?__SQUARESPACE_CACHEVERSION=1263356560707" alt="" /></span></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>The nodes in the chain can be moved and reorganized to get different effects, so experiment. &nbsp;Each node adds something new to your rendered frame. &nbsp;To get more detail, of course, click the node:</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://www.daveprout.com/storage/postprocess_materials.jpg?__SQUARESPACE_CACHEVERSION=1263357149735" alt="" /></span></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>To preview the post process effects in your viewport, make sure "PostProcess Effects" is enabled:</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://www.daveprout.com/storage/enable_view.jpg?__SQUARESPACE_CACHEVERSION=1263357431315" alt="" /></span></span></p>
<p>&nbsp;</p>
<p>Enjoy!</p>
<p>-------------------------------------</p>
<p>Coming Soon: The Material Post FX Laboratory</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content></entry><entry><title>"Perception &amp; Hallucination"</title><category term="Normal Map"/><category term="Tips and Tricks"/><id>http://www.daveprout.com/hack-this/2010/1/4/perception-hallucination.html</id><link rel="alternate" type="text/html" href="http://www.daveprout.com/hack-this/2010/1/4/perception-hallucination.html"/><author><name>Dave Prout</name></author><published>2010-01-04T15:16:49Z</published><updated>2010-01-04T15:16:49Z</updated><content type="html" xml:lang="en-US"><![CDATA[<h2>Got a Camera? &nbsp;Have some Normal Maps!</h2>
<p>It amazes me how discoveries as profound as this one take so long to permeate relevant industries in which they could affect. &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.</p>
<p>This technique produces much more accurate results than even <a href="http://www.zarria.net/nrmphoto/nrmphoto.html">the great flashlight technique by Ryan Clark.</a>&nbsp;</p>
<p>Called <em>"A Perceptually Validated Model for Surface Depth Hallucination"</em> (which is really just a fancy way of saying, <em>"Look, instant normal maps!"</em>), this team has devised a way to create great normal maps based off of two photographs - one with a flash, and one without.</p>
<p>&nbsp;</p>
<p style="text-align: center;"><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"><param name="movie" value="http://c.brightcove.com/services/viewer/federated_f9/2227271001?isVid=1&publisherID=981571807" /><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="videoId=1756096294&playerID=2227271001&domain=embed&" /><param name="base" value="http://admin.brightcove.com" /><param name="seamlesstabbing" value="false" /><param name="allowFullScreen" value="true" /><param name="swLiveConnect" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://c.brightcove.com/services/viewer/federated_f9/2227271001?isVid=1&publisherID=981571807" bgcolor="#FFFFFF" flashVars="videoId=1756096294&playerID=2227271001&domain=embed&" 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"></embed></object></p>
<p>&nbsp;</p>
<p>Further examination of <a href="http://aig.cs.man.ac.uk/publications/papers/daedalus/GlencrossWard2008.pdf">the whitepaper</a> details the steps one needs to take in order to reproduce this technique. &nbsp;(Warning: math content).</p>
<p style="text-align: center;"><span class="full-image-block ssNonEditable"><span><img src="http://www.daveprout.com/storage/flowchart.gif?__SQUARESPACE_CACHEVERSION=1262384706331" alt="" /></span></span></p>
<p>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. &nbsp;If anyone out there knows of one, we'd love to hear about it. &nbsp;If you're up for some experimenting yourself, some of the images used in the video are&nbsp;<a href="http://aig.cs.man.ac.uk/research/daedalus/hallucination.php">available here</a>. &nbsp;</p>
<p>&nbsp;</p>]]></content></entry><entry><title>Got Signed Distance Fields? Think about it.</title><category term="Distance Field"/><category term="Distance Fields"/><category term="Tips and Tricks"/><category term="texture memory"/><id>http://www.daveprout.com/hack-this/2009/12/29/got-signed-distance-fields-think-about-it.html</id><link rel="alternate" type="text/html" href="http://www.daveprout.com/hack-this/2009/12/29/got-signed-distance-fields-think-about-it.html"/><author><name>Dave Prout</name></author><published>2009-12-30T01:31:07Z</published><updated>2009-12-30T01:31:07Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>While working on a project at Midway Austin called Criminal, which was <a href="http://news.softpedia.com/news/Midway-Cancels-Game-Fires-80-91769.shtml">ultimately cancelled</a>, 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.</p>
<p>For the environments, we set an aggressive 60MB memory + 12ms gpu limit, and we made great strides toward achieving it.</p>
<p>One of the excellent techniques we came across is Signed Distance Fields. &nbsp;Originally we learned of it via <a href="http://www.valvesoftware.com/publications/2007/SIGGRAPH2007_AlphaTestedMagnification.pdf">this Valve whitepaper</a> and implemented a version of it in the Criminal engine. &nbsp;It essentially allows for crisp edges on tiny, blurry bitmaps at infinite magnification.&nbsp; (Think TrueType fonts.)</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://www.daveprout.com/storage/image_valve_SDF.jpg?__SQUARESPACE_CACHEVERSION=1262060532685" alt="" /></span></span></p>
<p>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).&nbsp; It's briefly mentioned on <a href="http://udn.epicgames.com/Three/Lightmass.html#Signed%20Distance%20Field%20shadows">this publicly available page on the UDN</a>.</p>
<p>The result is great looking light maps for dramatically lower memory footprint, and can be baked in a fraction of the time.&nbsp; Visually, they become simplified in the same manner as the above logo.</p>
<p>It's an excellent and practical application of the technique to achieve high quality results.</p>
<p>&nbsp;</p>]]></content></entry></feed>
