<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>Visual Computing</title>
      <link>http://www.gamasutra.com/visualcomputing/blog/</link>
      <description></description>
      <language>en</language>
      <copyright>Copyright 2009</copyright>
      <lastBuildDate>Tue, 23 Dec 2008 15:33:59 -0800</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/?v=3.2</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

            <item>
         <title>The Catch for Multi-threading Decision Making</title>
         <description><![CDATA[<p><img alt="aigamedev.gif" src="http://www.gamasutra.com/visualcomputing/blog/aigamedev.gif" width="298" height="60" hspace=5 align=left />Contract-based developer Alex J. Champandard runs the <a href="http://aigamedev.com/">AiGameDev.com</a> site and blog, excellent resources for game makers working in the artificial intelligence space. The site is regularly updated with posts, Q&As, videos, and other features centering around AI.</p>

<p>Some of the content is directly related to multithreading and even Intel in particular, as numerous articles deal with the ins and outs of multithreading AI-related tasks, and examples frequently make use of Intel's <a href="http://www.threadingbuildingblocks.org/">threaded building blocks</a> C++ library.</p>

<p>For example, <a href="http://aigamedev.com/architecture/multi-threading-catch">The Catch for Multi-threading Decision Making</a> contains a video Q&A with Champandard addressing the notion of dedicating processor cores specifically to AI.</p>

<p>"It's harder to throw processing power at the problem than you realize," he offers. "It's easier to throw, let's say, many more animations and more behaviors, but you don't necessarily have a linear growth in computation when you have more assets; you will structure them in such a way that your decision-making is always not linear. If you have N behaviors, you have to make sure your decision-making is not [in] order N, but has some structure to it, so when all these behaviors need to be selected, you're going to do that in a scalable way. ...Processing power is not something you use linearly."</p>

<p>As well as going further in-depth into that topic with visual aids, the post also follows a practical primer called <a href="http://aigamedev.com/architecture/hierarchical-logic-multi-threading">Hierarchical Logic and Multi-threaded Game AI</a>, and links to a feature on <a href="http://aigamedev.com/premium/tutorials/multi-threaded-planner-performance">Multi-threading a Simple Hierarchical Planner to Estimate Performance</a> (note that that piece requires registration on the site, which is free).</p>]]></description>
         <link>http://www.gamasutra.com/visualcomputing/blog/2008/12/the_catch_for_multithreading_d.php</link>
         <guid>http://www.gamasutra.com/visualcomputing/blog/2008/12/the_catch_for_multithreading_d.php</guid>
         <category></category>
         <pubDate>Tue, 23 Dec 2008 15:33:59 -0800</pubDate>
      </item>
            <item>
         <title>Video Demonstrations of the Smoke Framework</title>
         <description><![CDATA[<p>Following up on the recent <a href="http://www.gamasutra.com/visualcomputing/blog/2008/12/performance_scaling_with_cores.php">Smoke framework overview</a>, here are two videos from the Intel Software Network featuring Intel's Orion Granatir, Brad Werth, and Omar Rodriguez demonstrating the Smoke framework demo application, and explaining some of the concepts behind the project.</p>

<p>The demo was run on an Intel Core I7 with all four cores, as well as four virtual threads with hyperthreading. "There's lots of ways you can do threading," said Granatir. "It's a difficult problem." He noted:</p>

<p><i>"The Smoke demo is a technical demo we put together at Intel to showcase threading in a game environment. We wanted a lot of thread interaction between a lot of common game systems, and show you could thread these in an effective manner. ...The demo has two purposes: it shows off this threading, and it shows off how you can harness the power of Intel's modern CPUs."</i></p>

<p>Speaking on the project, Werth explained: </p>

<p><i>"In development, we ran [this demo] under two different threading system. We built what we call the native thread pool system using the Windows native APIs, then we built a threading system using the same API for the Intel Threading Building Blocks, which is an open-source library that was originally produced at Intel, but we were so happy with it we opened it up to the open source community."</i><br />
<center><object width='440' 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/e/f/5/7/5/e/8/ef575e8837d065a1683c022d2077d342.flv&amp;image=http://software.intel.com/media/videos/e/f/5/7/5/e/8/ef575e8837d065a1683c022d2077d342_player.jpg&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' bgcolor='#FFFFFF' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer' flashvars='file=http://software.intel.com/media/videos/e/f/5/7/5/e/8/ef575e8837d065a1683c022d2077d342.flv&amp;image=http://software.intel.com/media/videos/e/f/5/7/5/e/8/ef575e8837d065a1683c022d2077d342_player.jpg&autostart=false&bufferlength=5&allowfullscreen=true' allowfullscreen='true'/></object></center><br />
In a second video, Rodriguez shows off the demo in more depth, characterizing it as a "multi-threaded demo with multiple game systems interacting in a highly-threaded environment." It allows the user to toggle between the number of available threads, and measures total CPU utilization, frames per second, available threads, and a list of systems interacting, including physics, audio, AI, animation, scripting, graphics, and others.<br />
<center><object width='440' 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/8/e/6/b/4/2/f/8e6b42f1644ecb1327dc03ab345e618b.flv&amp;image=http://software.intel.com/media/videos/8/e/6/b/4/2/f/8e6b42f1644ecb1327dc03ab345e618b_player.jpg&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' bgcolor='#FFFFFF' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer' flashvars='file=http://software.intel.com/media/videos/8/e/6/b/4/2/f/8e6b42f1644ecb1327dc03ab345e618b.flv&amp;image=http://software.intel.com/media/videos/8/e/6/b/4/2/f/8e6b42f1644ecb1327dc03ab345e618b_player.jpg&autostart=false&bufferlength=5&allowfullscreen=true' allowfullscreen='true'/></object></center></p>]]></description>
         <link>http://www.gamasutra.com/visualcomputing/blog/2008/12/video_demonstrations_of_the_sm.php</link>
         <guid>http://www.gamasutra.com/visualcomputing/blog/2008/12/video_demonstrations_of_the_sm.php</guid>
         <category></category>
         <pubDate>Fri, 05 Dec 2008 17:08:14 -0800</pubDate>
      </item>
            <item>
         <title>Sponsored Feature: Multi-Core Simulation of Soft-Body Characters Using Cloth</title>
         <description><![CDATA[<p>In the latest Intel-sponsored Gamasutra feature, Intel senior software engineer Brad Werth explains <a href="http://www.gamasutra.com/view/feature/3876/sponsored_feature_multicore_.php">how multicore CPUs can be leveraged</a> for an efficient method of representing soft-body characters by way of cloth simulation.</p>

<p>Because of CPUs constrained with limited computational power, most character animation is done today with a bones-and-skin method, which uses a small number of invisible control points, linked together as bones, to control the a figure. To "skin" the character, the visual portions of the figure are then bound to specific bones.</p>

<p>While this method provides a relatively fast way to animate characters given CPU constraints, the advent of two-core and fore-core processors is allowing for more sophisticated character animation techniques:</p>

<p><i>"With additional processing power, the bones-and-skin method can be extended for more detailed animation. More bones can be added for additional degrees of freedom. But there is no need to create additional bones unless a new joint is being modeled. Improvements are also possible by focusing on more complicated movement of the bones.</p>

<p>Instead of just blending between canned animations, animations can be blended with physics to create dynamic motion in the bones. This is already implemented in games that use "rag doll" corpses, and has been implemented in some middleware products also. </p>

<p>Bones-and-skin is one method for character animation, but it is not the only viable choice assuming that increased computational power is available. Since the skin is the only visible part of the character, an alternative is to ignore bones and calculate the shape and movement of the skin directly.</p>

<p>If the skin is disengaged from bones, then only local forces and constraints maintain the character's form. The resulting skin can be manipulated equally well from internal and external forces. A character built this way is sometimes called a "soft-body" character. </p>

<p>In a soft-body character, simulated cloth can be used as a skin. Forces applied to the cloth create the form of the soft-body character. Sock puppets are a simple example of this technique. The cloth provides local constraints to maintain the form of the sock, and the hand provides the forces to give the character volume.</p>

<p>When simulating cloth computationally, the hand becomes an invisible mathematical construct and the sock is attached to that construct at key points. By expanding on this concept, a variety of soft-body characters can be created."</i></p>

<p>You can now <a href="http://www.intelsoftwaregraphics.com/?lid=2145&siteid=19">read the full feature</a>, which includes specific technical details and visual aids.</p>]]></description>
         <link>http://www.gamasutra.com/visualcomputing/blog/2008/12/sponsored_feature_multicore_si.php</link>
         <guid>http://www.gamasutra.com/visualcomputing/blog/2008/12/sponsored_feature_multicore_si.php</guid>
         <category></category>
         <pubDate>Thu, 04 Dec 2008 10:01:50 -0800</pubDate>
      </item>
            <item>
         <title>Performance Scaling With Cores: Introducing The Smoke Framework</title>
         <description><![CDATA[<p><img hspace=5 align=left alt="smoke.gif" src="http://www.gamasutra.com/visualcomputing/blog/smoke.gif" width="200" height="170" />In an overview piece posted on Gamasutra, Intel Software and Services Group application engineer Orion Granatir and PC Perspective editor-in-chief Ryan Shrout have outlined Intel's Smoke framework, which attempts to intelligently optimize multi-threaded processors for gaming, ameliorating some of the difficulties encountered by game developers who are unaccustomed to the increasingly important world of multicore development, which is "moving in the direction of 'more cores' rather than 'more clocks.'"</p>

<p>In addition to explaining the purpose and architecture of Smoke, the piece gives a practical example based on a demo application, showing relative performance based on scaling to various numbers of cores.</p>

<p>As the pair explains:</p>

<p><i>"Smoke is a model framework that maximizes the performance of the processor in a purely gaming environment. Built to take advantage of all available threads, it works equally efficiently on standard dual-core Intel Celeron processors as well as on new Intel Core i7 Processors with Intel Hyper-Threading Technology.</p>

<p>"The Smoke video demonstration, shown at many trade shows and technology events, uses modern game-development technologies, including Havok for physics processing, FMOD for audio playback, Ogre 3D and DirectX 9 for graphics rendering, and more. As you would expect for an internally developed demo, the code shows the Smoke framework as a well-partitioned and configurable product.</p>

<p>"Intel developed Smoke mainly as a teaching tool to demonstrate the ability to create a framework that can scale to any number of threads. Developers are encouraged to explore the technology by examining new threading techniques and learning about the interactions between various game engine systems that typically hold back a game’s potential threadability.</p>

<p>"Intel’s goal through this and other efforts is to help prove that multi-threaded gaming can be done effectively and is an investment in time that is worth taking."</i></p>

<p><a href="http://www.intelsoftwaregraphics.com/?lid=2086&siteid=19">The full article</a> is available to read on Gamasutra; no registration is required.</p>]]></description>
         <link>http://www.gamasutra.com/visualcomputing/blog/2008/12/performance_scaling_with_cores.php</link>
         <guid>http://www.gamasutra.com/visualcomputing/blog/2008/12/performance_scaling_with_cores.php</guid>
         <category></category>
         <pubDate>Mon, 01 Dec 2008 16:26:42 -0800</pubDate>
      </item>
            <item>
         <title>Adding YouTube Integration to Games</title>
         <description><![CDATA[<p><img alt="youtube.jpg" align=left src="http://www.gamasutra.com/visualcomputing/blog/youtube.jpg" width="200" height="200" hspace=5 />In a <a href="http://www.intelsoftwaregraphics.com/?lid=2072&siteid=19">detailed technical feature with sample code</a> posted on Gamasutra, Team Bondi programmer Claus Höfele delves into the practical steps for your players to get gameplay footage automagically uploaded online.</p>

<p>Noting that "increasingly, YouTube integration is seen as a valuable feature addition to games," Höfele points to Maxis' <i>Spore Creature Creator</i>, which makes extensive use of YouTube integration, features its own YouTube channel, and ties its community into the site.</p>

<p>Since YouTube provides an API that makes this feature possible for just about any game developer, even indie game makers can offer a bonus to their users that otherwise may be prohibitive in terms of the development effort and server capacity that would be required.</p>

<p>Höfele includes not only code examples in his article but also a demo application with included full source code. In the feature, he addresses numerous major steps to adding YouTube integration: recording gameplay, choosing a video format, encoding screenshots, dealing with YouTube's API, and uploading the videos.</p>

<p>As Höfele summarizes:</p>

<p><i>"Adding YouTube upload to your game is straightforward, but requires some planning.</p>

<p>"To start with, you need to decide how you are going to record the game footage. From the discussed options, a framebuffer capture is the easiest to add to an existing game, but recording game state or player input gives you more flexibility to apply changes to the recording. If you want to change the camera angle later on, for example, game state recordings allow you to do that.</p>

<p>"Finally, an application can upload videos with YouTube's RESTful interface; a protocol based on HTTP. The demo application for this article comes with an implementation for authentication, search, and video upload requests that you can use for your own game."</i></p>]]></description>
         <link>http://www.gamasutra.com/visualcomputing/blog/2008/11/adding_youtube_integration_to.php</link>
         <guid>http://www.gamasutra.com/visualcomputing/blog/2008/11/adding_youtube_integration_to.php</guid>
         <category></category>
         <pubDate>Wed, 26 Nov 2008 16:23:15 -0800</pubDate>
      </item>
            <item>
         <title>Simulating Reflections For Wet Asphalt</title>
         <description><![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>]]></description>
         <link>http://www.gamasutra.com/visualcomputing/blog/2008/11/simulating_reflections_for_wet.php</link>
         <guid>http://www.gamasutra.com/visualcomputing/blog/2008/11/simulating_reflections_for_wet.php</guid>
         <category></category>
         <pubDate>Mon, 10 Nov 2008 15:25:40 -0800</pubDate>
      </item>
            <item>
         <title>Sponsored Feature: Intel Calls All Game Companies as Partners</title>
         <description><![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>]]></description>
         <link>http://www.gamasutra.com/visualcomputing/blog/2008/10/sponsored_feature_intel_calls.php</link>
         <guid>http://www.gamasutra.com/visualcomputing/blog/2008/10/sponsored_feature_intel_calls.php</guid>
         <category></category>
         <pubDate>Mon, 27 Oct 2008 16:41:19 -0800</pubDate>
      </item>
            <item>
         <title>Sponsored Video: Threading Quake 4 and Quake Wars</title>
         <description><![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 Quake 4 and Splash Damage's spinoff title Enemy Territory: Quake Wars.<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 Quake 4, all the dynamic meshes that are generated per frame had to be buffered and shared between the two threads, which isn't the case with Quake Wars."</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 Quake series creator id Software.</p>]]></description>
         <link>http://www.gamasutra.com/visualcomputing/blog/2008/10/sponsored_video_threading_quak_1.php</link>
         <guid>http://www.gamasutra.com/visualcomputing/blog/2008/10/sponsored_video_threading_quak_1.php</guid>
         <category></category>
         <pubDate>Thu, 23 Oct 2008 18:26:23 -0800</pubDate>
      </item>
            <item>
         <title>Feature: Optimizing Asset Processing</title>
         <description><![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>]]></description>
         <link>http://www.gamasutra.com/visualcomputing/blog/2008/10/feature_optimizing_asset_proce.php</link>
         <guid>http://www.gamasutra.com/visualcomputing/blog/2008/10/feature_optimizing_asset_proce.php</guid>
         <category></category>
         <pubDate>Wed, 22 Oct 2008 16:46:14 -0800</pubDate>
      </item>
            <item>
         <title>Sponsored Video: Robust N-Core Capable Game Engine Design</title>
         <description><![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>]]></description>
         <link>http://www.gamasutra.com/visualcomputing/blog/2008/10/sponsored_video_robust_ncore_c.php</link>
         <guid>http://www.gamasutra.com/visualcomputing/blog/2008/10/sponsored_video_robust_ncore_c.php</guid>
         <category></category>
         <pubDate>Thu, 16 Oct 2008 10:00:00 -0800</pubDate>
      </item>
            <item>
         <title>Progress In Contouring</title>
         <description><![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>]]></description>
         <link>http://www.gamasutra.com/visualcomputing/blog/2008/10/progress_in_contouring.php</link>
         <guid>http://www.gamasutra.com/visualcomputing/blog/2008/10/progress_in_contouring.php</guid>
         <category></category>
         <pubDate>Mon, 13 Oct 2008 11:00:00 -0800</pubDate>
      </item>
            <item>
         <title>Feature: Unlocking Processing Potential: Randi Rost On CPU-Based Graphics Architecture</title>
         <description><![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>]]></description>
         <link>http://www.gamasutra.com/visualcomputing/blog/2008/10/feature_unlocking_processing_p.php</link>
         <guid>http://www.gamasutra.com/visualcomputing/blog/2008/10/feature_unlocking_processing_p.php</guid>
         <category></category>
         <pubDate>Mon, 06 Oct 2008 01:00:00 -0800</pubDate>
      </item>
            <item>
         <title>Intel Game Demo Contest Winners Announced</title>
         <description><![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>]]></description>
         <link>http://www.gamasutra.com/visualcomputing/blog/2008/09/intel_game_demo_contest_winner.php</link>
         <guid>http://www.gamasutra.com/visualcomputing/blog/2008/09/intel_game_demo_contest_winner.php</guid>
         <category></category>
         <pubDate>Mon, 29 Sep 2008 13:26:37 -0800</pubDate>
      </item>
            <item>
         <title>Feature: Procedural Spooling In Games</title>
         <description><![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>]]></description>
         <link>http://www.gamasutra.com/visualcomputing/blog/2008/09/feature_procedural_spooling_in.php</link>
         <guid>http://www.gamasutra.com/visualcomputing/blog/2008/09/feature_procedural_spooling_in.php</guid>
         <category></category>
         <pubDate>Mon, 29 Sep 2008 01:00:00 -0800</pubDate>
      </item>
            <item>
         <title>A Tip On (And Discussion Of) HDR Rendering Methods</title>
         <description><![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>]]></description>
         <link>http://www.gamasutra.com/visualcomputing/blog/2008/09/a_tip_on_and_discussion_of_hdr.php</link>
         <guid>http://www.gamasutra.com/visualcomputing/blog/2008/09/a_tip_on_and_discussion_of_hdr.php</guid>
         <category></category>
         <pubDate>Mon, 22 Sep 2008 10:59:57 -0800</pubDate>
      </item>
      
   </channel>
</rss>
