<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Visual Computing</title>
    <link rel="alternate" type="text/html" href="http://www.gamasutra.com/visualcomputing/blog/" />
    <link rel="self" type="application/atom+xml" href="http://www.gamasutra.com/visualcomputing/blog/atom.xml" />
   <id>tag:www.gamasutra.com,2008:/visualcomputing/blog//10</id>
    <link rel="service.post" type="application/atom+xml" href="http://www.gamebusiness.com/cgi-sys/cgiwrap/gamaboy/managed-mt/mt-atom.cgi/weblog/blog_id=10" title="Visual Computing" />
    <updated>2008-11-10T23:36:35Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 3.2</generator>
 
<entry>
    <title>Simulating Reflections For Wet Asphalt</title>
    <link rel="alternate" type="text/html" href="http://www.gamasutra.com/visualcomputing/blog/2008/11/simulating_reflections_for_wet.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.gamebusiness.com/cgi-sys/cgiwrap/gamaboy/managed-mt/mt-atom.cgi/weblog/blog_id=10/entry_id=2712" title="Simulating Reflections For Wet Asphalt" />
    <id>tag:www.gamasutra.com,2008:/visualcomputing/blog//10.2712</id>
    
    <published>2008-11-10T23:25:40Z</published>
    <updated>2008-11-10T23:36:35Z</updated>
    
    <summary>The C0de517e blog, written by a game rendering engineer, has an in-depth post up entitled &quot;Impossible is approximatively possible,&quot; dealing with simulating realistic reflections on wet asphalt -- in particular with filling in the gaps of what data is impossible...</summary>
    <author>
        <name>Chris Remo</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.gamasutra.com/visualcomputing/blog/">
        <![CDATA[<p><img alt="reflection.jpg" src="http://www.gamasutra.com/visualcomputing/blog/reflection.jpg" width="200" height="157" hspace=5 align=left />The <a href="http://c0de517e.blogspot.com/">C0de517e blog</a>, written by a game rendering engineer, has an in-depth post up entitled "Impossible is approximatively possible," dealing with simulating realistic reflections on wet asphalt -- in particular with filling in the gaps of what data is impossible to conclusively simulate with approximations that can be generated by the GPU.</p>

<p>As the author describes:</p>

<p><i>"We have two things that we don't know, the reflection direction and the travelled light ray distance between the track and the bike, and those are possible to compute only using raytracing... Let's try now to fill the holes using some approximations that we can easily compute on a GPU.</p>

<p>"First of all we need the direction, that's easy, if we consider our reflections to be perfectly specular, the BRDF will be a dirac impulse, it will have only one direction for which it's non zero, and that is the reflected direction of the view ray (camera to track) around the (track) normal.</p>

<p>"The second thing that we don't know is the distance it travelled, we can't compute that, it would require raytracing. In general reflections would require that, why are the planar mirror ones an exception? Because in that case the reflection rays are coherent, visibility can be computed per each point on the mirror using a projection matrix, but that's what rasterization is able to do!</p>

<p>"If we can render planar mirrors, we can also compute the distance of each reflected object to the reflection plane. In fact it's really easy! So we do have a measure of the distance, but not the one that we want, the distance our reflected rays travels according to the rough asphalt normals, but the one it travels according to a smooth, marble-like surface. It's still something!"</i></p>

<p>The author includes a few code examples, based on previous R&D work he did on a shipped racing title, and has even posted <a href="http://c0de517e.blogspot.com/2008/10/just-blur.html">a followup blog entry</a> that delves deeper into his blurring algorithm.<br />
</p>]]>
        
    </content>
</entry>
<entry>
    <title>Sponsored Feature: Intel Calls All Game Companies as Partners</title>
    <link rel="alternate" type="text/html" href="http://www.gamasutra.com/visualcomputing/blog/2008/10/sponsored_feature_intel_calls.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.gamebusiness.com/cgi-sys/cgiwrap/gamaboy/managed-mt/mt-atom.cgi/weblog/blog_id=10/entry_id=2710" title="Sponsored Feature: Intel Calls All Game Companies as Partners" />
    <id>tag:www.gamasutra.com,2008:/visualcomputing/blog//10.2710</id>
    
    <published>2008-10-28T00:41:19Z</published>
    <updated>2008-10-31T00:45:53Z</updated>
    
    <summary>In an Intel-sponsored feature, the company explains the benefits of the Intel Software Partner Program, a free initiative for game companies which includes development help, tools, and computer discounts. The cites notes the growth of integrated graphics, and notes that...</summary>
    <author>
        <name>Chris Remo</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.gamasutra.com/visualcomputing/blog/">
        <![CDATA[<p>In an <a href="http://www.gamasutra.com/view/feature/3824/sponsored_feature_join_forces_and_.php">Intel-sponsored feature</a>, the company explains the benefits of the Intel Software Partner Program, a free initiative for game companies which includes development help, tools, and computer discounts.</p>

<p>The cites notes the growth of integrated graphics, and notes that there are various steps developers can take to squeeze unexpected performance out of such hardware:</p>

<p><i>"Integrated graphics already dominate over discrete graphics at a ratio of nearly 2:1 in terms of market segment share, and that ratio is expected to grow substantially over the next several years.</p>

<p>"Discrete graphics will continue to be widely used as well, of course, so enabling games to scale across the spectrum from mainstream graphics to high-end discrete solutions is just good business sense.</p>

<p>"A growing number of game companies are debunking the myth that 3D-based mainstream games require discrete graphics solutions, and as of second quarter 2008, Intel had more than a 47 percent market segment share for graphics hardware, with year-to-year growth of 46 percent.1</p>

<p>"Scott Brown, president of NetDevil Ltd., a game-development company in Louisville Colorado, sums it up: 'People with high-end machines need to see their investment pay off with our games, but at the same time, we'd be crazy not to target mainstream graphics hardware as well.'</p>

<p>"By tuning the scalable aspects of gameplay to the resources available, game companies can effectively expand their target user base, while still providing an optimal visual experience for everyone."</i></p>

<p>The feature goes on to explain specific benefits of the Intel program, including development assistance and discounts on development hardware.</p>]]>
        
    </content>
