<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Confetti</title>
	<atom:link href="http://www.confettispecialfx.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.confettispecialfx.com</link>
	<description>Graphics Programming Services, Middleware</description>
	<lastBuildDate>Tue, 04 Jun 2013 15:58:55 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Confetti offers Middleware for Xbox One</title>
		<link>http://www.confettispecialfx.com/confetti-offers-middleware-for-xbox-one</link>
		<comments>http://www.confettispecialfx.com/confetti-offers-middleware-for-xbox-one#comments</comments>
		<pubDate>Wed, 22 May 2013 00:43:42 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[D3D11]]></category>
		<category><![CDATA[Deferred Lighting]]></category>
		<category><![CDATA[General GPU Programming]]></category>
		<category><![CDATA[Global Illumination]]></category>
		<category><![CDATA[Shadow Maps]]></category>
		<category><![CDATA[XBOX One]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=678</guid>
		<description><![CDATA[Encinitas, USA Confetti (www.conffx.com), a provider of cutting edge 3D middleware and a Tools &#38; Middleware provider for Xbox One, the all-in-one games and entertainment system from Microsoft, announces today that game developers for Xbox One will be able to access the full power of Aura (Dynamic Global Illumination System), Ephemeris (Dynamic Skydome System) and [...]]]></description>
				<content:encoded><![CDATA[<p>Encinitas, USA</p>
<p>Confetti (www.conffx.com), a provider of cutting edge 3D middleware and a Tools &amp; Middleware provider for Xbox One, the all-in-one games and entertainment system from Microsoft, announces today that game developers for Xbox One will be able to access the full power of Aura (Dynamic Global Illumination System), Ephemeris (Dynamic Skydome System) and PixelPuzzle (Post-Processing Pipeline) to express all aspects of their creativity using more advanced technologies for their game.</p>
<p>&nbsp;</p>
<p>Confetti is a think-tank for advanced real-time graphics research for the video game and movie industry. We are game developers with 10+ years of experience each.<br />
We offer three industry leading middleware packages for licensing.</p>
<p>Aura -our Global Illumination system- is a fully dynamic Global Illumination system. It can simulate one or several bounces.</p>
<p>-          Aura doesn&#8217;t require pre-processing data, so artists work in real-time</p>
<p>-          Aura allows to destroy geometry randomly, so there are no limits to destructibility</p>
<p>-          Aura affects characters as well as the environment</p>
<p>-          Aura works with as many light sources as you want from directional, point or spot lights or any other light type</p>
<p>-          Very low memory footprint</p>
<p>&nbsp;</p>
<p>Ephemeris -our Dynamic Skydome System- offers you a fully dynamic solution that is drag and drop. With sunrises, sunsets, blue sky, and a shimmering moon all in one package, you can insure that your game can support a 24 hour cycle without switching between different techniques.</p>
<p>It supports</p>
<p>-          Dynamic 24 hour time cycle</p>
<p>-          Physically based rendering model with multiple scatterings of the sun</p>
<p>-          Simulation of astronomically correct sun, stars, and moon</p>
<p>-          God rays</p>
<p>-          Aerial perspective</p>
<p>-          Dynamically lit volumetric clouds</p>
<p>&nbsp;</p>
<p>PixelPuzzle – our Post-Processing Pipeline- is build as an extension to a regular in-game camera system. It allows you to create many different camera types with ,for example, different motion blur, depth of field, color filters etc. and then pick the camera you want on the fly. So you can switch between very different camera models in a game instantly and therefore enhance the way a story can be told.</p>
<p>PixelPuzzle also comes with various tonemappers to fit your game along with different color filters to enhance your scene. On top of that the system is easy to integrate to ensure you spend more time on your game.</p>
<p>More features are</p>
<p>-          Simulates camera controls for ease of use</p>
<p>-          Shaped Bokeh / Depth of field</p>
<p>-          Motion blur</p>
<p>-          HDR tonemapping</p>
<p>-          Bloom</p>
<p>-          Scotopic vision</p>
<p>-          Color filters</p>
<p>-          Camera Noise Simulation</p>
<p>-          Vignetting</p>
<p>-          Gamma correction</p>
<p>-          Easy to integrate</p>
<p>&nbsp;</p>
<p>Services &#8211; we also offer real-time graphics related consulting and programming services. We have a long list of companies from the hardware and software industry that we worked with on cutting-edge graphics.<br />
We offer game related consulting and programming services including optimizations and re-writing of whole game engines, if necessary. We worked in the past in any field related to GPUs for hardware vendors, game developers and software vendors. It will be hard to find a material or effect that we haven&#8217;t implemented into a game in the last four years. Our target platforms go from mobile games to latest console / PC platforms.</p>
<p>If you have a challenge that is hard to solve or requires in-depth knowledge, talk to us. We would love to spend time with you and analyze this challenge.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/confetti-offers-middleware-for-xbox-one/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hair Rendering in Tomb Raider</title>
		<link>http://www.confettispecialfx.com/fmx-2013-hair-rendering</link>
		<comments>http://www.confettispecialfx.com/fmx-2013-hair-rendering#comments</comments>
		<pubDate>Mon, 29 Apr 2013 20:43:10 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[D3D11]]></category>
		<category><![CDATA[General GPU Programming]]></category>
		<category><![CDATA[Geometry Manipulations]]></category>
		<category><![CDATA[FMX]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=676</guid>
		<description><![CDATA[Thanks for stopping by at FMX. Wolfgang helped to organize the real-time rendering day. Here is Confetti&#8217;s talk from FMX 2013: http://www.slideshare.net/WolfgangEngel/hair-intombraider-final]]></description>
				<content:encoded><![CDATA[<p>Thanks for stopping by at FMX. Wolfgang helped to organize the real-time rendering day. Here is Confetti&#8217;s talk from FMX 2013:</p>
<p><a href="http://www.slideshare.net/WolfgangEngel/hair-intombraider-final">http://www.slideshare.net/WolfgangEngel/hair-intombraider-final</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/fmx-2013-hair-rendering/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FMX 2013</title>
		<link>http://www.confettispecialfx.com/fmx-2013</link>
		<comments>http://www.confettispecialfx.com/fmx-2013#comments</comments>
		<pubDate>Fri, 19 Apr 2013 00:02:28 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Confetti]]></category>
		<category><![CDATA[D3D11]]></category>
		<category><![CDATA[DirectCompute]]></category>
		<category><![CDATA[General GPU Programming]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=673</guid>
		<description><![CDATA[We will be on FMX 2013 and covering the hair rendering technology we worked on. Please come by and say hi. http://www.fmx.de/program.html#!/list?t=91]]></description>
				<content:encoded><![CDATA[<p>We will be on FMX 2013 and covering the hair rendering technology we worked on. Please come by and say hi.</p>
<p><a href="http://www.fmx.de/program.html#!/list?t=91">http://www.fmx.de/program.html#!/list?t=91</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/fmx-2013/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blackfoot Blade at GDC 2013</title>
		<link>http://www.confettispecialfx.com/blackfoot-blade-at-gdc-2013</link>
		<comments>http://www.confettispecialfx.com/blackfoot-blade-at-gdc-2013#comments</comments>
		<pubDate>Mon, 08 Apr 2013 14:54:41 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Confetti]]></category>
		<category><![CDATA[D3D11]]></category>
		<category><![CDATA[Deferred Lighting]]></category>
		<category><![CDATA[General GPU Programming]]></category>
		<category><![CDATA[Geometry Manipulations]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=672</guid>
		<description><![CDATA[We were showing Blackfoot Blade on GDC 2013 in San Francisco at the Intel booth. Here is a video: Blackfoot Blade at GDC]]></description>
				<content:encoded><![CDATA[<p>We were showing Blackfoot Blade on GDC 2013 in San Francisco at the Intel booth. Here is a video:</p>
<p><object id="flashObj" width="486" height="412" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" bgcolor="#FFFFFF"><param name="flashVars" value="videoId=2280131545001&amp;playerID=741496470001&amp;playerKey=AQ~~,AAAArH1stHk~,LuRqJUw7MaeYQkat5frTpWWPINh71g7p&amp;domain=embed&amp;dynamicStreaming=true" /><param name="base" value="http://admin.brightcove.com" /><param name="seamlesstabbing" value="false" /><param name="allowFullScreen" value="true" /><param name="swLiveConnect" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://c.brightcove.com/services/viewer/federated_f9?isVid=1" /><param name="flashvars" value="videoId=2280131545001&amp;playerID=741496470001&amp;playerKey=AQ~~,AAAArH1stHk~,LuRqJUw7MaeYQkat5frTpWWPINh71g7p&amp;domain=embed&amp;dynamicStreaming=true" /><param name="allowfullscreen" value="true" /><param name="swliveconnect" value="true" /><param name="allowscriptaccess" value="always" /><param name="pluginspage" value="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" /><embed id="flashObj" width="486" height="412" type="application/x-shockwave-flash" src="http://c.brightcove.com/services/viewer/federated_f9?isVid=1" flashVars="videoId=2280131545001&amp;playerID=741496470001&amp;playerKey=AQ~~,AAAArH1stHk~,LuRqJUw7MaeYQkat5frTpWWPINh71g7p&amp;domain=embed&amp;dynamicStreaming=true" base="http://admin.brightcove.com" seamlesstabbing="false" allowFullScreen="true" swLiveConnect="true" allowScriptAccess="always" flashvars="videoId=2280131545001&amp;playerID=741496470001&amp;playerKey=AQ~~,AAAArH1stHk~,LuRqJUw7MaeYQkat5frTpWWPINh71g7p&amp;domain=embed&amp;dynamicStreaming=true" allowfullscreen="true" swliveconnect="true" allowscriptaccess="always" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" bgcolor="#FFFFFF" /></object></p>
<p><a href="http://software.intel.com/en-us/videos/confetti-games-blackfoot-blade-demo-at-gdc-2013">Blackfoot Blade at GDC</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/blackfoot-blade-at-gdc-2013/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GDC 2013</title>
		<link>http://www.confettispecialfx.com/gdc-2013</link>
		<comments>http://www.confettispecialfx.com/gdc-2013#comments</comments>
		<pubDate>Mon, 01 Apr 2013 21:05:13 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Confetti]]></category>
		<category><![CDATA[D3D11]]></category>
		<category><![CDATA[Deferred Lighting]]></category>
		<category><![CDATA[DirectCompute]]></category>
		<category><![CDATA[Edge Detection]]></category>
		<category><![CDATA[General GPU Programming]]></category>
		<category><![CDATA[Geometry Manipulations]]></category>
		<category><![CDATA[Global Illumination]]></category>
		<category><![CDATA[Handheld Development]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=670</guid>
		<description><![CDATA[We had a fantastic GDC 2013 in SF! Thanks to everyone for stopping by. AMD showed off TressFX on a five monitor setup at their booth. After working on TressFX from October to March, it was exciting seeing how people perceived it. Other highlights for us included Intel showing Blackfoot Blade running in Multiplayer on [...]]]></description>
				<content:encoded><![CDATA[<p>We had a fantastic GDC 2013 in SF! Thanks to everyone for stopping by. AMD showed off TressFX on a five monitor setup at their booth. After working on TressFX from October to March, it was exciting seeing how people perceived it. Other highlights for us included Intel showing Blackfoot Blade running in Multiplayer on two Lenovo Yogas with the CCF library and we had a non-public demo at the NVIDIA booth running on Tegra 4.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/gdc-2013/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Confetti is hiring</title>
		<link>http://www.confettispecialfx.com/confetti-is-hiring</link>
		<comments>http://www.confettispecialfx.com/confetti-is-hiring#comments</comments>
		<pubDate>Tue, 19 Mar 2013 22:07:52 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Confetti]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=668</guid>
		<description><![CDATA[Big news: Confetti is hiring graphics programmers: Gamasutra]]></description>
				<content:encoded><![CDATA[<p>Big news: Confetti is hiring graphics programmers:</p>
<p><a href="http://jobs.gamasutra.com/jobseekerx/viewjobrss.asp?cjid=32921&amp;accountno=138300">Gamasutra</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/confetti-is-hiring/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Confetti offers Middleware for Sony Computer Entertainment’s PlayStation®4</title>
		<link>http://www.confettispecialfx.com/confetti-offers-middleware-for-sony-computer-entertainment%e2%80%99s-playstation%c2%ae4</link>
		<comments>http://www.confettispecialfx.com/confetti-offers-middleware-for-sony-computer-entertainment%e2%80%99s-playstation%c2%ae4#comments</comments>
		<pubDate>Mon, 11 Mar 2013 03:31:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Confetti]]></category>
		<category><![CDATA[D3D10]]></category>
		<category><![CDATA[D3D11]]></category>
		<category><![CDATA[Deferred Lighting]]></category>
		<category><![CDATA[DirectCompute]]></category>
		<category><![CDATA[General GPU Programming]]></category>
		<category><![CDATA[Geometry Manipulations]]></category>
		<category><![CDATA[Global Illumination]]></category>
		<category><![CDATA[Hardware Tesselation]]></category>
		<category><![CDATA[Order-Independent Transparency]]></category>
		<category><![CDATA[Particle System]]></category>
		<category><![CDATA[PostFX]]></category>
		<category><![CDATA[PS3]]></category>
		<category><![CDATA[PS4]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=667</guid>
		<description><![CDATA[Confetti offers Middleware for Sony Computer Entertainment’s PlayStation®4 Encinitas, USA – March 4th, 2013 Confetti (www.conffx.com), a provider of cutting edge 3D middleware and a Tools &#38; Middleware provider for PlayStation®4 from Sony Computer Entertainment Inc., announces today that game developers for PlayStation®4 will be able to access the full power of Aura (Dynamic Global [...]]]></description>
				<content:encoded><![CDATA[<p>Confetti offers Middleware for Sony Computer Entertainment’s PlayStation®4<br />
Encinitas, USA – March 4th, 2013<br />
Confetti (www.conffx.com), a provider of cutting edge 3D middleware and a Tools &amp; Middleware provider for PlayStation®4 from Sony Computer Entertainment Inc., announces today that game developers for PlayStation®4 will be able to access the full power of Aura (Dynamic Global Illumination System), Ephemeris (Dynamic Skydome System) and PixelPuzzle (Post-Processing Pipeline) to express all aspects of their creativity using more advanced technologies for their game.</p>
<p>Confetti is a think-tank for advanced real-time graphics research for the video game and movie industry. We are game developers with 10+ years of experience each.<br />
We offer three industry leading middleware packages for licensing.</p>
<p>Aura -our Global Illumination system- is a fully dynamic Global Illumination system. It can simulate one or several bounces.<br />
- Aura doesn&#8217;t require pre-processing data, so artists work in real-time<br />
- Aura allows to destroy geometry randomly, so there are no limits to destructibility<br />
- Aura affects characters as well as the environment<br />
- Aura works with as many light sources as you want from directional, point or spot lights or any other light type<br />
- Very low memory footprint</p>
<p>Ephemeris -our Dynamic Skydome System- offers you a fully dynamic solution that is drag and drop. With sunrises, sunsets, blue sky, and a shimmering moon all in one package, you can insure that your game can support a 24 hour cycle without switching between different techniques.<br />
It supports<br />
- Dynamic 24 hour time cycle<br />
- Physically based rendering model with multiple scatterings of the sun<br />
- Simulation of astronomically correct sun, stars, and moon<br />
- God rays<br />
- Aerial perspective<br />
- Dynamically lit volumetric clouds</p>
<p>PixelPuzzle – our Post-Processing Pipeline- is build as an extension to a regular in-game camera system. It allows you to create many different camera types with ,for example, different motion blur, depth of field, color filters etc. and then pick the camera you want on the fly. So you can switch between very different camera models in a game instantly and therefore enhance the way a story can be told.<br />
PixelPuzzle also comes with various tonemappers to fit your game along with different color filters to enhance your scene. On top of that the system is easy to integrate to ensure you spend more time on your game.<br />
More features are<br />
- Simulates camera controls for ease of use<br />
- Shaped Bokeh / Depth of field<br />
- Motion blur<br />
- HDR tonemapping<br />
- Bloom<br />
- Scotopic vision<br />
- Color filters<br />
- Camera Noise Simulation<br />
- Vignetting<br />
- Gamma correction<br />
- Easy to integrate</p>
<p>Services &#8211; we also offer real-time graphics related consulting and programming services. We have a long list of companies from the hardware and software industry that we worked with on cutting-edge graphics.<br />
We offer game related consulting and programming services including optimizations and re-writing of whole game engines, if necessary. We worked in the past in any field related to GPUs for hardware vendors, game developers and software vendors. It will be hard to find a material or effect that we haven&#8217;t implemented into a game in the last four years. Our target platforms go from mobile games to latest console / PC platforms.<br />
If you have a challenge that is hard to solve or requires in-depth knowledge, talk to us. We would love to spend time with you and analyze this challenge.<br />
&#8220;PlayStation&#8221; is a registered trademark of Sony Computer Entertainment Inc.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/confetti-offers-middleware-for-sony-computer-entertainment%e2%80%99s-playstation%c2%ae4/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>tressFX &#8211; Tomb Raider Lara&#8217;s hair movie</title>
		<link>http://www.confettispecialfx.com/tressfx-tomb-raider-laras-hair-movie</link>
		<comments>http://www.confettispecialfx.com/tressfx-tomb-raider-laras-hair-movie#comments</comments>
		<pubDate>Thu, 07 Mar 2013 19:47:34 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[D3D11]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=666</guid>
		<description><![CDATA[Here is a movie that shows the hair we worked on in Tomb Raider:]]></description>
				<content:encoded><![CDATA[<p>Here is a movie that shows the hair we worked on in Tomb Raider:</p>
<p><iframe width="640" height="360" src="http://www.youtube.com/embed/nKYRkm9n0us" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/tressfx-tomb-raider-laras-hair-movie/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>tressFX &#8211; Lara Croft&#8217;s Hair / Tomb Raider</title>
		<link>http://www.confettispecialfx.com/tressfx-lara-crofts-hair-tomb-raider</link>
		<comments>http://www.confettispecialfx.com/tressfx-lara-crofts-hair-tomb-raider#comments</comments>
		<pubDate>Tue, 26 Feb 2013 19:45:32 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Confetti]]></category>
		<category><![CDATA[D3D11]]></category>
		<category><![CDATA[Deferred Lighting]]></category>
		<category><![CDATA[DirectCompute]]></category>
		<category><![CDATA[Edge Detection]]></category>
		<category><![CDATA[General GPU Programming]]></category>
		<category><![CDATA[Geometry Manipulations]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=663</guid>
		<description><![CDATA[We helped AMD / Crystal Dynamics with the hair for Lara (http://blogs.amd.com/play/tressfx/):]]></description>
				<content:encoded><![CDATA[<p>We helped AMD / Crystal Dynamics with the hair for Lara (<a href="http://blogs.amd.com/play/tressfx/">http://blogs.amd.com/play/tressfx/</a>):</p>
<p><a href="http://www.confettispecialfx.com/tressfx-lara-crofts-hair-tomb-raider/tressfx" rel="attachment wp-att-664"><img class="alignleft size-full wp-image-664" title="tressFX - Lara Croft's Hair / Tomb Raider" alt="" src="http://www.confettispecialfx.com/wp-content/uploads/2013/02/tressFX.png" width="620" height="2228" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/tressfx-lara-crofts-hair-tomb-raider/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sony Playstation 4 Support</title>
		<link>http://www.confettispecialfx.com/sony-playstation-4-support</link>
		<comments>http://www.confettispecialfx.com/sony-playstation-4-support#comments</comments>
		<pubDate>Thu, 21 Feb 2013 17:40:38 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Confetti]]></category>
		<category><![CDATA[D3D11]]></category>
		<category><![CDATA[Deferred Lighting]]></category>
		<category><![CDATA[General GPU Programming]]></category>
		<category><![CDATA[Global Illumination]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=662</guid>
		<description><![CDATA[We are super excited about working with the PS4 as a middleware and tools developer for Sony: http://blog.us.playstation.com/2013/02/20/playstation-meeting-2013-the-future-of-gaming-is-here-with-playstation-4/]]></description>
				<content:encoded><![CDATA[<p>We are super excited about working with the PS4 as a middleware and tools developer for Sony:</p>
<p>http://blog.us.playstation.com/2013/02/20/playstation-meeting-2013-the-future-of-gaming-is-here-with-playstation-4/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/sony-playstation-4-support/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More Blackfoot Blade Update</title>
		<link>http://www.confettispecialfx.com/more-blackfoot-blade-update</link>
		<comments>http://www.confettispecialfx.com/more-blackfoot-blade-update#comments</comments>
		<pubDate>Thu, 14 Feb 2013 18:35:45 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=661</guid>
		<description><![CDATA[A more technical article on Blackfoot Blade: Implementing Touch and Sensors]]></description>
				<content:encoded><![CDATA[<p>A more technical article on Blackfoot Blade:</p>
<p><a href="http://software.intel.com/en-us/articles/implementing-touch-and-sensors-for-windows-8-desktop-games-confetti-interactive-s">Implementing Touch and Sensors</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/more-blackfoot-blade-update/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blackfoot Blade</title>
		<link>http://www.confettispecialfx.com/blackfoot-blade</link>
		<comments>http://www.confettispecialfx.com/blackfoot-blade#comments</comments>
		<pubDate>Wed, 13 Feb 2013 01:09:45 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=659</guid>
		<description><![CDATA[We are on the INTEL Software Adrenaline page: Confetti Celebrates Ultrabook™ Device Release of Blackfoot Blade*]]></description>
				<content:encoded><![CDATA[<p>We are on the INTEL Software Adrenaline page:</p>
<p><a href="http://software.intel.com/sites/billboard/article/helicopter-simulator-taps-motion-sensors-sight-and-shatter-targets">Confetti Celebrates Ultrabook™ Device Release of Blackfoot Blade*</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/blackfoot-blade/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PixelPuzzle &#8211; DirectCompute</title>
		<link>http://www.confettispecialfx.com/pixelpuzzle-directcompute</link>
		<comments>http://www.confettispecialfx.com/pixelpuzzle-directcompute#comments</comments>
		<pubDate>Sun, 09 Dec 2012 18:58:35 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=656</guid>
		<description><![CDATA[For DirectX 11 compatible platforms, we re-wrote PixelPuzzle with DirectCompute. Depending on the platform, this can give an astonishingly high speed-up. We also added a new &#8220;shaped&#8221; Bokeh. You have round, quad and other shapes. Screenshots will be posted soon &#8230;]]></description>
				<content:encoded><![CDATA[<p>For DirectX 11 compatible platforms, we re-wrote PixelPuzzle with DirectCompute. Depending on the platform, this can give an astonishingly high speed-up. We also added a new &#8220;shaped&#8221; Bokeh. You have round, quad and other shapes. Screenshots will be posted soon &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/pixelpuzzle-directcompute/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blackfoot Blade</title>
		<link>http://www.confettispecialfx.com/blackfoot-blade-beta-test-invitation</link>
		<comments>http://www.confettispecialfx.com/blackfoot-blade-beta-test-invitation#comments</comments>
		<pubDate>Fri, 26 Oct 2012 20:05:55 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Confetti]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=640</guid>
		<description><![CDATA[Blackfoot Blade was developed in the last 3 1/2 months in collaboration with Intel to run best on the new generation of Ultrabooks, launched on October 26th, 2012. It supports the new touch screen and tilt-sensor capabilities of this new hardware class. We would like to invite you to go through a beta test with [...]]]></description>
				<content:encoded><![CDATA[<p><span style="color: #c0c0c0;">Blackfoot Blade was developed in the last 3 1/2 months in collaboration with Intel to run best on the new generation of Ultrabooks, launched on October 26th, 2012. It supports the new touch screen and tilt-sensor capabilities of this new hardware class. We would like to invite you to go through a beta test with us and provide us with your feedback below.</span></p>
<div id="attachment_639" class="wp-caption alignleft" style="width: 586px"><a rel="attachment wp-att-639" href="http://www.confettispecialfx.com/blackfoot-blade-beta-test-invitation/102412_blackfoot_final"><span style="color: #c0c0c0;"><img class="size-medium wp-image-639" title="Blackfoot Blade" src="http://www.confettispecialfx.com/wp-content/uploads/2012/10/102412_blackfoot_final-576x360.jpg" alt="Blackfoot Blade" width="576" height="360" /></span></a><p class="wp-caption-text">Blackfoot Blade brings back the classic 3D helicopter shooter genre. You play through action packed 2 – 3 minute levels fighting against enemy helicopters and tanks.</p></div>
<p><strong><span style="color: #c0c0c0;">Single-Player Missions</span></strong></p>
<p><span style="color: #c0c0c0;">You –the commander of the most advanced helicopter ever developed- zip through canyons, deserts, forests, mountains, Caribbean islands, and snowy tundras to face the invading enemies. Your helicopter is equipped with heat-seeking missiles and a machine gun that can blast through the reinforced steel of tanks.</span></p>
<div id="attachment_653" class="wp-caption alignleft" style="width: 586px"><a rel="attachment wp-att-653" href="http://www.confettispecialfx.com/blackfoot-blade-beta-test-invitation/shot6-2"><span style="color: #c0c0c0;"><img class="size-full wp-image-653" title="Blackfoot Blade" src="http://www.confettispecialfx.com/wp-content/uploads/2012/10/shot61.jpg" alt="Blackfoot Blade" width="576" height="337" /></span></a><p class="wp-caption-text">Fight with a Helicopter</p></div>
<p><strong><span style="color: #c0c0c0;">Multi-Player Missions</span></strong></p>
<p><span style="color: #c0c0c0;">In Blackfoot Blade you can already fly in one-versus-one multiplayer missions in case your machine has CCF support, which is a close proximity networking system that is still in beta.</span></p>
<div id="attachment_650" class="wp-caption alignleft" style="width: 586px"><a rel="attachment wp-att-650" href="http://www.confettispecialfx.com/blackfoot-blade-beta-test-invitation/shot3-2"><span style="color: #c0c0c0;"><img class="size-full wp-image-650" title="Blackfoot Blade" src="http://www.confettispecialfx.com/wp-content/uploads/2012/10/shot31.jpg" alt="Blackfoot Blade" width="576" height="337" /></span></a><p class="wp-caption-text">Getting a sunburn</p></div>
<p><span style="color: #c0c0c0;">We demoed a multiplayer game at the Intel Developer Conference on September 12<sup>th</sup>. You can see this demo, including two of us playing the prototype on stage by visiting the following link and skipping to 22 minutes in.</span></p>
<p><a href="http://intelstudios.edgesuite.net/idf/2012/sf/ti/SPCS007/index.htm#"><span style="color: #c0c0c0;">http://intelstudios.edgesuite.net/idf/2012/sf/ti/SPCS007/index.htm#</span></a></p>
<div id="attachment_652" class="wp-caption alignleft" style="width: 586px"><a rel="attachment wp-att-652" href="http://www.confettispecialfx.com/blackfoot-blade-beta-test-invitation/shot5-2"><span style="color: #c0c0c0;"><img class="size-full wp-image-652" title="Blackfoot Blade" src="http://www.confettispecialfx.com/wp-content/uploads/2012/10/shot51.jpg" alt="Blackfoot Blade" width="576" height="337" /></span></a><p class="wp-caption-text">Dissolving in Fire</p></div>
<p><span style="color: #c0c0c0;"><strong>Hardware requirements:</strong><br />
<!--This is a beta version of the game, so we would appreciate your feedback (email contact information for feedback is at the bottom of the blog post).<br />
--><br />
This game is built for running on an Ivy Bridge processor. It should also work well with most DirectX 11 GPUs while running Windows 7 or 8 (not RT). We specifically developed on:<br />
- Windows 8<br />
- Intel Core i7-3427U Processor (3MB Cache, 1.8 GHz)<br />
- HD Graphics 4000<br />
- Resolution 1600&#215;900<br />
- Memory: 8 GB</span></p>
<div id="attachment_648" class="wp-caption alignleft" style="width: 586px"><a rel="attachment wp-att-648" href="http://www.confettispecialfx.com/blackfoot-blade-beta-test-invitation/shot1-2"><span style="color: #c0c0c0;"><img class="size-full wp-image-648" title="Blackfoot Blade" src="http://www.confettispecialfx.com/wp-content/uploads/2012/10/shot11.jpg" alt="Blackfoot Blade" width="576" height="337" /></span></a><p class="wp-caption-text">Dessert Storm</p></div>
<p><span style="color: #c0c0c0;">The game uses touch-screen and tilt sensor support if available. </span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/blackfoot-blade-beta-test-invitation/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DirectCompute on DirectX 10.x hardware</title>
		<link>http://www.confettispecialfx.com/directcompute-on-directx-10-x-hardware</link>
		<comments>http://www.confettispecialfx.com/directcompute-on-directx-10-x-hardware#comments</comments>
		<pubDate>Fri, 20 Jul 2012 19:41:55 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=636</guid>
		<description><![CDATA[Wolfgang wrote a blog entry for INTEL on DirectCompute running on DirectX 10.x hardware. http://software.intel.com/en-us/articles/microsoft-directcompute-on-the-2nd-generation-intel-core-processor/ Let us know what you think.]]></description>
				<content:encoded><![CDATA[<p>Wolfgang wrote a blog entry for INTEL on DirectCompute running on DirectX 10.x hardware.</p>
<p>http://software.intel.com/en-us/articles/microsoft-directcompute-on-the-2nd-generation-intel-core-processor/</p>
<p>Let us know what you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/directcompute-on-directx-10-x-hardware/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GDC 2012 Interview</title>
		<link>http://www.confettispecialfx.com/gdc-2012-interview</link>
		<comments>http://www.confettispecialfx.com/gdc-2012-interview#comments</comments>
		<pubDate>Mon, 14 May 2012 20:47:56 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Confetti]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=635</guid>
		<description><![CDATA[We were interviewed on GDC. I like Gabe Newell&#8217;s hat http://software.intel.com/en-us/videos/channel/visual-computing/game-developers-discuss-ivy-bridge-directx11-support-at-gdc-2012/1622190917001]]></description>
				<content:encoded><![CDATA[<p>We were interviewed on GDC. I like Gabe Newell&#8217;s hat <img src='http://www.confettispecialfx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><a href="http://software.intel.com/en-us/videos/channel/visual-computing/game-developers-discuss-ivy-bridge-directx11-support-at-gdc-2012/1622190917001">http://software.intel.com/en-us/videos/channel/visual-computing/game-developers-discuss-ivy-bridge-directx11-support-at-gdc-2012/1622190917001</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/gdc-2012-interview/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Many Area Lights / Screen-Space Soft Shadows</title>
		<link>http://www.confettispecialfx.com/many-area-lights-screen-space-soft-shadows</link>
		<comments>http://www.confettispecialfx.com/many-area-lights-screen-space-soft-shadows#comments</comments>
		<pubDate>Sat, 12 May 2012 23:03:31 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[D3D10]]></category>
		<category><![CDATA[D3D11]]></category>
		<category><![CDATA[Deferred Lighting]]></category>
		<category><![CDATA[Shadow Maps]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=634</guid>
		<description><![CDATA[This is an old demo from the Korean Game Developer Conference 2010. We showed this off during our talk: Many Area Lights / Screen-Space Soft ShadowsMany Area Lights / Screen-Space Soft Shadows]]></description>
				<content:encoded><![CDATA[<p>This is an old demo from the Korean Game Developer Conference 2010. We showed this off during our talk:</p>
<p><a href='' >Many Area Lights / Screen-Space Soft Shadows</a><a href='http://player.vimeo.com/video/42037689' >Many Area Lights / Screen-Space Soft Shadows</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/many-area-lights-screen-space-soft-shadows/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DirectCompute on Intel® Ivy Bridge</title>
		<link>http://www.confettispecialfx.com/directcompute-on-intel%c2%ae-ivy-bridge</link>
		<comments>http://www.confettispecialfx.com/directcompute-on-intel%c2%ae-ivy-bridge#comments</comments>
		<pubDate>Thu, 26 Apr 2012 17:33:11 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Confetti]]></category>
		<category><![CDATA[D3D11]]></category>
		<category><![CDATA[DirectCompute]]></category>
		<category><![CDATA[General GPU Programming]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=632</guid>
		<description><![CDATA[Wolfgang wrote a blog entry for INTEL on DirectCompute running on Ivy Bridge http://software.intel.com/en-us/articles/microsoft-directcompute-on-intel-ivy-bridge-processor-graphics/ Let us know what you think.]]></description>
				<content:encoded><![CDATA[<p>Wolfgang wrote a blog entry for INTEL on DirectCompute running on Ivy Bridge</p>
<p>
<a href="http://software.intel.com/en-us/articles/microsoft-directcompute-on-intel-ivy-bridge-processor-graphics/">http://software.intel.com/en-us/articles/microsoft-directcompute-on-intel-ivy-bridge-processor-graphics/</a></p>
<p>
Let us know what you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/directcompute-on-intel%c2%ae-ivy-bridge/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slides for Dynamic Global Illumination System</title>
		<link>http://www.confettispecialfx.com/slides-for-dynamic-global-illumination-system</link>
		<comments>http://www.confettispecialfx.com/slides-for-dynamic-global-illumination-system#comments</comments>
		<pubDate>Thu, 15 Mar 2012 15:26:43 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Confetti]]></category>
		<category><![CDATA[D3D10]]></category>
		<category><![CDATA[D3D11]]></category>
		<category><![CDATA[Deferred Lighting]]></category>
		<category><![CDATA[Global Illumination]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=631</guid>
		<description><![CDATA[Here are the slides covering the Dynamic Global Illumination system http://www.conffx.com/GI.pptx]]></description>
				<content:encoded><![CDATA[<p>Here are the slides covering the Dynamic Global Illumination system <a href="http://www.conffx.com/GI.pptx">http://www.conffx.com/GI.pptx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/slides-for-dynamic-global-illumination-system/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GDC</title>
		<link>http://www.confettispecialfx.com/gdc</link>
		<comments>http://www.confettispecialfx.com/gdc#comments</comments>
		<pubDate>Wed, 14 Mar 2012 15:13:38 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Confetti]]></category>
		<category><![CDATA[D3D10]]></category>
		<category><![CDATA[D3D11]]></category>
		<category><![CDATA[Deferred Lighting]]></category>
		<category><![CDATA[DirectCompute]]></category>
		<category><![CDATA[GDC]]></category>
		<category><![CDATA[General GPU Programming]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=629</guid>
		<description><![CDATA[GDC was a blast &#8230; thanks for stopping by at our booth. The Dynamic Global Illumination demo was a hit. It is good to see people getting excited about the stuff you worked on for years The fact that we can simulate the bouncing of light between characters is shown in this shot The guy [...]]]></description>
				<content:encoded><![CDATA[<p>GDC was a blast &#8230; thanks for stopping by at our booth. The Dynamic Global Illumination demo was a hit. It is good to see people getting excited about the stuff you worked on for years <img src='http://www.confettispecialfx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  The fact that we can simulate the bouncing of light between characters is shown in this shot <img src='http://www.confettispecialfx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  The guy on the right has a red overall.<br />
<a href="http://www.confettispecialfx.com/gdc/rawkiii_3-2" rel="attachment wp-att-630"><img src="http://www.confettispecialfx.com/wp-content/uploads/2012/03/RawKIII_3.jpg" alt="" title="RawKIII_3" width="1280" height="720" class="alignnone size-full wp-image-630" /></a><a href="http://www.confettispecialfx.com/gdc/rawkiii_3_2" rel="attachment wp-att-618"><img src="http://www.confettispecialfx.com/wp-content/uploads/2012/02/RawKIII_3_2.jpg" alt="" title="RawKIII_3_2" width="1280" height="720" class="alignnone size-full wp-image-618" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/gdc/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GDC Talks</title>
		<link>http://www.confettispecialfx.com/gdc-talks</link>
		<comments>http://www.confettispecialfx.com/gdc-talks#comments</comments>
		<pubDate>Mon, 05 Mar 2012 00:51:56 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Confetti]]></category>
		<category><![CDATA[D3D10]]></category>
		<category><![CDATA[D3D11]]></category>
		<category><![CDATA[Deferred Lighting]]></category>
		<category><![CDATA[DirectCompute]]></category>
		<category><![CDATA[Edge Detection]]></category>
		<category><![CDATA[GDC]]></category>
		<category><![CDATA[General GPU Programming]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=622</guid>
		<description><![CDATA[We will have two talks at GDC on our &#8220;Dynamic Global Illumination System&#8221; in the INTEL Theater on Wednesday 7th at 2:30pm and Thursday at 12 pm &#8230; come by and say hi!]]></description>
				<content:encoded><![CDATA[<p>We will have two talks at GDC on our &#8220;Dynamic Global Illumination System&#8221; in the INTEL Theater on Wednesday 7th at 2:30pm and Thursday at 12 pm &#8230; come by and say hi!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/gdc-talks/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GDC 2012 Part II</title>
		<link>http://www.confettispecialfx.com/gdc-2012-part-ii</link>
		<comments>http://www.confettispecialfx.com/gdc-2012-part-ii#comments</comments>
		<pubDate>Fri, 10 Feb 2012 14:59:30 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Confetti]]></category>
		<category><![CDATA[D3D10]]></category>
		<category><![CDATA[D3D11]]></category>
		<category><![CDATA[Deferred Lighting]]></category>
		<category><![CDATA[Global Illumination]]></category>
		<category><![CDATA[GPU Pro]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=619</guid>
		<description><![CDATA[Confetti will have three demos running on a PC on the booth: 1. RawK III that shows our latest version of our Global Illumination middleware, PostFX pipeline and Particle system 2. SpeedTree &#8211; we teamed up with SpeedTree and integrated our Skydome middleware into their demo 3. Sponza that demos our Global Illumination middleware in [...]]]></description>
				<content:encoded><![CDATA[<p> Confetti will have three demos running on a PC on the booth:</p>
<ul>
<li>1. RawK III that shows our latest version of our Global Illumination middleware, PostFX pipeline and Particle system</li>
<li>2. SpeedTree &#8211; we teamed up with SpeedTree and integrated our Skydome middleware into their demo</li>
<li>3. Sponza that demos our Global Illumination middleware in the typical Sponza scene</li>
</ul>
<p>We updated our website with new movies and screenshots in preparation for GDC.</p>
<p>Confetti helps to organize and sponsors an online conference at</p>
<p><a href="http://altdevconf.org/">http://altdevconf.org/</a></p>
<p>It is free and you can sign up for our talk -that will be given on Sunday 2pm- at</p>
<p><a href="https://www4.gotomeeting.com/register/846958367">https://www4.gotomeeting.com/register/846958367</a></p>
<p>GPU Pro 3 should be available at GDC.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/gdc-2012-part-ii/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GDC 2012</title>
		<link>http://www.confettispecialfx.com/gdc-2012</link>
		<comments>http://www.confettispecialfx.com/gdc-2012#comments</comments>
		<pubDate>Sat, 28 Jan 2012 20:47:50 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Confetti]]></category>
		<category><![CDATA[D3D11]]></category>
		<category><![CDATA[Deferred Lighting]]></category>
		<category><![CDATA[GDC]]></category>
		<category><![CDATA[Global Illumination]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=609</guid>
		<description><![CDATA[GDC is right around the corner. We will have a booth on the expo floor. Please come by and check out our demos. We will also have a talk in the INTEL theater on &#8220;Dynamic Global Illumination&#8221;. Stay tuned for the date and time.]]></description>
				<content:encoded><![CDATA[<p>GDC is right around the corner. We will have a booth on the expo floor. Please come by and check out our demos. We will also have a talk in the INTEL theater on &#8220;Dynamic Global Illumination&#8221;. Stay tuned for the date and time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/gdc-2012/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>KGC 2011</title>
		<link>http://www.confettispecialfx.com/kgc-2011</link>
		<comments>http://www.confettispecialfx.com/kgc-2011#comments</comments>
		<pubDate>Mon, 19 Dec 2011 18:29:03 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Confetti]]></category>
		<category><![CDATA[D3D10]]></category>
		<category><![CDATA[D3D11]]></category>
		<category><![CDATA[Deferred Lighting]]></category>
		<category><![CDATA[General GPU Programming]]></category>
		<category><![CDATA[Global Illumination]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=607</guid>
		<description><![CDATA[KGC 2011 was a blast. We showed off our new Dynamic Global Illumination System demo &#8220;RawK II&#8221; with dozens of lights with shadows attached and all with one bounce diffuse and specular global illumination. We also showed of the latest code drop of the Dynamic Skydome system &#8230; Stay tuned we will be posting screenshots [...]]]></description>
				<content:encoded><![CDATA[<p>KGC 2011 was a blast. We showed off our new Dynamic Global Illumination System demo &#8220;RawK II&#8221; with dozens of lights with shadows attached and all with one bounce diffuse and specular global illumination. We also showed  of the latest code drop of the Dynamic Skydome system &#8230;<br />
Stay tuned we will be posting screenshots soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/kgc-2011/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Global Illumination System</title>
		<link>http://www.confettispecialfx.com/new-global-illumination-system</link>
		<comments>http://www.confettispecialfx.com/new-global-illumination-system#comments</comments>
		<pubDate>Sat, 05 Nov 2011 00:52:35 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=605</guid>
		<description><![CDATA[We are going to show off our new Global Illumination System next week on KGC. This system is fully dynamic, works with static and dynamic objects like animated characters, does not require any pre-process data (game objects are destructible, 24 hour cycle possible, streaming not an issue) and works on a large number of lights. [...]]]></description>
				<content:encoded><![CDATA[<p>We are going to show off our new Global Illumination System next week on KGC. This system is fully dynamic, works with static and dynamic objects like animated characters, does not require any pre-process data (game objects are destructible, 24 hour cycle possible, streaming not an issue) and works on a large number of lights. The volume calculations can be run on the GPU or CPU. Here is the link:</p>
<p>http://www.kgconf.com/eng/html/conference_view.html?idx=937</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/new-global-illumination-system/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Confetti Publications</title>
		<link>http://www.confettispecialfx.com/confetti-publications</link>
		<comments>http://www.confettispecialfx.com/confetti-publications#comments</comments>
		<pubDate>Sun, 03 Jul 2011 16:25:46 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=603</guid>
		<description><![CDATA[Wolfgang started to write a series of three articles on AltDevBlogADay on how to design graphics sub-systems. So far there are two articles: Screen-Space: Rules for Designing Graphics Sub-systems (Part I) No Look-up Tables: Rules for Designing Graphics Sub-systems (Part II) The third article &#8220;Even Error Distribution (Part III)&#8221; will be released soon. Additionally there [...]]]></description>
				<content:encoded><![CDATA[<p>Wolfgang started to write a series of three articles on AltDevBlogADay on how to design graphics sub-systems. So far there are two articles:</p>
<p><a href="http://altdevblogaday.com/2011/06/13/screen-space-rules-for-designing-graphics-sub-systems-part-i/">Screen-Space: Rules for Designing Graphics Sub-systems (Part I)</a></p>
<p><a href="http://altdevblogaday.com/2011/07/03/no-look-up-tables-rules-for-designing-graphics-sub-systems-part-ii/">No Look-up Tables: Rules for Designing Graphics Sub-systems (Part II)</a></p>
<p>The third article &#8220;Even Error Distribution (Part III)&#8221; will be released soon. Additionally there is an article that is a primer on <a href="http://altdevblogaday.com/2011/05/29/points-vertices-and-vectors/">Points, Vertices and Vectors</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/confetti-publications/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Confetti on FMX in Stuttgart II</title>
		<link>http://www.confettispecialfx.com/confetti-on-fmx-in-stuttgart-ii</link>
		<comments>http://www.confettispecialfx.com/confetti-on-fmx-in-stuttgart-ii#comments</comments>
		<pubDate>Fri, 06 May 2011 20:27:30 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=601</guid>
		<description><![CDATA[Wolfgang here: FMX was great! Had a great audience with good questions. I talked in more detail on Deferred Lighting, Ellipsoidal Shadow Maps and the Screen-Space Skin Subsurface Scattering model we use. Please find below the download link to our presentation: http://www.conffx.com/LightNShadows.zip It is about 8.5Mb.]]></description>
				<content:encoded><![CDATA[<p>Wolfgang here: FMX was great! Had a great audience with good questions. I talked in more detail on Deferred Lighting, Ellipsoidal Shadow Maps and the Screen-Space Skin Subsurface Scattering model we use.<br />
Please find below the download link to our presentation:</p>
<p><a href="http://www.conffx.com/LightNShadows.zip">http://www.conffx.com/LightNShadows.zip</a></p>
<p>It is about 8.5Mb.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/confetti-on-fmx-in-stuttgart-ii/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Confetti on FMX in Stuttgart</title>
		<link>http://www.confettispecialfx.com/confetti-on-fmx-in-stuttgart</link>
		<comments>http://www.confettispecialfx.com/confetti-on-fmx-in-stuttgart#comments</comments>
		<pubDate>Fri, 29 Apr 2011 15:41:59 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=600</guid>
		<description><![CDATA[Wolfgang will talk on &#8220;RawK Demo Next-Gen Techniques on Intel&#8217;s Sandy Bridge&#8221; on FMX in Stuttgart next week. Come by and say hi.]]></description>
				<content:encoded><![CDATA[<p>Wolfgang will talk on &#8220;RawK Demo Next-Gen Techniques on Intel&#8217;s Sandy Bridge&#8221; on <a href="http://www.fmx.de/program/detail.html?tx_fmxevents_pi1%5Bevent%5D=115&#038;tx_fmxevents_pi1%5Bdate%5D=118&#038;tx_fmxevents_pi1%5Blocationuid%5D=25&#038;tx_fmxevents_pi1%5Beventlocationdate%5D=118&#038;tx_fmxevents_pi1%5Baction%5D=detail&#038;tx_fmxevents_pi1%5Bcontroller%5D=Event&#038;cHash=6f03750d0ab45d9d8f92e27e06ee8d5b">FMX </a>in Stuttgart next week. Come by and say hi.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/confetti-on-fmx-in-stuttgart/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EmotionFX</title>
		<link>http://www.confettispecialfx.com/emotionfx</link>
		<comments>http://www.confettispecialfx.com/emotionfx#comments</comments>
		<pubDate>Wed, 30 Mar 2011 16:37:52 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Confetti]]></category>
		<category><![CDATA[Geometry Manipulations]]></category>
		<category><![CDATA[iPhone iPod Touch iPad Programming]]></category>
		<category><![CDATA[PS3]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=597</guid>
		<description><![CDATA[In the RawK demo we used EmotionFX 3 for character animation. The reason why we picked this package was that we wanted to have support on PC, iPhone and in the future Android with the same API (we also support XBOX 360 and other platforms in our engine, but that was not as important as [...]]]></description>
				<content:encoded><![CDATA[<p>In the RawK demo we used EmotionFX 3 for character animation. The reason why we picked this package was that we wanted to have support on PC, iPhone and in the future Android with the same API (we also support XBOX 360 and other platforms in our engine, but that was not as important as those three platforms). It came also highly recommended from friends of mine.</p>
<p>With only 3 months of production time, we couldn&#8217;t afford to have anything fail in the art pipeline. Most of the problems we ran into were coming from our source art; because we didn&#8217;t have a permanent artist on our team, we were sometimes pretty lost. The Mystic Game Development team was very patient and looked into all our issues and helped us to fix them. Overall the response time was impressive. Although we were in different time zones 9 hours apart, we always got very fast and immediate responses that were very well thought through and helpful. If you worked on a project with such a tight schedule, you can imagine how nervous we all have been.</p>
<p>Now looking back, it was a fantastic experience. Highly recommended!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/emotionfx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>altdevblogaday.org/</title>
		<link>http://www.confettispecialfx.com/altdevblogaday-org</link>
		<comments>http://www.confettispecialfx.com/altdevblogaday-org#comments</comments>
		<pubDate>Wed, 30 Mar 2011 16:18:21 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=596</guid>
		<description><![CDATA[I wrote three blog entries for AltDevBlogADay so far. The first one is about the shadow system we implemented in RawK: http://altdevblogaday.org/2011/02/28/shadows-thoughts-on-ellipsoid-light-shadow-rendering/ The second is about my UCSD class: http://altdevblogaday.org/2011/03/15/thoughts-on-the-knowledge-of-an-up-to-date-graphics-programmer/ and the third one is about the interview process: http://altdevblogaday.org/2011/03/29/thoughts-on-the-interview-process-in-the-game-industry/]]></description>
				<content:encoded><![CDATA[<p>I wrote three blog entries for AltDevBlogADay so far. The first one is about the shadow system we implemented in RawK:</p>
<p><a href="http://altdevblogaday.org/2011/02/28/shadows-thoughts-on-ellipsoid-light-shadow-rendering/">http://altdevblogaday.org/2011/02/28/shadows-thoughts-on-ellipsoid-light-shadow-rendering/</a></p>
<p>The second is about my UCSD class:</p>
<p><a href="http://altdevblogaday.org/2011/03/15/thoughts-on-the-knowledge-of-an-up-to-date-graphics-programmer/">http://altdevblogaday.org/2011/03/15/thoughts-on-the-knowledge-of-an-up-to-date-graphics-programmer/</a></p>
<p>and the third one is about the interview process:</p>
<p><a href="http://altdevblogaday.org/2011/03/29/thoughts-on-the-interview-process-in-the-game-industry/">http://altdevblogaday.org/2011/03/29/thoughts-on-the-interview-process-in-the-game-industry/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/altdevblogaday-org/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GDC Wrap-up</title>
		<link>http://www.confettispecialfx.com/gdc-wrap-up</link>
		<comments>http://www.confettispecialfx.com/gdc-wrap-up#comments</comments>
		<pubDate>Wed, 23 Mar 2011 23:25:03 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=595</guid>
		<description><![CDATA[GDC was a blast this year. We were showing off the Sandy Bridge demo on the Intel booth and -by coincidence- manyof the techniques we picked to showcase were also in the Unreal Engine 3 demo &#8230; the Unreal Engine 3 demo was running on 3 next-gen unreleased GPUs while we were running on an [...]]]></description>
				<content:encoded><![CDATA[<p>GDC was a blast this year. We were showing off the Sandy Bridge demo on the Intel booth and -by coincidence- manyof the techniques we picked to showcase were also in the Unreal Engine 3 demo &#8230; the Unreal Engine 3 demo was running on 3 next-gen unreleased GPUs while we were running on an integrated graphics chip.</p>
<p>In essence what we were showing off was</p>
<ul>
<li>Deferred Lighting with lots of lights</li>
<li>MLAA running on the CPU</li>
<li>Ellipsoidal Light Shadow Maps</li>
<li>Screen-Space Subsurface Scattering for the skin of all characters</li>
<li>Depth of Field with a nice looking Bokeh</li>
</ul>
<p>As you would expect everything in our demo was dynamic. We also covered our dynamic skydome system and larger parts of the PostFX pipeline in those slides. You can get the power-point slides from <a title="GDC 2011 Talks" href="http://www.conffx.com/GDC2011.zip" target="_blank">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/gdc-wrap-up/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>RawK interview</title>
		<link>http://www.confettispecialfx.com/rawk-interview</link>
		<comments>http://www.confettispecialfx.com/rawk-interview#comments</comments>
		<pubDate>Fri, 18 Mar 2011 18:19:51 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=592</guid>
		<description><![CDATA[we gave an interview at GDC about the RawK demo: http://software.intel.com/en-us/videos/confetti-special-effects-demo-at-gdc-2011/]]></description>
				<content:encoded><![CDATA[<p>we gave an interview at GDC about the RawK demo:</p>
<p><a title="RawK Interview" href="http://software.intel.com/en-us/videos/confetti-special-effects-demo-at-gdc-2011/" target="_blank">http://software.intel.com/en-us/videos/confetti-special-effects-demo-at-gdc-2011/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/rawk-interview/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RawK® &#8211; Graphics Demo for Sandy Bridge</title>
		<link>http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge</link>
		<comments>http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge#comments</comments>
		<pubDate>Sat, 26 Feb 2011 05:23:39 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Confetti]]></category>
		<category><![CDATA[D3D10]]></category>
		<category><![CDATA[Deferred Lighting]]></category>
		<category><![CDATA[GDC]]></category>
		<category><![CDATA[Global Illumination]]></category>
		<category><![CDATA[Handheld Development]]></category>
		<category><![CDATA[MSAA]]></category>
		<category><![CDATA[Particle System]]></category>
		<category><![CDATA[Shadow Maps]]></category>

		<guid isPermaLink="false">http://www.confettispecialfx.com/?p=203</guid>
		<description><![CDATA[RawK is a tech demo, tailored to Intel&#8217;s Sandy Bridge chipset. We created this graphics demo in the last three months to show off the capabilities of Sandy Bridge. It shows off several next-gen features: Deferred Lighting Ellipsoidal Shadow Maps CPU / GPU MLAA PostFX Camera System Screen-Space Material System Here is the movie: Some explanation [...]]]></description>
				<content:encoded><![CDATA[<p>RawK is a tech demo, tailored to Intel&#8217;s Sandy Bridge chipset. We created this graphics demo in the last three months to show off the capabilities of Sandy Bridge.<br />
It shows off several next-gen features:</p>
<ul>
<li>Deferred Lighting</li>
<li>Ellipsoidal Shadow Maps</li>
<li>CPU / GPU MLAA</li>
<li>PostFX Camera System</li>
<li>Screen-Space Material System</li>
</ul>
<p>Here is the movie:</p>
<p><iframe src="http://player.vimeo.com/video/20397529?title=0&amp;byline=0&amp;portrait=0" width="640" height="360" frameborder="0"></iframe></p>
<p>Some explanation about those techniques in there:</p>
<p><a rel="nofollow" href="http://software.intel.com/en-us/articles/confetti-special-effects/" target="_blank">http://software.intel.com/en-us/articles/confetti-special-effects/</a></p>
<p>We will give six talks on GDC about those techniques. Expect more to come.</p>

<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-12-20' title='RawK 2011-02-25 13-39-12-20'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-12-20-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-12-20" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-13-25' title='RawK 2011-02-25 13-39-13-25'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-13-25-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-13-25" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-13-55-2' title='RawK 2011-02-25 13-39-13-55'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-13-551-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-13-55" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-14-62' title='RawK 2011-02-25 13-39-14-62'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-14-62-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-14-62" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-14-92' title='RawK 2011-02-25 13-39-14-92'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-14-92-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-14-92" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-15-24' title='RawK 2011-02-25 13-39-15-24'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-15-24-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-15-24" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-16-05' title='RawK 2011-02-25 13-39-16-05'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-16-05-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-16-05" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-16-35' title='RawK 2011-02-25 13-39-16-35'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-16-35-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-16-35" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-16-65-2' title='RawK 2011-02-25 13-39-16-65'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-16-651-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-16-65" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-17-44-2' title='RawK 2011-02-25 13-39-17-44'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-17-441-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-17-44" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-17-79' title='RawK 2011-02-25 13-39-17-79'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-17-79-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-17-79" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-18-10' title='RawK 2011-02-25 13-39-18-10'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-18-10-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-18-10" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-18-94' title='RawK 2011-02-25 13-39-18-94'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-18-94-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-18-94" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-19-28' title='RawK 2011-02-25 13-39-19-28'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-19-28-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-19-28" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-19-64-2' title='RawK 2011-02-25 13-39-19-64'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-19-641-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-19-64" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-20-98-2' title='RawK 2011-02-25 13-39-20-98'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-20-981-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-20-98" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-21-88-2' title='RawK 2011-02-25 13-39-21-88'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-21-881-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-21-88" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-22-20' title='RawK 2011-02-25 13-39-22-20'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-22-20-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-22-20" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-22-46-2' title='RawK 2011-02-25 13-39-22-46'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-22-461-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-22-46" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-22-82-2' title='RawK 2011-02-25 13-39-22-82'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-22-821-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-22-82" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-23-16' title='RawK 2011-02-25 13-39-23-16'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-23-16-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-23-16" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-23-48' title='RawK 2011-02-25 13-39-23-48'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-23-48-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-23-48" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-23-63-2' title='RawK 2011-02-25 13-39-23-63'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-23-631-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-23-63" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-24-08-2' title='RawK 2011-02-25 13-39-24-08'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-24-081-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-24-08" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-24-38' title='RawK 2011-02-25 13-39-24-38'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-24-38-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-24-38" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-24-75' title='RawK 2011-02-25 13-39-24-75'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-24-75-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-24-75" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-25-08' title='RawK 2011-02-25 13-39-25-08'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-25-08-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-25-08" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-26-26' title='RawK 2011-02-25 13-39-26-26'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-26-26-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-26-26" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-26-80' title='RawK 2011-02-25 13-39-26-80'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-26-80-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-26-80" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-26-98-2' title='RawK 2011-02-25 13-39-26-98'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-26-981-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-26-98" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-27-16-2' title='RawK 2011-02-25 13-39-27-16'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-27-161-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-27-16" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-27-32-2' title='RawK 2011-02-25 13-39-27-32'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-27-321-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-27-32" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-27-50' title='RawK 2011-02-25 13-39-27-50'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-27-50-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-27-50" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-27-66-2' title='RawK 2011-02-25 13-39-27-66'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-27-661-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-27-66" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-27-83' title='RawK 2011-02-25 13-39-27-83'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-27-83-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-27-83" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-28-00-2' title='RawK 2011-02-25 13-39-28-00'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-28-001-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-28-00" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-28-17' title='RawK 2011-02-25 13-39-28-17'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-28-17-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-28-17" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-28-37-2' title='RawK 2011-02-25 13-39-28-37'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-28-371-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-28-37" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-28-53' title='RawK 2011-02-25 13-39-28-53'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-28-53-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-28-53" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-28-71-2' title='RawK 2011-02-25 13-39-28-71'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-28-711-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-28-71" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-29-07' title='RawK 2011-02-25 13-39-29-07'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-29-07-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-29-07" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-29-63-2' title='RawK 2011-02-25 13-39-29-63'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-29-631-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-29-63" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-29-82' title='RawK 2011-02-25 13-39-29-82'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-29-82-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-29-82" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-30-02-2' title='RawK 2011-02-25 13-39-30-02'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-30-021-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-30-02" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-30-21' title='RawK 2011-02-25 13-39-30-21'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-30-21-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-30-21" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-30-57' title='RawK 2011-02-25 13-39-30-57'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-30-57-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-30-57" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-30-92' title='RawK 2011-02-25 13-39-30-92'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-30-92-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-30-92" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-31-28' title='RawK 2011-02-25 13-39-31-28'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-31-28-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-31-28" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-32-15' title='RawK 2011-02-25 13-39-32-15'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-32-15-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-32-15" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-32-51' title='RawK 2011-02-25 13-39-32-51'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-32-51-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-32-51" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-32-87' title='RawK 2011-02-25 13-39-32-87'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-32-87-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-32-87" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-33-80' title='RawK 2011-02-25 13-39-33-80'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-33-80-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-33-80" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-34-15' title='RawK 2011-02-25 13-39-34-15'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-34-15-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-34-15" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-34-50' title='RawK 2011-02-25 13-39-34-50'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-34-50-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-34-50" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-35-43' title='RawK 2011-02-25 13-39-35-43'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-35-43-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-35-43" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-35-78' title='RawK 2011-02-25 13-39-35-78'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-35-78-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-35-78" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-36-20' title='RawK 2011-02-25 13-39-36-20'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-36-20-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-36-20" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-36-41' title='RawK 2011-02-25 13-39-36-41'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-36-41-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-36-41" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-37-01' title='RawK 2011-02-25 13-39-37-01'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-37-01-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-37-01" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-37-26-2' title='RawK 2011-02-25 13-39-37-26'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-37-261-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-37-26" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-37-65' title='RawK 2011-02-25 13-39-37-65'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-37-65-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-37-65" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-39-33-2' title='RawK 2011-02-25 13-39-39-33'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-39-331-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-39-33" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-39-56-2' title='RawK 2011-02-25 13-39-39-56'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-39-561-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-39-56" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-39-72-2' title='RawK 2011-02-25 13-39-39-72'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-39-721-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-39-72" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-40-08-2' title='RawK 2011-02-25 13-39-40-08'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-40-081-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-40-08" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-40-30-2' title='RawK 2011-02-25 13-39-40-30'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-40-301-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-40-30" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-40-51-2' title='RawK 2011-02-25 13-39-40-51'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-40-511-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-40-51" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-40-69-2' title='RawK 2011-02-25 13-39-40-69'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-40-691-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-40-69" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-40-86-2' title='RawK 2011-02-25 13-39-40-86'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-40-861-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-40-86" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-41-03' title='RawK 2011-02-25 13-39-41-03'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-41-03-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-41-03" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-41-20' title='RawK 2011-02-25 13-39-41-20'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-41-20-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-41-20" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-41-37' title='RawK 2011-02-25 13-39-41-37'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-41-37-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-41-37" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-41-59' title='RawK 2011-02-25 13-39-41-59'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-41-59-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-41-59" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-42-56' title='RawK 2011-02-25 13-39-42-56'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-42-56-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-42-56" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-42-73' title='RawK 2011-02-25 13-39-42-73'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-42-73-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-42-73" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-42-94' title='RawK 2011-02-25 13-39-42-94'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-42-94-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-42-94" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-43-31' title='RawK 2011-02-25 13-39-43-31'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-43-31-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-43-31" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-42-94-2' title='RawK 2011-02-25 13-39-42-94'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-42-941-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-42-94" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-44-27' title='RawK 2011-02-25 13-39-44-27'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-44-27-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-44-27" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-44-70' title='RawK 2011-02-25 13-39-44-70'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-44-70-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-44-70" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-45-07' title='RawK 2011-02-25 13-39-45-07'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-45-07-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-45-07" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-45-68-2' title='RawK 2011-02-25 13-39-45-68'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-45-681-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-45-68" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-46-14-2' title='RawK 2011-02-25 13-39-46-14'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-46-141-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-46-14" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-46-63-2' title='RawK 2011-02-25 13-39-46-63'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-46-631-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-46-63" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-47-03-2' title='RawK 2011-02-25 13-39-47-03'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-47-031-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-47-03" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-47-44-2' title='RawK 2011-02-25 13-39-47-44'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-47-441-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-47-44" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-47-63-2' title='RawK 2011-02-25 13-39-47-63'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-47-631-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-47-63" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-48-02-2' title='RawK 2011-02-25 13-39-48-02'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-48-021-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-48-02" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-48-44-2' title='RawK 2011-02-25 13-39-48-44'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-48-441-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-48-44" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-48-89-2' title='RawK 2011-02-25 13-39-48-89'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-48-891-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-48-89" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-49-42-2' title='RawK 2011-02-25 13-39-49-42'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-49-421-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-49-42" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-50-41-2' title='RawK 2011-02-25 13-39-50-41'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-50-411-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-50-41" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-50-91-2' title='RawK 2011-02-25 13-39-50-91'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-50-911-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-50-91" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-51-67' title='RawK 2011-02-25 13-39-51-67'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-51-67-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-51-67" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-52-35-2' title='RawK 2011-02-25 13-39-52-35'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-52-351-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-52-35" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-52-60-2' title='RawK 2011-02-25 13-39-52-60'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-52-601-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-52-60" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-52-88-2' title='RawK 2011-02-25 13-39-52-88'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-52-881-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-52-88" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-53-73' title='RawK 2011-02-25 13-39-53-73'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-53-73-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-53-73" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-54-07' title='RawK 2011-02-25 13-39-54-07'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-54-07-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-54-07" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-54-42-2' title='RawK 2011-02-25 13-39-54-42'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-54-421-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-54-42" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-56-07' title='RawK 2011-02-25 13-39-56-07'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-56-07-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-56-07" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-57-65' title='RawK 2011-02-25 13-39-57-65'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-57-65-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-57-65" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-58-62-2' title='RawK 2011-02-25 13-39-58-62'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-58-621-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-58-62" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-39-58-99' title='RawK 2011-02-25 13-39-58-99'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-39-58-99-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-39-58-99" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-02-49' title='RawK 2011-02-25 13-40-02-49'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-02-49-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-02-49" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-02-81-2' title='RawK 2011-02-25 13-40-02-81'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-02-811-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-02-81" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-03-89' title='RawK 2011-02-25 13-40-03-89'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-03-89-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-03-89" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-04-37' title='RawK 2011-02-25 13-40-04-37'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-04-37-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-04-37" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-04-77-2' title='RawK 2011-02-25 13-40-04-77'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-04-771-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-04-77" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-05-64' title='RawK 2011-02-25 13-40-05-64'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-05-64-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-05-64" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-06-27-2' title='RawK 2011-02-25 13-40-06-27'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-06-271-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-06-27" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-06-61' title='RawK 2011-02-25 13-40-06-61'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-06-61-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-06-61" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-06-78-2' title='RawK 2011-02-25 13-40-06-78'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-06-781-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-06-78" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-07-45-2' title='RawK 2011-02-25 13-40-07-45'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-07-451-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-07-45" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-07-79' title='RawK 2011-02-25 13-40-07-79'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-07-79-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-07-79" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-07-97-2' title='RawK 2011-02-25 13-40-07-97'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-07-971-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-07-97" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-08-49' title='RawK 2011-02-25 13-40-08-49'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-08-49-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-08-49" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-08-86-2' title='RawK 2011-02-25 13-40-08-86'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-08-861-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-08-86" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-09-52' title='RawK 2011-02-25 13-40-09-52'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-09-52-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-09-52" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-09-85' title='RawK 2011-02-25 13-40-09-85'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-09-85-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-09-85" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-10-19' title='RawK 2011-02-25 13-40-10-19'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-10-19-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-10-19" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-10-57' title='RawK 2011-02-25 13-40-10-57'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-10-57-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-10-57" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-10-91' title='RawK 2011-02-25 13-40-10-91'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-10-91-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-10-91" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-11-48-2' title='RawK 2011-02-25 13-40-11-48'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-11-481-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-11-48" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-11-95-2' title='RawK 2011-02-25 13-40-11-95'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-11-951-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-11-95" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-12-12' title='RawK 2011-02-25 13-40-12-12'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-12-12-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-12-12" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-12-32-2' title='RawK 2011-02-25 13-40-12-32'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-12-321-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-12-32" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-12-51' title='RawK 2011-02-25 13-40-12-51'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-12-51-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-12-51" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-12-70-2' title='RawK 2011-02-25 13-40-12-70'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-12-701-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-12-70" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-13-24-2' title='RawK 2011-02-25 13-40-13-24'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-13-241-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-13-24" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-13-58' title='RawK 2011-02-25 13-40-13-58'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-13-58-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-13-58" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-13-98-2' title='RawK 2011-02-25 13-40-13-98'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-13-981-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-13-98" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-14-72' title='RawK 2011-02-25 13-40-14-72'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-14-72-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-14-72" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-15-08' title='RawK 2011-02-25 13-40-15-08'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-15-08-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-15-08" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-15-46' title='RawK 2011-02-25 13-40-15-46'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-15-46-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-15-46" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-16-20' title='RawK 2011-02-25 13-40-16-20'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-16-20-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-16-20" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-16-97' title='RawK 2011-02-25 13-40-16-97'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-16-97-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-16-97" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-17-57' title='RawK 2011-02-25 13-40-17-57'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-17-57-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-17-57" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-17-76' title='RawK 2011-02-25 13-40-17-76'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-17-76-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-17-76" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-17-97-2' title='RawK 2011-02-25 13-40-17-97'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-17-971-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-17-97" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-18-15' title='RawK 2011-02-25 13-40-18-15'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-18-15-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-18-15" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-18-37' title='RawK 2011-02-25 13-40-18-37'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-18-37-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-18-37" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-18-54-2' title='RawK 2011-02-25 13-40-18-54'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-18-541-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-18-54" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-18-72' title='RawK 2011-02-25 13-40-18-72'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-18-72-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-18-72" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-18-94' title='RawK 2011-02-25 13-40-18-94'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-18-94-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-18-94" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-19-12' title='RawK 2011-02-25 13-40-19-12'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-19-12-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-19-12" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-19-35' title='RawK 2011-02-25 13-40-19-35'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-19-35-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-19-35" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-19-60' title='RawK 2011-02-25 13-40-19-60'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-19-60-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-19-60" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-19-83-2' title='RawK 2011-02-25 13-40-19-83'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-19-831-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-19-83" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-20-09' title='RawK 2011-02-25 13-40-20-09'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-20-09-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-20-09" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-20-31-2' title='RawK 2011-02-25 13-40-20-31'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-20-311-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-20-31" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-20-56' title='RawK 2011-02-25 13-40-20-56'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-20-56-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-20-56" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-20-74' title='RawK 2011-02-25 13-40-20-74'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-20-74-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-20-74" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-20-99-2' title='RawK 2011-02-25 13-40-20-99'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-20-991-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-20-99" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-21-33' title='RawK 2011-02-25 13-40-21-33'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-21-33-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-21-33" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-24-59-copy' title='RawK 2011-02-25 13-40-24-59 - Copy'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-24-59-Copy-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-24-59 - Copy" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-24-79' title='RawK 2011-02-25 13-40-24-79'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-24-79-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-24-79" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-24-97' title='RawK 2011-02-25 13-40-24-97'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-24-97-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-24-97" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-25-81' title='RawK 2011-02-25 13-40-25-81'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-25-81-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-25-81" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-26-02' title='RawK 2011-02-25 13-40-26-02'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-26-02-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-26-02" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-27-04-2' title='RawK 2011-02-25 13-40-27-04'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-27-041-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-27-04" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-27-43-2' title='RawK 2011-02-25 13-40-27-43'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-27-431-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-27-43" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-27-90' title='RawK 2011-02-25 13-40-27-90'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-27-90-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-27-90" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-28-49-2' title='RawK 2011-02-25 13-40-28-49'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-28-491-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-28-49" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-28-92' title='RawK 2011-02-25 13-40-28-92'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-28-92-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-28-92" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-30-02' title='RawK 2011-02-25 13-40-30-02'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-30-02-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-30-02" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-30-22' title='RawK 2011-02-25 13-40-30-22'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-30-22-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-30-22" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-31-57' title='RawK 2011-02-25 13-40-31-57'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-31-57-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-31-57" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-32-07' title='RawK 2011-02-25 13-40-32-07'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-32-07-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-32-07" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-32-45' title='RawK 2011-02-25 13-40-32-45'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-32-45-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-32-45" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-32-62-2' title='RawK 2011-02-25 13-40-32-62'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-32-621-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-32-62" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-33-00-2' title='RawK 2011-02-25 13-40-33-00'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-33-001-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-33-00" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-33-37' title='RawK 2011-02-25 13-40-33-37'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-33-37-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-33-37" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-33-77' title='RawK 2011-02-25 13-40-33-77'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-33-77-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-33-77" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-34-14' title='RawK 2011-02-25 13-40-34-14'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-34-14-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-34-14" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-34-52-2' title='RawK 2011-02-25 13-40-34-52'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-34-521-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-34-52" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-34-73-2' title='RawK 2011-02-25 13-40-34-73'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-34-731-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-34-73" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-34-92-2' title='RawK 2011-02-25 13-40-34-92'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-34-921-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-34-92" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-35-12-2' title='RawK 2011-02-25 13-40-35-12'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-35-121-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-35-12" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-35-37-2' title='RawK 2011-02-25 13-40-35-37'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-35-371-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-35-37" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-35-57' title='RawK 2011-02-25 13-40-35-57'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-35-57-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-35-57" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-36-16' title='RawK 2011-02-25 13-40-36-16'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-36-16-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-36-16" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-36-58' title='RawK 2011-02-25 13-40-36-58'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-36-58-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-36-58" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-37-05-2' title='RawK 2011-02-25 13-40-37-05'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-37-051-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-37-05" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-37-47' title='RawK 2011-02-25 13-40-37-47'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-37-47-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-37-47" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-37-88' title='RawK 2011-02-25 13-40-37-88'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-37-88-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-37-88" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-38-30' title='RawK 2011-02-25 13-40-38-30'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-38-30-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-38-30" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-38-85' title='RawK 2011-02-25 13-40-38-85'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-38-85-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-38-85" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-39-67' title='RawK 2011-02-25 13-40-39-67'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-39-67-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-39-67" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-40-02' title='RawK 2011-02-25 13-40-40-02'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-40-02-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-40-02" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-40-42' title='RawK 2011-02-25 13-40-40-42'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-40-42-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-40-42" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-41-44' title='RawK 2011-02-25 13-40-41-44'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-41-44-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-41-44" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-42-03' title='RawK 2011-02-25 13-40-42-03'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-42-03-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-42-03" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-42-44' title='RawK 2011-02-25 13-40-42-44'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-42-44-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-42-44" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-45-51' title='RawK 2011-02-25 13-40-45-51'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-45-51-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-45-51" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-46-73' title='RawK 2011-02-25 13-40-46-73'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-46-73-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-46-73" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-47-35' title='RawK 2011-02-25 13-40-47-35'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-47-35-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-47-35" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-48-37-2' title='RawK 2011-02-25 13-40-48-37'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-48-371-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-48-37" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-48-82' title='RawK 2011-02-25 13-40-48-82'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-48-82-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-48-82" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-49-03-2' title='RawK 2011-02-25 13-40-49-03'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-49-031-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-49-03" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-49-20' title='RawK 2011-02-25 13-40-49-20'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-49-20-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-49-20" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-50-92' title='RawK 2011-02-25 13-40-50-92'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-50-92-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-50-92" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-52-18' title='RawK 2011-02-25 13-40-52-18'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-52-18-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-52-18" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-53-75' title='RawK 2011-02-25 13-40-53-75'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-53-75-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-53-75" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-56-26' title='RawK 2011-02-25 13-40-56-26'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-56-26-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-56-26" /></a>
<a href='http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/rawk-2011-02-25-13-40-57-32' title='RawK 2011-02-25 13-40-57-32'><img width="320" height="180" src="http://www.confettispecialfx.com/wp-content/uploads/2011/02/RawK-2011-02-25-13-40-57-32-320x180.jpg" class="attachment-thumbnail" alt="RawK 2011-02-25 13-40-57-32" /></a>

]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/rawk%c2%ae-graphics-demo-for-sandy-bridge/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Confetti Demo Reel</title>
		<link>http://www.confettispecialfx.com/confetti-demo-reel</link>
		<comments>http://www.confettispecialfx.com/confetti-demo-reel#comments</comments>
		<pubDate>Tue, 22 Feb 2011 00:06:58 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.dev.confettispecialfx.com/?p=197</guid>
		<description><![CDATA[Here is a movie of a collection of graphics demos we did in the last 18 months: Those demos run on low-end graphics hardware.]]></description>
				<content:encoded><![CDATA[<p>Here is a movie of a collection of graphics demos we did in the last 18 months:</p>
<p><iframe src="http://player.vimeo.com/video/20155857?title=0&amp;byline=0&amp;portrait=0" width="640" height="360" frameborder="0"></iframe></p>
<p>Those demos run on low-end graphics hardware.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/confetti-demo-reel/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Global Illumination in the Game Industry Part I</title>
		<link>http://www.confettispecialfx.com/global-illumination</link>
		<comments>http://www.confettispecialfx.com/global-illumination#comments</comments>
		<pubDate>Sun, 12 Dec 2010 20:23:25 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[D3D10]]></category>
		<category><![CDATA[D3D11]]></category>
		<category><![CDATA[Deferred Lighting]]></category>
		<category><![CDATA[Global Illumination]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=151</guid>
		<description><![CDATA[The history of global illumination in games is rather short. At the beginning there were light mapping tools that were able to store radiosity data in a light map. The disadvantages of this kind of techniques are - hard to mimic a 24 hour cycle - storing those light or radiosity maps on disk or [...]]]></description>
				<content:encoded><![CDATA[<p>The history of global illumination in games is rather short. At the beginning there were light mapping tools that were able to store radiosity data in a light map.<br />
The disadvantages of this kind of techniques are<br />
- hard to mimic a 24 hour cycle<br />
- storing those light or radiosity maps on disk or even the DVD / Blu-ray required a lot of memory<br />
- streaming the light or radiosity maps from disk or hard-drive through hardware to the GPU consumes valuable memory bandwidth<br />
- geometry with light maps or radiosity maps is not destructible anymore &#8230; this is a reason to avoid any solution with pre-computed maps<br />
- while the environment was lit nicely, it is hard to light characters in a consistent way with this environment<br />
That being said games that happen in a restricted and small area and therefore do not require large numbers of light or radiosity maps or games that run on low-end platforms might still use this technique.<br />
In general I believe there is consensus that light or radiosity maps are not a good solution anymore. The main pattern to move away from those is generating all the data necessary to achieve for example a one bounce diffuse illumination effect on the GPU and to keep the data there.<br />
I call those techniques dynamic global illumination.</p>
<p>Dynamic global illumination methods do not store any pre-computed data in texture maps or need any kind of pre-processing. One of the successful methods that came up over the last eight years was based on storing light data in cube maps [Mantiuk], that are located on a 3D grid. A good implementation can be found <a title="Global Illumination" href="http://developer.amd.com/gpu/radeon/pages/RadeonSDKSamplesDocuments.aspx#d3d10" target="_blank">here</a>. The first performance challenge of this technique was the need to fill up a lot of cube maps that represented the radiance for all directions. AMD&#8217;s / ATI&#8217;s implementation uses many slices of a 3D texture to store the cube map data. The 3D texture is later compressed by converting into spherical harmonics coefficients. This is done by integrating the light function stored in the cube map over the basis functions.<br />
The conversion is done by rendering single points -representing each probe- into a volume texture. If you use four SH bands, 16 coefficients are necessary to represent a probe and therefore 4 volume render targets need to be filled.<br />
While the scene is rendered into the framebuffer, the indirect lighting is applied by calculating the dot product between the SH coefficients from the previous pass and the SH coefficients for the transfer function to evaluate the integral.<br />
The result of the light transfer function that uses the SH coefficients and the normal is then stored in four cube maps, and those cube maps are used when rendering.</p>
<p>There is a lot of memory transfers involved with this technique. Stay tuned for Part II <img src='http://www.confettispecialfx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><strong>References</strong><br />
[Mantiuk] Rafal Mantiuk ,  Sumanta Pattanaik ,  Karol Myszkowski, &#8220;Cube-Map Data Structure for Interactive Global Illumination Computation&#8221;, In Proceedings of International Conference on Computer Vision and Graphics, <a href="http://www.mpi-sb.mpg.de/~mantiuk/papers/mantiuk02CubeMapDataStructureForGI.pdf">http://www.mpi-sb.mpg.de/~mantiuk/papers/mantiuk02CubeMapDataStructureForGI.pdf</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/global-illumination/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>UCSD CSE 190 GPU Programming</title>
		<link>http://www.confettispecialfx.com/ucsd-cse-190-gpu-programming</link>
		<comments>http://www.confettispecialfx.com/ucsd-cse-190-gpu-programming#comments</comments>
		<pubDate>Fri, 10 Dec 2010 01:38:14 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Confetti]]></category>
		<category><![CDATA[D3D10]]></category>
		<category><![CDATA[D3D11]]></category>
		<category><![CDATA[Deferred Lighting]]></category>
		<category><![CDATA[General GPU Programming]]></category>
		<category><![CDATA[Global Illumination]]></category>
		<category><![CDATA[MSAA]]></category>
		<category><![CDATA[Shadow Maps]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=149</guid>
		<description><![CDATA[I will teach another GPU Programming class at UCSD. Here is the course description: Course Objectives: This course will cover techniques on how to implement real-time 3D graphics techniques in an efficient way on the Graphics Processing Unit (GPU). Course Description: This course focuses on algorithms and approaches for programming a GPU, including vertex, hull, tesselator, domain, [...]]]></description>
				<content:encoded><![CDATA[<p>I will teach another GPU Programming class at UCSD. Here is the course description:</p>
<p>Course Objectives:<br />
This course will cover techniques on how to implement real-time 3D graphics techniques in an efficient way on the Graphics Processing Unit (GPU).</p>
<p>Course Description:<br />
This course focuses on algorithms and approaches for programming a GPU, including vertex, hull, tesselator, domain, geometry, pixel and compute shaders and CUDA. The list of topics is<br />
- DirectX 11 API<br />
- Deferred Lighting, Z Pre-Pass Renderer, Deferred Shading<br />
- Programmable MSAA<br />
- Post-Effect Pipeline<br />
- Shadows (Cascaded Shadow Maps, Soft Shadows, Point Light Soft Shadows)<br />
- GPU Particle System<br />
- Global Illumination (Screen-Space, Reflective Shadow Maps)<br />
- Order-Independent Transparency<br />
- CUDA, DirectCompute</p>
<p>After an introduction into each of the algorithms, the students will learn step-by-step on how to implement those algorithms on the GPU.</p>
<p>In case you are currently not enrolled at UCSD, there is the UCSD Extension Concurrent Enrollment:</p>
<p><a href="http://extension.ucsd.edu/about/index.cfm?vAction=concurrent" target="_blank">http://extension.ucsd.edu/about/index.cfm?vAction=concurrent</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/ucsd-cse-190-gpu-programming/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Link Section</title>
		<link>http://www.confettispecialfx.com/link-section</link>
		<comments>http://www.confettispecialfx.com/link-section#comments</comments>
		<pubDate>Wed, 27 Oct 2010 18:13:56 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=145</guid>
		<description><![CDATA[I am now moving all the links over from the dairyofgraphicsprogrammer website. Here is an update: Andy Firth did a great series on how to become a console programmer. Mike Acton&#8217;s page is as usual highly recommended. Charles Bloom has a great comparison of image/movie compression methods. Ash Matheson has a great collection on how [...]]]></description>
				<content:encoded><![CDATA[<p>I am now moving all the links over from the dairyofgraphicsprogrammer website. Here is an update: Andy Firth did a great series on how to become a console programmer. Mike Acton&#8217;s page is as usual highly recommended. Charles Bloom has a great comparison of image/movie compression methods. Ash Matheson has a great collection on how to change Visual Studio with Macros and smaller tips and tricks like the simplest debug console. Coder Corner by Pierre Terdiman is another website I am following since 7+ &#8230; probably more years.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/link-section/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SIGGRAPH 2010 Skin Rendering / Crysis 2 techniques</title>
		<link>http://www.confettispecialfx.com/siggraph-2010-skin-rendering-crysis-2-techniques</link>
		<comments>http://www.confettispecialfx.com/siggraph-2010-skin-rendering-crysis-2-techniques#comments</comments>
		<pubDate>Sat, 16 Oct 2010 18:07:45 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Confetti]]></category>
		<category><![CDATA[Deferred Lighting]]></category>
		<category><![CDATA[Edge Detection]]></category>
		<category><![CDATA[General GPU Programming]]></category>
		<category><![CDATA[MSAA]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=143</guid>
		<description><![CDATA[Although I didn&#8217;t have time to go into any session on SIGGRAPH I was there doing lots of business related meetings. So I am catching up with talks by going through papers when time allows. There were two papers that caught my attention as especially game development related. John Hable spoke about the character shaders [...]]]></description>
				<content:encoded><![CDATA[<p>Although I didn&#8217;t have time to go into any session on SIGGRAPH I was there doing lots of business related meetings. So I am catching up with talks by going through papers when time allows. There were two papers that caught my attention as especially game development related. John Hable spoke about the character shaders used in Naughty Dog&#8217;s Uncharted 2 <a href="http://advances.realtimerendering.com/s2010/Hable-Uncharted2(SIGGRAPH%202010%20Advanced%20RealTime%20Rendering%20Course).pptx" target="_blank">here</a>. Five years ago I worked on Table-Tennis where we went through many of the observations he made. What I like about those slides is the attention to detail that is required to get things right and the quality of the results.</p>
<p>Skin rendering is still an unsolved problem for me because most solutions are much too expensive and blurring a map doesn&#8217;t cut it on the visual side for me. I liked very much the screen-space approach covered in GPU Pro in the article &#8220;Screen-Space Subsurface Scattering&#8221;. It looks very efficient and when many characters are on the screen its cost even goes down.</p>
<p>Anton Kaplanyan presented a range of different techniques in &#8220;CryENGINE3 Reaching the speed of Light&#8221; talk. He touched a wide range of topics that I would consider very valuable knowledge for a graphics programmer. I am sure many went through the same topics while shipping their game but the solutions presented are nicely backed-up by mathematical and observational proof.<br />
The piecewise gamma approximation of the XBOX 360 is legendary. Changing the art pipeline to 16-bit textures is a simple but very efficient way to increase the quality of graphics substantially. Doing that for normal maps as well makes sense &#8230; you just have to convince the whole art team to do this &#8230;</p>
<p>I like the proposal for the normal map compression scheme. In that context I keep mentioning the fact that we still do not have a good HDR color format. What we need is a &#8220;gamma correctable&#8221; format that allows us to store a higher resolution than the DXT formats. If it is not gamma correctable it doesn&#8217;t matter because gamma compression is making a lot of difference. This perceptual compression scheme seems to be able to compress the equivalent of 17.3 bits into 8-bits. The argument that a HDR texture format that is not gamma compressable / decompressable could get close to the quality of a gamma compressed DXT format that is decompressed in the pixel shader is just not right.<br />
Anton also describes their improvements with SSAO. They got it down to 1ms on the XBOX360.<br />
Baking color transform values into 3D textures only makes sense in case you do not plan on changing those values afterwards. If you want to have a different color setting depending on location in the game, you will have challenges to switch between 3D textures smooth enough to make this work. The clip volumes described in the slides are quite interesting. This looks like a very good solution to one of the nagging challenges of Deferred Lighting. Anisotropic lighting is easy to implement as long as you use two geometry passes. You just run it in the second geometry pass with only the sun light or the main light source and do not apply the Deferred lights to those materials. In most cases it would look odd if for example hair would be lit by many light sources. If you do not want to do the second geometry pass (we don&#8217;t do it anymore),  the proposed solution is quite nice. You can even go further and pre-bake all the anisotropic properties into a texture. We did that in the anisotropic demo for the Qualcomm shader examples available on Qualcomm&#8217;s website. That comes down to one instruction: a multiply of rgb with a from a texture. Obviously Anton&#8217;s solution is better <img src='http://www.confettispecialfx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Another way to achieve a wider range of materials in a Deferred lighting engine is to store a material index in the G-Buffer. Because this is a dependent texture read, it will be quite slow on the XBOX 360. It looks similar to what was described in Game Programming Gems 3 in the article &#8220;Rendering with Handcrafted Shading Models&#8221;.</p>
<p>We are currently using MLAA for anti-aliasing in our engine. Combining Temporal Anti-Aliasing with Edge based anti-aliasing looks like a quality improvement.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/siggraph-2010-skin-rendering-crysis-2-techniques/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Massive Point Light Screen-Space Soft Shadows</title>
		<link>http://www.confettispecialfx.com/massive-point-light-screen-space-soft-shadows</link>
		<comments>http://www.confettispecialfx.com/massive-point-light-screen-space-soft-shadows#comments</comments>
		<pubDate>Wed, 15 Sep 2010 05:22:47 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Confetti]]></category>
		<category><![CDATA[D3D10]]></category>
		<category><![CDATA[D3D11]]></category>
		<category><![CDATA[Shadow Maps]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=141</guid>
		<description><![CDATA[Just showed off a demo running on my laptop with the new point light soft shadow algorithm on the Korean Game Developer Conference. You can see screenshots of 16, 32 and 64 soft shadows on the Confetti website at http://www.facebook.com/pages/Confetti-Special-Effects-Inc/159613387880?v=wall On a desktop machine you can go higher than this but honestly how many soft [...]]]></description>
				<content:encoded><![CDATA[<p>Just showed off a demo running on my laptop with the new point light soft shadow algorithm on the Korean Game Developer Conference. You can see screenshots of 16, 32 and 64 soft shadows on the Confetti website at</p>
<p><a href="http://www.facebook.com/pages/Confetti-Special-Effects-Inc/159613387880?v=wall">http://www.facebook.com/pages/Confetti-Special-Effects-Inc/159613387880?v=wall</a></p>
<p>On a desktop machine you can go higher than this but honestly how many soft shadows do you need in a scene? The algorithm let&#8217;s you switch on and off softness per light, so you can switch off the soft part based on distance, moving speed of the light or any other criteria you can think off.<br />
I think on a middle class PC graphics card you can have easily 128 shadows in a scene with decent quality. Some are soft and some are hard. My next effort is to find out how I can render faster into cube shadow maps or maybe use Dual-Paraboloid shadow maps.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/massive-point-light-screen-space-soft-shadows/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SIGGRAPH 2010: Deferred Lighting / Deferred Shading</title>
		<link>http://www.confettispecialfx.com/siggraph-2010-deferred-lighting-deferred-shading</link>
		<comments>http://www.confettispecialfx.com/siggraph-2010-deferred-lighting-deferred-shading#comments</comments>
		<pubDate>Thu, 05 Aug 2010 19:48:26 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=134</guid>
		<description><![CDATA[There was a presentation given at the Beyond Programmable Shading day on Deferred Shading. I believe the presenter wanted to compare Deferred Lighting with Deferred Shading. I couldn&#8217;t attend the Beyond Programmable Shading day this year, so I was only looking at the slides. The interesting part was that Deferred Shading was implemented with the Compute [...]]]></description>
				<content:encoded><![CDATA[<p>There was a presentation given at the Beyond Programmable Shading day on Deferred Shading. I believe the presenter wanted to compare Deferred Lighting with Deferred Shading. I couldn&#8217;t attend the Beyond Programmable Shading day this year, so I was only looking at the slides. The interesting part was that Deferred Shading was implemented with the Compute Shader and performance figures were given for ATI&#8217;s 5870 and a NVIDIA GTX 480 for up to 1000 lights.<br />
You can find the talk here:</p>
<p><a href="http://bps10.idav.ucdavis.edu/">http://bps10.idav.ucdavis.edu/</a></p>
<p>Having helped to ship games with Deferred Shading and later with Deferred Lighting gives me a good rough estimate on how those two compare with each other.</p>
<p>The presentation shows that the highest end graphics cards seem to max out with 1000 lights in the given scenario with the help of compute shader support. Most of my tests four years ago were done on a XBOX 360 or PS3 and later on lower end graphics cards. From what I remember in an artifical scenario 256 &#8211; 512 lights on a XBOX 360 / PS3 were possible in a similar setting that was described in the talk.<br />
On low-end PC graphics cards like the 9600M GT of my MacBook Pro, we can run 8000 small point lights while a whole game level and colliding particles are rendered with more than 40 fps.<br />
Comparing Deferred Shading with Deferred Lighting, I believe Deferred Lighting should be faster in all scenarios because you fetch fewer render targets and you do not resolve the lighting equation for each light.</p>
<p>Because the presenter used high-end NVIDIA and ATI cards I thought it would be cool to use an integrated INTEL GPU to show off Deferred Lighting and everyone could enjoy it. The drivers for those GPUs are really good now and our system only requires DX10, so we don&#8217;t use the compute shader. So I thought I give it a try on my two-and-a-half year old Lenovo X301 (<a href="http://www.notebookcheck.net/Lenovo-ThinkPad-X301.16099.0.html">http://www.notebookcheck.net/Lenovo-ThinkPad-X301.16099.0.html</a>) with an Intel Graphics Media Accelerator (GMA) 4500MHD. This chipset is obviously not INTEL&#8217;s latest but to my surprise it ran our demo quite well. Wikipedia says this GPU has a theoretical memory bandwidth of 12.8 GB/s. The GPUs used in the SIGGRAPH presentation have a theoretical memory bandwidth of 153.6 GB/sec (ATI RADEON 5870) and 177.4 GB/sec (GeForce GTX 480) if they are standard GPUs; some vendors sell those GPUs with higher memory clock rates.<br />
I chose to visualize 1000 small point lights without specular and the resolution of the notebook is set to 1024&#215;768, so much smaller than what was used on SIGGRAPH. The particles, to which the point lights are attached to, also collide with the environment and bounce off. Nevertheless it was running during my tests with roughly 11 to 22 fps <img src='http://www.confettispecialfx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
Here are two screenshots and a shot of the laptop:</p>
<p><a rel="attachment wp-att-138" href="http://www.wolfgang-engel.info/blogs/?attachment_id=138"><img class="aligncenter size-medium wp-image-138" title="pic1" src="http://www.wolfgang-engel.info/blogs/wp-content/uploads/2010/08/pic1-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p><a rel="attachment wp-att-139" href="http://www.wolfgang-engel.info/blogs/?attachment_id=139"><img class="aligncenter size-medium wp-image-139" title="pic2" src="http://www.wolfgang-engel.info/blogs/wp-content/uploads/2010/08/pic2-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p><a rel="attachment wp-att-137" href="http://www.wolfgang-engel.info/blogs/?attachment_id=137"><img class="aligncenter size-medium wp-image-137" title="IMG_20100805_113942" src="http://www.wolfgang-engel.info/blogs/wp-content/uploads/2010/08/IMG_20100805_113942-225x300.jpg" alt="" width="225" height="300" /></a></p>
<p>I think it would be cool to see more stuff running on INTEL integrated chip sets, after all it is fun to get things going on low-end GPUs <img src='http://www.confettispecialfx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  &#8230; raise your hand if you&#8217;re with me <img src='http://www.confettispecialfx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/siggraph-2010-deferred-lighting-deferred-shading/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Massive Point Light Soft Shadows</title>
		<link>http://www.confettispecialfx.com/massive-point-light-soft-shadows</link>
		<comments>http://www.confettispecialfx.com/massive-point-light-soft-shadows#comments</comments>
		<pubDate>Wed, 30 Jun 2010 10:33:23 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[D3D10]]></category>
		<category><![CDATA[Shadow Maps]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=130</guid>
		<description><![CDATA[Deferred lighting offers the ability to render thousands of lights. The next frontier in game development is to attach an equal number of shadows to those lights. This short note describes a new algorithm that can be used to render a large amount of shadows casted by point lights with perceptually correct penumbra. This algorithm [...]]]></description>
				<content:encoded><![CDATA[<p>Deferred lighting offers the ability to render thousands of lights. The next frontier in game development is to attach an equal number of shadows to those lights. This short note describes a new algorithm that can be used to render a large amount of shadows casted by point lights with perceptually correct penumbra.<br />
This algorithm is based on Randy Fernando&#8217;s &#8220;Percentage-closer soft shadows&#8221; and Jesus Gumbau et all.&#8217;s &#8220;Screen-Space Soft Shadows&#8221; in GPU Pro. Jesus Gumbau co-authored this technique.<br />
The algorithm can be split up in the following steps:</p>
<ol>
<li>Calculate the Cube Shadow Map</li>
<li>Generate a coarse or dilated version from the Cube Shadow Map above by rendering into a smaller Cube Map. Each pixel of the coarse shadow map will approximate a block of pixels of the standard Cube Shadow Map.</li>
<li>Based on each coarse cube shadow map, calculate the penumbra size and blend the result into a screen-space texture.</li>
<li>Blend the shadow data of all cube maps into a screen-space shadow map.</li>
<li>Apply an anistropic Gaussian filter kernel to the screen-space shadow map while adjusting the kernel size based on the data in the penumbra size stored in the screen-space texture above.</li>
</ol>
<p><strong>Coarse Cube Shadow Map</strong></p>
<p>Fernando [Fernando 2005] came up with the idea of doing a blocker search to find the average depth of the blockers. In this approach the blocker search is replaced by generating a minimum <span style="mso-spacerun: yes;"> </span>z map (min-z map) [Gumbau et al. 2010]. The min-z map approximates the distance between the light and the blockers.</p>
<p><strong>Calculating the Penumbra Size</strong></p>
<p>Fernando’s [Fernando 2005]  showed that assuming that the light source, blocker and receiver can be treated as parallel, the similar triangle approach can be used to estimate the penumbra size as shown in the following equation:</p>
<p><a rel="attachment wp-att-132" href="http://www.wolfgang-engel.info/blogs/?attachment_id=132"><img class="aligncenter size-full wp-image-132" title="Penumbra Size" src="http://www.dev.confettispecialfx.com/wp-content/uploads/2010/06/PenumbraSize.jpg" alt="" width="227" height="38" /></a></p>
<p>Following Gumbau [Gumbau et al. 2010] this work extends this idea by adding an additional parameter to this equation:</p>
<p><a rel="attachment wp-att-133" href="http://www.wolfgang-engel.info/blogs/?attachment_id=133"><img class="aligncenter size-full wp-image-133" title="Pneumbra Size " src="http://www.dev.confettispecialfx.com/wp-content/uploads/2010/06/PneumbraSize2.jpg" alt="" width="206" height="36" /></a></p>
<p><em>d<sub>observer</sub></em> describes the distance to the observer and will be used to scale the screen-space filter kernel. <em>d<sub>blocker </sub></em>represents the content of the coarse screen-space shadow data.</p>
<p><strong>Anisotropic Screen-Space Gauss Filter Kernel</strong></p>
<p><strong> </strong></p>
<p>Using a separable Gaussian Filter kernel allows to filter the shadow data with less texture fetches compared to the commonly used PCF based filter method. Compared to PCF filtering the Gaussian filter kernel performs with O(n+n) instead of O(n<sup>2</sup>). To determine the shape and the orientation of the filter kernel, the normal of the current pixel is fetched from the normal buffer and projected into eye space. To perform the anisotropic filtering in an efficient way, Geusebroek’s [Geusebroek et al. 2003] approach is applied.</p>
<p><strong>Data Layout</strong></p>
<p><strong> </strong></p>
<p>This new algorithm is compliant with the concept of Deferred Lighting. The shadow and the coarse min-z data is stored in regular cube depth render targets. While the G-Buffer holds color, normal and depth data of the scene, there is a light buffer for the light data, a main back buffer and a separate –at least- 16-bit floating point buffer that holds the penumbra size values in screen-space. The main back buffer and the buffer that holds the screen-space penumbra size values covered in 3. can be filled up together if treated as a Multiple-Render Target (MRT).</p>
<p>In that case the first three channels of the main buffer are filled with the lit but un-shadowed scene while at the same time the screen-space shadow data mentioned in 4. can occupy the fourth channel of this render target.</p>
<p>More info at the Korean Game Developer Conference and in an article in GPU Pro 2 &#8230;</p>
<p><strong>References</strong></p>
<p>Randy Fernando, “Percentage-Closer Soft Shadows”, SIGGRAPH 2005 Sketch</p>
<p>Jan-Mark Geusebroek, Arnold W. M. Smeulders, J. van de Weijer, “Fast anisotropic Gauss filtering”, IEEE Transactions on Image Processing, Volume 12 (8), page 938-943, 2003</p>
<p>Jesus Gumbau, Miguel Chover and Mateu Sbert, “Screen Space Soft Shadows”, to appear in GPU Pro, AK Peters, 2010</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/massive-point-light-soft-shadows/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Screen-Space Global Illumination</title>
		<link>http://www.confettispecialfx.com/screen-space-global-illumination-2</link>
		<comments>http://www.confettispecialfx.com/screen-space-global-illumination-2#comments</comments>
		<pubDate>Sat, 05 Jun 2010 20:54:30 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Confetti]]></category>
		<category><![CDATA[Global Illumination]]></category>
		<category><![CDATA[Handheld Development]]></category>
		<category><![CDATA[iPhone iPod Touch iPad Programming]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=127</guid>
		<description><![CDATA[I just realized that I posted the last time on June 29th, 2009 on Screen-Space Ambient Occlusion. Compared to other screen-space effects that are part of a whole PostFX it is quite expensive and doesn&#8217;t really add that much. One solution to this quality / performance problem is to re-use some of the work necessary [...]]]></description>
				<content:encoded><![CDATA[<p>I just realized that I posted the last time on June 29th, 2009 on Screen-Space Ambient Occlusion. Compared to other screen-space effects that are part of a whole PostFX it is quite expensive and doesn&#8217;t really add that much. One solution to this quality / performance problem is to re-use some of the work necessary to do a one bounce global illumination effect. This way you pay some more but overall get two effects instead of only one. Here is a screenshot of a one bounce diffuse indirect lighting effect running on a mobile phone:<br />
<a href="http://www.wolfgang-engel.info/blogs/?attachment_id=128" rel="attachment wp-att-128"><img src="http://www.wolfgang-engel.info/blogs/wp-content/uploads/2010/06/45-One-Bounce-Effect-300x157.jpg" alt="" title="One Bounce Effect" width="300" height="157" class="aligncenter size-medium wp-image-128" /></a></p>
<p>You can find more screenshots of the mobile work we do at the<br />
<a href="http://www.facebook.com/pages/Confetti-Special-Effects-Inc/159613387880?v=wall">Confetti Special Effects</a> fan page. More info is available soon on Qualcomm&#8217;s developer <a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.qdevnet.com%2F&#038;h=68eb9">website</a> or in the Paris Master Class <img src='http://www.confettispecialfx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/screen-space-global-illumination-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Paris Master Class</title>
		<link>http://www.confettispecialfx.com/paris-master-class</link>
		<comments>http://www.confettispecialfx.com/paris-master-class#comments</comments>
		<pubDate>Mon, 24 May 2010 23:36:08 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[D3D10]]></category>
		<category><![CDATA[D3D11]]></category>
		<category><![CDATA[Deferred Lighting]]></category>
		<category><![CDATA[Edge Detection]]></category>
		<category><![CDATA[General GPU Programming]]></category>
		<category><![CDATA[Global Illumination]]></category>
		<category><![CDATA[Handheld Development]]></category>
		<category><![CDATA[iPhone iPod Touch iPad Programming]]></category>
		<category><![CDATA[MSAA]]></category>
		<category><![CDATA[Order-Independent Transparency]]></category>
		<category><![CDATA[Particle System]]></category>
		<category><![CDATA[PostFX]]></category>
		<category><![CDATA[Shadow Maps]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=126</guid>
		<description><![CDATA[I am going to teach a Paris Master Class this year on June 24th and June 25th. The topics covered will be - Deferred Lighting, Z Pre-Pass Renderer, Deferred Shading - Programmable MSAA - Post-Effect Pipeline - Shadows (Cascaded Shadow Maps, Soft Shadows, Point Light Soft Shadows) - GPU Particle System - Global Illumination (Screen-Space, [...]]]></description>
				<content:encoded><![CDATA[<p>I am going to teach a <a href="http://www.parismasterclasses.com/content/masterclass-show/41/advanced-graphics-programming-on-the-gpu">Paris Master Class</a> this year on June 24th and June 25th.<br />
The topics covered will be<br />
- Deferred Lighting, Z Pre-Pass Renderer, Deferred Shading<br />
- Programmable MSAA<br />
- Post-Effect Pipeline<br />
- Shadows (Cascaded Shadow Maps, Soft Shadows, Point Light Soft Shadows)<br />
- GPU Particle System<br />
- Global Illumination (Screen-Space, Reflective Shadow Maps)<br />
- Order-Independent Transparency</p>
<p>I hope to see some of you there.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/paris-master-class/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>GPU Debugging / Profiling</title>
		<link>http://www.confettispecialfx.com/gpu-debugging-profiling</link>
		<comments>http://www.confettispecialfx.com/gpu-debugging-profiling#comments</comments>
		<pubDate>Mon, 24 May 2010 01:59:16 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[General GPU Programming]]></category>
		<category><![CDATA[Handheld Development]]></category>
		<category><![CDATA[iPhone iPod Touch iPad Programming]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=125</guid>
		<description><![CDATA[In the last week, I started working with the OpenGL run-time of our rendering framework that still utilizes OpenGL 2.0. We can target MacOS easy with this (although they upgrade hopefully soon to 3.2) and have an easy migration path to OpenGL ES 2.0 on the iPhone and Android. One of the tools I discovered [...]]]></description>
				<content:encoded><![CDATA[<p>In the last week, I started working with the OpenGL run-time of our rendering framework that still utilizes OpenGL 2.0. We can target MacOS easy with this (although they upgrade hopefully soon to 3.2) and have an easy migration path to OpenGL ES 2.0 on the iPhone and Android.<br />
One of the tools I discovered in the process was gDEBugger. This tool allows us to debug on Windows, Mac and the iPhone (soon on the device) with the same interface. I like that it also provides a bunch of performance data. Checking out things like the number of drawcalls, a list of the gl calls used most often and also the batching size of our draw calls are cool features. Additionally being able to break at any gl call or glError was very useful already &#8230; and then there is the usual stuff you expect like preview of VBOs, textures, render buffers and source code. Additionally you can figure out performance bottlenecks by not sending draw calls, raster operations, fixed function pipeline calls, texture data fetches, geometry and fragment shader execution. You can analyze the amount of GPU memory occupied and you have all kind of statistics that you can call from everywhere.<br />
We tried the demo version throughout the last week on Windows and the iPhone and Confetti has now licensees for both. If you want to try for yourself, you can get a demo version on their <a href="http://www.gremedy.com/">website</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/gpu-debugging-profiling/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oolong Engine, Confetti, Light Pre-Pass on SPU, GPU Pro, Order-Independent Transparency</title>
		<link>http://www.confettispecialfx.com/oolong-confetti-light-pre-pass-on-spu-gpu-pro-order-independent-transparency</link>
		<comments>http://www.confettispecialfx.com/oolong-confetti-light-pre-pass-on-spu-gpu-pro-order-independent-transparency#comments</comments>
		<pubDate>Mon, 10 May 2010 15:33:27 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Confetti]]></category>
		<category><![CDATA[D3D11]]></category>
		<category><![CDATA[Deferred Lighting]]></category>
		<category><![CDATA[Global Illumination]]></category>
		<category><![CDATA[GPU Pro]]></category>
		<category><![CDATA[iPhone iPod Touch iPad Programming]]></category>
		<category><![CDATA[Order-Independent Transparency]]></category>
		<category><![CDATA[Particle System]]></category>
		<category><![CDATA[PS3]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=124</guid>
		<description><![CDATA[A lot of smaller things happened in the last months. Oolong Engine got an iPad update and many bugfixes: Oolong Engine Confetti Special Effects posted a couple of screenshots of several projects we are working on. So far we are showing of particle collisions, a next-gen dynamic skydome system with god rays, terrain self-shadowing, volumetric [...]]]></description>
				<content:encoded><![CDATA[<p>A lot of smaller things happened in the last months. Oolong Engine got an iPad update and many bugfixes:</p>
<p><a href="http://code.google.com/p/oolongengine">Oolong Engine</a></p>
<p>Confetti Special Effects posted a couple of screenshots of several projects we are working on. So far we are showing of particle collisions, a next-gen dynamic skydome system with god rays, terrain self-shadowing, volumetric clouds and atmospheric scattering that is correct even when watched from space and a fully-dynamic global illumination system. Please check out our Facebook page:</p>
<p><a href="http://www.facebook.com/pages/Confetti-Special-Effects-Inc/159613387880?v=wall">Confetti Special Effects</a></p>
<p>In other news there are cool slides of a SPU-based implementation of the Light Pre-Pass renderer here:</p>
<p><a href="http://www.spuify.co.uk/?p=323">A Bizarre Way to do Real-Time Lighting</a></p>
<p>There is a GPU Pro article that describes many of the implementation details. BTW: GPU Pro is on its way to the book sellers and looks fantastic. Color makes such a big difference for a book like this.</p>
<p>Kaori Kubota send me a link to an example implementation of Order-Independent Transparency where he changed the DirectX OIT example to use AMD&#8217;s linked list implementation. Framerate went on my machine from 10 to more than 1400 fps. He also wrote a documentation:</p>
<p><a href="http://www4.atword.jp/cathy39/2010/04/21/linkedlistoit1/">OIT</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/oolong-confetti-light-pre-pass-on-spu-gpu-pro-order-independent-transparency/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cascaded Shadow Maps</title>
		<link>http://www.confettispecialfx.com/cascaded-shadow-maps</link>
		<comments>http://www.confettispecialfx.com/cascaded-shadow-maps#comments</comments>
		<pubDate>Wed, 05 May 2010 17:23:22 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[D3D10]]></category>
		<category><![CDATA[Shadow Maps]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=123</guid>
		<description><![CDATA[Some people were asking me about Cascaded Shadow Maps in the last few weeks. Here is a short high-level view how I see the development in the last five years in that area. More than five years ago I wrote the article &#8220;Cascaded Shadow Maps&#8221; in ShaderX5. At the time I was trying to visualize [...]]]></description>
				<content:encoded><![CDATA[<p>Some people were asking me about Cascaded Shadow Maps in the last few weeks. Here is a short high-level view how I see the development in the last five years in that area.<br />
More than five years ago I wrote the article &#8220;Cascaded Shadow Maps&#8221; in ShaderX5. At the time I was trying to visualize an idea that was based on a talk by John Carmack in 2004 where he described &#8220;Cascaded Shadow Maps&#8221; the first time. In the article I think I generated a few additional buzzwords like &#8220;Deferred Shadows&#8221; and &#8220;Shadow Collector&#8221;. The &#8220;Shadow Collector&#8221; was later also called shadow mask.<br />
The overall experience in implementing Cascaded Shadow Maps can be summarized with the words &#8220;I know now 1000 ways on how to not implement them&#8221; and the actual implementation I ended up with is more straightforward than sophisticated. I want to cover some of the challenges now.</p>
<p><strong>How to Create a Light Frustum</strong><br />
After splitting up the view frustum into slices constructing a tight light view frustum can be a challenge. There are several ways to do this.<br />
Just using the eight points of the slice of the view frustum and constructing the light view frustum around this works well but what happens is that the quality of the shadow changes depending on how the camera is facing the sun. That gave sometimes very good results and sometimes bad results. Having the same error level distributed over the time of day in a game is an important requirement. So I build a sphere around the frustum slice that intersects the eight points of this slice. Then around this sphere the orthographic light view frustum is build. This follows Michael Valient&#8217;s article in ShaderX6. The orthographic light view frustum rotates around that sphere similar to a joint. The quality is evenly distributed independent of the angle of the camera and the light source. You can even use this in a flight simulator and fly loops and it will work appropriately.</p>
<p><strong>Shadow Collector / Mask / Deferred Shadowing</strong><br />
After rendering into the shadow maps one intermediate step before the scene will be rendered can be to store all the shadow data in a screen-space texture. This can happen along with Z-buffer and / or Normal buffer rendering.<br />
The main reason to do this is that you can&#8217;t fetch the texture data easily while rendering the main scene. Let&#8217;s say we have four cascades and therefore four shadow maps each 640&#215;640. Fetching four maps of this size along with all the other maps that are necessary while rendering the scene will degrade performance substantially. So this needs to be done before the scene is rendered.<br />
Having this screen-space texture also offers a good way to blur the data again. The reason why I called this screen-space texture shadow collector is that it can be used to collect all the shadows of the scene. There might be cloud shadows (just projected down), character shadows (for high-res self-shadowing), point and spot light shadows and all kind of special cases. All this data can be alpha blended into the shadow collector and then applied to the scene by fetching this texture. Obviously there might be other ways to store the data when you are using a Deferred Lighting approach.</p>
<p><strong>How to Pick the Right Texture map</strong><br />
When you render into the shadow collector you need to have a good way to find out which texture map to pick. Michal Valient&#8217;s article has a great solution for this. I just do a sphere-pixel distance check for all four maps in the pixel shader. This is the sphere that you used to construct the light view frustum around. What I like about this is that the break between different maps is in circle form and not a line. This is easier to hide. There are probably smarter ways to do this.</p>
<p><strong>How to Store the Shadow Map data</strong><br />
Storing the intial shadow data is best done in a texture atlas. There are numerous challenges on how to fetch data from a texture atlas that were described in a ShaderX3 article by Matthias Wloka. Nevertheless it is the best representative aside from a texture array that is only available on more recent hardware.<br />
Jonathan Blow has a <a href="http://the-witness.net/news/?p=113#more-113">blog</a> entry on how to store this data in the most efficient way.</p>
<p>There is an interesting discussion following his blog entry. Some people argue that the usage of a texture atlas is not necessary as long as you render the data immediately into the shadow collector. This way you render four times. On most platforms I worked on this is not efficient. You only want to render all the data coming from the Cascaded Shadow Maps once.<br />
In other words Jonathan&#8217;s idea is really interesting. One person mentions the following link in this context .</p>
<p><a href="http://www.antisphere.com/Research/Tiles.php">Packing Square Tiles into One Texture</a></p>
<p><strong>How to soften the Penumbra</strong><br />
On most hardware platforms you can&#8217;t run any filter kernel bigger than 4 taps. There are tricks to detect the areas where you can run bigger filter kernels but most of them didn&#8217;t work out well for me.<br />
The amount of research that goes into this area is astonishing. It astonishes even more that nearly all solutions don&#8217;t work in any real-world game environment with a 24 hour time of day cycle.<br />
The one solution I found working is Exponential Shadow maps. They only require a one channel depth buffer and you can render with the double-speed writes if you use the native depth buffer format. Unfortunately they suffer under light bleeding artifacts.<br />
I used therefore a four-tap screen-space filter kernel that rotates and dithers the data and that worked well.</p>
<p><strong>Future Development</strong><br />
There is hope that we can use eight-tap filter kernels on most platforms soon <img src='http://www.confettispecialfx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  &#8230; but what will offer new opportunities is the ability of DX10 to render out to several maps in one render pass. Because Cascaded Shadow Maps is a shadow level-of-detail system that distributes shadow data quite evenly along the view frustum, I expect people to come up with better LOD schemes, in other words, more frustra or in other words multi-frustum shadow maps as already described by Tom Forsyth in 2004 are the future. ShaderX had interesting articles in this area that were called Virtual Shadow Maps.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/cascaded-shadow-maps/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Order-Independent Transparency II</title>
		<link>http://www.confettispecialfx.com/order-independent-transparency-ii</link>
		<comments>http://www.confettispecialfx.com/order-independent-transparency-ii#comments</comments>
		<pubDate>Thu, 22 Apr 2010 23:05:59 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Order-Independent Transparency]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=116</guid>
		<description><![CDATA[Holger Gruen and Nicolas Thibieroz describe the usage of per-pixel linked lists with DirectX 11 in their GDC presentation &#8220;OIT and Indirect Illumination using DX11 Linked Lists&#8221; Per-Pixel linked lists represent one pixel in the viewport / framebuffer with a list of structures consisting of the actual data and a link that links this list [...]]]></description>
				<content:encoded><![CDATA[<p>Holger Gruen and Nicolas Thibieroz describe the usage of per-pixel linked lists with DirectX 11 in their GDC presentation <a class="aligncenter" title="here" href="http://developer.amd.com/gpu_assets/OIT%20and%20Indirect%20Illumination%20using%20DX11%20Linked%20Lists_forweb.ppsx" target="_blank">&#8220;OIT and Indirect Illumination using DX11 Linked Lists&#8221;</a></p>
<p>Per-Pixel linked lists represent one pixel in the viewport / framebuffer with a list of structures consisting of the actual data and a link that links this list entry to the next one.  This list of elements is stored in a read/write structured buffer. A structured buffer is a buffer that contains elements of equal sizes. Use a structure with one or more member types to define an element. The buffer in the power-point slides is called &#8220;Fragment and Link Buffer&#8221;:</p>
<pre>struct  FragmentAndLinkBuffer_STRUCT
{
  FramentData_STRUCT FragmentData;
  uint uNext;
}
RWStructuredBuffer&lt;FragmentAndLinkBuffer_STRUCT&gt;FLBuffer;</pre>
<p>In addition to indexing, a structured buffer supports accessing a single member like this:</p>
<pre>float4 myColor = FLBuffer[27].Color; // cache challenges here?</pre>
<p>This buffer can now hold any number of list entries that represent one pixel. Each list entry refers to the previous list entry in the variable uNext. To make this work, a so called &#8220;Start Offset Buffer&#8221; is used. This buffer stores the offset into the &#8220;Fragment and Link Buffer&#8221; representing a pixel in the framebuffer. In case one pixel is &#8220;overwritten&#8221; by another pixel, this offset value is read from the &#8220;Start Offset Buffer&#8221;, written into the uNext variable of the new list entry and the offset value of the new list entry is then written into the &#8220;Start Offset Buffer&#8221; and so on. The slides show the following images (there is a nice animation in the slide show that is worth checking out):</p>

<a href='http://www.confettispecialfx.com/order-independent-transparency-ii/pplinkedlistimage1' title='Writing the first entry into the &quot;Fragment and Link Buffer&quot;'><img width="150" height="150" src="http://www.confettispecialfx.com/wp-content/uploads/2010/04/PPLinkedListImage1-150x150.jpg" class="attachment-thumbnail" alt="Writing the first entry into the &quot;Fragment and Link Buffer&quot;" /></a>
<a href='http://www.confettispecialfx.com/order-independent-transparency-ii/pplinkedlistimage2' title='Writing the second and third entry into the &quot;Fragment and Link Buffer&quot;'><img width="150" height="150" src="http://www.confettispecialfx.com/wp-content/uploads/2010/04/PPLinkedListImage2-150x150.jpg" class="attachment-thumbnail" alt="Writing the second and third entry into the &quot;Fragment and Link Buffer&quot;" /></a>
<a href='http://www.confettispecialfx.com/order-independent-transparency-ii/pplinkedlistimage3' title='Writing the second and third entry into the &quot;Fragment and Link Buffer&quot;'><img width="150" height="150" src="http://www.confettispecialfx.com/wp-content/uploads/2010/04/PPLinkedListImage3-150x150.jpg" class="attachment-thumbnail" alt="Writing the second and third entry into the &quot;Fragment and Link Buffer&quot;" /></a>
<a href='http://www.confettispecialfx.com/order-independent-transparency-ii/pplinkedlistimage4' title='Traversing the Per-Pixel Linked List'><img width="150" height="150" src="http://www.confettispecialfx.com/wp-content/uploads/2010/04/PPLinkedListImage4-150x150.jpg" class="attachment-thumbnail" alt="Traversing the Per-Pixel Linked List" /></a>

<p>The viewport is represented by the 2D grid on the left. For each pixel a value is written into the &#8220;Start Offset Buffer&#8221;. For the first pixel it is 0, then 1 and so on. This value represents the offset into the &#8220;Fragment and Link Buffer&#8221;. The first image on the left shows how the first value is written into the &#8220;Start Offset Buffer&#8221; and how this value represents the offset into the &#8220;Fragment and Link Buffer&#8221;. The second image shows how two more pixels are stored in one entry of a linked list. The third image on the right side shows how another list entry is added to the first entry in the &#8220;Fragment and Link Buffer&#8221;. The fourth entries uNext variable holds now 0 as the value.<br />
Traversing the linked list is easy. Just following the offset value in the &#8220;Start Offset Buffer&#8221; of the pixel that needs to be rendered and then following the uNext entry leads to the fourth and then the first entry in the &#8220;Fragment and Link Buffer&#8221; as shown in the fourth image.</p>
<p>To implement Order-Independent Transparency with this technique, only transparent pixels need to be stored in a Per-Pixel Linked List. In the rendering phase, those list entries are stored in a back-to-front order and blended in a pixel shader. The blend mode can then be unique per-pixel.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/order-independent-transparency-ii/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>DigiPen</title>
		<link>http://www.confettispecialfx.com/digipen</link>
		<comments>http://www.confettispecialfx.com/digipen#comments</comments>
		<pubDate>Sat, 17 Apr 2010 16:45:31 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Global Illumination]]></category>
		<category><![CDATA[Leadership]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=115</guid>
		<description><![CDATA[Yesterday I gave a talk on &#8220;Introduction to Real-Time Global Illumination&#8221; at DigiPen. I was invited by the graphics club. It astonished me how much knowledge the people in the auditorium had. They asked me the right questions and it was fun just going on tangents on several topics not related to GI. The students [...]]]></description>
				<content:encoded><![CDATA[<p>Yesterday I gave a talk on &#8220;Introduction to Real-Time Global Illumination&#8221; at DigiPen. I was invited by the graphics club.</p>
<p>It astonished me how much knowledge the people in the auditorium had. They asked me the right questions and it was fun just going on tangents on several topics not related to GI.</p>
<p>The students also showed me demos they did and those were impressive. They actually have to write their &#8220;engines&#8221; from scratch in C/C++ (no middleware allowed, e.g. no sound or physics middleware).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/digipen/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Confetti Special Effects: Facebook Page</title>
		<link>http://www.confettispecialfx.com/confetti-special-effects-facebook-page</link>
		<comments>http://www.confettispecialfx.com/confetti-special-effects-facebook-page#comments</comments>
		<pubDate>Tue, 06 Apr 2010 16:56:33 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Confetti]]></category>
		<category><![CDATA[General GPU Programming]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=106</guid>
		<description><![CDATA[Confetti created a facebook page to show some of the work-in-progress shots of what we are working on. You can find it here: http://www.facebook.com/pages/Confetti-Special-Effects-Inc/159613387880?v=wall We will also have a better website soon &#8230; very soon]]></description>
				<content:encoded><![CDATA[<p>Confetti created a facebook page to show some of the work-in-progress shots of what we are working on. You can find it here:</p>
<p><a href="http://www.facebook.com/pages/Confetti-Special-Effects-Inc/159613387880?v=wall">http://www.facebook.com/pages/Confetti-Special-Effects-Inc/159613387880?v=wall</a></p>
<p>We will also have a better website soon &#8230; very soon <img src='http://www.confettispecialfx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/confetti-special-effects-facebook-page/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Edge Detection Trick</title>
		<link>http://www.confettispecialfx.com/edge-detection-trick</link>
		<comments>http://www.confettispecialfx.com/edge-detection-trick#comments</comments>
		<pubDate>Sat, 20 Mar 2010 17:40:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Deferred Lighting]]></category>
		<category><![CDATA[Edge Detection]]></category>
		<category><![CDATA[MSAA]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=103</guid>
		<description><![CDATA[Benualdo posted in the Light Pre-Pass Thread a cool trick on how to detect edges to run a per-sample shader for MSAA (just in case centroid sampling doesn&#8217;t work for you). Here it is: &#8212;&#8212;&#8212;- another stupid trick for edge detection pass on platforms that support sampling the MSAA surface with linear sampling: sample the [...]]]></description>
				<content:encoded><![CDATA[<p>Benualdo posted in the Light Pre-Pass Thread a cool trick on how to detect edges to run a per-sample shader for MSAA (just in case centroid sampling doesn&#8217;t work for you). Here it is:<br />
&#8212;&#8212;&#8212;-<br />
another stupid trick for edge detection pass on platforms that support sampling the MSAA surface with linear sampling: sample the normal buffer twice, once with POINT sampling and once with LINEAR sampling. Use clip(-abs(L-P)+eps). The linear sampled value should be used to compute the lighting of &#8220;non-MSAA&#8221; texels in the same shader to avoid an extra pass.<br />
&#8212;&#8212;&#8212;-<br />
eps is a small threshold value to bias the texkill test so that when the multisampled normals are only a little different then we could use the averaged value to perform the lighting at non-MSAA resolution during the first pass as an optimization.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/edge-detection-trick/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>GPU Pro</title>
		<link>http://www.confettispecialfx.com/gpu-pro</link>
		<comments>http://www.confettispecialfx.com/gpu-pro#comments</comments>
		<pubDate>Sat, 27 Feb 2010 18:30:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[GPU Pro]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=102</guid>
		<description><![CDATA[There is a blog concerning the upcoming book GPU Pro at http://gpupro.blogspot.com/. I posted the Table of Contents for GPU Pro. You can pre-order it on Amazon here. There is another blog for GPU Pro 2 with a call for authors, in case you want to see your name written in golden letters in a book]]></description>
				<content:encoded><![CDATA[<p>There is a blog concerning the upcoming book GPU Pro at <a href="http://gpupro.blogspot.com/">http://gpupro.blogspot.com/</a>.<br />
I posted the Table of Contents for GPU Pro. You can pre-order it on <a href="http://www.amazon.com/gp/product/1568814720/ref=s9_simh_gw_p14_t1?pf_rd_m=ATVPDKIKX0DER&amp;pf_rd_s=center-2&amp;pf_rd_r=18KGKN63DF6R4GCHNV7W&amp;pf_rd_t=101&amp;pf_rd_p=470938631&amp;pf_rd_i=507846">Amazon here</a>.<br />
There is another blog for GPU Pro 2 with a call for authors, in case you want to see your name written in golden letters in a book <img src='http://www.confettispecialfx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/gpu-pro/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Hardware Tessellation</title>
		<link>http://www.confettispecialfx.com/hardware-tessellation</link>
		<comments>http://www.confettispecialfx.com/hardware-tessellation#comments</comments>
		<pubDate>Sun, 31 Jan 2010 17:31:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Hardware Tesselation]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=101</guid>
		<description><![CDATA[I was thinking about the advantages of Hardware Tessellation. I can see mainly three: - Compression Reduces on-disk storage, system, video memory usage -&#62;only the coarse mesh is stored Animation data is only stored for the coarse mesh - Memory bandwidth GPU fetches only vertex data of coarse mesh through PCI-E bus -&#62; higher vertex [...]]]></description>
				<content:encoded><![CDATA[<p>I was thinking about the advantages of Hardware Tessellation. I can see mainly three:<br />
- Compression<br />
Reduces on-disk storage, system, video memory usage -&gt;only the coarse mesh is stored<br />
Animation data is only stored for the coarse mesh<br />
- Memory bandwidth<br />
GPU fetches only vertex data of coarse mesh through PCI-E bus -&gt; higher vertex cache and fetch performance<br />
- Scalability<br />
Subdivision is recursive  -&gt; offers auto-LOD with adaptive metrics</p>
<p>With the DirectX 11 implementation it might also reduce the workload of the vertex shader because the shader transforms or animates only the coarse mesh. But if we add up the additional workload of the hull and domain shader it might be a wash.</p>
<p>For console developers, being able to store more world geometry on disc and in memory would be a great advantage. The reduction of the read memory bandwidth -while reading the data from memory- would also increase the efficiency.<br />
The main question is if tessellating the geometry puts such a huge workload on the GPU that it is not feasible. I would love to have some real-world data here &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/hardware-tessellation/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Direct3D 11 Overview</title>
		<link>http://www.confettispecialfx.com/direct3d-11-overview</link>
		<comments>http://www.confettispecialfx.com/direct3d-11-overview#comments</comments>
		<pubDate>Thu, 31 Dec 2009 05:46:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[D3D11]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=100</guid>
		<description><![CDATA[Here is a first draft for the data flow in the DirectX 11 rendering pipeline: And here is the DirectCompute overview: I would consider those now beta.]]></description>
				<content:encoded><![CDATA[<p>Here is a first draft for the data flow in the DirectX 11 rendering pipeline:<br />
<a href="http://4.bp.blogspot.com/_2YU3pmPHKN4/S1KhDSPmotI/AAAAAAAAAcw/d38b4oA_DxM/s1600-h/DX11.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5427577578743833298" style="display: block; margin: 0px auto 10px; text-align: center; cursor: hand; width: 303px; height: 400px;" src="http://4.bp.blogspot.com/_2YU3pmPHKN4/S1KhDSPmotI/AAAAAAAAAcw/d38b4oA_DxM/s400/DX11.JPG" border="0" alt="" /></a><br />
And here is the DirectCompute overview:<br />
<a href="http://1.bp.blogspot.com/_2YU3pmPHKN4/Szw7AyiTTSI/AAAAAAAAAcQ/iAhd7TKPk_Y/s1600-h/DirectComputeCheatSheet.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5421272936198917410" style="display: block; margin: 0px auto 10px; text-align: center; cursor: hand; width: 400px; height: 195px;" src="http://1.bp.blogspot.com/_2YU3pmPHKN4/Szw7AyiTTSI/AAAAAAAAAcQ/iAhd7TKPk_Y/s400/DirectComputeCheatSheet.jpg" border="0" alt="" /></a></p>
<p>I would consider those now beta.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/direct3d-11-overview/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Direct3D 10 Overview</title>
		<link>http://www.confettispecialfx.com/direct3d-10-overview</link>
		<comments>http://www.confettispecialfx.com/direct3d-10-overview#comments</comments>
		<pubDate>Wed, 30 Dec 2009 04:26:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[D3D10]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=99</guid>
		<description><![CDATA[I started working on a Direct3D 10 overview that only covers one page. Here is the latest version. Please note that this overview has nothing to do with the way the hardware works. It is just a diagram that shows the data flow and the usage of the Direct3D 10 API to stream the data [...]]]></description>
				<content:encoded><![CDATA[<p>I started working on a Direct3D 10 overview that only covers one page. Here is the latest version.</p>
<p><a href="http://3.bp.blogspot.com/_2YU3pmPHKN4/Sz_0vqlzrBI/AAAAAAAAAcg/CpDXxOB-r3U/s1600-h/D3D10CheatSheet.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5422321576101260306" style="display: block; margin: 0px auto 10px; text-align: center; cursor: hand; width: 301px; height: 400px;" src="http://3.bp.blogspot.com/_2YU3pmPHKN4/Sz_0vqlzrBI/AAAAAAAAAcg/CpDXxOB-r3U/s400/D3D10CheatSheet.jpg" border="0" alt="" /></a></p>
<p>Please note that this overview has nothing to do with the way the hardware works. It is just a diagram that shows the data flow and the usage of the Direct3D 10 API to stream the data through several logical stages that might be represented in hardware by one unit. If you are interested in the actual hardware design, I would recommend reading</p>
<p><a href="http://graphics.stanford.edu/~kayvonf/papers/fatahalianCACM.pdf">A Closer Look at GPUs</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/direct3d-10-overview/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Links</title>
		<link>http://www.confettispecialfx.com/new-links</link>
		<comments>http://www.confettispecialfx.com/new-links#comments</comments>
		<pubDate>Thu, 24 Dec 2009 18:57:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[General GPU Programming]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=98</guid>
		<description><![CDATA[I updated my list of links on the right side with some of the websites I keep an eye on. I never met Brian Karis but he has a few very forward thinking posts on his blog. The same is true for Pierre Terdiman. He covers many non-graphics related tasks and I believe I read [...]]]></description>
				<content:encoded><![CDATA[<p>I updated my list of links on the right side with some of the websites I keep an eye on.<br />
I never met Brian Karis but he has a few very forward thinking posts on his blog. The same is true for Pierre Terdiman. He covers many non-graphics related tasks and I believe I read his blog and former website since 7 years (?). Aurelio Reis has some cool procedural stuff on his blog. Simon Green worked on some of the coolest stuff that you can find in the NVIDIA SDK. His blog has some interesting entries on how the GPUs nowadays can render CG movie content in real-time while CPUs still need a lot more time to do the same. Then I also added Mike Acton&#8217;s blog. I wonder how I could have forgotten this as often as Mike and I met in the last few months. He is certainly one of the SPU and Multi-core programming authorities in the industry. I especially like his opinion regarding C++ and data-centric design. Lots of people repeated this mantra in the last two years but I heard it from him before.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/new-links/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSE 190 GPU Programming UCSD</title>
		<link>http://www.confettispecialfx.com/cse-190-gpu-programming-ucsd</link>
		<comments>http://www.confettispecialfx.com/cse-190-gpu-programming-ucsd#comments</comments>
		<pubDate>Sun, 29 Nov 2009 19:14:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[General GPU Programming]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=97</guid>
		<description><![CDATA[I am going to teach GPU Programming in the upcoming quarter at UCSD. Look out for course CSE 190. Here is the announcment: Course Objectives: This course will cover techniques on how to implement 3D graphics techniques in an efficient way on the Graphics Processing Unit (GPU). Course Description: This course focuses on algorithms and [...]]]></description>
				<content:encoded><![CDATA[<p>I am going to teach GPU Programming in the upcoming quarter at UCSD. Look out for course CSE 190. Here is the announcment:</p>
<p>Course Objectives:<br />
This course will cover techniques on how to implement 3D graphics<br />
techniques in an efficient way on the Graphics Processing Unit (GPU).</p>
<p>Course Description:<br />
This course focuses on algorithms and approaches for programming a<br />
GPU, including vertex, hull, tesselator, domain, geometry, pixel and<br />
compute shaders. After an introduction into each of the algorithms,<br />
the students will learn step-by-step on how to implement those<br />
algorithms on the GPU. Particular subjects may include geometry<br />
manipulations, lighting, shadowing, real-time global illumination,<br />
image space effects and 3D Engine design.</p>
<p>Example Textbook(s):<br />
A list of reading assignments will be given out each week.</p>
<p>Laboratory work:<br />
Programming assignments.</p>
<p>Very exciting <img src='http://www.confettispecialfx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/cse-190-gpu-programming-ucsd/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Order-Independent Transparency</title>
		<link>http://www.confettispecialfx.com/order-independent-transparency</link>
		<comments>http://www.confettispecialfx.com/order-independent-transparency#comments</comments>
		<pubDate>Sun, 29 Nov 2009 18:42:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Order-Independent Transparency]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=96</guid>
		<description><![CDATA[Transparent objects that require alpha blending cannot be rendered on top in a G-Buffer. Blending two or more normals, depth or position values leads to wrong results. In other words deferred lighting of objects that need to be visible through each other is not easily possible because the data for the object that is visible [...]]]></description>
				<content:encoded><![CDATA[<p>Transparent objects that require alpha blending cannot be rendered on top in a G-Buffer. Blending two or more normals, depth or position values leads to wrong results.<br />
In other words deferred lighting of objects that need to be visible through each other is not easily possible because the data for the object that is visible through another object is lost in a G-Buffer that can only store one layer of data for normals, depth and position.<br />
The traditional way to work around this is to have a separate rendering path that deals with rendering and lighting of transparent objects that need to be alpha blended. In essence that means there is a second lighting system that can be forward rendered and usually has a lower quality than the deferred lights.<br />
This system breaks down as soon as you have light numbers that are higher than a few dozen lights because forward rendering can&#8217;t render so many lights. In that case it would be an advantage to use the same deferred lighting system that is used on opaque objects on transparent objects that would require alpha blending.<br />
The simple case is for example windows where you can look through one window and maybe two more windows behind each other and see what is behind them. For example you look through the window from the outside into a house and then in the house is another glass wall through which you can look and then behind that glass wall is a freshwater tank that is lit &#8230; etc. you got the idea.<br />
This would be the &#8220;light&#8221; case to solve. Much harder are scenarios in which the number of transparent objects that can be behind each other is much higher &#8230; like with particles or a room of transparent T-pots <img src='http://www.confettispecialfx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
<p>On DirectX9 and DirectX 10 class of hardware, one of the solutions that is mentioned to solve the problem of order-independent transparency is called Depth Peeling. It seems this techniques was first described by Abraham Mammen (&#8220;Transparency and antialiasing algorithms Implemented with the virtual pixel maps technique&#8221;, IEEE Computer Graphics and Applications, vol. 9, no. 4, pp. 43-55, July/Aug. 1989) and Paul Diefenbach (&#8220;Pipeline rendering: Interaction and realism through hardware-based multi-pass rendering&#8221;, Ph.D., University of Pennsylvania, 1996, 152 pages)(I don&#8217;t have access to those papers). A description of the implementation was given by Cass Everitt <a href="http://developer.nvidia.com/object/Interactive_Order_Transparency.html">here</a>. The idea is to extract each unique depth in a scene into layers. Those layers are then composited in depth-sorted order to produce the correct blended image.<br />
In other words: the standard depth test gives us the nearest fragment/pixel. The next pass over the scene gives us the second nearest fragment/pixel; the pass after this pass the third nearest fragment/pixel. The passes after the first pass are rendered by using the depth buffer computed in the first pass and &#8220;peel away&#8221; depths values that are less than or equal to the values in that depth buffer. All the values that are not &#8220;peeled away&#8221; are stored in another depth buffer. Pseudo code might look like this:</p>
<p>const float bias 0.0000001;</p>
<p>// peel away pixels from previous layers<br />
// use a small bias to avoid precision issues.<br />
clip(In.pos.z &#8211; PreviousPassDepth &#8211; bias);</p>
<p>By using the depth values from the previous pass for the following pass, multiple layers of depth can be stored. As soon as all the depth layers are generated, for each of the layers the G-Buffer data needs to be generated. This might be the color and normal render targets. In case we want to store three layers of depth, color and normal data also need to be stored for those three depth layers.<br />
Having a scene that has many transparent objects overlay each other, the number of layers increases substantially and therefore the memory consumption.</p>
<p>A more advanced depth peeling technique was named Dual Depth Peeling and described by Louis Bavoil et al. <a href="http://developer.download.nvidia.com/SDK/10.5/opengl/src/dual_depth_peeling/doc/DualDepthPeeling.pdf">here</a>. The main advantage of this technique is that it peels a layer from the front and a layer from the back at the same time. This way four layers can be peeled away in two geometry passes.<br />
On hardware that doesn&#8217;t support independent blending equations in MRTs, the two layers per pass are generated by using MAX blending and writing out each component of a float2(-depth, depth) variable into a dedicated render target that is part of a MRT.</p>
<p>Nicolas Thibieroz describes in &#8220;Robust Order-Independent Transparency via Reverse Depth Peeling in DirectX 10&#8243; in ShaderX6 a technique called Reverse Depth Peeling. While depth peeling extracts layers in a front-to-back order and stores them for later usage, his technique peels the layers in back-to-front order and can blend with the backbuffer immediately. There is no need to store all the layers compared to depth peeling. Especially on console platforms this is a huge advantage.<br />
The order of operations is:</p>
<p>1. Determine furthest layer<br />
2. Fill-up depth buffer texture<br />
3. Fill-up normal and color buffer<br />
4. Do lighting &amp; shadowing<br />
5. Blend in backbuffer<br />
6. Go to 1 for the next layer</p>
<p>Another technique is giving up MSAA and using the samples to store up to eight layers of data. <a href="http://www.sci.utah.edu/~bavoil/research/kbuffer/StencilRoutedABuffer_Sigg07.pdf">Kevin Myers et al.</a> uses in the article &#8220;Stencil Routed A-Buffer&#8221; the stencil buffer to do sub-pixel routing of fragments. This way eight layers can be written in one pass. Because the layers are not ordered by depth they need to be sorted afterwards. The drawbacks are that the algorithm is limited to eight layers, allocates lots of memory (8xMSAA can be depending on the underlying implementation a 8x screen-size render target), requires hardware that supports 8xMSAA and the bitonic sort might be expensive. Giving up MSAA, the &#8220;light&#8221; case described above would be easily possible with this technique with satisfying performance but it won&#8217;t work on scenes where many objects are visible behind several other objects.</p>
<p>Another technique extends Dual Depth Peeling by attaching a sorted bucket list. The article <a href="http://portal.acm.org/citation.cfm?id=1572769.1572779">&#8220;Efficient Depth Peeling via Bucket Sort&#8221;</a> by Fang Liu et al. describes an adaptive scheme that requires two geometry passes to store depth value ranges in a bucket list, sorted with the help of a depth histogram. An implementation will be described in the upcoming book <a href="http://gpupro.blogspot.com/">GPU Pro</a>. The following image from this article shows the required passes.<br />
<a href="http://2.bp.blogspot.com/_2YU3pmPHKN4/SxK9GdW0BLI/AAAAAAAAAbI/iA1wHV5f8Yg/s1600/DualDepthPeelingwithBucketList.PNG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5409594021082563762" style="text-align: center; margin: 0px auto 10px; width: 400px; display: block; height: 274px; cursor: hand;" src="http://2.bp.blogspot.com/_2YU3pmPHKN4/SxK9GdW0BLI/AAAAAAAAAbI/iA1wHV5f8Yg/s400/DualDepthPeelingwithBucketList.PNG" border="0" alt="" /></a><br />
The Initial Pass is similar to Dual Depth Peeling. Similar to other techniques that utilize eight render targets, 32:32:32:32 each, the technique has huge memory requirements.</p>
<p>To my knowledge those are the widely known techniques for order-independent transparency on DirectX 10 today. Do you know of any newer techniques suitable for DirectX 10 or DirectX 11 hardware?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/order-independent-transparency/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>You want to become a Graphics Programmer &#8230;</title>
		<link>http://www.confettispecialfx.com/you-want-to-become-a-graphics-programmer</link>
		<comments>http://www.confettispecialfx.com/you-want-to-become-a-graphics-programmer#comments</comments>
		<pubDate>Sun, 15 Nov 2009 21:30:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[General GPU Programming]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=95</guid>
		<description><![CDATA[I regularly receive e-mails with the question what kind of books I recommend if someone wants to become a graphics programmer. Here is my current list (maybe some of you guys can add to this list?): First of all math is required: - Vector Calculus - Vector Calculus, Linear Algebra, and Differential Forms I have [...]]]></description>
				<content:encoded><![CDATA[<p>I regularly receive e-mails with the question what kind of books I recommend if someone wants to become a graphics programmer. Here is my current list (maybe some of you guys can add to this list?):<br />
First of all math is required:<br />
- <a href="http://www.amazon.com/Vector-Calculus-Jerrold-E-Marsden/dp/0716749920/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1258320777&amp;sr=8-1">Vector Calculus</a><br />
- <a href="http://www.amazon.com/Vector-Calculus-Linear-Algebra-Differential/dp/0971576653/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1258320878&amp;sr=8-2">Vector Calculus, Linear Algebra, and Differential Forms</a> I have the 1999 version of this book<br />
- <a href="http://www.amazon.com/Computer-Graphics-Mathematical-First-Steps/dp/0135995728/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1258321011&amp;sr=1-1">Computer Graphics Mathematical First Steps</a><br />
- <a href="http://www.amazon.com/Mathematics-Computer-Graphics-John-Vince/dp/1846280346/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1258321048&amp;sr=1-2">Mathematics for Computer Graphics</a></p>
<p>For a general knowledge in programming the CPU:<br />
- <a href="http://www.amazon.com/Write-Great-Code-Understanding-Machine/dp/1593270038/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1258321123&amp;sr=1-1">Write Great Code Volume 1: Understanding the Machine</a></p>
<p>For a better knowledge on how to program the GPU:<br />
- <a href="http://msdn.microsoft.com/en-us/directx/default.aspx">DirectX documentation</a><br />
- <a href="http://developer.nvidia.com/object/gpu_programming_guide.html">NVIDIA GPU Programming Guide</a><br />
- <a href="http://developer.amd.com/media/gpu_assets/ATI_Radeon_HD_2000_programming_guide.pdf">ATI GPU Programming Guide</a></p>
<p>To learn about how to program certain effects in an efficient way:<br />
- <a href="http://www.amazon.com/s/ref=nb_ss?url=search-alias%3Dstripbooks&amp;field-keywords=ShaderX&amp;x=0&amp;y=0">ShaderX &#8211; ShaderX7</a><br />
- <a href="http://developer.nvidia.com/page/home.html">GPU Gems &#8211; GPU Gems 3</a><br />
- <a href="http://www.akpeters.com/product.asp?ProdCode=4728">GPU Pro</a> and <a href="http://gpupro.blogspot.com/">GPU Pro Blog</a></p>
<p>To start learning DirectX 10 API + Shader Programming:<br />
- <a href="http://www.amazon.com/Introduction-3D-Game-Programming-DirectX/dp/1598220535/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1258330039&amp;sr=8-1">Introduction to 3D Programming with DirectX 10</a><br />
- <a href="http://wiki.gamedev.net/index.php/D3DBook:Book_Cover">Programming Vertex, Geometry and Pixel Shaders</a></p>
<p>To start learning OpenGL &amp; OpenGL ES:<br />
- <a href="http://www.khronos.org/">Khronos group</a></p>
<p>For general overview:<br />
- <a href="http://www.amazon.com/Real-Time-Rendering-Third-Tomas-Akenine-Moller/dp/1568814240/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1258330141&amp;sr=1-1">Real-Time Rendering</a><br />
- <a href="http://www.amazon.com/Fundamentals-Computer-Graphics-Peter-Shirley/dp/1568814690/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1258330205&amp;sr=1-1">Fundamentals of Computer Graphics (this one also belongs in the math section)</a></p>
<p>To get started with C:<br />
- <a href="http://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1258330464&amp;sr=1-1">C Programming Language</a></p>
<p>To learn C++<br />
- <a href="http://www.amazon.com/C-Game-Programmers-Development/dp/1584504528/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1258331002&amp;sr=8-2">C++ for Game Developers</a><br />
- <a href="http://www.amazon.com/Cookbook-Cookbooks-OReilly-Ryan-Stephens/dp/0596007612/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1258331060&amp;sr=1-1">C++ Cookbook</a><br />
- there is a long list of more advanced C++ books &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/you-want-to-become-a-graphics-programmer/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>River of Lights II</title>
		<link>http://www.confettispecialfx.com/river-of-lights-ii</link>
		<comments>http://www.confettispecialfx.com/river-of-lights-ii#comments</comments>
		<pubDate>Fri, 23 Oct 2009 03:54:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Deferred Lighting]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=94</guid>
		<description><![CDATA[More work-in-progress shots.]]></description>
				<content:encoded><![CDATA[<p>More work-in-progress shots.<br />
<a href="http://3.bp.blogspot.com/_2YU3pmPHKN4/SuEpWKavNQI/AAAAAAAAAbA/gu3QB_tBFwg/s1600-h/ss3.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5395639289296925954" style="display: block; margin: 0px auto 10px; text-align: center; cursor: hand; width: 400px; height: 225px;" src="http://3.bp.blogspot.com/_2YU3pmPHKN4/SuEpWKavNQI/AAAAAAAAAbA/gu3QB_tBFwg/s400/ss3.jpg" border="0" alt="" /></a><br />
<a href="http://1.bp.blogspot.com/_2YU3pmPHKN4/SuEpPzeCskI/AAAAAAAAAa4/YZkM94l808c/s1600-h/ss1.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5395639180057555522" style="display: block; margin: 0px auto 10px; text-align: center; cursor: hand; width: 400px; height: 225px;" src="http://1.bp.blogspot.com/_2YU3pmPHKN4/SuEpPzeCskI/AAAAAAAAAa4/YZkM94l808c/s400/ss1.jpg" border="0" alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/river-of-lights-ii/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>BitMasks / Packing Data into fp Render Targets</title>
		<link>http://www.confettispecialfx.com/bitmasks-packing-data-into-fp-render-targets</link>
		<comments>http://www.confettispecialfx.com/bitmasks-packing-data-into-fp-render-targets#comments</comments>
		<pubDate>Thu, 15 Oct 2009 21:35:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[General GPU Programming]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=93</guid>
		<description><![CDATA[Recently I had the need to pack bit fields into 32-bit channels of a 32:32:32:32 fp render target. First of all we can assume that all registers in the pixel shader operate in 32-bit precision and output data is written into a 32-bit fp render target. The 32-bit (or single-precision) floating point format uses 1 [...]]]></description>
				<content:encoded><![CDATA[<p>Recently I had the need to pack bit fields into 32-bit channels of a 32:32:32:32 fp render target.<br />
First of all we can assume that all registers in the pixel shader operate in 32-bit precision and output data is written into a 32-bit fp render target. The 32-bit (or single-precision) floating point format uses 1 sign, 8-bits of exponent, and 23 bits of mantissa following the IEEE 754 standard.</p>
<div><img id="BLOGGER_PHOTO_ID_5391556586446327314" style="text-align: center; margin: 0px auto 10px; width: 400px; display: block; height: 80px; cursor: hand;" src="http://4.bp.blogspot.com/_2YU3pmPHKN4/StKoJlGNDhI/AAAAAAAAAaw/hv6Ce8TFNps/s400/32-bitIEEE754.jpg" border="0" alt="" /></div>
<p>To maintain maximum precision during floating-point computations, most computations use normalized values. Keeping floating-point numbers normalized is beneficial because it maintains the maximum number of bits of precision in a computation. If several higher-order bits of the mantissa are all zero, the mantissa has that many fewer bits of precision available for computation. Therefore a floating-point computation will be more accurate if it involves only normalized values whose higher-order mantissa bit contains one.</p>
<p>The IEEE 754 32-bit floating-point format specifies special cases in case the bits in the exponent are all set to zeros or ones. If all exponent bits are set, then the number represents either =/- infinity or a NaN (not-a-number), depending on the mantissa value. If all exponent bits are zero, then the number is denormalized and automatically gets flushed to zero as specified in the Direct3D 10 single-precision floating-point specifications (see Nicolas Thibieroz, &#8220;Packing Arbitrary Bit Fields into 16-bit Floating-Point Render Targets in DirectX10&#8243;, ShaderX7).</p>
<p>When packing bit values, those cases need to be avoided.</p>
<div>// Pack three positive normalized numbers between 0.0 and 1.0 into a 32-bit fp</div>
<div>// channel of a render target</div>
<div>float Pack3PNForFP32(float3 channel)</div>
<div>{</div>
<div><span style="white-space: pre;"> </span>// layout of a 32-bit fp register</div>
<div><span style="white-space: pre;"> </span>// SEEEEEEEEMMMMMMMMMMMMMMMMMMMMMMM</div>
<div><span style="white-space: pre;"> </span>// 1 sign bit; 8 bits for the exponent and 23 bits for the mantissa</div>
<div><span style="white-space: pre;"> </span>uint uValue;</div>
<div><span style="white-space: pre;"> </span>// pack x</div>
<div><span style="white-space: pre;"> </span>uValue = ((uint)(channel.x * 65535.0 + 0.5)); // goes from bit 0 to 15</div>
<div><span style="white-space: pre;"> </span></div>
<div><span style="white-space: pre;"> </span>// pack y in EMMMMMMM</div>
<div><span style="white-space: pre;"> </span>uValue |= ((uint)(channel.y * 255.0 + 0.5)) &lt;&lt; 16</p>
<div><span style="white-space: pre;"> </span>// pack z in SEEEEEEE</div>
<div><span style="white-space: pre;"> </span>// the last E will never be 1b because the upper value is 254</div>
<div><span style="white-space: pre;"> </span>// max value is 11111110 == 254</div>
<div><span style="white-space: pre;"> </span>// this prevents the bits of the exponents to become all 1</div>
<div><span style="white-space: pre;"> </span>// range is 1.. 254</div>
<div><span style="white-space: pre;"> </span>// to prevent an exponent that is 0 we add 1.0</div>
<div><span style="white-space: pre;"> </span>uValue |= ((uint)(channel.z * 253.0 + 1.5)) &lt;&lt; 24</p>
<div><span style="white-space: pre;"> </span>return asfloat(uValue);</div>
<div>}</div>
<div>// unpack three positive normalized values from a 32-bit float</div>
</div>
<div>
<div>float3 Unpack3PNFromFP32(float fFloatFromFP32)</div>
<div>{</div>
<div><span style="white-space: pre;"> </span>float a, b, c, d;</div>
<div><span style="white-space: pre;"> </span>uint uValue;</div>
<div><span style="white-space: pre;"> </span></div>
<div><span style="white-space: pre;"> </span>uint uInputFloat = asuint(fFloatFromFP32);</div>
<div><span style="white-space: pre;"> </span></div>
<div><span style="white-space: pre;"> </span>// unpack a</div>
<div><span style="white-space: pre;"> </span>// mask out all the stuff above 16-bit with 0xFFFF</div>
<div><span style="white-space: pre;"> </span>a = ((uInputFloat) &amp; 0xFFFF) / 65535.0;</div>
<div><span style="white-space: pre;"> </span></div>
<div><span style="white-space: pre;"> </span>b = ((uInputFloat &gt;&gt; 16) &amp; 0xFF) / 255.0;</div>
<div><span style="white-space: pre;"> </span></div>
<div><span style="white-space: pre;"> </span>// extract the 1..254 value range and subtract 1</div>
<div><span style="white-space: pre;"> </span>// ending up with 0..253</div>
<div><span style="white-space: pre;"> </span>c = (((uInputFloat &gt;&gt; 24) &amp; 0xFF) &#8211; 1.0) / 253.0;</div>
<div><span style="white-space: pre;"> </span>return float3(a, b, c);</div>
<div>}</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/bitmasks-packing-data-into-fp-render-targets/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>River of Lights</title>
		<link>http://www.confettispecialfx.com/river-of-lights</link>
		<comments>http://www.confettispecialfx.com/river-of-lights#comments</comments>
		<pubDate>Wed, 30 Sep 2009 07:11:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Deferred Lighting]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=92</guid>
		<description><![CDATA[Work in progress shot here. More than 8000 lights attached to particles in this hallway.Resolution is 1280&#215;720 and the GPU still runs with 158 frames per second. The whole level has about 16k lights.]]></description>
				<content:encoded><![CDATA[<p>Work in progress shot here. More than 8000 lights attached to particles in this hallway.<img id="BLOGGER_PHOTO_ID_5387154993014544674" style="text-align: center; margin: 0px auto 10px; width: 400px; display: block; height: 225px; cursor: hand;" src="http://4.bp.blogspot.com/_2YU3pmPHKN4/SsME7HyamSI/AAAAAAAAAao/2NiBlfZshtY/s400/Demo+2009-09-30+00-10-35-11.jpg" border="0" alt="" />Resolution is 1280&#215;720 and the GPU still runs with 158 frames per second. The whole level has about 16k lights.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/river-of-lights/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SIGGRAPH 2009 Impressions: Inferred Lighting</title>
		<link>http://www.confettispecialfx.com/siggraph-2009-impressions-inferred-lighting</link>
		<comments>http://www.confettispecialfx.com/siggraph-2009-impressions-inferred-lighting#comments</comments>
		<pubDate>Tue, 11 Aug 2009 15:14:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[SIGGRAPH]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=91</guid>
		<description><![CDATA[There is a new lighting approach that extends the Light Pre-Pass idea. It is called Inferred Lighting and it was presented by Scott Kircher and Alan Lawrence from Volition. Here is the link http://graphics.cs.uiuc.edu/~kircher/publications.html They assume a Light Pre-pass concept as covered here on this blog with three passes. The geometry pass where they fill [...]]]></description>
				<content:encoded><![CDATA[<p>There is a new lighting approach that extends the Light Pre-Pass idea. It is called Inferred Lighting and it was presented by Scott Kircher and Alan Lawrence from Volition. Here is the link</p>
<p><a href="http://graphics.cs.uiuc.edu/~kircher/publications.html">http://graphics.cs.uiuc.edu/~kircher/publications.html</a></p>
<p>They assume a Light Pre-pass concept as covered here on this blog with three passes. The geometry pass where they fill up the buffer, the lighting pass where light properties are rendered into a light buffer and a material pass in which the whole scene is rendered again, this time re-constructing different materials.<br />
Their approach adds several new techniques to the toolset used to do deferred lighting / Light Pre-Pass.</p>
<p>1. They use a much smaller G-Buffer and Light buffer with a size of 800&#215;540 on the XBOX 360. This way their memory bandwidth usage and pixel shading cost should be greatly reduced.</p>
<p>2. To upscale the final light buffer, they use Discontinuity Sensitive Filtering. During the geometry pass, one 16 bit channel of the DSF buffer is ﬁlled with the linear depth of the pixel, the other 16 bit channel is ﬁlled with an ID value that semi-uniquely identiﬁes continuous regions. The upper 8 bits are an object ID, assigned per-object (renderable instance) in the scene. Since 8 bits only allows 256 unique object IDs, scenes with more than this number of ob-jects will have some objects sharing the same ID.<br />
The lower 8 bits of the channel contain a normal-group ID. This ID is pre-computed and assigned to each face of the mesh. Anywhere the mesh has continuous normals, the ID is also continuous. A normal is continuous across an edge if and only if the two triangles share the same normal at both vertices of the edge.<br />
By comparing normal-group IDs the discontinuity sensitive ﬁlter can detect normal discontinuities without actually having to reconstruct and compare normals. Both the object ID and normal-group ID must exactly match the material pass polygon being rendered before the light buffer sample can be used (depth must also match withinan adjustable threshold).<br />
During the material pass, the pixel shader computes the locations of the four light buffer texels that would normally be accessed if regular bilinear ﬁltering would be used. These four locations are point sampled from the DSF buffer. The depth and ID values retrieved from the DSF buffer are compared against the depth and ID of the object being rendered. The results of this comparison are used to bias the usual bilinear ﬁltering weights so as to discard samples that do not belong to the surface currently rendering. These biased weights are then used in custom bilinear ﬁltering of the light buffer. Since the ﬁlter only uses the light buffer samples that belong to the object being rendered, the resulting lighting gives the illusion of being at full resolution. This same method works even when the framebuffer is multisampled (hardware MSAA), however sub-pixel artifacts can occur, due to the pixel shader only being run once per pixel, rather than once per sample.<br />
The authors report that such sub-pixel artifacts are typically not noticeable.</p>
<p>3. The authors of this paper also implemented a technique that allows to render alpha polygons with the Light Pre-Pass / Deferred lighting. It is based on stippling and the usage of the DSF filtering.<br />
During the geometry pass the alpha polygons are rendered using a stipple pattern, so that their G-Buffer samples are interleaved with opaque polygon samples.<br />
In the material pass the DSF for opaque polygons will automatically reject stippled alpha pixels, and alpha polygons are handled by ﬁnding the four closest light buffer samples in the same stipple pattern, again using DSF to make sure the samples were not overwritten by some other geometry.<br />
Since the stipple pattern is a 2&#215;2 regular pattern, the effect is that the alpha polygon gets lit at half the resolution of opaque objects. Opaque objects covered by one layer of alpha have a slightly reduced lighting resolution (one out of every four samples cannot be used).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/siggraph-2009-impressions-inferred-lighting/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SIGGRAPH 2009</title>
		<link>http://www.confettispecialfx.com/siggraph-2009</link>
		<comments>http://www.confettispecialfx.com/siggraph-2009#comments</comments>
		<pubDate>Tue, 28 Jul 2009 22:20:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[SIGGRAPH]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=90</guid>
		<description><![CDATA[SIGGRAPH is next week and I am still preparing my talk. If you are around please come by and say hi. My talks title is &#8220;Light Pre-Pass Renderer Mark III&#8221; and it is part of the &#8220;Advances in Real-Time Rendering in 3D Graphics and Games&#8221; day on Monday next week: http://www.siggraph.org/s2009/sessions/courses/details/?id=12 I collected all the [...]]]></description>
				<content:encoded><![CDATA[<p>SIGGRAPH is next week and I am still preparing my talk. If you are around please come by and say hi. My talks title is &#8220;Light Pre-Pass Renderer Mark III&#8221; and it is part of the &#8220;Advances in Real-Time Rendering in 3D Graphics and Games&#8221; day on Monday next week:</p>
<p><a href="http://www.siggraph.org/s2009/sessions/courses/details/?id=12">http://www.siggraph.org/s2009/sessions/courses/details/?id=12</a></p>
<p>I collected all the new development in this area, and added a few new things I found out while working on DirectX 10 / 11 implementations and will post a link to the slides here. Especially on the PS3 there is lots of new and interesting development (Judging from the number of games that will ship with this approach I want to believe that it is the most popular way to apply lots of lights in games now). I received a first draft of an article for ShaderX8 / GPU Pro from Steven Tovey about how they implemented the Light Pre-Pass in the upcoming game Blur on the PS3. They based their approach on work done by Matt Swoboda. The results look very cool. You can check out the screenshots on their website.</p>
<p>There is lots of progress happening with the Oolong Engine for the iPhone / iPod Touch. Check out the change list on</p>
<p><a href="http://code.google.com/p/oolongengine">http://code.google.com/p/oolongengine</a></p>
<p>We got OpenGL ES 2.0 running and there is a new tutorial series that looks really cool.</p>
<p>In other news somehow my name was mentioned on &#8220;The Escapist&#8221;. Here is the link for your entertainment:</p>
<p><a href="http://www.escapistmagazine.com/articles/view/columns/publishers-note/6250-Publishers-Note-Made-By-People.2">http://www.escapistmagazine.com/articles/view/columns/publishers-note/6250-Publishers-Note-Made-By-People.2</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/siggraph-2009/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MSAA on the PS3 with Light Pre-Pass on the SPU</title>
		<link>http://www.confettispecialfx.com/msaa-on-the-ps3-with-light-pre-pass-on-the-spu</link>
		<comments>http://www.confettispecialfx.com/msaa-on-the-ps3-with-light-pre-pass-on-the-spu#comments</comments>
		<pubDate>Fri, 03 Jul 2009 14:30:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Deferred Lighting]]></category>
		<category><![CDATA[MSAA]]></category>
		<category><![CDATA[PS3]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=89</guid>
		<description><![CDATA[In the previous &#8220;MSAA on the PS3&#8243; thread Matt Swoboda jumped in and mentioned that they implemented MSAA on the SPU in the Phyre Engine. I knew that they implemented the Light Pre-Pass on the SPU but I completely forgot that they also had a solution to do MSAA on the SPU. You can find [...]]]></description>
				<content:encoded><![CDATA[<p>In the previous &#8220;MSAA on the PS3&#8243; thread Matt Swoboda jumped in and mentioned that they implemented MSAA on the SPU in the Phyre Engine. I knew that they implemented the Light Pre-Pass on the SPU but I completely forgot that they also had a solution to do MSAA on the SPU.<br />
You can find the presentation &#8220;Deferred Lighting and Post Processing on PLAYSTATION®&#8221; <a href="http://www.technology.scee.net/files/presentations/gdc2009/DeferredLightingandPostProcessingonPS3.ppt">here</a>.<br />
Because it is possible to read and write per sample with the SPU, they can achieve a similar functionality as the per-sample frequency of DirectX 10.1-class graphics hardware where each sample can be treated separately. So they can calculate the lighting for each of the sample values and write the results into each of the samples in the light buffer.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/msaa-on-the-ps3-with-light-pre-pass-on-the-spu/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ambient Occlusion in Screen-Space</title>
		<link>http://www.confettispecialfx.com/ambient-occlusion-in-screen-space</link>
		<comments>http://www.confettispecialfx.com/ambient-occlusion-in-screen-space#comments</comments>
		<pubDate>Mon, 29 Jun 2009 22:55:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Global Illumination]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=88</guid>
		<description><![CDATA[Screen-Space Ambient Occlusion (SSAO) is quite popular in the moment. ShaderX7 had several articles and there are lots of approaches to gradually improve the effect. A good way to look at SSAO or any similar approach is to consider it part of a whole pipeline of effects that can share resources and extend the idea [...]]]></description>
				<content:encoded><![CDATA[<p>Screen-Space Ambient Occlusion (SSAO) is quite popular in the moment. ShaderX7 had several articles and there are lots of approaches to gradually improve the effect.<br />
A good way to look at SSAO or any similar approach is to consider it part of a whole pipeline of effects that can share resources and extend the idea to include one diffuse (and specular) indirect bounce of light by re-using resources.<br />
The overall issues with SSAO are:<br />
1. quite expensive for the image quality improvement. Using the astonishing high amount of frame-time for other effects is an intriguing idea. In other words the performance / quality-improvement ratio is not very good compared to e.g. PostFX where a bunch of effects consumes a similar amount of time.<br />
2. a typical problem is that lighting is ignored by SSAO. Using the classical SSAO implementation under varying illumination introduces objectionable artifacts because the ambient term is darkened equally (obviously you can apply SSAO to the diffuse and specular term like a shadow term &#8230; but then it isn&#8217;t ambient anymore). If you have a &#8220;global ambient&#8221; light term like skylights, SSAO will diminish the effect. It also leads to problems with dynamic shadows.</p>
<p>Overall I believe a fundamental shift to more generic method is necessary to solve those issues. This is one of the things I am looking into &#8230; so expect an update at some point in the future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/ambient-occlusion-in-screen-space/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MSAA on the PS3 with Deferred Lighting / Shading / Light Pre-Pass</title>
		<link>http://www.confettispecialfx.com/msaa-on-the-ps3-with-deferred-lighting-shading-light-pre-pass</link>
		<comments>http://www.confettispecialfx.com/msaa-on-the-ps3-with-deferred-lighting-shading-light-pre-pass#comments</comments>
		<pubDate>Wed, 17 Jun 2009 18:42:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Deferred Lighting]]></category>
		<category><![CDATA[Edge Detection]]></category>
		<category><![CDATA[MSAA]]></category>
		<category><![CDATA[PS3]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=87</guid>
		<description><![CDATA[The Killzone 2 team came up with an interesting way to use MSAA on the PS3. You can find it on page 39 of the following slides: http://www.dimension3.sk/mambo/Articles/Deferred-Rendering-In-Killzone/View-category.php What they do is read both samples in the multisampled render target, do the lighting calculations for both of them and then average the result and write [...]]]></description>
				<content:encoded><![CDATA[<p>The Killzone 2 team came up with an interesting way to use MSAA on the PS3. You can find it on page 39 of the following slides:</p>
<p><a onmousedown="'UntrustedLink.bootstrap($(this)," rel="nofollow" href="http://www.dimension3.sk/mambo/Articles/Deferred-Rendering-In-Killzone/View-category.php" target="_blank">http://www.dimension3.sk/mambo/Articles/Deferred-Rendering-In-Killzone/View-category.php</a></p>
<p>What they do is read both samples in the multisampled render target, do the lighting calculations for both of them and then average the result and write it into the multi-sampled (&#8230; I assume it has to be multi-sampled because the depth buffer is multisampled) accumulation buffer. That somehow decreases the effectiveness of MSAA because the pixel averages all samples regardless of whether they actually pass the depth-stencil test. The multisampled accumulation buffer may therefore contain different values per sample when it was supposed to contain a unique value representing the average of all sample. Then on the other side they might only store a value in one of the samples and resolve afterwards &#8230; which would mean the pixel shader runs only once.<br />
This is also called &#8220;on-the-fly resolves&#8221;.</p>
<p>It is better to write into each sample a dedicated value by using the sampling mask but then you run in case of 2xMSAA your pixel shader 2x &#8230; DirectX10.1+ has the ability to run the pixel shader per sample. That doesn&#8217;t mean it fully runs per sample. The MSAA unit seems to replicate the color value accordingly. That&#8217;s faster but not possible on the PS3. I can&#8217;t remember if the XBOX 360 has the ability to run the pixel shader per-sample but this is possible.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/msaa-on-the-ps3-with-deferred-lighting-shading-light-pre-pass/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multisample Anti-Aliasing</title>
		<link>http://www.confettispecialfx.com/multisample-anti-aliasing</link>
		<comments>http://www.confettispecialfx.com/multisample-anti-aliasing#comments</comments>
		<pubDate>Sat, 13 Jun 2009 14:04:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[D3D10]]></category>
		<category><![CDATA[Deferred Lighting]]></category>
		<category><![CDATA[MSAA]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=86</guid>
		<description><![CDATA[Utilizing the Multisample Anti-Aliasing (MSAA) functionality of graphics hardware for deferred lighting can be challenging. Nicolas Thibieroz wrote an excellent article about MSAA published in ShaderX7 with the title &#8220;Deferred Shading with Multisampling Anti-Aliasing in DirectX10&#8243;. The following figure from the ShaderX7 article shows how MSAA works: The pixel represented by a square has two [...]]]></description>
				<content:encoded><![CDATA[<p>Utilizing the Multisample Anti-Aliasing (MSAA) functionality of graphics hardware for deferred lighting can be challenging. Nicolas Thibieroz wrote an excellent article about MSAA published in ShaderX7 with the title &#8220;Deferred Shading with Multisampling Anti-Aliasing in DirectX10&#8243;.<br />
The following figure from the ShaderX7 article shows how MSAA works:</p>
<p><img id="BLOGGER_PHOTO_ID_5346817797673931410" style="text-align: center; margin: 0px auto 10px; width: 400px; display: block; height: 235px; cursor: hand;" src="http://2.bp.blogspot.com/_2YU3pmPHKN4/SjO2dVUXUpI/AAAAAAAAAQ8/4YAuTRjLdfA/s400/FIGURE+2+-+Multisampling+Anti-Aliasing.jpg" border="0" alt="" />The pixel represented by a square has two triangles (blue and yellow) crossing some of its sample points. The black dot represents the pixel sample location (pixel center); this is were the pixel shader is executed. The cross symbol corresponds to the location of the multisamples where the depth tests are performed. Samples passing the depth test receive the output of the pixel shader. Those samples are replicated by the MSAA back-end into a multisampled render target that represents each pixel with -in that case- four samples. That means the render target size for an intended resolution of 1280&#215;720 would be 2560&#215;1440 representing each pixel with four samples but the pixel shader only writes 1280&#215;720 times (assuming there is no overdraw) while the MSAA back-end replicates for each pixel four samples into the multisampled render target.<br />
With deferred lighting there can be several of those multi-sampled render targets as part of a Multiple-Render-Target (MRT). In the so called Geometry stage, data is written into this MRT; therefore called G-Buffer. In case of 4xMSAA each of the render targets of the G-Buffer would be 2560&#215;1440 in size.<br />
In case of Deferred Lighting / Light Pre-Pass the G-Buffer holds normal and depth data. This data can never be resolved because resolving it would lead to incorrect results as shown by Nicolas in his article.<br />
After the Geometry phase comes the Lighting or Shading phase in a Deferred Lighting/Light Pre-Pass/Deferred Shading renderer. In an ideal world you could blit each sample (not pixel) into the multisampled render target -that holds the result of the Shading phase- by reading the G-Buffer sample and performing all the calculations necessary on it.<br />
In other words to achieve the best possible MSAA quality with those renderer designs, lighting equations would need to be applied on a per-sample basis into a multisampled render target and then later resolved.<br />
This is possible with DirectX 10.1 graphics hardware (AMD&#8217;s 10.1 capable cards; didn&#8217;t try if S3 cards that support 10.1 can do this as well) that allows to execute a pixel shader at sample frequency.<br />
To make this a viable option, this operation needs to be restricted to samples that belong to pixel edges. There are two passes necessary to make this work. One pass will use the pixel shader that runs operations performed on samples and in a second pass the pixel shader is run that performs operations per-pixel, which means the result of the pixel shader calculation is output to all samples passing the depth-stencil test.<br />
To restrict the pixel shader that performs operations per-sample, a stencil test is used.<br />
One interesting idea covered in the article is to detect edges with centroid sampling (available already on DirectX9 class graphics hardware). During the G-Buffer phase the vertex shader writes a variable unique to every pixel (e.g. pixel position data) into two outputs, while the associated pixel shader declares two inputs: one without and one with centroid sampling enabled. The pixel shader then compares the centroid-enabled input with the one without it. Differing values mean that samples were only partially covered by the triangle, indicating an edge pixel. A &#8220;centroid value&#8221; of 1.0 is then written out to a selected area of the G-Buffer (previously cleared to 0.0) to indicate that the covered samples belong to an edge pixel. Those values are then averaged while being resolved to find out the value per pixel. If the result is not exactly 0, then the current pixel is an edge pixel. This is shown in the following image from the article.<br />
<a href="http://3.bp.blogspot.com/_2YU3pmPHKN4/SjPLyu0foaI/AAAAAAAAARE/pajXSrth8JA/s1600-h/FIGURE+4+-+Centroid+Sampling.jpg"><img id="BLOGGER_PHOTO_ID_5346841255041016226" style="text-align: center; margin: 0px auto 10px; width: 400px; display: block; height: 294px; cursor: hand;" src="http://3.bp.blogspot.com/_2YU3pmPHKN4/SjPLyu0foaI/AAAAAAAAARE/pajXSrth8JA/s400/FIGURE+4+-+Centroid+Sampling.jpg" border="0" alt="" /></a> On the left the pixel shader input will always be evaluated at the center of the pixel regardless of whether it is covered by the triangle. On the right with centroid sampling, the two rightmost depth samples are covered by the triangle. The comparison of the values in the pixel shader will lead to the result that the samples were only partially covered by the triangle, indicating an edge pixel.<br />
Because DirectX10 capable graphics hardware does not support the pixel shader running at sample frequency, a different solution needs to be developed here.<br />
The best MSAA quality in that case is achieved by running the pixel shader multiple times per pixel, only enabling output to a single sample each pass. This can be achieved by using the OMSetBlendState() API. The results of this method would be identical to the DirectX 10.1 method but obviously due to the increased number of rendering passes and slightly reduced texture cache effectiveness more expensive.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/multisample-anti-aliasing/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Deferred Lighting / Particle System</title>
		<link>http://www.confettispecialfx.com/deferred-lighting-particle-system</link>
		<comments>http://www.confettispecialfx.com/deferred-lighting-particle-system#comments</comments>
		<pubDate>Sat, 23 May 2009 18:39:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Deferred Lighting]]></category>
		<category><![CDATA[Particle System]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=85</guid>
		<description><![CDATA[Here is a shot of a GPU based particle system with lights attached to each particle. I used Emil Persson&#8217;s example Deferred Shading program as a basis to implement a Light Pre-Pass renderer with 4k lights and 4k particles. It runs fairly well on a GeForce 9600 GT here:]]></description>
				<content:encoded><![CDATA[<p>Here is a shot of a GPU based particle system with lights attached to each particle. I used Emil Persson&#8217;s example Deferred Shading program as a basis to implement a Light Pre-Pass renderer with 4k lights and 4k particles. It runs fairly well on a GeForce 9600 GT here:</p>
<p><img id="BLOGGER_PHOTO_ID_5339093769479491602" style="text-align: center; margin: 0px auto 10px; width: 400px; display: block; height: 225px; cursor: hand;" src="http://4.bp.blogspot.com/_2YU3pmPHKN4/ShhFfuBTkBI/AAAAAAAAAQo/n0NNscJ0r-E/s400/Screenshot00.jpg" border="0" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/deferred-lighting-particle-system/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Light Pre-Pass: Knee-Deep</title>
		<link>http://www.confettispecialfx.com/light-pre-pass-knee-deep</link>
		<comments>http://www.confettispecialfx.com/light-pre-pass-knee-deep#comments</comments>
		<pubDate>Mon, 18 May 2009 17:15:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Deferred Lighting]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=84</guid>
		<description><![CDATA[Several companies adopted the Light Pre-Pass idea, modified it or came up with similar ideas: Crytek: they call it Deferred lighting contrary to Deferred shading. The technique is mentioned in the new Cry Engine 3 presentation here Garagegames in their new Torque 3D engine currently in beta. Read the article from Pat Wilson in ShaderX7 [...]]]></description>
				<content:encoded><![CDATA[<p>Several companies adopted the Light Pre-Pass idea, modified it or came up with similar ideas:</p>
<div>
<ul>
<li>Crytek: they call it Deferred lighting contrary to Deferred shading. The technique is mentioned in the new Cry Engine 3 presentation <a href="http://www.crytek.com/technology/presentations/">here</a></li>
<li>Garagegames in their new Torque 3D engine currently in beta. Read the article from Pat Wilson in ShaderX7 and the garagegames website</li>
<li>Insomniac came up with a Pre-lighting approach that is similar to this. See Mark Lee&#8217;s presentation from GDC 2009 <a style="text-decoration: none;" href="http://www.gdconf.com/conference/Tutorial%20Handouts/200_insomniac/gdc09_insomniac_prelighting.pdf">here</a></li>
<li>DICE is using it since a long time already</li>
<li>I believe EA used it in Dead Space <img src='http://www.confettispecialfx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
<li>Carsten Dachsbacher described a similar idea in his article &#8220;Splatting of Indirect Illumination&#8221; <a href="http://www.vis.uni-stuttgart.de/~dachsbcn/download/sii.pdf">here</a> and in ShaderX5</li>
</ul>
<div>One of the interesting areas in this context is the ability to implement a one-bounce global illumination effect with the data in the G-Buffer and the light buffer &#8230;</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/light-pre-pass-knee-deep/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>3D Supershape</title>
		<link>http://www.confettispecialfx.com/3d-supershape</link>
		<comments>http://www.confettispecialfx.com/3d-supershape#comments</comments>
		<pubDate>Fri, 01 May 2009 01:17:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Geometry Manipulations]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=83</guid>
		<description><![CDATA[Over the last few years I was looking into the 3D Supershape formula described by Paul Bourke here and originally developed by Johan Gielis. I love the shape of the objects that are a result of those and therefore I always wanted to use it to create my own demos after I saw the one [...]]]></description>
				<content:encoded><![CDATA[<p>Over the last few years I was looking into the 3D Supershape formula described by Paul Bourke <a href="http://local.wasp.uwa.edu.au/~pbourke/geometry/supershape3d/">here</a> and originally developed by Johan Gielis. I love the shape of the objects that are a result of those and therefore I always wanted to use it to create my own demos after I saw the one from Jetro Lauha (<a href="http://jet.ro/creations">http://jet.ro/creations</a>). Here is my first attempt to generate C source out of the equations:</p>
<div><img id="BLOGGER_PHOTO_ID_5330652904004402626" style="text-align: center; margin: 0px auto 10px; width: 400px; display: block; height: 55px; cursor: hand;" src="http://1.bp.blogspot.com/_2YU3pmPHKN4/SfpIkrwWPcI/AAAAAAAAAQQ/m9U7N630Iz4/s400/equation1.jpg" border="0" alt="" /></div>
<p>Suitable C pseudo code could be:</p>
<p><span style="font-size: small;"><span style="font-family: 'courier new';">float r = pow(pow(fabs(cos(m * o / 4)) / a, n2) + pow(fabs(sin(m * o / 4)) / b, n3), 1 / n1);</span></span></p>
<p>The result of this calculation is in polar coordinates. Please note the difference between the equation and the C code. The equation has a negative power value, the C doesn&#8217;t. To extend this result into 3D, the spherical product of several superformulas is used. For example, the 3D parametric surface is obtained multiplying two superformulas <em>S1</em>and <em>S2</em>. The coordinates are defined by the relations:</p>
<p><a href="http://4.bp.blogspot.com/_2YU3pmPHKN4/SfpMORWidrI/AAAAAAAAAQY/u3Bo-U2bYfc/s1600-h/equation2.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5330656917006218930" style="text-align: center; margin: 0px auto 10px; width: 230px; display: block; height: 118px; cursor: pointer;" src="http://4.bp.blogspot.com/_2YU3pmPHKN4/SfpMORWidrI/AAAAAAAAAQY/u3Bo-U2bYfc/s400/equation2.jpg" border="0" alt="" /></a></p>
<p>The sphere mapping code uses two r values:</p>
<p><span style="font-family: 'courier new';">point-&gt;x = (float)(cosf(t) * cosf(p) / r1 / r2);<br />
point-&gt;y = (float)(sinf(t) * cosf(p) / r1 / r2);<br />
point-&gt;z = (float)(sinf(p) / r2);</span></p>
<div>Because r1 and r2 had a positive power value in the C code above we have to divide by those variables here. Here is a Mathematica render of this code:</div>
<div><a href="http://1.bp.blogspot.com/_2YU3pmPHKN4/SfplihFi-XI/AAAAAAAAAQg/dkDwHkP7Igg/s1600-h/Ship.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5330684752617994610" style="text-align: center; margin: 0px auto 10px; width: 400px; display: block; height: 336px; cursor: pointer;" src="http://1.bp.blogspot.com/_2YU3pmPHKN4/SfplihFi-XI/AAAAAAAAAQg/dkDwHkP7Igg/s400/Ship.jpg" border="0" alt="" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/3d-supershape/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rockstar Games</title>
		<link>http://www.confettispecialfx.com/rockstar-games</link>
		<comments>http://www.confettispecialfx.com/rockstar-games#comments</comments>
		<pubDate>Thu, 30 Apr 2009 01:05:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Rockstar Games]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=82</guid>
		<description><![CDATA[Today GTA IV was launched a year ago and it is my last day where I am employed at Rockstar Games. After fantastic more than four years I felt like I should get a break to go back to some research topics and see my kids growing for a while , so I gave my [...]]]></description>
				<content:encoded><![CDATA[<p>Today GTA IV was launched a year ago and it is my last day where I am employed at Rockstar Games. After fantastic more than four years I felt like I should get a break to go back to some research topics and see my kids growing for a while <img src='http://www.confettispecialfx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> , so I gave my notice two weeks ago.</p>
<div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/rockstar-games/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Beagle Board</title>
		<link>http://www.confettispecialfx.com/beagle-board</link>
		<comments>http://www.confettispecialfx.com/beagle-board#comments</comments>
		<pubDate>Thu, 30 Apr 2009 00:58:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Handheld Development]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=81</guid>
		<description><![CDATA[I got the whole development environment going and wrote a few small little graphics demos for it. All the PowerVR demos I tried ran on it nicely. Very cool! If you are interested in a next-gen mobile development platform I would defitely recommend looking into this athttp://beagleboard.org/ Any further development has now moved to lowest [...]]]></description>
				<content:encoded><![CDATA[<p>I got the whole development environment going and wrote a few small little graphics demos for it. All the PowerVR demos I tried ran on it nicely. Very cool!</p>
<div>If you are interested in a next-gen mobile development platform I would defitely recommend looking into this at<a href="http://beagleboard.org/">http://beagleboard.org/</a></p>
<p>Any further development has now moved to lowest priority &#8230; maybe at some point I will play around more with Angstroem. There is an online image builder</p>
<p><a style="color: #3333cc;" href="http://amethyst.openembedded.net/~koen/narcissus/" target="_blank">http://amethyst.openembedded.net/~koen/narcissus/</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/beagle-board/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BeagleBoard.org Ubuntu 8.04</title>
		<link>http://www.confettispecialfx.com/beagleboard-org-ubuntu-8-04</link>
		<comments>http://www.confettispecialfx.com/beagleboard-org-ubuntu-8-04#comments</comments>
		<pubDate>Tue, 21 Apr 2009 03:51:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Handheld Development]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=80</guid>
		<description><![CDATA[In the last few days I setup a development environment for a BeagleBoard (see beagleboard.org). I wanted to hold the next-gen environment for future phones and the OpenPandora in my hands today. Overall the size of the board is astonishingly small and you can power it with the USB port. The board runs Angstroem -a [...]]]></description>
				<content:encoded><![CDATA[<p>In the last few days I setup a development environment for a BeagleBoard (see beagleboard.org). I wanted to hold the next-gen environment for future phones and the OpenPandora in my hands today. Overall the size of the board is astonishingly small and you can power it with the USB port. The board runs Angstroem -a Linux OS-, it has the OMAP3530 processor on there. It has a dedicated video decode DSP, the PowerVR SGX chipset, a sound chip and a few other things that I haven&#8217;t used so far. You can even plug in a keyboard and a mouse and you have a full-blown computer with 256 MB RAM and 256 MB SDRAM.<br />
To get this going I had to install a Linux OS on one of my PCs; Ubuntu 8.04. To relieve the pain of having to google all the Linux commands again and again I try to write down a few notes for myself here:<br />
- minicom is not installed by default. You have to install it yourself. To do this you have to open up Applications -&gt; Add/Remove and refresh the package list (you need an internet connection for this) and then install the build essentials first and then minicom by typing into a terminal:<br />
<span style="font-family: courier new;">sudo apt-get install build-essential</span><br />
<span style="font-family: courier new;">sudo apt-get install minicom</span><br />
- to look for the RS232 serial device you can use<br />
<span style="font-family: courier new;">dmesg | grep tty</span><br />
I found adding environment variables to the PATH statement different on Ubuntu 8.04. You can set an environment variable by using<br />
<span style="font-family: courier new;">export VARNAME=some_string</span><br />
e.g<br />
<span style="font-family: courier new;">export PATH=$PATH:some/other/path</span><br />
To check if it is set you can use<br />
<span style="font-family: courier new;">echo $PATH</span><br />
For the PLATFORM you set it by typing<br />
<span style="font-family: courier new;">export PLATFORM=LinuxOMAP3</span><br />
you use<br />
<span style="font-family: courier new;">echo $PLATFORM</span><br />
to check if it is correct.<br />
Similar for library pathes you type<br />
<span style="font-family: courier new;">export LIBDIR=$PWD </span><br />
from the directory where the lib files are. To check that this works you can use<br />
<span style="font-family: courier new;">echo $LIBDIR</span><br />
To make all those variable values persistent you can copy those statements at the end of the .bashrc file. Some other things I found convenient were:<br />
<span style="font-family: courier new;"> gksudo gedit</span><br />
start the editor with sudo.<br />
Copying a file from one in another directory can be done by using the cp command like this<br />
<span id="intelliTXT" style="font-family: courier new;"><strong><span style="font-weight: normal;">$ cp -i goulash recipes/hungarian</span><br />
</strong>cp: overwrite recipes/hungarian/goulash (y/n)?</span><br />
You can copy a directory path in the terminal by dragging the file from the file browser into the terminal command line.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/beagleboard-org-ubuntu-8-04/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ShaderX7 on Sale</title>
		<link>http://www.confettispecialfx.com/shaderx7-on-sale</link>
		<comments>http://www.confettispecialfx.com/shaderx7-on-sale#comments</comments>
		<pubDate>Sat, 21 Mar 2009 17:49:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[ShaderX]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=79</guid>
		<description><![CDATA[ShaderX7 has more than 800 pages. I like the following screenshot from Amazon.com: ShaderX8 is already announced. Proposals are due by May 19th, 2009. Please send them to wolf at shaderx.com. An example proposal, writing guidelines and a FAQ can be downloaded from www.shaderx6.com/ShaderX6.zip. The schedule is available on http://www.shaderx8.com/. Thanks to Eric Haines for [...]]]></description>
				<content:encoded><![CDATA[<p>ShaderX7 has more than 800 pages. I like the following screenshot from Amazon.com:<br />
<a href="http://1.bp.blogspot.com/_2YU3pmPHKN4/ScUqOMZlMVI/AAAAAAAAAPs/6HXdzFZwpBw/s1600-h/ShaderX7Amazon.jpg"><img id="BLOGGER_PHOTO_ID_5315701358515794258" style="display: block; margin: 0px auto 10px; width: 400px; cursor: hand; height: 183px; text-align: center;" src="http://1.bp.blogspot.com/_2YU3pmPHKN4/ScUqOMZlMVI/AAAAAAAAAPs/6HXdzFZwpBw/s400/ShaderX7Amazon.jpg" border="0" alt="" /></a> ShaderX8 is already announced. Proposals are due by May 19th, 2009. Please send them to wolf at shaderx.com. An example proposal, writing guidelines and a FAQ can be downloaded from <a href="http://www.shaderx6.com/ShaderX6.zip">www.shaderx6.com/ShaderX6.zip</a>. The schedule is available on <a href="http://www.shaderx8.com/">http://www.shaderx8.com/</a>.</p>
<div>
<p>Thanks to Eric Haines for reminding me to add this to this page <img src='http://www.confettispecialfx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/shaderx7-on-sale/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mathematica</title>
		<link>http://www.confettispecialfx.com/mathematica</link>
		<comments>http://www.confettispecialfx.com/mathematica#comments</comments>
		<pubDate>Thu, 19 Mar 2009 05:37:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Mathematics]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=78</guid>
		<description><![CDATA[I switched from Maple to Mathematica last week. One of my small little projects is to store all the graphics algorithms I liked to visualize in the last few years in one file. A kind of condensed memory of the things I worked on. Here is an example for a simple Depth of Field effect [...]]]></description>
				<content:encoded><![CDATA[<p>I switched from Maple to Mathematica last week. One of my small little projects is to store all the graphics algorithms I liked to visualize in the last few years in one file. A kind of condensed memory of the things I worked on. Here is an example for a simple Depth of Field effect (as already covered in my GDC 2007 talk):</p>
<p><a href="http://3.bp.blogspot.com/_2YU3pmPHKN4/ScHbgxpEuII/AAAAAAAAAPc/o8e7nrhLSwM/s1600-h/GraphicsMathVisualization.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5314770391401805954" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 359px; height: 200px;" src="http://3.bp.blogspot.com/_2YU3pmPHKN4/ScHbgxpEuII/AAAAAAAAAPc/o8e7nrhLSwM/s400/GraphicsMathVisualization.jpg" border="0" alt="" /></a>Distance runs on the axis called Z value. So 0 is close to the camera and 1.0 is far away. You can see how the near and far blur plane fade in and out with increasing of the value called Range. The equation to plot this in mathematica is rather simple. In practice it is a quite efficient approach to achieve the effect.</p>
<p><span style="font-family: courier new; font-size: 85%;">Plot3D[R*Abs[0.5 - z], {z, 1, 0}, {R, 0, 1}, </span><span style="font-size: 85%;"><br />
</span><span style="font-family: courier new; font-size: 85%;">PlotStyle -&gt; Directive[Pink, Specularity[White, 50], Opacity[0.8]], </span><span style="font-size: 85%;"><br />
</span><span style="font-family: courier new; font-size: 85%;">PlotLabel -&gt; &#8220;Depth of Field&#8221;, AxesLabel -&gt; {&#8220;Z value&#8221;, &#8220;Range&#8221;}]</span></p>
<p>My plan is to develop a few new algorithms and show the results here. It will be an exercise in thinking about new things for me. If you have any suggestions on what I should cover, please do not hesitate to post them in the comment line.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/mathematica/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Team Leadership in the Game Industry</title>
		<link>http://www.confettispecialfx.com/team-leadership-in-the-game-industry</link>
		<comments>http://www.confettispecialfx.com/team-leadership-in-the-game-industry#comments</comments>
		<pubDate>Mon, 23 Feb 2009 00:09:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Leadership]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=77</guid>
		<description><![CDATA[A few of my friends contributed to the book &#8220;Team Leadership in the Game Industry&#8221; by Seth Spaulding II. So I was curious what you can write about leaders in this industry. Having spent most of my professional life outside of the game industry I believe I developed a different frame of reference than many [...]]]></description>
				<content:encoded><![CDATA[<p>A few of my friends contributed to the book &#8220;Team Leadership in the Game Industry&#8221; by Seth Spaulding II. So I was curious what you can write about leaders in this industry. Having spent most of my professional life outside of the game industry I believe I developed a different frame of reference than many of my colleagues.</p>
<p>First of all: the book is great and definitely worth a read. It is written in a very informative, instructive and entertaining way (&#8230; if you know the guys that contributed to it you know that it is worth it <img src='http://www.confettispecialfx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ).</p>
<p>With that being said, let&#8217;s start with the review by looking at the Table of Content. I know that I usually spent more time than other people with reading the TOC. This is the best way for me to figure out what a book has to offer. A good TOC shows you the big picture of a book and allows you to see the pattern that the author chose on how to approach the topic. In most cases it even allows you to proof the underlying logic.<br />
The book consists of 9 chapters. Each chapter consists of a analysis of facts by the author followed by an interview of a game industry veteran. The topics span from &#8220;How We got here&#8221; over &#8220;Anatomy of a Game-Dev Company&#8221;, &#8220;How Leaders are Chosen &#8230;&#8221;, &#8220;A Litmus Test for Leads&#8221;, &#8220;Leadership Types and Traits &#8230;&#8221; and then they go into more detail with the &#8220;The Project Team Leader &#8230;&#8221;, &#8220;The Department Leader &#8230;&#8221;, &#8220;Difficult Employees &#8230;&#8221;, &#8220;The Effect of Great Team Leadership&#8221; followed by a &#8220;Sample Skill Ladder&#8221; for artists in the appendix.</p>
<p>You might feel the need to discuss some of the details covered in each chapter but it is clear that this is the right formal approach to slice up the delicate topic of leadership in our industry.</p>
<p>When I first skipped through the book I wanted to figure out what kind of values the author has. After all a good leader makes it clear what kind of values he/she follows. I found it in the introduction. Here is the quote: &#8220;As will be seen, a major cause of people leaving a company is the perceived poor quality of their supervisors and senior management. The game business is a talent-based industry -the stronger and deeper your talent is, the better chances are of creating a great game. It is very difficult, in any hiring environment, to build the right mix of cross-disciplinary talent who function as a team at a high level; indeed, most companies never manage it. Once you get talented individuals on board, it&#8217;s critical not to lose them. Finding and nurturing compentent leaders who have the trust of the team will generate more retention than any addition of pool tables, movie nights, or verbal commitments to the value of &#8220;quality of life&#8221;.&#8221;<br />
You might think this is the most obvious thing to say in the game industry.</p>
<p>Obviously the book wants to cover the process to setup a creative and great environment for all humans involved in the process of creating great games. Creating a great working environment starts with picking the right leaders that enable people by helping them to give their best. A great leader serves his/her people. He/she sees the best in everyone and has the ability to expose this talent. Many interviewees in the book also mention that humor is a leadership skill. I trained junior managers for BMW, Daimler, ABB and other companies back in Germany for two years on weekends and I always thought this is a strong skill. Making people laugh starts a lot of processes in the body that make people more relaxed and in general brighten up their day. Whoever can do this can certainly improve the morale and therefore efficiency of a team in seconds &#8230; priceless.</p>
<p>Managing a creative team is a completely different story than -for example- a sales team. The human factor in the relationship between people plays an important role. They have to create something together, while a sales person is on his own out in the field and comes back with a number and relies on a relationship with a potential customer that only lasts a few hours face-to-face time, a creative team stays together for years and has to overcome all the things that come up when humans have to live in a small space together. There is a complex social network in place that defines the relationships between those humans and it is important to keep the team running with all the constantly changing love/hate -and in-between- relationships on board. People on the team might even deal with difficult personal relationships and you end up with a mixture of chaos and randomness typical for family or close friends scenarios. In that context it was interesting to see what the interviewees thought about the question if leaders are born and / or can be trained to be successful in the game industry. Obviously someone who was active as a boy-scout leader, speaker/president of the students association at his university or volunteered to work with other people in general, already showed some level of social committment that is a good starting point for a leader ship role in our industry.</p>
<p>So defining and following the right values is a fundamental requirement for a book on leadership. Obviously after having set the values comes the part where those values need to be applied and used and this is where the book shines. It is hands-down and even if you do not agree with the author in every detail the fact that he wrote all this down earns the highest respect.</p>
<p>So now that I made it obvious that I am excited about this book, let&#8217;s think about how it might be improved in the future. A potential improvement I could see is to start the book with a target description. Not that the author fails to describe a target but I would appreciate it to go into more detail in this area.<br />
What is the company you would want to work for? What is the environment you want to offer to make people as productive as possible? Obviously it is a hen / egg problem. Good people want to work in good teams and good teams consist of good people &#8230; there are social -soft skills- and knowledge -hard skills- attached to each person of that team.<br />
A good team starts with a good leader who sets values and standards and hires the right people.</p>
<p>Assuming you are the leader of this future team, how would you create the environment for your dream team? How do you want people to feel when they are part of this team? What should they take home every night when they are exhausted? What do you want them to tell their wifes / better halves how it is to work with you as their leader?<br />
A happy employee -fully enforced to be creative <img src='http://www.confettispecialfx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  &#8211; should tell his wife/girlfriend that he works very hard but is treated fair and enjoys the family related benefits of the company.<br />
He should tell his friends that he is working in a team where information is shared and where his potential is not only used as much as possible but also amplified. He needs to feel like he is growing with the team and the tasks.<br />
He should tell his colleagues that he enjoys working with them and the team and that he enjoys coming into work every day and that he is excited about the project he is working on &#8230;</p>
<p>So if we make that into a list of items we could describe how an employee should feel about working in a company with good Leaders. Might be a great starting point for discussing leader core abilities.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/team-leadership-in-the-game-industry/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Larrabee on GDC</title>
		<link>http://www.confettispecialfx.com/larrabee-on-gdc</link>
		<comments>http://www.confettispecialfx.com/larrabee-on-gdc#comments</comments>
		<pubDate>Tue, 03 Feb 2009 01:53:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[General GPU Programming]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=76</guid>
		<description><![CDATA[I am really looking forward to Mike Abrash&#8217;s and Tom Forsyth&#8217;s talks at GDC about Larrabee: http://software.intel.com/en-us/articles/intel-at-gdc/ Talking about the Larrabee instruction set will be super cool &#8230; can&#8217;t wait to see this.]]></description>
				<content:encoded><![CDATA[<p>I am really looking forward to Mike Abrash&#8217;s and Tom Forsyth&#8217;s talks at GDC about Larrabee:</p>
<div><a href="http://software.intel.com/en-us/articles/intel-at-gdc/">http://software.intel.com/en-us/articles/intel-at-gdc/</a></div>
<div>Talking about the Larrabee instruction set will be super cool &#8230; can&#8217;t wait to see this.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/larrabee-on-gdc/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ShaderX7 Update</title>
		<link>http://www.confettispecialfx.com/shaderx7-update</link>
		<comments>http://www.confettispecialfx.com/shaderx7-update#comments</comments>
		<pubDate>Mon, 02 Feb 2009 03:55:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[ShaderX]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=75</guid>
		<description><![CDATA[I updated the ShaderX7 website at http://www.shaderx7.com/ There is now the first draft of the cover and the Table of Content. Enjoy! As before I will rest for a second when the new book comes out and think about what happened since I founded the series now eight years ago &#8230; my perception of time [...]]]></description>
				<content:encoded><![CDATA[<p>I updated the ShaderX7 website at</p>
<p><a href="http://www.shaderx7.com/">http://www.shaderx7.com/</a></p>
<p>There is now the first draft of the cover and the Table of Content. Enjoy! <img src='http://www.confettispecialfx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>As before I will rest for a second when the new book comes out and think about what happened since I founded the series now eight years ago &#8230; my perception of time slows down for this second <img src='http://www.confettispecialfx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  and I hear myself saying:&#8221;Chewbacca start the hyperdrive, let&#8217;s go to the next planet, I need to play cards, drink alcohol and find some entertainment &#8230; how about Tantoine?&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/shaderx7-update/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iP* programming tip #9</title>
		<link>http://www.confettispecialfx.com/ip-programming-tip-9</link>
		<comments>http://www.confettispecialfx.com/ip-programming-tip-9#comments</comments>
		<pubDate>Sun, 25 Jan 2009 18:48:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[iPhone iPod Touch iPad Programming]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=74</guid>
		<description><![CDATA[This issue of the iPhone / iPod Touch programmig tips series focuses on some aspects of VFP assembly programming. My friend Noel Llopis brought an oversight in the VFP math library to my attention, that I still need to fix. So I start with the description of the problem here and promise to fix it [...]]]></description>
				<content:encoded><![CDATA[<p>This issue of the iPhone / iPod Touch programmig tips series focuses on some aspects of VFP assembly programming. My friend Noel Llopis brought an oversight in the VFP math library to my attention, that I still need to fix. So I start with the description of the problem here and promise to fix it soon in the VFP library <img src='http://www.confettispecialfx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
First let&#8217;s start with the references. My friend Aaron Leiby has a blog entry on how to start programming the VFP unit here:</p>
<div><a href="http://aleiby.blogspot.com/2008/12/iphone-vfp-for-n00bs.html"><br />
</a></div>
<div><a href="http://aleiby.blogspot.com/2008/12/iphone-vfp-for-n00bs.html">http://aleiby.blogspot.com/2008/12/iphone-vfp-for-n00bs.html</a></div>
<div>A typical inline assembly template might look like this:</p>
<pre>asm ( assembler template         : output operands                  /* optional */         : input operands                   /* optional */         : list of clobbered registers      /* optional */         );</pre>
<p>The last two lines of code hold the input and output operands and the so called clobbers, that are used to inform the compiler on which registers are used.<br />
Here is a simple GCC assembly example -that doesn&#8217;t use VFP assembly- that shows how the input and output operands are specified:</p>
<p><span style="font-family: courier new;">asm(&#8220;mov %0, %1, ror #1&#8243; : &#8220;=r&#8221; (result) &#8221; : &#8220;r&#8221; (value));</span></p>
<p>The idea is that &#8220;=r&#8221; holds the result and &#8220;r&#8221; is the input. %0 refers to &#8220;=r&#8221; and %1 refers to &#8220;r&#8221;.<br />
Each operand is referenced by numbers. The first output operand is numbered 0, continuing in increasing order. There is a max number of operands &#8230; I don&#8217;t know what the max number is for the iPhone platform.</p>
<p>Some instructions clobber some hardware registers. We have to list those  registers in the clobber-list, ie the field after the third ’<strong>:</strong>’ in the  asm function. So GCC will not assume that the values it loads into these  registers will be valid.<br />
In other words a clobber list tells the compiler which registers were used but not passed as operands. If a register is used as a scratch register this register need to be mentioned in there. Here is an example:</p>
<pre class="coding">asm volatile("ands    r3, %1, #3"     "\n\t"          "eor     %0, %0, r3"     "\n\t"          "addne   %0, #4"                : "=r" (len)                  : "0" (len)                   : "cc", "r3"         );</pre>
<p>r3 is used as a scratch register here. It seems the cc pseudo register tells the compiler about the clobber list. If the asm code changes memory the &#8220;memory&#8221; pseudo register informs the compiler about this.</p>
<pre class="coding">asm volatile("ldr     %0, [%1]"         "\n\t"           "str     %2, [%1, #4]"     "\n\t"           : "=&amp;r" (rdv)           : "r" (&amp;table), "r" (wdv)           : "memory"          );</pre>
<p>This special clobber informs the compiler that the assembler code may                   modify any memory location. Btw. the volatile attribute instructs the compiler not to optimize your assembler code.</p>
<p>If you want to add something to this tip &#8230; please do not hesitate to write it in the comment line. I will add it then with your name.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/ip-programming-tip-9/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Partial Derivative Normal Maps</title>
		<link>http://www.confettispecialfx.com/partial-derivative-normal-maps</link>
		<comments>http://www.confettispecialfx.com/partial-derivative-normal-maps#comments</comments>
		<pubDate>Sat, 10 Jan 2009 01:24:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[General GPU Programming]]></category>
		<category><![CDATA[Mathematics]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=73</guid>
		<description><![CDATA[To make my collection of normal map techniques more complete on this blog I also have to mention a special normal mapping technique that Insomniac&#8217;s Mike Acton brought to my attention a long time ago (I wasn&#8217;t sure if I am allowed to publish it &#8230; but now they have slides on their website). The [...]]]></description>
				<content:encoded><![CDATA[<p>To make my collection of normal map techniques more complete on this blog I also have to mention a special normal mapping technique that Insomniac&#8217;s Mike Acton brought to my attention a long time ago (I wasn&#8217;t sure if I am allowed to publish it &#8230; but now they have slides on their website).</p>
<div>The idea is to store the paritial derivate of the normal in two channels of the map like this</div>
<div>
<div><span style="font-family: 'courier new';">dx = (-nx/nz);<br />
</span></div>
<div><span style="font-family: 'courier new';">dy = (-ny/nz);</span></div>
<div>Then you can reconstruct the normal like this:</div>
<div><span style="font-family: 'courier new';">nx = -dx;<br />
</span></div>
<div><span style="font-family: 'courier new';">ny = -dy;</span></div>
<div><span style="font-family: 'courier new';">nz = 1;</span></div>
<div><span style="font-family: 'courier new';">normalize(n);</span></div>
<div>The advantage is that you do not have to reconstruct Z, so you can skip one instruction in each pixel shader that uses normal maps.</div>
<div>This is especially cool on the PS3 while on the XBOX 360 you can also create a custom texture format to let the texture fetch unit do the scale and bias and save a cycle there.</div>
<div>More details can be found at</div>
<div><a href="http://www.insomniacgames.com/tech/articles/1108/files/Ratchet_and_Clank_WWS_Debrief_Feb_08.pdf">http://www.insomniacgames.com/tech/articles/1108/files/Ratchet_and_Clank_WWS_Debrief_Feb_08.pdf</a></div>
<div>Look for Partial Derivative Normal Maps.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/partial-derivative-normal-maps/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Handling Scene Geometry</title>
		<link>http://www.confettispecialfx.com/handling-scene-geometry</link>
		<comments>http://www.confettispecialfx.com/handling-scene-geometry#comments</comments>
		<pubDate>Sun, 04 Jan 2009 18:45:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Geometry Manipulations]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=72</guid>
		<description><![CDATA[I recently bumped into a post by Roderic Vicaire on the www.gamedev.net forums. It is here. Obviously there is no generic solution to handle all scene geometry in the same way but depending on the game his naming conventions make a lot of sense (read &#8220;Scenegraphs say no&#8221; in Tom Forsyth&#8217;s blog). - SpatialGraph: used [...]]]></description>
				<content:encoded><![CDATA[<p>I recently bumped into a post by Roderic Vicaire on the www.gamedev.net forums. It is h<a href="http://www.gamedev.net/community/forums/topic.asp?topic_id=515082&amp;whichpage=1&amp;#3351070">ere.</a><br />
Obviously there is no generic solution to handle all scene geometry in the same way but depending on the game his naming conventions make a lot of sense (read &#8220;Scenegraphs say no&#8221; in Tom Forsyth&#8217;s <a href="http://home.comcast.net/~tom_forsyth/blog.wiki.html#%5B%5BScene%20Graphs%20-%20just%20say%20no%5D%5D">blog</a>).<br />
- SpatialGraph: used for finding out what is visible and should be drawn. Should make culling fast<br />
- SceneTree: used for hierarchical animations, e.g. skeletal animation or a sword held in a character&#8217;s hand<br />
- RenderQueue: is filled by the SpatialGraph. Renders visible stuff fast. It sorts sub arrays per key, each key holding data such as depth, shaderID etc. (see Christer Ericson&#8217;s blog entry &#8220;Sort based-draw call bucketing&#8221; for <a href="http://realtimecollisiondetection.net/blog/?p=86">this</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/handling-scene-geometry/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Major Oolong Update</title>
		<link>http://www.confettispecialfx.com/major-oolong-update</link>
		<comments>http://www.confettispecialfx.com/major-oolong-update#comments</comments>
		<pubDate>Mon, 29 Dec 2008 04:01:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[iPhone iPod Touch iPad Programming]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=71</guid>
		<description><![CDATA[Two days ago I commited a major Oolong update. Please check out the Oolong Engine blog at http://www.oolongengine.com I updated the memory manager, the math library, upgraded to the latest POWERVR POD format and added to each example VBO support. Please also note that in previous updates a new memory manager was added, the VFP [...]]]></description>
				<content:encoded><![CDATA[<p>Two days ago I commited a major Oolong update. Please check out the Oolong Engine blog at</p>
<p><a href="http://www.oolongengine.com/">http://www.oolongengine.com</a></p>
<p>I updated the memory manager, the math library, upgraded to the latest POWERVR POD format and added to each example VBO support. Please also note that in previous updates a new memory manager was added, the VFP math library was added and a bunch of smaller changes were done as well.<br />
The things on my list are: looking into the sound manager &#8230; it seems like the current version allocates memory in the frame and adding the DOOM III level format as a game format. Obviously zip support would be nice as well &#8230; let&#8217;s see how far I get.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/major-oolong-update/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programming Vertex, Geometry and Pixel Shaders</title>
		<link>http://www.confettispecialfx.com/programming-vertex-geometry-and-pixel-shaders</link>
		<comments>http://www.confettispecialfx.com/programming-vertex-geometry-and-pixel-shaders#comments</comments>
		<pubDate>Thu, 25 Dec 2008 15:38:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[General GPU Programming]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=70</guid>
		<description><![CDATA[A christmas present: we just went public with &#8220;Programming Vertex, Geometry and Pixel Shaders&#8221;. I am a co-author of this book and we published it free on www.gamedev.net at http://wiki.gamedev.net/index.php/D3DBook:Book_Cover If you have any suggestions, comments or additions to this book, please give me a sign or write it into the book comment pages.]]></description>
				<content:encoded><![CDATA[<p>A christmas present: we just went public with &#8220;Programming Vertex, Geometry and Pixel Shaders&#8221;. I am a co-author of this book and we published it free on www.gamedev.net at</p>
<p><a href="http://wiki.gamedev.net/index.php/D3DBook:Book_Cover">http://wiki.gamedev.net/index.php/D3DBook:Book_Cover</a></p>
<p>If you have any suggestions, comments or additions to this book, please give me a sign or write it into the book comment pages.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/programming-vertex-geometry-and-pixel-shaders/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Good Middleware</title>
		<link>http://www.confettispecialfx.com/good-middleware</link>
		<comments>http://www.confettispecialfx.com/good-middleware#comments</comments>
		<pubDate>Wed, 24 Dec 2008 18:45:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[General GPU Programming]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=69</guid>
		<description><![CDATA[Kyle Wilson wrote up a summary about how good middleware should be: http://gamearchitect.net/2008/09/19/good-middleware/ An interesting read.]]></description>
				<content:encoded><![CDATA[<div>Kyle Wilson wrote up a summary about how good middleware should be:</div>
<p><a href="http://gamearchitect.net/2008/09/19/good-middleware/">http://gamearchitect.net/2008/09/19/good-middleware/</a></p>
<div>An interesting read.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/good-middleware/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quake III Arena for the iPhone</title>
		<link>http://www.confettispecialfx.com/quake-iii-arena-for-the-iphone</link>
		<comments>http://www.confettispecialfx.com/quake-iii-arena-for-the-iphone#comments</comments>
		<pubDate>Wed, 24 Dec 2008 07:33:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[iPhone iPod Touch iPad Programming]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=68</guid>
		<description><![CDATA[Just realized that one of the projects I contributed some code to went public in the meantime. You can get the source code at http://code.google.com/p/quake3-iphone/ There is a list of issues. If you have more spare time than me, maybe you can help out.]]></description>
				<content:encoded><![CDATA[<p>Just realized that one of the projects I contributed some code to went public in the meantime. You can get the source code at</p>
<p><a href="http://code.google.com/p/quake3-iphone/">http://code.google.com/p/quake3-iphone/</a></p>
<p>There is a list of issues. If you have more spare time than me, maybe you can help out.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/quake-iii-arena-for-the-iphone/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iP* programming tip #8</title>
		<link>http://www.confettispecialfx.com/ip-programming-tip-8</link>
		<comments>http://www.confettispecialfx.com/ip-programming-tip-8#comments</comments>
		<pubDate>Tue, 23 Dec 2008 19:45:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[iPhone iPod Touch iPad Programming]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=67</guid>
		<description><![CDATA[This is the christmas issue of the iPhone / iPod touch programming tips. This time we deal with the touch interface. The main challenge I found with the touch screen support is that it is hard to use it to track for example forward / backward / left / right and fire at the same [...]]]></description>
				<content:encoded><![CDATA[<p>This is the christmas issue of the iPhone / iPod touch programming tips. This time we deal with the touch interface. The main challenge I found with the touch screen support is that it is hard to use it to track for example forward / backward / left / right and fire at the same time. Let&#8217;s say the user presses fire and then he presses forward, what happens when he accidentally slides his finger a bit?<br />
The problem is that each event is defined by the region it happens on the screen. When the user  slides his finger, he is leaving this region. In other words if you handle on-screen touches as touch is on and finger lifted is off, if the finger is moved away and then lifted, the event is still on.<br />
The work around is that if the user slides away with his finger the previous location of this finger is used to check if the current location is in the even region. If it is not, it defaults to switch off.<br />
Touch-screen support for a typical shooter might work like this:<br />
In touchesBegan, touchesMoved and touchesEnd there is a function call like this:</p>
<p><span style="font-family: courier new;"> // Enumerates through all touch objects</span><br />
<span style="font-family: courier new;"> for (UITouch *touch in touches)</span><br />
<span style="font-family: courier new;"> {</span><br />
<span style="font-family: courier new;"> [self _handleTouch:touch];</span><br />
<span style="font-family: courier new;"> touchCount++;</span><br />
<span style="font-family: courier new;"> }</span></p>
<p>_handleTouch might look like this:</p>
<p><span style="font-family: courier new;">- (void)_handleTouch:(UITouch *)touch</span><br />
<span style="font-family: courier new;">{</span><br />
<span style="font-family: courier new;"> CGPoint location = [touch locationInView:self];</span><br />
<span style="font-family: courier new;"> CGPoint previousLocation;</span></p>
<p><span style="font-family: courier new;"> // if we are in a touchMoved phase use the previous location but then check if the current</span><br />
<span style="font-family: courier new;"> // location is still in there</span><br />
<span style="font-family: courier new;"> if (touch.phase == UITouchPhaseMoved)</span><br />
<span style="font-family: courier new;"> previousLocation = [touch previousLocationInView:self];</span><br />
<span style="font-family: courier new;"> else</span><br />
<span style="font-family: courier new;"> previousLocation = location;</span></p>
<p><span style="font-family: courier new;">&#8230;</span><br />
<span style="font-family: courier new;"> // fire event</span><br />
<span style="font-family: courier new;"> // lower right corner .. box is 40 x 40</span><br />
<span style="font-family: courier new;"> if (EVENTREGIONFIRE(previousLocation))</span><br />
<span style="font-family: courier new;"> {</span><br />
<span style="font-family: courier new;"> if (touch.phase == UITouchPhaseBegan)</span><br />
<span style="font-family: courier new;"> {</span><br />
<span style="font-family: courier new;"> // only trigger once</span><br />
<span style="font-family: courier new;"> if (_bitMask ^ Q3Event_Fire)</span><br />
<span style="font-family: courier new;"> {</span><br />
<span style="font-family: courier new;"> [self _queueEventWithType:Q3Event_Fire value1:K_MOUSE1 value2:1];</span></p>
<p><span style="font-family: courier new;"> _bitMask|= Q3Event_Fire;</span><br />
<span style="font-family: courier new;"> }</span><br />
<span style="font-family: courier new;"> }</span><br />
<span style="font-family: courier new;"> else if (touch.phase == UITouchPhaseEnded)</span><br />
<span style="font-family: courier new;"> {</span><br />
<span style="font-family: courier new;"> if (_bitMask &amp; Q3Event_Fire)</span><br />
<span style="font-family: courier new;"> {</span><br />
<span style="font-family: courier new;"> [self _queueEventWithType:Q3Event_Fire value1:K_MOUSE1 value2:0];</span></p>
<p><span style="font-family: courier new;"> _bitMask^= Q3Event_Fire;</span><br />
<span style="font-family: courier new;"> }</span><br />
<span style="font-family: courier new;"> }</span><br />
<span style="font-family: courier new;"> else if (touch.phase == UITouchPhaseMoved)</span><br />
<span style="font-family: courier new;"> {</span><br />
<span style="font-family: courier new;"> if (!(EVENTREGIONFIRE(location)))</span><br />
<span style="font-family: courier new;"> {</span><br />
<span style="font-family: courier new;"> if (_bitMask &amp; Q3Event_Fire)</span><br />
<span style="font-family: courier new;"> {</span><br />
<span style="font-family: courier new;"> [self _queueEventWithType:Q3Event_Fire value1:K_MOUSE1 value2:0];</span></p>
<p><span style="font-family: courier new;"> _bitMask^= Q3Event_Fire;</span><br />
<span style="font-family: courier new;"> }</span><br />
<span style="font-family: courier new;"> }</span><br />
<span style="font-family: courier new;"> }</span><br />
<span style="font-family: courier new;"> }</span><br />
<span style="font-family: courier new;">&#8230;</span></p>
<p><span style="font-family: arial;">Tracking if the switch is on or off can be done with a bit mask. The event is send off to the game with a separate _queueEventWithType method.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/ip-programming-tip-8/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iP* programming tip #7</title>
		<link>http://www.confettispecialfx.com/ip-programming-tip-7</link>
		<comments>http://www.confettispecialfx.com/ip-programming-tip-7#comments</comments>
		<pubDate>Mon, 15 Dec 2008 02:50:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[iPhone iPod Touch iPad Programming]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=66</guid>
		<description><![CDATA[This time I will cover Point Sprites in the iPhone / iPod touch programming tip. The idea is that a set of points -as the simplest primitive in OpenGL ES rendering- describes the positions of Point Sprites, and their appearance comes from the current texture map. This way, Point Sprites are screen-aligned sprites that offer [...]]]></description>
				<content:encoded><![CDATA[<p>This time I will cover Point Sprites in the iPhone / iPod touch programming tip. The idea is that a set of points -as the simplest primitive in OpenGL ES rendering- describes the positions of Point Sprites, and their appearance comes from the current texture map. This way, Point Sprites are screen-aligned sprites that offer a reduced geometry footprint and transform cost because they are represented by one point == vertex. This is useful for particle systems, lens flare, light glow and other 2-D effects.</p>
<ul>
<li>glEnable(GL_POINT_SPRITES_OES) &#8211; this is the global switch that turns point sprites on. Once enabled, all points will be drawn as point sprites.</li>
<li>glTexEnvi(GL_POINT_SPRITES_OES,  GL_COORD_REPLACE_OES, GL_TRUE) &#8211; this enables  [0..1] texture coordinate generation for the four corners of the point sprite. It can be set per-texture unit.  If disabled, all corners of the quad have the same texture coordinate.</li>
<li>glPointParametervf(GLenum pname, const GLfloat * params) &#8211; this is used to set the point attenuation as described below.</li>
</ul>
<p>The point size of a point sprite can be derived with the formula:<br />
<a href="http://4.bp.blogspot.com/_2YU3pmPHKN4/SUXapAE8YII/AAAAAAAAAPI/kyEKyqrMVuU/s1600-h/DerivedPointSize.gif" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5279866536092000386" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 323px; height: 41px;" src="http://4.bp.blogspot.com/_2YU3pmPHKN4/SUXapAE8YII/AAAAAAAAAPI/kyEKyqrMVuU/s400/DerivedPointSize.gif" border="0" alt="" /></a>user_clamp represents GL_POINT_SIZE_MIN and GL_POINT_SIZE_MIN settings of the glPointParametervf(). impl_clamp represents an implementation-dependent point size range.<br />
GL_POINT_DISTANCE_ATTENUATION is used to pass in params as an array containing the distance attenuation coefficients a, b, and c, in that order.<br />
In case multisampling is used (not officially supported), the point size is clamped to have a minimum threshold, and the alpha value of the point is modulated by the following equation:<br />
<a href="http://3.bp.blogspot.com/_2YU3pmPHKN4/SUXdieSWCHI/AAAAAAAAAPQ/assJBDqdFaQ/s1600-h/minimumthreshold.gif" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5279869722477070450" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 157px; height: 36px;" src="http://3.bp.blogspot.com/_2YU3pmPHKN4/SUXdieSWCHI/AAAAAAAAAPQ/assJBDqdFaQ/s400/minimumthreshold.gif" border="0" alt="" /></a>GL_POINT_FADE_THRESHOLD_SIZE specifies the point alpha fade threshold.<br />
Check out the Oolong engine example Particle System for an implementation. It uses 600 point sprites with nearly 60 fps. Increasing the number of point sprites to 3000 lets the framerate drop to around 20 fps.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/ip-programming-tip-7/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Free ShaderX Books</title>
		<link>http://www.confettispecialfx.com/free-shaderx-books</link>
		<comments>http://www.confettispecialfx.com/free-shaderx-books#comments</comments>
		<pubDate>Fri, 12 Dec 2008 14:51:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[ShaderX]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=65</guid>
		<description><![CDATA[Eric Haines provided a home for the three ShaderX books that are now available for free. Thanks so much for this! Here is the URL http://tog.acm.org/resources/shaderx/]]></description>
				<content:encoded><![CDATA[<p>Eric Haines provided a home for the three ShaderX books that are now available for free. Thanks so much for this! Here is the URL</p>
<p><a href="http://tog.acm.org/resources/shaderx/">http://tog.acm.org/resources/shaderx/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/free-shaderx-books/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iP* programming tip #6</title>
		<link>http://www.confettispecialfx.com/ip-programming-tip-6</link>
		<comments>http://www.confettispecialfx.com/ip-programming-tip-6#comments</comments>
		<pubDate>Fri, 12 Dec 2008 03:32:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[iPhone iPod Touch iPad Programming]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=64</guid>
		<description><![CDATA[This time we are covering another fixed-function technique used in DirectX 7/8 times: Matrix Palettes support is an extension of OpenGL ES 1.1 that is supported on the iPhone. It allows the usage of a set of matrices to transform the vertices and the normals. Each vertex has a set of indices into the palette, [...]]]></description>
				<content:encoded><![CDATA[<p>This time we are covering another fixed-function technique used in DirectX 7/8 times: Matrix Palettes support is an extension of OpenGL ES 1.1 that is supported on the iPhone.<br />
It allows the usage of a set of matrices to transform the vertices and the normals. Each vertex has  a set of indices into the palette, and a corresponding set of n weights.<br />
The vertex is transformed by the modelview matrices specified by the vertices respective indices. These results are subsequently scaled by the weights of the respective units and then summed to create the eyespace vertex.<br />
<a href="http://2.bp.blogspot.com/_2YU3pmPHKN4/SUKRoLI5OCI/AAAAAAAAAOg/hjQe4oXxO7M/s1600-h/MatrixPalette.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5278941832602531874" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 44px;" src="http://2.bp.blogspot.com/_2YU3pmPHKN4/SUKRoLI5OCI/AAAAAAAAAOg/hjQe4oXxO7M/s400/MatrixPalette.jpg" border="0" alt="" /></a><br />
A similar procedure is followed for normals. They are transformed by the inverse transpose of the modelview matrix.<br />
<a href="http://2.bp.blogspot.com/_2YU3pmPHKN4/SUKRxeZkUaI/AAAAAAAAAOo/qtv-wiAGnwM/s1600-h/MatrixPalette2.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5278941992391561634" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 42px;" src="http://2.bp.blogspot.com/_2YU3pmPHKN4/SUKRxeZkUaI/AAAAAAAAAOo/qtv-wiAGnwM/s400/MatrixPalette2.jpg" border="0" alt="" /></a><br />
The main OpenGL ES functions that support Matrix Palette are</p>
<ul>
<li>glMatrixMode(GL_MATRIX_PALETTE) &#8211; Set the matrix mode to palette</li>
<li>glCurrentPaletteMatrix(n) &#8211; Set the currently active palette matrix and loads each matrix in the palette</li>
<li>To enable vertex arrays<br />
glEnableClientState(MATRIX_INDEX_ARRAY)<br />
glEnableClientState(WEIGHT_ARRAY)</li>
<li>To load the index and weight per-vertex data<br />
glWeightPointer()<br />
glMatrixIndexPointer()</li>
</ul>
<p>On the iPhone there are up to nine bones per sub-mesh supported (check GL_MAX_PALETTE_MATRICES_OES). Check out the Oolong example MatrixPalette for an implementation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/ip-programming-tip-6/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GDC Talk</title>
		<link>http://www.confettispecialfx.com/gdc-talk</link>
		<comments>http://www.confettispecialfx.com/gdc-talk#comments</comments>
		<pubDate>Thu, 11 Dec 2008 19:51:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[GDC]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=63</guid>
		<description><![CDATA[My GDC talk was accepted. I am happy &#8230; yeaaahhh]]></description>
				<content:encoded><![CDATA[<p>My GDC talk was accepted. I am happy &#8230; yeaaahhh <img src='http://www.confettispecialfx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><a href="http://1.bp.blogspot.com/_2YU3pmPHKN4/SUFvvzeyQvI/AAAAAAAAAOY/kz9UIyi_-Vk/s1600-h/12-11-2008+11-48-37+AM.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5278623105318798066" style="display: block; margin: 0px auto 10px; text-align: center; cursor: hand; width: 385px; height: 400px;" src="http://1.bp.blogspot.com/_2YU3pmPHKN4/SUFvvzeyQvI/AAAAAAAAAOY/kz9UIyi_-Vk/s400/12-11-2008+11-48-37+AM.jpg" border="0" alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/gdc-talk/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cached Shadow Maps</title>
		<link>http://www.confettispecialfx.com/cached-shadow-maps</link>
		<comments>http://www.confettispecialfx.com/cached-shadow-maps#comments</comments>
		<pubDate>Tue, 09 Dec 2008 23:08:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Shadow Maps]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=62</guid>
		<description><![CDATA[A friend just asked me about how to design a shadow map system for many lights with shadows. A quite good explanation was given in the following post already in 2003: http://www.gamedev.net/community/forums/viewreply.asp?ID=741199 Yann Lombard explains on how to pick a light source first that should cast a shadow. He is using distance, intensity, influence and [...]]]></description>
				<content:encoded><![CDATA[<p>A friend just asked me about how to design a shadow map system for many lights with shadows. A quite good explanation was given in the following post already in 2003:</p>
<div><span style="color: #0000ee; text-decoration: underline;">http://www.gamedev.net/community/forums/viewreply.asp?ID=741199</span></div>
<p>Yann Lombard explains on how to pick a light source first that should cast a shadow. He is using distance, intensity, influence and other parameters to pick light sources.</p>
<p>He has a cache of shadow maps that can have different resolutions. His cache solution is pretty generic. I would build a more dedicated cache just for shadow maps.<br />
After having picked the light sources that should cast shadows, I would only constantly update shadows in that cache that change. This depends on if there is an object with a dynamic flag in the shadow view frustum.<br />
If you think about it how it happens when you approach a scene with lights that cast shadows:<br />
1. the lights are picked that are close enough and appropriate to cast shadows -&gt; shadow maps are updated<br />
2. then while we move on, for the lights in 1. we only update shadow maps if there is an object in shadow view that is moving / dynamic; we start than with the next bunch of shadows while the shadows in 1 are still in view<br />
3. and so on.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/cached-shadow-maps/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dual-Paraboloid Shadow Maps</title>
		<link>http://www.confettispecialfx.com/dual-paraboloid-shadow-maps</link>
		<comments>http://www.confettispecialfx.com/dual-paraboloid-shadow-maps#comments</comments>
		<pubDate>Sun, 07 Dec 2008 02:52:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[Shadow Maps]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=61</guid>
		<description><![CDATA[Here is an interesting post on Dual-Paraboloid Shadow maps. Pat Wilson describes a single pass approach here http://www.gamedev.net/community/forums/topic.asp?topic_id=517022 This is pretty cool. Culling stuff into the two hemispheres is obsolete here. Other than this the usual comparison between cube maps and dual-paraboloid maps applies: the number of drawcalls is the same &#8230; so you do [...]]]></description>
				<content:encoded><![CDATA[<p>Here is an interesting post on Dual-Paraboloid Shadow maps.  Pat Wilson describes a single pass approach here</p>
<p><a href="http://www.gamedev.net/community/forums/topic.asp?topic_id=517022">http://www.gamedev.net/community/forums/topic.asp?topic_id=517022</a></p>
<p>This is pretty cool. Culling stuff into the two hemispheres is obsolete here. Other than this the usual comparison between cube maps and dual-paraboloid maps applies:</p>
<ul>
<li> the number of drawcalls is the same &#8230; so you do not save on this front</li>
<li> you loose memory bandwidth with cube maps because in worst case you render everything into six maps that are probably bigger than 256&#215;256 &#8230; in reality you won&#8217;t render six times and therefore have less drawcalls than dual-paraboloid maps</li>
<li> the quality is much better for cube maps</li>
<li> the speed difference is not that huge because dual paraboloid maps use things like texkill or alpha test to pick the right map and therefore rendering is pretty slow without Hierarchical Z.</li>
</ul>
<p>I think both techniques are equivalent for environment maps .. for shadows you might prefer cube maps; if you want to save memory dual-paraboloid maps is the only way to go.</p>
<p>Update: just saw this article on dual-paraboloid shadow maps:</p>
<p>http://osman.brian.googlepages.com/dpsm.pdf</p>
<p>The basic idea is that you do the WorldSpace -&gt; Paraboloid transformation in the pixel shader during your lighting pass. That avoids having the paraboloid co-ordinates interpolated incorrectly.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/dual-paraboloid-shadow-maps/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iP* programming tip #5</title>
		<link>http://www.confettispecialfx.com/ip-programming-tip-5</link>
		<comments>http://www.confettispecialfx.com/ip-programming-tip-5#comments</comments>
		<pubDate>Sun, 07 Dec 2008 01:07:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[iPhone iPod Touch iPad Programming]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=60</guid>
		<description><![CDATA[Let&#8217;s look today at the &#8220;pixel shader&#8221; level of the hardware functionality. The iPhone Application programming guide says that the application should not use more than 24 MB for textures and surfaces. It seems like those 24 MB are not in video card memory. I assume that all of the data is stored in system [...]]]></description>
				<content:encoded><![CDATA[<p>Let&#8217;s look today at the &#8220;pixel shader&#8221; level of the hardware functionality. The iPhone Application programming guide says that the application should not use more than 24 MB for textures and surfaces. It seems like those 24 MB are not in video card memory. I assume that all of the data is stored in system memory and the graphics card memory is not used.<br />
Overall the iP* platform supports</p>
<ul>
<li> The maximum texture size is 1024&#215;1024</li>
<li> 2D texture are supported; other texture formats are not</li>
<li> Stencil buffers aren’t available</li>
</ul>
<p>As far as I know stencil buffer support is available in hardware. That means the Light Pre-Pass renderer can only be implemented with the help of the scissor (hopefully available). As a side note: one of the other things that do not seem to be exposed is MSAA rendering. With the unofficial SDK it seems like you can use MSAA.<br />
Texture filtering is described on page 99 of the iPhone Application programming guide. There is also an extension for anisotropic filtering supported, that I haven&#8217;t tried.</p>
<p>The pixel shader of the iP* platform is programmed via texture combiners. There is an overview on all OpenGL ES 1.1 calls at</p>
<p><a href="http://www.khronos.org/opengles/sdk/1.1/docs/man/">http://www.khronos.org/opengles/sdk/1.1/docs/man/</a></p>
<p>The texture combiners are described in the page on glTexEnv. Per-Pixel Lighting is a popular example:</p>
<p><span style="font-family: courier new;">glTexEnvf(GL_TEXTURE_ENV,</span><br />
<span style="font-family: courier new;">// N.L</span><br />
<span style="font-family: courier new;">.. GL_TEXTURE_ENV_MODE, GL_COMBINE);</span><br />
<span style="font-family: courier new;">.. GL_COMBINE_RGB, GL_DOT3_RGB); // Blend0 = N.L</span></p>
<p><span style="font-family: courier new;">.. GL_SOURCE0_RGB, GL_TEXTURE); // normal map</span><br />
<span style="font-family: courier new;">.. GL_OPERAND0_RGB, GL_SRC_COLOR); </span><br />
<span style="font-family: courier new;">.. GL_SOURCE1_RGB, GL_PRIMARY_COLOR); // light vec</span><br />
<span style="font-family: courier new;">.. GL_OPERAND1_RGB, GL_SRC_COLOR);</span></p>
<p><span style="font-family: courier new;">// N.L * color map </span><br />
<span style="font-family: courier new;">.. GL_TEXTURE_ENV_MODE, GL_COMBINE);</span><br />
<span style="font-family: courier new;">.. GL_COMBINE_RGB, GL_MODULATE); // N.L * color map</span></p>
<p><span style="font-family: courier new;">.. GL_SOURCE0_RGB, GL_PREVIOUS); // previous result: N.L</span><br />
<span style="font-family: courier new;">.. GL_OPERAND0_RGB, GL_SRC_COLOR); </span><br />
<span style="font-family: courier new;">.. GL_SOURCE1_RGB, GL_TEXTURE); // color map</span><br />
<span style="font-family: courier new;">.. GL_OPERAND1_RGB, GL_SRC_COLOR);</span><br />
Check out the Oolong example &#8220;Per-Pixel Lighting&#8221; in the folder Examples/Renderer for a full implementation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/ip-programming-tip-5/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iP* programming tip #4</title>
		<link>http://www.confettispecialfx.com/ip-programming-tip-4</link>
		<comments>http://www.confettispecialfx.com/ip-programming-tip-4#comments</comments>
		<pubDate>Fri, 05 Dec 2008 16:08:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[iPhone iPod Touch iPad Programming]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=59</guid>
		<description><![CDATA[All of the source code presented in this series is based on the Oolong engine. I will refer to the examples when it is appropriate so that everyone can look the code up or try it on its own. This tip covers the very simple basics of a iP* app. Here is the most basic [...]]]></description>
				<content:encoded><![CDATA[<p>All of the source code presented in this series is based on the Oolong engine. I will refer to the examples when it is appropriate so that everyone can look the code up or try it on its own. This tip covers the very simple basics of a iP* app. Here is the most basic piece of code to start a game:</p>
<p><span style="font-family: courier new;">// “View” for games in applicationDidFinishLaunching</span><br />
<span style="font-family: courier new;">// get screen rectangle</span><br />
<span style="font-family: courier new;">CGRect rect = [[UIScreen mainScreen] bounds];</span></p>
<p><span style="font-family: courier new;">// create one full-screen window</span><br />
<span style="font-family: courier new;">_window = [[UIWindow alloc] initWithFrame:rect];</span></p>
<p><span style="font-family: courier new;">// create OpenGL view</span><br />
<span style="font-family: courier new;">_glView = [[EAGLView alloc] initWithFrame: rect pixelFormat:GL_RGB565_OES depthFormat:GL_DEPTH_COMPONENT16_OES preserveBackBuffer:NO];</span></p>
<p><span style="font-family: courier new;">// attach the view to the window</span><br />
<span style="font-family: courier new;">[_window addSubView:_glView];</span></p>
<p><span style="font-family: courier new;">// show the window</span><br />
<span style="font-family: courier new;">[_window makeKeyAndVisible];<br />
</span><br />
The screen dimensions are retrieved from a screen object. Erica Sadun compares the UIWindow functionality to a TV set and the UIView to actors in a TV show. I think this is a good way to memorize the functionality. In our case EAGLView, that comes with the Apple SDK, inherits from UIView and adds all the OpenGL ES functionality to it. We attach this view than to the window and make everything visible.<br />
Oolong assumes a full-screen window that does not rotate. It is always in widescreen view. The reason for this is that otherwise the accelerometer usage -to drive a camera with the accelerometer for example- wouldn&#8217;t be possible.<br />
There is a corresponding dealloc method to this code that frees all the allocated resources again.<br />
The anatomy of a Oolong engine example uses mainly two files. A file with &#8220;delegate&#8221; in the name and the main application file. The main application file has the following methods:<br />
<span style="font-family: courier new;">- InitApplication()</span><br />
<span style="font-family: courier new;">- QuitApplication()</span><br />
<span style="font-family: courier new;">- UpdateScene()</span><br />
<span style="font-family: courier new;">- RenderScene()</span><br />
The first pair of methods do one-time device dependent resource allocations and deallocations, while the UpdateScene() prepares scene rendering and the last method actually does what the name says. If you would like to extend this framework to handle orientation changes, you would add a pair of methods with names like InitView() and ReleaseView() and handle all orientation dependent code in there. Those methods would always been called when the orientation changes -only once- and at the start of the application.</p>
<p>One other basic topic is the usage of C++. In Apple speak this is called Objective-C++. Cocoa Touch wants to be addressed with Obj-C. So native C or C++ code is not possible. For game developers there is lots of existing C/C++ code to be re-used and its usage makes games easier to port to several platforms (quite common to launch an IP on several platforms at once). The best solution to this dilemma is to use Objective-C where necessary and then wrap to C/C++.<br />
If a file has the postfix *.mm, the compiler can handle Objective-C, C and C++ code pieces at the same time to a certain degree. If you look in Oolong for files with such a postfix you will find many of them. There are whitepapers and tutorials available for Objective-C++ that describe the limitations of the approach. Because garbage collection is not used on the iP* device I want to believe that the challenges to make this work on this platform are smaller. Here are a few examples on how the bridge between Objective-C and C/C++ is build in Oolong. In our main application class in every Oolong example we bridge from the Objective-C code used in the &#8220;delegate&#8221; file to the main application file like this:</p>
<p><span style="font-family: courier new;">// in Application.h</span><br />
<span style="font-family: courier new;">class CShell</span><br />
<span style="font-family: courier new;">{</span><br />
<span style="font-family: courier new;"> ..</span><br />
<span style="font-family: courier new;"> bool UpdateScene();</span></p>
<p><span style="font-family: courier new;">// in Application.mm</span><br />
<span style="font-family: courier new;">bool CShell::UpdateScene()</span><br />
<span style="font-family: courier new;">..</span></p>
<p><span style="font-family: courier new;">// in Delegate.mm</span><br />
<span style="font-family: courier new;">static CShell *shell = NULL;</span></p>
<p><span style="font-family: courier new;">if(!shell-&gt;Update()) printf(“Update error\n”);</span></p>
<p>An example on how to call an Objective-C method from C++ can look like this (C wrapper):</p>
<p><span style="font-family: courier new;">// in PolarCamera.mm -&gt; C wrapper</span><br />
<span style="font-family: courier new;">void UpdatePolarCamera()</span><br />
<span style="font-family: courier new;">{</span><br />
<span style="font-family: courier new;"> [idFrame UpdateCamera];</span><br />
<span style="font-family: courier new;">}</span><br />
<span style="font-family: courier new;">-(void) UpdateCamera</span><br />
<span style="font-family: courier new;">{</span><br />
<span style="font-family: courier new;"> ..</span><br />
<span style="font-family: courier new;">// in Application.mm</span><br />
<span style="font-family: courier new;">bool Cshell::UpdateScene()</span><br />
<span style="font-family: courier new;">{</span><br />
<span style="font-family: courier new;"> UpdatePolarCamera();</span><br />
<span style="font-family: courier new;"> ..</span></p>
<p>The idea is to retrieve the id for a class and then use this id to address a function in the class from the outside.<br />
If you want to see all this in action, open up the skeleton example in the Oolong Engine source code. You can find it at<br />
<span style="font-family: courier new;">Examples/Renderer/Skeleton</span><br />
Now that we are at the end of this tip I would like to refer to a blog that my friend Canis wrote. He talks about memory management here. This blog entry applies to the iP* platforms quite well:</p>
<p><a href="http://www.wooji-juice.com/blog/cocoa-6-memory.html">http://www.wooji-juice.com/blog/cocoa-6-memory.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/ip-programming-tip-4/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iP* programming tip #3</title>
		<link>http://www.confettispecialfx.com/ip-programming-tip-3</link>
		<comments>http://www.confettispecialfx.com/ip-programming-tip-3#comments</comments>
		<pubDate>Wed, 03 Dec 2008 16:37:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[iPhone iPod Touch iPad Programming]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=58</guid>
		<description><![CDATA[Today I will cover the necessary files of an iP* application and the folders that potentially hold data on the device from your application. .app folder holds everything without required hierarchy .lproj language support Executable Info.plist – XML property list holds product identifier &#62; allows communicate with other apps and register with Springboard Icon.png (57&#215;57) [...]]]></description>
				<content:encoded><![CDATA[<p>Today I will cover the necessary files of an iP* application and the folders that potentially hold data on the device from your application.</p>
<ul>
<li>.app folder holds everything without required hierarchy</li>
<li>.lproj language support</li>
<li>Executable</li>
<li>Info.plist – XML property list holds product identifier &gt; allows communicate with other apps and register with Springboard</li>
<li>Icon.png (57&#215;57) set UIPrerenderedIcon to true in Info.plist to not receive the gloss / shiny effect</li>
<li>Default.png … should match game background; no “Please wait” sign &#8230; smooth fade</li>
<li>XIB (NIB) files precooked addressable user interface classes &gt;remove NSMainNibFile key from Info.plist if you do not use it</li>
<li>Your files; for example in demoq3/quake3.pak</li>
</ul>
<p>If the game boots very fast a good mobile phone experience could be guaranteed by making a screenshot when the user ends the app and then using that screenshot while booting up the game and bringing it to the state it was before.<br />
Every iP* app is sandboxed. That means that only certain folders, network resources and hardware can be accessed. Here is a list of folders that might be affected by your application:</p>
<ul>
<li>Preferences files are in var/mobile/Library/Preferences based on the product identifier (e.g. com.engel.Quake.plist); updated when you use something like NSUserDefaults to add persistance to game data like save and load</li>
<li>App plug-in /System/Library (not available)</li>
<li>Documents in /Documents</li>
<li>Each app has a tmp folder</li>
<li>Sandbox spec e.g. in /usr/share/sandbox &gt; don’t touch </li>
</ul>
<p>The sandbox paradigm is also responsible for a mechanism that stops your game if it eats up too many resources of the iPhone. I wonder under which conditions this is going to happen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/ip-programming-tip-3/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HLSL 5.0 OOP / Dynamic Shader Linking</title>
		<link>http://www.confettispecialfx.com/hlsl-5-0-oop-dynamic-shader-linking</link>
		<comments>http://www.confettispecialfx.com/hlsl-5-0-oop-dynamic-shader-linking#comments</comments>
		<pubDate>Tue, 02 Dec 2008 19:16:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[General GPU Programming]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=57</guid>
		<description><![CDATA[I just happen to bump into a few slides on the new HLSL 5.0 syntax. The slides are at http://www.microsoft.com/downloads/details.aspx?FamilyId=32906B12-2021-4502-9D7E-AAD82C00D1AD&#38;displaylang=en I thought I comment on those slides because I do not get the main idea. The slides mention a combinatiorial explosion for shaders. They show on slide 19 three arrows that go in all three [...]]]></description>
				<content:encoded><![CDATA[<p>I just happen to bump into a few slides on the new HLSL 5.0 syntax. The slides are at</p>
<div><span style="color: #551a8b; text-decoration: underline;">http://www.microsoft.com/downloads/details.aspx?FamilyId=32906B12-2021-4502-9D7E-AAD82C00D1AD&amp;displaylang=en</span></div>
<div>I thought I comment on those slides because I do not get the main idea. The slides mention a combinatiorial explosion for shaders. They show on slide 19 three arrows that go in all three directions. One is called Number of Lights, another one Environmental Effects and the third one is called Number of Materials.</div>
<div>Regarding the first one: even if one has never worked on a game, everyone knows the words Deferred Lighting. If you want many lights you want to do the lighting in a way that the same shader is used for each light type. Assuming that we have a directional, point and spot light this brings me to three shaders (I actually use currently three but I might increase this to six).</div>
<div>One arrow talks about Environmental Effects. Most environmental effects nowadays are part of PostFX or a dedicated sky dome system. That adds two more shaders.</div>
<div>The last arrow says Number of Materials. Usually we have up to 20 different shaders for different materials.</div>
<div>This brings me to -let&#8217;s say 30 &#8211; 40- different shaders in a game. I can&#8217;t consider this a combinatorial explosion so far.</div>
<div>On slide 27 it is mentioned that the major driving point for introducing OOP is the dynamic shader linkage. It seems like there is a need for dynamic shader linkage because of the combinatorial explosion of the shaders.</div>
<div>So in essence the language design of the HLSL language is driven by the fact that we have too many shaders and someone assumes that we can&#8217;t cope with the shear quantity. To fix this we need dynamic shader linkage and to make this happen we need OOP in HLSL.</div>
<div>It is hard for me to follow this logic. It looks to me like we are doing a huge step back here. Not focusing on the real needs and adding code bloat.</div>
<div>Dynamic shader linkers are proven to be useless since a long time in game development; the previous attempts in this area were buried with DirectX 9 SDKs. The reason for this is that they do not allow to hand-optimize code which is a very important thing to do to make your title competitive. As soon as you change one of the shader fragments this has impact on the performance of other shaders. Depending on if you hit a performance sweetspot or not you can get a very different performance out of graphics cards.</div>
<div>Because the performance of your code base becomes less predictable, you do not want to use a dynamic shader linker if you want to create competitive games in the AAA segment.</div>
<div>Game developers need more control over the performance of the underlying hardware. We are already forced to use NV API and other native APIs to ship games on the PC platform with acceptable feature set and performance (especially SLI configs) because DirectX does not expose the functionality. For the DirectX 9 platform we look into Cuda and Cal support for PostFX.</div>
<div>This probably does not have much impact on the HLSL syntax but in general I would prefer having more abilities to squeeze out more performance from graphics cards over any OOP extension that does not sound like it increases performance. At the end of the day the language is a tool to squeeze out as much performance as possible from the hardware. What else do you want to do with it?</div>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/hlsl-5-0-oop-dynamic-shader-linking/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iP* programming tip #2</title>
		<link>http://www.confettispecialfx.com/ip-programming-tip-2</link>
		<comments>http://www.confettispecialfx.com/ip-programming-tip-2#comments</comments>
		<pubDate>Tue, 02 Dec 2008 16:13:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[iPhone iPod Touch iPad Programming]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=56</guid>
		<description><![CDATA[Today&#8217;s tip will deal with the setup of your development environment. As a Mac newbie I was having a hard time to get used to the environment more than a year ago -when I started Mac development- and I still suffer under windowitis. I know that Apple does not want to copy MS&#8217;s Visual Studio [...]]]></description>
				<content:encoded><![CDATA[<p>Today&#8217;s tip will deal with the setup of your development environment. As a Mac newbie I was having a hard time to get used to the environment more than a year ago -when I started Mac development- and I still suffer under windowitis. I know that Apple does not want to copy MS&#8217;s Visual Studio but most people who are used to work with Visual Studio would put that on their holiday wishlist <img src='http://www.confettispecialfx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
Here are a few starting points to get used to the environment:</p>
<ul>
<li>To work in one window only, use the &#8220;All-in-One&#8221; mode if you miss Visual Studio (<a href="http://developer.apple.com/tools/xcode/newinxcode23.html">http://developer.apple.com/tools/xcode/newinxcode23.html</a>)<br />
You have to load Xcode, but not load any projects.  Go straight to Preferences/General Tab, and you&#8217;ll see &#8220;Layout: Default&#8221;.   Switch that to &#8220;Layout: All-In-One&#8221;.  Click OK.  Then, you can load your projects.</li>
<li>Apple+tilde – cycle between windows in the foreground</li>
<li>Apple+w &#8211; closes the front window in most apps</li>
<li>Apple+tab – cycle through windows</li>
</ul>
<p>Please note that Apple did a revolutionary thing on the new MacBook Pro&#8217;s (probably also the new MacBook&#8217;s) &#8230; there is no Apple key anymore.  It is now called command key.</p>
<p>For everyone who prefers hotkeys to start applications you might check out Quicksilver. Automatically hiding and showing the Dock gives you more workspace. If you are giving presentations about your work, check out Stage Hand for the iPod touch / iPhone.</p>
<p>For reference you should have POWERVR SDK for Linux downloaded. It is a very helpful reference regarding the MBX chip in your target platforms.</p>
<p>Not very game or graphics programming related but very helpful is Erica Sadun&#8217;s book &#8220;The iPhone Developer&#8217;s Cookbook&#8221;. She does not waste your time with details you are not interested in and comes straight to the point. Just reading the first section of the book is already pretty cool.<br />
You want to have this book if you want to dive into any form of Cocoa interface programming.<br />
The last book I want to recommend is Andrew M. Duncan&#8217;s &#8220;Objective-C Pocket Reference&#8221;. I have this usually lying on my table if I stumble over Objective-C syntax. If you are a C/C++ programmer you probably do not need more than this. There are also Objective-C tutorials on the iPhone developer website and on the general Apple website.</p>
<p>If you have any other tip that I can add to the website I would mention it with your name.</p>
<div><span><span>Update: PpluX send me the following link:</span></span></div>
<div><a href="http://www.pplux.com/2008/11/24/the-return-to-the-dark-side/">http://www.pplux.com/2008/11/24/the-return-to-the-dark-side/</a></div>
<div>He describes here how he disables deep sleep mode and modifies the usage of spaces.</p>
<p>The next iP* programming tip will be more programming related &#8230; I promise <img src='http://www.confettispecialfx.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/ip-programming-tip-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iP* programming tip #1</title>
		<link>http://www.confettispecialfx.com/ip-programming-tip-1</link>
		<comments>http://www.confettispecialfx.com/ip-programming-tip-1#comments</comments>
		<pubDate>Mon, 01 Dec 2008 00:32:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[iPhone iPod Touch iPad Programming]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=55</guid>
		<description><![CDATA[This is the first of a series of iPhone / iPod programming tips. Starting iPhone development requires first the knowledge of the underlying hardware and what it can do for you. Here are the latest hardware specs I am aware of (a rumour was talking about iPods that run the CPU with 532 MHz &#8230; [...]]]></description>
				<content:encoded><![CDATA[<p>This is the first of a series of iPhone / iPod programming tips.<br />
Starting iPhone development requires first the knowledge of the underlying hardware and what it can do for you. Here are the latest hardware specs I am aware of (a rumour was talking about iPods that run the CPU with 532 MHz &#8230; I haven&#8217;t found any evidence for this).</p>
<ul>
<li>GPU: PowerVR MBXLite with VGPLite with 103 Mhz</li>
<li>~DX8 hardware with vs_1_1 and ps_1_1 functionality</li>
<li>Vertex shader is not exposed</li>
<li>Pixel shader is programmed with texture combiners</li>
<li>16 MB VRAM – not mentioned anywhere</li>
<li>CPU: ARM 1176 with 412 Mhz (can do 600 Mhz)</li>
<li>VFP unit 128-bit Multimedia unit ~= SIMD unit</li>
<li>128 MB RAM; only 24 MB for apps allowed</li>
<li>320&#215;480 px at 163 ppi screen</li>
<li>LIS302DL, a 3-axis accelerometer with 412 Mhz (?) update rate</li>
<li>Multi-Touch: up to five fingers</li>
<li>PVRTC texture compression: color map 2-bit per pixel and normal map 4-bit per-pixel</li>
</ul>
<p>The interesting part is that the CPU can do up to 600 Mhz, so it would be possible to increase the performance here in the future.<br />
I wonder how the 16 MB VRAM are handled. I assume that this is the place where the VBO and textures are stored. Regarding the max size of apps of 24 MB; I wonder what happens if an application generates geometry and textures dynamically &#8230; when does the sandbox of the iPhone / iPod touch stop the application. I did not find any evidence for this.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/ip-programming-tip-1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WARP &#8211; Running DX10 and DX11 Games on CPUs</title>
		<link>http://www.confettispecialfx.com/warp-running-dx10-and-dx11-games-on-cpus</link>
		<comments>http://www.confettispecialfx.com/warp-running-dx10-and-dx11-games-on-cpus#comments</comments>
		<pubDate>Mon, 01 Dec 2008 00:18:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[D3D10]]></category>
		<category><![CDATA[D3D11]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=54</guid>
		<description><![CDATA[As a MVP I was involved into testing this new Windows Advanced Rasterization Platform. They just published the first numbers http://msdn.microsoft.com/en-us/library/dd285359.aspx Running Crysis on a 8 core CPU with a resolution of 800&#215;600 at 7.2 fps is an achievement. If this would be hand-optimized very well, it would be the best way to write code [...]]]></description>
				<content:encoded><![CDATA[<p>As a MVP I was involved into testing this new Windows Advanced Rasterization Platform. They just published the first numbers</p>
<p><a href="http://msdn.microsoft.com/en-us/library/dd285359.aspx">http://msdn.microsoft.com/en-us/library/dd285359.aspx</a></p>
<p>Running Crysis on a 8 core CPU with a resolution of 800&#215;600 at 7.2 fps is an achievement. If this would be hand-optimized very well, it would be the best way to write code for. 4 &#8211; 8 cores will be a common target platform in the next two years. Because it can be switched off if there is a GPU, this is a perfect target for game developers. What this means is that you can write a game with the DirectX 10 API and not only target all the GPUs out there but also machines without GPU &#8230; this is one of the best developments for the PC market since a long time. I am excited!</p>
<p>The other interesting consequence from this development is: if INTELs &#8220;Bread &amp; Butter&#8221; chips run games with the most important game API, it would be a good idea if INTEL would put a bunch of engineers behind this and optimize WARP (in case they haven&#8217;t already done so). This is the big game market consisting of games like &#8220;The Sims&#8221; and &#8220;World of Warcraft&#8221; and similar games that we are talking about here. The high-end PC gaming market is much smaller.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/warp-running-dx10-and-dx11-games-on-cpus/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone ARM VFP code</title>
		<link>http://www.confettispecialfx.com/iphone-arm-vfp-code</link>
		<comments>http://www.confettispecialfx.com/iphone-arm-vfp-code#comments</comments>
		<pubDate>Thu, 06 Nov 2008 15:17:00 +0000</pubDate>
		<dc:creator>wolfgang.engel</dc:creator>
				<category><![CDATA[iPhone iPod Touch iPad Programming]]></category>

		<guid isPermaLink="false">http://www.wolfgang-engel.info/blogs/?p=53</guid>
		<description><![CDATA[The iPhone has a kind of SIMD unit. It is called VFP unit and it is pretty hard to figure out how to program it. Here is a place where you can find soon lots of VFP asm code. http://code.google.com/p/vfpmathlibrary/ With help from Matthias Grundmann I wrote my first piece of VFP code. Here it [...]]]></description>
				<content:encoded><![CDATA[<p>The iPhone has a kind of SIMD unit. It is called VFP unit and it is pretty hard to figure out how to program it. Here is a place where you can find soon lots of VFP asm code.</p>
<div><a href="http://code.google.com/p/vfpmathlibrary/">http://code.google.com/p/vfpmathlibrary/</a></div>
<div>
<div>With help from Matthias Grundmann I wrote my first piece of VFP code. Here it is:<code><span style="font-size: x-small;"><span style="font-family: 'courier new';">void MatrixMultiplyF(<br />
MATRIXf &amp;mOut,<br />
const MATRIXf &amp;mA,<br />
const MATRIXf &amp;mB)<br />
{<br />
#if 0<br />
MATRIXf mRet;</span></span></code></p>
<p><code>/* Perform calculation on a dummy matrix (mRet) */<br />
mRet.f[ 0] = mA.f[ 0]*mB.f[ 0] + mA.f[ 1]*mB.f[ 4] + mA.f[ 2]*mB.f[ 8] + mA.f[ 3]*mB.f[12];<br />
mRet.f[ 1] = mA.f[ 0]*mB.f[ 1] + mA.f[ 1]*mB.f[ 5] + mA.f[ 2]*mB.f[ 9] + mA.f[ 3]*mB.f[13];<br />
mRet.f[ 2] = mA.f[ 0]*mB.f[ 2] + mA.f[ 1]*mB.f[ 6] + mA.f[ 2]*mB.f[10] + mA.f[ 3]*mB.f[14];<br />
mRet.f[ 3] = mA.f[ 0]*mB.f[ 3] + mA.f[ 1]*mB.f[ 7] + mA.f[ 2]*mB.f[11] + mA.f[ 3]*mB.f[15];</p>
<p>mRet.f[ 4] = mA.f[ 4]*mB.f[ 0] + mA.f[ 5]*mB.f[ 4] + mA.f[ 6]*mB.f[ 8] + mA.f[ 7]*mB.f[12];<br />
mRet.f[ 5] = mA.f[ 4]*mB.f[ 1] + mA.f[ 5]*mB.f[ 5] + mA.f[ 6]*mB.f[ 9] + mA.f[ 7]*mB.f[13];<br />
mRet.f[ 6] = mA.f[ 4]*mB.f[ 2] + mA.f[ 5]*mB.f[ 6] + mA.f[ 6]*mB.f[10] + mA.f[ 7]*mB.f[14];<br />
mRet.f[ 7] = mA.f[ 4]*mB.f[ 3] + mA.f[ 5]*mB.f[ 7] + mA.f[ 6]*mB.f[11] + mA.f[ 7]*mB.f[15];</p>
<p>mRet.f[ 8] = mA.f[ 8]*mB.f[ 0] + mA.f[ 9]*mB.f[ 4] + mA.f[10]*mB.f[ 8] + mA.f[11]*mB.f[12];<br />
mRet.f[ 9] = mA.f[ 8]*mB.f[ 1] + mA.f[ 9]*mB.f[ 5] + mA.f[10]*mB.f[ 9] + mA.f[11]*mB.f[13];<br />
mRet.f[10] = mA.f[ 8]*mB.f[ 2] + mA.f[ 9]*mB.f[ 6] + mA.f[10]*mB.f[10] + mA.f[11]*mB.f[14];<br />
mRet.f[11] = mA.f[ 8]*mB.f[ 3] + mA.f[ 9]*mB.f[ 7] + mA.f[10]*mB.f[11] + mA.f[11]*mB.f[15];</p>
<p>mRet.f[12] = mA.f[12]*mB.f[ 0] + mA.f[13]*mB.f[ 4] + mA.f[14]*mB.f[ 8] + mA.f[15]*mB.f[12];<br />
mRet.f[13] = mA.f[12]*mB.f[ 1] + mA.f[13]*mB.f[ 5] + mA.f[14]*mB.f[ 9] + mA.f[15]*mB.f[13];<br />
mRet.f[14] = mA.f[12]*mB.f[ 2] + mA.f[13]*mB.f[ 6] + mA.f[14]*mB.f[10] + mA.f[15]*mB.f[14];<br />
mRet.f[15] = mA.f[12]*mB.f[ 3] + mA.f[13]*mB.f[ 7] + mA.f[14]*mB.f[11] + mA.f[15]*mB.f[15];</p>
<p>/* Copy result in pResultMatrix */<br />
mOut = mRet;<br />
#else<br />
#if (TARGET_CPU_ARM)<br />
const float* src_ptr1 = &amp;mA.f[0];<br />
const float* src_ptr2 = &amp;mB.f[0];<br />
float* dst_ptr = &amp;mOut.f[0];</p>
<p>asm volatile(<br />
// switch on ARM mode<br />
// involves uncoditional jump and mode switch (opcode bx)<br />
// the lowest bit in the address signals whether are (bit cleared)<br />
// or tumb should be selected (bit set)<br />
".align 4 \n\t"<br />
"mov r0, pc \n\t"<br />
"bx r0 \n\t"<br />
".arm \n\t"</p>
<p>// set vector length to 4<br />
// example fadds s8, s8, s16 means that the content s8 - s11<br />
// is added to s16 - s19 and stored in s8 - s11<br />
"fmrx r0, fpscr \n\t" // loads fpscr status reg to r4<br />
"bic r0, r0, #0x00370000 \n\t" // bit clear stride and length<br />
"orr r0, r0, #0x00030000 \n\t" // set length to 4 (11)<br />
"fmxr fpscr, r0 \n\t" // upload r4 to fpscr<br />
// Note: this stalls the FPU</p>
<p>// result[0][1][2][3] = mA.f[0][0][0][0] * mB.f[0][1][2][3]<br />
// result[0][1][2][3] = result + mA.f[1][1][1][1] * mB.f[4][5][6][7]<br />
// result[0][1][2][3] = result + mA.f[2][2][2][2] * mB.f[8][9][10][11]<br />
// result[0][1][2][3] = result + mA.f[3][3][3][3] * mB.f[12][13][14][15]<br />
// s0 - s31<br />
// if Fd == s0 - s7 -&gt; treated as scalar all the other treated like vector<br />
// load the whole matrix into memory - transposed -&gt; second operand first<br />
"fldmias %2, {s8-s23} \n\t"<br />
// load first column to scalar bank<br />
"fldmias %1!, {s0 - s3} \n\t"<br />
// first column times matrix<br />
"fmuls s24, s8, s0 \n\t"<br />
"fmacs s24, s12, s1 \n\t"<br />
"fmacs s24, s16, s2 \n\t"<br />
"fmacs s24, s20, s3 \n\t"<br />
// save first column<br />
"fstmias %0!, {s24-s27} \n\t"</p>
<p>// load second column to scalar bank<br />
"fldmias %1!, {s4-s7} \n\t"<br />
// second column times matrix<br />
"fmuls s28, s8, s4 \n\t"<br />
"fmacs s28, s12, s5 \n\t"<br />
"fmacs s28, s16, s6 \n\t"<br />
"fmacs s28, s20, s7 \n\t"<br />
// save second column<br />
"fstmias %0!, {s28-s31) \n\t"</p>
<p>// load third column to scalar bank<br />
"fldmias %1!, {s0-s3} \n\t"<br />
// third column times matrix<br />
"fmuls s24, s8, s0 \n\t"<br />
"fmacs s24, s12, s1 \n\t"<br />
"fmacs s24, s16, s2 \n\t"<br />
"fmacs s24, s20, s3 \n\t"<br />
// save third column<br />
"fstmias %0!, {s24-s27} \n\t"</p>
<p>// load fourth column to scalar bank<br />
"fldmias %1!, {s4-s7} \n\t"<br />
// fourth column times matrix<br />
"fmuls s28, s8, s4 \n\t"<br />
"fmacs s28, s12, s5 \n\t"<br />
"fmacs s28, s16, s6 \n\t"<br />
"fmacs s28, s20, s7 \n\t"<br />
// save fourth column<br />
"fstmias %0!, {s28-s31} \n\t"</p>
<p>// reset vector length to 1<br />
"fmrx r0, fpscr \n\t" // loads fpscr status reg to r4<br />
"bic r0, r0, #0x00370000 \n\t" // bit clear stride and length<br />
"fmxr fpscr, r0 \n\t" // upload r4 to fpscr</p>
<p>// switch to tumb mode<br />
// lower bit of destination is set to 1<br />
"add r0, pc, #1 \n\t"<br />
"bx r0 \n\t"<br />
".thumb \n\t"</p>
<p></code><code>// binds variables to registers<br />
: "=r" (dst_ptr), "=r" (src_ptr1), "=r" (src_ptr2)<br />
: "0" (dst_ptr), "1" (src_ptr1), "2" (src_ptr2)<br />
: "r0"<br />
);<br />
#endif<br />
#endif<br />
}<br />
</code></p>
<p><span style="font-family: 'courier new';"><br />
</span></p>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.confettispecialfx.com/iphone-arm-vfp-code/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