</entry>
<entry>
    <title>Sponsored Video: Threading Quake 4 and Quake Wars</title>
    <link rel="alternate" type="text/html" href="http://www.gamasutra.com/visualcomputing/blog/2008/10/sponsored_video_threading_quak.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.gamebusiness.com/cgi-sys/cgiwrap/gamaboy/managed-mt/mt-atom.cgi/weblog/blog_id=10/entry_id=2709" title="Sponsored Video: Threading Quake 4 and Quake Wars" />
    <id>tag:www.gamasutra.com,2008:/visualcomputing/blog//10.2709</id>
    
    <published>2008-10-24T02:26:23Z</published>
    <updated>2008-10-24T02:32:04Z</updated>
    
    <summary>In this sponsored video, Intel senior software engineer Anu Kalra discusses the principles, challenges, and lessons learned in providing multithreading assistance to the teams behind Raven Software&apos;s Quake 4 and Splash Damage&apos;s spinoff title Enemy Territory: Quake Wars. Among other...</summary>
    <author>
        <name>Chris Remo</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.gamasutra.com/visualcomputing/blog/">
        <![CDATA[<p>In this sponsored video, Intel senior software engineer Anu Kalra discusses the principles, challenges, and lessons learned in providing multithreading assistance to the teams behind Raven Software's <i>Quake 4</i> and Splash Damage's spinoff title <i>Enemy Territory: Quake Wars</i>.<br />
<center><object width='440' height='360' classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0'><param name='flashvars' value='file=http://software.intel.com/media/videos/d/1/f/4/9/1/a/Intel_SW-GDCSessionThreadingQuake4AndQuakeWarsPart1799.flv&autostart=false&bufferlength=5&allowfullscreen=true'/><param name='movie' value='http://software.intel.com/videos/mediaplayer.swf' /><param name='allowfullscreen' value='true' /><embed src='http://software.intel.com/videos/mediaplayer.swf' width='440' height='355' bgcolor='#FFFFFF' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer' flashvars='file=http://software.intel.com/media/videos/d/1/f/4/9/1/a/Intel_SW-GDCSessionThreadingQuake4AndQuakeWarsPart1799.flv&autostart=false&bufferlength=5&allowfullscreen=true' allowfullscreen='true'/></object></center><br />
Among other topics, Kalra noted that certain multithreading aspects improved from game to game, including one notable area concerning efficiency:</p>

<p>"The key thing here is that the data is not being shared across threads as much," he explains. "There definitely is data that is being shared with the rendering thread and the graphics driver thread, but between the engine and the renderer, there really isn't a whole lot of data that is being shared. In the case of <i>Quake 4</i>, all the dynamic measures that are  generated per frame had to be buffered and shared between the two threads, which isn't the case with <i>Quake Wars</i>."</p>

<p>In addition to the video, there are <a href="http://www.slideshare.net/psteinb/threading-game-engines-quake-4-enemy-territory-quake-wars/">full slides available</a> from a talk given by Kalra alongside developer Jan Paul van Waveren of <i>Quake</i> series creator id Software.</p>]]>
        
    </content>
</entry>
<entry>
    <title>Feature: Optimizing Asset Processing</title>
    <link rel="alternate" type="text/html" href="http://www.gamasutra.com/visualcomputing/blog/2008/10/feature_optimizing_asset_proce.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.gamebusiness.com/cgi-sys/cgiwrap/gamaboy/managed-mt/mt-atom.cgi/weblog/blog_id=10/entry_id=2711" title="Feature: Optimizing Asset Processing" />
    <id>tag:www.gamasutra.com,2008:/visualcomputing/blog//10.2711</id>
    
    <published>2008-10-23T00:46:14Z</published>
    <updated>2008-10-31T00:47:33Z</updated>
    
    <summary>In an in-depth technical feature posted on Gamasutra, Neversoft co-founder Mick West discusses performance concerns when optimizing asset processing for games, including the basic nature of the common problems and in-depth solutions for keeping the pipeline efficient. Referring to asset...</summary>
    <author>
        <name>Chris Remo</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.gamasutra.com/visualcomputing/blog/">
        <![CDATA[<p>In an <a href="http://www.intelsoftwaregraphics.com/?lid=2044&siteid=19">in-depth technical feature</a> posted on Gamasutra, Neversoft co-founder Mick West discusses performance concerns when optimizing asset processing for games, including the basic nature of the common problems and in-depth solutions for keeping the pipeline efficient.</p>

<p>Referring to asset processing tools as "the ugly stepsister" of game development, West warns against ignoring their role. </p>

<p>He notes that, because of their simplicity, effort is often not spent to properly optimize them, which can end up eating away time later in the project.</p>

<p>Multithreading is a great way to make these tools more efficient, West notes. "Most PCs now have some kind of multicore and/or hyper-threading," he writes. "If your tools are written in the traditional mindset of a single processing thread, you’re wasting a significant amount of the silicon you paid for, as well as the time of the artists and level designers as they wait for their assets to be converted.</p>

<p>"Since the nature of asset data is generally to be large chunks of homogeneous data, such as lists of vertices and polygons, it’s generally very amenable to data level parallelization with worker threads, where the same code is run on multiple chunks of similar data concurrently, taking advantage of the cache."</p>

<p>Surprisingly, he even admits that "bad code" is permissible when it comes to processing tools, as long as the risks are properly weighed:</p>

<p>"In-house tools don’t always need to be up to the same code standards as the code you use in your commercially released games. Sometime you can get performance benefits by making certain dangerous assumptions about the data you’re processing and the hardware it will be running on.</p>

<p>"Instead of constantly allocating buffers as needed, try allocating a 'reasonable' chunk of memory as a general purpose buffer. If you have debugging code, make sure you can switch it off. Logging or other instrumenting functions can end up taking more time than the code they are logging. If earlier stages in the pipeline are robust enough, then (very carefully) consider removing error and bounds checking from later stages if you can see they are a significant factor.</p>

<p>"If you have a bunch of separate programs, consider bunching them together into one uber-tool to cut the load times. All these are bad practices, but for their limited lifetime, the risks may be outweighed by the rewards."</p>

<p>You can now <a href="http://www.intelsoftwaregraphics.com/?lid=2044&siteid=19">read the full Gamasutra feature on the subject</a>, posted as an independently authored piece within the <a href="http://www.gamasutra.com/visualcomputing">Intel Visual Computing section</a>, and which includes sample code (no registration required; please feel free to link to this feature from external websites).</p>]]>
        
    </content>
</entry>
<entry>
    <title>Sponsored Video: Robust N-Core Capable Game Engine Design</title>
    <link rel="alternate" type="text/html" href="http://www.gamasutra.com/visualcomputing/blog/2008/10/sponsored_video_robust_ncore_c.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.gamebusiness.com/cgi-sys/cgiwrap/gamaboy/managed-mt/mt-atom.cgi/weblog/blog_id=10/entry_id=2706" title="Sponsored Video: Robust N-Core Capable Game Engine Design" />
    <id>tag:www.gamasutra.com,2008:/visualcomputing/blog//10.2706</id>
    
    <published>2008-10-16T18:00:00Z</published>
    <updated>2008-10-23T20:30:09Z</updated>
    
    <summary>In this video session, Intel graphics and game technologist Ron Fosner introduces the principles of designing game engines that scale to an arbitrary number of cores. There are two main approaches, Fosner points out. &quot;One is the traditional way of...</summary>
    <author>
        <name>Chris Remo</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.gamasutra.com/visualcomputing/blog/">
        <![CDATA[<p>In this video session, Intel graphics and game technologist Ron Fosner introduces the principles of designing game engines that scale to an arbitrary number of cores.</p>

<center><object width='440' height='360' classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0'><param name='flashvars' value='file=http://software.intel.com/media/videos/4/9/1/8/2/f/8/Intel_SW-RobustNCoreCapableGameEngineDesignPart1220.flv&autostart=false&bufferlength=5&allowfullscreen=true'/><param name='movie' value='http://software.intel.com/videos/mediaplayer.swf' /><param name='allowfullscreen' value='true' /><embed src='http://software.intel.com/videos/mediaplayer.swf' width='440' height='355' bgcolor='#FFFFFF' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer' flashvars='file=http://software.intel.com/media/videos/4/9/1/8/2/f/8/Intel_SW-RobustNCoreCapableGameEngineDesignPart1220.flv&autostart=false&bufferlength=5&allowfullscreen=true' allowfullscreen='true'/></object></center>

<p>There are two main approaches, Fosner points out. "One is the traditional way of threading for speed; you parallize things to make them faster on the GPU. You want to break your game tasks up into chunks. The other way is programming and threading for features. You take advantage of all the extra CPU power that's beyond the minimal gameplay, and take it to the point where it's increasing the user experience. What you can do is continue to add content or work while you have CPU power available. You can increase the user experience as the CPU power increases, design your game engine to be multicore aware."</p>

<p>In part two of the session, Fosner delves more into practical techniques:</p>

<center><object width='440' height='360' classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0'><param name='flashvars' value='file=http://software.intel.com/media/videos/d/2/9/6/c/1/0/Intel_SW-RobustNCoreCapableGameEngineDesignPart2329.flv&autostart=false&bufferlength=5&allowfullscreen=true'/><param name='movie' value='http://software.intel.com/videos/mediaplayer.swf' /><param name='allowfullscreen' value='true' /><embed src='http://software.intel.com/videos/mediaplayer.swf' width='440' height='355' bgcolor='#FFFFFF' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer' flashvars='file=http://software.intel.com/media/videos/d/2/9/6/c/1/0/Intel_SW-RobustNCoreCapableGameEngineDesignPart2329.flv&autostart=false&bufferlength=5&allowfullscreen=true' allowfullscreen='true'/></object></center>

<p>"Games are really very challenging to thread," he admits. "If you can manage to thread your game engine successfully, you can thread anything."</p>]]>
        
    </content>
</entry>
<entry>
    <title>Progress In Contouring</title>
    <link rel="alternate" type="text/html" href="http://www.gamasutra.com/visualcomputing/blog/2008/10/progress_in_contouring.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.gamebusiness.com/cgi-sys/cgiwrap/gamaboy/managed-mt/mt-atom.cgi/weblog/blog_id=10/entry_id=2707" title="Progress In Contouring" />
    <id>tag:www.gamasutra.com,2008:/visualcomputing/blog//10.2707</id>
    
    <published>2008-10-13T19:00:00Z</published>
    <updated>2008-10-23T20:30:33Z</updated>
    
    <summary>In an interesting historically-tinted blog post, Nick Porcino looks at various methods of contouring in graphics rendering, starting off with the marching cubes algorithm first introduced during Siggraph &apos;87. The method essentially divides a volume into cubes and replaces the...</summary>
    <author>
        <name>Chris Remo</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.gamasutra.com/visualcomputing/blog/">
        <![CDATA[<p>In <a href="http://meshula.net/wordpress/?p=194">an interesting historically-tinted blog post</a>, Nick Porcino looks at various methods of contouring in graphics rendering, starting off with the marching cubes algorithm first introduced during Siggraph '87. The method essentially divides a volume into cubes and replaces the cubes with corresponding polygons to approximate the original shape.</p>

<p>After quickly recapping that original principle, Porcino moves onto evolutions of that algorithm: convex contouring ("Where marching cubes generates triangles based on face intersections, convex contouring generates polygonal shapes that enclose the convex negative space within each cell"), dual contouring ("Since vertices are placed in the interior of the cubes and not on the edges of the cubes, there is more freedom as to where the vertex can be placed"), and dual marching cubes.</p>

<p>Dual marching cubes was introduced in 2004. As Porcino describes:</p>

<p><i>"This method aligns vertices in the tessellation with features of the implicit function. The tessellation itself occurs on a grid that is the dual of the structured sampling grid. The result is that thin features missed, or requiring a lot of subdivision are preserved with a much sparser polygonization than that resulting from a structured grid. The method proceeds by creating an octree describing the volume to be contoured, then a dual grid of the octree is created by linking vertices at the centers of each grid cell to its topological neighbours.</p>

<p>"The surface is then extracted using a simple extension of marching cubes to dual grids.  Since each cell in the grid is topologically equivalent to a cube, the standard marching cubes tables can be used to generate the surface interior to the cell. Since the underlying representation of the data is an octree, the resulting tessellation is much sparser than Dual Contouring or Marching Cubes."</i></p>

<p>Porcino includes visual aids that demonstrate how the dual marching cubes algorithm manages to represent geometry better than the other sampling methods, even with a lower polygon count.</p>

<p>Despite the cube-centric tack of the post, Porcino notes that progress is being made using tetrahedral meshes, and points to the website for <a href="http://www.cs.berkeley.edu/~jrs/mesh/">Jonathan Shewchuk's UC Berkeley computer science course</a> as a useful resource to that end.</p>]]>
        
    </content>
</entry>
<entry>
    <title>Feature: Unlocking Processing Potential: Randi Rost On CPU-Based Graphics Architecture</title>
    <link rel="alternate" type="text/html" href="http://www.gamasutra.com/visualcomputing/blog/2008/10/feature_unlocking_processing_p.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.gamebusiness.com/cgi-sys/cgiwrap/gamaboy/managed-mt/mt-atom.cgi/weblog/blog_id=10/entry_id=2708" title="Feature: Unlocking Processing Potential: Randi Rost On CPU-Based Graphics Architecture" />
    <id>tag:www.gamasutra.com,2008:/visualcomputing/blog//10.2708</id>
    
    <published>2008-10-06T09:00:00Z</published>
    <updated>2008-10-10T22:54:57Z</updated>
    
    <summary>The latest Gamasutra visual computing interview shines the spotlight on Intel Graphics&apos; external relations manager Randi Rost, a 25-year development veteran instrumental in the company&apos;s graphics hardware efforts. One of Rost&apos;s focuses is lowering the barrier of entry to development...</summary>
    <author>
        <name>Chris Remo</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.gamasutra.com/visualcomputing/blog/">
        <![CDATA[<p><img alt="Intel's Randi Rost" src="http://www.gamasutra.com/visualcomputing/blog/randi_rost.jpg" hspace="5" align="left" />The latest Gamasutra visual computing interview shines the spotlight on Intel Graphics' external relations manager Randi Rost, a 25-year development veteran instrumental in the company's graphics hardware efforts.</p>

<p>One of Rost's focuses is lowering the barrier of entry to development with graphics hardware, a goal achieved in part by working directly with universities to get feedback and provide training. In this excerpt he discusses the importance of that angle:</p>

<p>"Randi Rost: Universities are where a lot of new technology gets dreamed up, where new algorithms get invented. Universities, particularly in the visual computing space, have been relatively shackled by the existing graphics hardware capabilities-where the entire rendering pipeline has been built into fixed-functionality silicon.</p>

<p>"This provides scant flexibility for researchers to innovate in term of rendering algorithms. Recently, within the last half-dozen years, the hardware pipeline has gotten to be more programmable, but there are still a lot of constraints.</p>

<p>"With our upcoming graphics architecture, built around a completely general-purpose CPU-based design, we're basically removing all the constraints for the rendering pipeline. We're telling researchers: 'Hey, here's an architecture where you can effectively do everything you want in software. There's no fixed functionality to get in your way. If you want to experiment with new rendering algorithms, with ray tracing, with hybrid rendering systems, if you want to replace the rasterization unit, if you want to have procedural geometry so that you can render spheres analytically (rather than breaking them down into polygons)-all of those things are possible.'</p>

<p>"It's a completely open, general, high-performance platform for highly parallel floating-point workloads, such as graphics. And, the basic programming model is simple: C++ code that targets x86 cores."</p>

<p>Rost goes on to discuss the opportunities this presents in hiring talent, and the importance of preparing the next generation of developers for the increasingly complex world of graphics hardware. You can read the <a href="http://www.intelsoftwaregraphics.com/?lid=2035&siteid=19">full interview</a> (no registration required; please feel free to link to this feature from other websites).</p>]]>
        
    </content>
</entry>
<entry>
    <title>Intel Game Demo Contest Winners Announced</title>
    <link rel="alternate" type="text/html" href="http://www.gamasutra.com/visualcomputing/blog/2008/09/intel_game_demo_contest_winner.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.gamebusiness.com/cgi-sys/cgiwrap/gamaboy/managed-mt/mt-atom.cgi/weblog/blog_id=10/entry_id=2703" title="Intel Game Demo Contest Winners Announced" />
    <id>tag:www.gamasutra.com,2008:/visualcomputing/blog//10.2703</id>
    
    <published>2008-09-29T21:26:37Z</published>
    <updated>2008-10-03T01:02:02Z</updated>
    
    <summary>Intel has released the results of its 2008 Game Demo Contest, with winners in four categories receiving cash prizes of $12,500 as well as passes to Game Developers Conference 2009. Runners up received smaller cash prizes. All finalists were helpfully...</summary>
    <author>
        <name>Chris Remo</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.gamasutra.com/visualcomputing/blog/">
        <![CDATA[<p><img alt="goo.jpg" src="http://www.gamasutra.com/visualcomputing/blog/goo.jpg" width="146" height="145" align=left hspace=5 />Intel has released the results of its <a href="http://softwarecommunity.intel.com/articles/eng/3978.htm">2008 Game Demo Contest</a>, with winners in four categories receiving cash prizes of $12,500 as well as passes to Game Developers Conference 2009. Runners up received smaller cash prizes. All finalists were helpfully given a suite of developer tools as well as International Game Developers Association memberships.</p>

<p>Top honors for best overall threaded game went to Tommy Refenes of PillowFort for his <i>Goo!</i> demo, which also placed in the graphics category. You can see some of the evolution of Refenes' multithreading techniques in his <a href="http://www.intelsoftwaregraphics.com/?lid=2009&siteid=19">recent feature article</a>.</p>

<p>Other top honorees include Добряк's <em>Magic Worlds</em>, Tandem Games' <em>Pixel & Vega in: Crunch Time</em>, and Яков Сумыгин's <em>Deadly Light</em>. The winners were narrowed down from 329 entries. All demos that placed up to fifth in their categories are available for download from Intel's site.</p>]]>
        
    </content>
</entry>
<entry>
    <title>Feature: Procedural Spooling In Games</title>
    <link rel="alternate" type="text/html" href="http://www.gamasutra.com/visualcomputing/blog/2008/09/feature_procedural_spooling_in.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.gamebusiness.com/cgi-sys/cgiwrap/gamaboy/managed-mt/mt-atom.cgi/weblog/blog_id=10/entry_id=2705" title="Feature: Procedural Spooling In Games" />
    <id>tag:www.gamasutra.com,2008:/visualcomputing/blog//10.2705</id>
    
    <published>2008-09-29T09:00:00Z</published>
    <updated>2008-10-03T01:01:31Z</updated>
    
    <summary>In the latest in-depth Gamasutra technical feature, Neversoft co-founder Mick West examines how procedural generated content and compression can lead to expanding vistas for your open-world games. Open-world game environments and objects are typically spooled from the disc as players...</summary>
    <author>
        <name>Chris Remo</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.gamasutra.com/visualcomputing/blog/">
        <![CDATA[<p><img alt="procedural_spooling.jpg" src="http://www.gamasutra.com/visualcomputing/blog/procedural_spooling.jpg" width="192" height="150" hspace="5" align="left" />In the latest in-depth Gamasutra technical feature, Neversoft co-founder Mick West examines how procedural generated content and compression can lead to expanding vistas for your open-world games.</p>

<p>Open-world game environments and objects are typically spooled from the disc as players move through an area, with scene complexity often determined by the data transfer rate of spooling and the virtual speed of the player within the world.</p>

<p>If a world has too much complexity, then new glitches may result when data cannot be spooled fast enough as players move from one region to another. To prevent these problems, developers can restrict players' maximum speed so there is sufficient time for the world to load, and they can place limits on scene complexity and allowable variation between regions.</p>

<p>To allow for more complex environments, West suggest that developers take advantage of procedural content -- content generated from mathematical descriptions of underlying forms and parameters describing the specific instance of that content -- and procedural compression:</p>

<p><em>"Procedural compression is simply storing a piece of geometry as a set of procedural parameters rather than as the final model. While this is not compression in the normal sense of the word, the effects are essentially the same, only with a vastly increased (even arbitrarily large) compression ratio.</p>

<p>"The disc spooling bandwidth requirements are thus greatly reduced, allowing us to pack vastly more level geometry into a small percentage of that bandwidth. The trade-off is that artists have reduced flexibility in the models they can represent, since they are constrained to the possible output of the procedural algorithms.</p>

<p>"We also trade some CPU resources, since the generation of geometry may require more CPU time than the standard spooling and decompressing of the raw data."</em></p>

<p>You can read the <a href="http://www.intelsoftwaregraphics.com/?lid=2028&siteid=19">full technical article</a>, which includes more information on procedural compression and solutions to the resource problems that come with the technique (no registration required, please feel free to link to this feature from other websites). </p>]]>
        
    </content>
</entry>
<entry>
    <title>A Tip On (And Discussion Of) HDR Rendering Methods</title>
    <link rel="alternate" type="text/html" href="http://www.gamasutra.com/visualcomputing/blog/2008/09/a_tip_on_and_discussion_of_hdr.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.gamebusiness.com/cgi-sys/cgiwrap/gamaboy/managed-mt/mt-atom.cgi/weblog/blog_id=10/entry_id=2702" title="A Tip On (And Discussion Of) HDR Rendering Methods" />
    <id>tag:www.gamasutra.com,2008:/visualcomputing/blog//10.2702</id>
    
    <published>2008-09-22T18:59:57Z</published>
    <updated>2008-09-27T01:12:29Z</updated>
    
    <summary>LucasArts engineer Marco Salvi has posted an in-depth explanation of his method for HDR rendering, prompted by a SIGGRAPH 2006 lecture series by Valve employees. Salvi first touches on Valve&apos;s own HDR process (added to the Source engine in 2005),...</summary>
    <author>
        <name>Chris Remo</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.gamasutra.com/visualcomputing/blog/">
        <![CDATA[<p><img alt="hl2_lostcoast.jpg" hspace=5 align=left src="http://www.gamasutra.com/visualcomputing/blog/hl2_lostcoast.jpg" width="200" height="153" />LucasArts engineer Marco Salvi has posted <a href="http://pixelstoomany.wordpress.com/2008/07/05/another-day-another-hdr-rendering-trick-and-some-hope-for-the-future/">an in-depth explanation of his method for HDR rendering</a>, prompted by a SIGGRAPH 2006 lecture series by Valve employees. Salvi first touches on Valve's own HDR process (added to the Source engine in 2005), which he points out runs "with MSAA on relatively old hardware [and] executes tone mapping and MSAA resolve in the proper correct order with no extra performance cost, something that a lot of modern games can't still get right today."</p>

<p>"Through image segmentation techniques," Valve's code "’simply’ tries to determine if the previous frame has been under or over exposed and a new exposure value is adjusted to compensate for problems with the previous frame(s)." Salvi notes that this method doesn't allow for reliably determining average logarithmic luminance, which in his experience has led to "an overall flat and over or under saturated feeling." So he introduces his own plan: "get rid of the exposure search through previous frames feedback and compute it the proper way!"</p>

<p>Salvi's method computes per-pixel logarithmic luminance and outputs that to the alpha channel; he includes a code example of the relevant math, and delves into further specific details.</p>

<p>As a bonus, Valve's Gary McTaggart and Chris Green, both presenters of the lectures that spurred Salvi's post, drop by in the blog's comment section to explain their reasoning behind the route they took for the Source engine's HDR implementation.</p>]]>
        
    </content>
</entry>
<entry>
    <title>Sponsored Feature: A Landmark in Image Processing: DMIP</title>
    <link rel="alternate" type="text/html" href="http://www.gamasutra.com/visualcomputing/blog/2008/09/sponsored_feature_a_landmark_i.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.gamebusiness.com/cgi-sys/cgiwrap/gamaboy/managed-mt/mt-atom.cgi/weblog/blog_id=10/entry_id=2704" title="Sponsored Feature: A Landmark in Image Processing: DMIP" />
    <id>tag:www.gamasutra.com,2008:/visualcomputing/blog//10.2704</id>
    
    <published>2008-09-22T01:12:55Z</published>
    <updated>2008-09-27T01:19:50Z</updated>
    
    <summary>In the latest Intel-sponsored feature, Lightspeed Publishing&apos;s Lee Purcell lays out deferred mode image processing, a new addition to the Intel Integrated Performance Primitives Library, which speeds up complex image-processing tasks with up to 3X performance increases. Purcell begins by...</summary>
    <author>
        <name>Chris Remo</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.gamasutra.com/visualcomputing/blog/">
        <![CDATA[<p>In the latest Intel-sponsored feature, Lightspeed Publishing's Lee Purcell lays out deferred mode image processing, a new addition to the Intel Integrated Performance Primitives Library, which speeds up complex image-processing tasks with up to 3X performance increases.</p>

<p>Purcell begins by laying out current issues in dealing with image processing, which becomes more challenging with the ever-increasing resolution and color demands that come alongside the evolutions in high-definition imaging. Intel's DMIP attempts to address the issue. As software engineer Alexander Kibkalo, quoted by Purcell, explains:</p>

<p><i>"Fundamentally, DMIP optimizes overall image-processing tasks within an application while individual Intel IP functions can be optimized without requiring knowledge of the environment or the conditions of the function call. DMIP provides the detailed descriptions of each task in DAG form and the appropriate preferences can then be applied for optimizing the routines.</p>

<p>"In terms of parallelization on Intel processors, DMIP tries to maintain a balance of the slice size. Keeping it comparatively small lets the slice fit into L2 cache and enable efficient pipelining. Splitting the slices into comparatively large sub-slices allows them to be efficiently handled by the available processor cores (for example, by 4 lines for a quad-core processor or by 8 lines for an 8-core processor). For achieving the best performance, the actual method of splitting should be tailored to the individual processor on which the application is being run."</i></p>

<p>Purcell also notes several secondary benefits: </p>

<p><i>"For example, matching the Intel IP function algorithms to the low-level optimizations for the Intel Streaming SIMD Extensions (Intel SSE) (from Intel SSE through Intel SSE4) can improve overall application performance substantially. Software developers and their application designs benefit from well-established, highly refined algorithms that address many of the most important programming operations. Intel's support network also adds value and utility to these libraries."</i></p>

<p>You can now read <a href="http://www.intelsoftwaregraphics.com/?lid=2021&siteid=19">the full feature</a>, which includes detailed information and visual aids.</p>]]>
        
    </content>
</entry>
<entry>
    <title>Sponsored Video: Michael Langmayer On 3ds Max&apos;s Multithreading</title>
    <link rel="alternate" type="text/html" href="http://www.gamasutra.com/visualcomputing/blog/2008/09/sponsored_video_michael_langma.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.gamebusiness.com/cgi-sys/cgiwrap/gamaboy/managed-mt/mt-atom.cgi/weblog/blog_id=10/entry_id=2701" title="Sponsored Video: Michael Langmayer On 3ds Max's Multithreading" />
    <id>tag:www.gamasutra.com,2008:/visualcomputing/blog//10.2701</id>
    
    <published>2008-09-11T19:07:42Z</published>
    <updated>2008-09-11T23:01:50Z</updated>
    
    <summary>In this video, Autodesk 3D application specialist Michael Langmayer gives a demonstration of 3DS Max and how it takes advantage of multi-core computing. 3ds Max integrates the Mental Ray rendering engine and uses distributed processing, including over a network. &quot;Metal...</summary>
    <author>
        <name>Chris Remo</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.gamasutra.com/visualcomputing/blog/">
        <![CDATA[<p>In this video, Autodesk 3D application specialist Michael Langmayer gives a demonstration of 3DS Max and how it takes advantage of multi-core computing. 3ds Max integrates the Mental Ray rendering engine and uses distributed processing, including over a network.</p>

<center><object type="application/x-shockwave-flash" data="http://blip.tv/scripts/flash/showplayer.swf?enablejs=true&file=http%3A%2F%2Fblip%2Etv%2Frss%2Fflash%2F1186876&showplayerpath=http%3A%2F%2Fblip%2Etv%2Fscripts%2Fflash%2Fshowplayer%2Eswf" width="450" height="285" allowfullscreen="true" id="showplayer"><param name="movie" value="http://blip.tv/scripts/flash/showplayer.swf?enablejs=true&file=http%3A%2F%2Fblip%2Etv%2Frss%2Fflash%2F1186876&showplayerpath=http%3A%2F%2Fblip%2Etv%2Fscripts%2Fflash%2Fshowplayer%2Eswf" /><param name="quality" value="best" /></object></center>

<p>"Metal Ray allows you to take advantage of multiple processors -- not only processors in this machine, but processors in the network," he says. "We have something called distributed bucket rendering. If I switch this one on, and the network here is connected to other machines, I could basically connect to four other machines having dual-core processors intalled, and I could then render with the power of four machines."</p>

<p>He then demonstrates the rendering process: "At the bottom you can see we're getting all those different buckets. Each bucket is actually representing one core of this machine I'm running here. It's helping the artists or the creator of any office or design-related building to render a lot quicker. ...We can utilize this in the games market for texture baking, for example. ...We're really harnessing the power of those multi-threaded machines."</p>

<p>Langmayer also demonstrates the 3D sculpting tool Mudbox.</p>]]>
        
    </content>
</entry>
<entry>
    <title>A Guide To Dual-Paraboloid Reflections</title>
    <link rel="alternate" type="text/html" href="http://www.gamasutra.com/visualcomputing/blog/2008/09/a_guide_to_dualparaboloid_refl_1.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.gamebusiness.com/cgi-sys/cgiwrap/gamaboy/managed-mt/mt-atom.cgi/weblog/blog_id=10/entry_id=2699" title="A Guide To Dual-Paraboloid Reflections" />
    <id>tag:www.gamasutra.com,2008:/visualcomputing/blog//10.2699</id>
    
    <published>2008-09-08T19:50:02Z</published>
    <updated>2008-09-12T00:06:34Z</updated>
    
    <summary>Kyle Hayward, a Purdue University senior studying graphics research who we&apos;ve featured before, posted a useful primer to dual-paraboloid reflections, which he describes as a &quot;view-independent method of rendering reflections just like cubemaps.&quot; Unlike cubemaps, which can require updating up...</summary>
    <author>
        <name>Eric Caoili</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.gamasutra.com/visualcomputing/blog/">
        <![CDATA[<p><img alt="dual_paraboloid.jpg" src="http://www.gamasutra.com/visualcomputing/blog/dual_paraboloid.jpg" width="200" height="158" hspace=5 align=left />Kyle Hayward, a Purdue University senior studying graphics research who <a href="http://www.gamasutra.com/visualcomputing/blog/2008/08/sample_framework_for_connectin.php">we've featured before</a>, posted a useful primer to <a href="http://graphicsrunner.blogspot.com/2008/07/dual-paraboloid-reflections.html">dual-paraboloid reflections</a>, which he describes as a "view-independent method of rendering reflections just like cubemaps."</p>

<p>Unlike cubemaps, which can require updating up to six textures when rendering dynamic scenes, dual-paraboloid reflections only require updating two textures.</p>

<p>Hawyard comments: "They won't give you the quality of cubemaps, but they are faster to update and require less memory. And in the console world, requiring less is almost reason enough to pick this method over cubemaps."</p>

<p>He goes on to share several reference articles and a math overview before providing code for developers to experiment with generating their own reflections with paraboloid maps.</p>

<p>Hayward notes that there are a couple faults to watch out for in addition to reduced quality: "One drawback of paraboloid maps is that the environment geometry has to be sufficiently tessellated or we will have noticeable artifacts on our reflector. Another drawback is that on spherical objects, we will see seems. However, with objects that have convex and concave polygons, the seem won't be as noticeable."</p>]]>
        
    </content>
</entry>
<entry>
    <title>Sponsored Feature: Multi-Threading Goo!: A Programmer&apos;s Diary</title>
    <link rel="alternate" type="text/html" href="http://www.gamasutra.com/visualcomputing/blog/2008/09/sponsored_feature_multithreadi.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.gamebusiness.com/cgi-sys/cgiwrap/gamaboy/managed-mt/mt-atom.cgi/weblog/blog_id=10/entry_id=2700" title="Sponsored Feature: Multi-Threading Goo!: A Programmer's Diary" />
    <id>tag:www.gamasutra.com,2008:/visualcomputing/blog//10.2700</id>
    
    <published>2008-09-08T09:01:01Z</published>
    <updated>2008-09-12T00:06:48Z</updated>
    
    <summary>In the latest Intel-sponsored feature, Goo! developer Tommy Refenes of PillowFort matches wits with multi-threading in four gripping acts -- and emerges victorious. Refenes begins by describing his initial attitude to threading, one which proved a poor choice: he dedicated...</summary>
    <author>
        <name>Chris Remo</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.gamasutra.com/visualcomputing/blog/">
        <![CDATA[<p>In the latest Intel-sponsored feature, <i>Goo!</i> developer Tommy Refenes of PillowFort matches wits with multi-threading in four gripping acts -- and emerges victorious.</p>

<p>Refenes begins by describing his initial attitude to threading, one which proved a poor choice: he dedicated a thread to the specific tasks of collision, only calling that thread's functions when needed and keeping it in a nonfunctioning loop otherwise. Here, he explains his mistake:</p>

<p><em>"The model of having two threads sleeping and waiting for work (at least in the way in which they were waiting) was horrible. The threads waited in an infinite loop for work, and if they didn't find any, they performed a Sleep(0) and then continued waiting for work. At the time, I thought the Sleep(0) would free the processor enough so that other threads running elsewhere on the OS would be scheduled efficiently. Boy, was I wrong. The work check loop had the two processors constantly running at 90 percent to 100 percent capacity- an absolute waste of time. To understand why, picture this scenario.</p>

<p>"Let's say you are in charge of five construction workers tasked with paving a road. You know that you will need at least two of them to lay blacktop and at least the remaining three to grade the road, dig the ditches, and so on. Being the efficient supervisor that you are, you wouldn't think of allowing the two workers that need to lay the blacktop to sleep in the middle of the road until the blacktop is ready to be laid. No, to work as efficiently as possible, you would put all five of them to work grading and then all five paving. "</em></p>

<p>Refenes goes on to describe how he then created a new custom multi-threaded collision engine -- which he once again threw away and rewrote since that version of the game would not run on single-core machines. By the end of Act 4, he has programming another engine, one which dynamically scales based on the number of cores available.</p>

<p>You can now <a href="http://www.gamasutra.com/view/feature/3782/multithreading_goo_a_.php">read the full feature</a>, which includes specific technical details and visual aids.</p>]]>
        
    </content>
</entry>
<entry>
    <title>Paper: Multi-Threaded Shadow Volumes on Mainstream Graphics Hardware</title>
    <link rel="alternate" type="text/html" href="http://www.gamasutra.com/visualcomputing/blog/2008/09/paper_multithreaded_shadow_vol.php" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.gamebusiness.com/cgi-sys/cgiwrap/gamaboy/managed-mt/mt-atom.cgi/weblog/blog_id=10/entry_id=2697" title="Paper: Multi-Threaded Shadow Volumes on Mainstream Graphics Hardware" />
    <id>tag:www.gamasutra.com,2008:/visualcomputing/blog//10.2697</id>
    
    <published>2008-09-05T19:57:13Z</published>
    <updated>2008-09-10T20:26:51Z</updated>
    
    <summary>The Intel Software Network has posted &quot;Multi-Threaded Shadow Volumes on Mainstream Graphics Hardware,&quot; a white paper from software engineer David Bookout and Intel senior applications engineer Satheesh Subramanian, which describes techniques for generating shadows on mainstream graphics hardware in realtime....</summary>
    <author>
        <name>Eric Caoili</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://www.gamasutra.com/visualcomputing/blog/">
        <![CDATA[<p><img alt="shadowvolumes.jpg" align=left hspace=5 src="http://www.gamasutra.com/visualcomputing/blog/shadowvolumes.jpg" width="200" height="119" />The Intel Software Network has posted "<a href="http://softwarecommunity.intel.com/articles/eng/2663.htm">Multi-Threaded Shadow Volumes on Mainstream Graphics Hardware</a>," a white paper from software engineer David Bookout and Intel senior applications engineer Satheesh Subramanian, which describes techniques for generating shadows on mainstream graphics hardware in realtime.</p>

<p>The paper notes that though shadow volumes are able to create physically accurate shadows, thus providing a more realistic 3D scene, having an abundance of dynamic shadow-generating objects or moving light sources can affect performance.</p>

<p>To combat that problem, the paper covers "how shadow volumes generated on the CPU using a multithreaded approach could free up the graphics hardware from this bottleneck-creating task."</p>

<p>The paper also provides a shadow maps implementation based on the EmptyProject example from the Microsoft DirectX 9.0 SDK.<br />
</p>]]>
        
    </content>
</entry>

</feed> 

