<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments for Game Angst</title>
	<atom:link href="http://gameangst.com/?feed=comments-rss2" rel="self" type="application/rss+xml" />
	<link>http://gameangst.com</link>
	<description>because there are many ways to skin a cat, but you only get to choose one</description>
	<lastBuildDate>Fri, 06 Aug 2010 02:53:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Comment on Deferred Shading Shines. Deferred Lighting? Not So Much. by Adrian Stone</title>
		<link>http://gameangst.com/?p=141&#038;cpage=1#comment-4030</link>
		<dc:creator>Adrian Stone</dc:creator>
		<pubDate>Fri, 06 Aug 2010 02:53:19 +0000</pubDate>
		<guid isPermaLink="false">http://gameangst.com/?p=141#comment-4030</guid>
		<description>I understand what you&#039;re saying, but I would argue that these techniques can be mixed and matched with equal flexibility.  If only a portion of your objects use features that are orthogonal to shading (for example emissive lightmapping), you can chose not to defer that aspect of their rendering in either deferred lighting or deferred shading.

The second geometry pass is what allows you to do MSAA in deferred lighting, and again, that can be done with deferred shading as well.

On the question of performance, I make an argument that &quot;deferred lighting&quot; has not been more efficient than &quot;deferred shading&quot; in my experience, but people frequently disagree with me using the term &quot;light pre-pass.&quot;  I&#039;m not sure if it was originally intended this way, but I now consider the term &quot;light pre-pass&quot; to imply a monochromatic or otherwise limited specular model.  If that is true than I can absolutely see the performance advantages of light pre-pass over traditional deferred shading, but I&#039;d also want to make a more fair comparison using a variant of deferred shading which doesn&#039;t implement true Phong shading.</description>
		<content:encoded><![CDATA[<p>I understand what you&#8217;re saying, but I would argue that these techniques can be mixed and matched with equal flexibility.  If only a portion of your objects use features that are orthogonal to shading (for example emissive lightmapping), you can chose not to defer that aspect of their rendering in either deferred lighting or deferred shading.</p>
<p>The second geometry pass is what allows you to do MSAA in deferred lighting, and again, that can be done with deferred shading as well.</p>
<p>On the question of performance, I make an argument that &#8220;deferred lighting&#8221; has not been more efficient than &#8220;deferred shading&#8221; in my experience, but people frequently disagree with me using the term &#8220;light pre-pass.&#8221;  I&#8217;m not sure if it was originally intended this way, but I now consider the term &#8220;light pre-pass&#8221; to imply a monochromatic or otherwise limited specular model.  If that is true than I can absolutely see the performance advantages of light pre-pass over traditional deferred shading, but I&#8217;d also want to make a more fair comparison using a variant of deferred shading which doesn&#8217;t implement true Phong shading.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Deferred Shading Shines. Deferred Lighting? Not So Much. by Adrian Stone</title>
		<link>http://gameangst.com/?p=141&#038;cpage=1#comment-4029</link>
		<dc:creator>Adrian Stone</dc:creator>
		<pubDate>Fri, 06 Aug 2010 02:38:41 +0000</pubDate>
		<guid isPermaLink="false">http://gameangst.com/?p=141#comment-4029</guid>
		<description>You are right.  Calver acknowledges the possibilities of deferring different portions of the pipeline (&quot;Deferred Rendering or Deferred Shading or Deferred Lighting?&quot;) but then goes on to describe what is traditionally called &quot;deferred shading&quot; under the heading of &quot;deferred lighting.&quot;

I was in Matt and Rich&#039;s talk, however, and they definitely distinguished between deferred lighting and deferred shading, and described them much as I&#039;ve described them in this article.</description>
		<content:encoded><![CDATA[<p>You are right.  Calver acknowledges the possibilities of deferring different portions of the pipeline (&#8220;Deferred Rendering or Deferred Shading or Deferred Lighting?&#8221;) but then goes on to describe what is traditionally called &#8220;deferred shading&#8221; under the heading of &#8220;deferred lighting.&#8221;</p>
<p>I was in Matt and Rich&#8217;s talk, however, and they definitely distinguished between deferred lighting and deferred shading, and described them much as I&#8217;ve described them in this article.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Deferred Shading Shines. Deferred Lighting? Not So Much. by Keith Yerex</title>
		<link>http://gameangst.com/?p=141&#038;cpage=1#comment-4018</link>
		<dc:creator>Keith Yerex</dc:creator>
		<pubDate>Thu, 05 Aug 2010 17:15:50 +0000</pubDate>
		<guid isPermaLink="false">http://gameangst.com/?p=141#comment-4018</guid>
		<description>In my opinion, light prepass rendering is much more flexible.
Though you can&#039;t modify the lighting equations, you can add things like emissive, lightmapping, colored specular etc. to a subset of objects at little cost. Where the deferred rendering approach would require additional g-buffer layers, and any effect you add is paid for at every pixel in the lighting pass even if only a few objects use it.

Also, with light prepass it is possible to use hardware multisample anti-aliasing on current console hardware (where msaa is not allowed with multiple render targets)

In my experience light prepass was faster on ps3 than on 360, partly because of the &quot;depth bounds test&quot; which only exists on nvidia hardware and can cull many of the light volume pixels before shading. However, we used 32 bpp render targets for the light buffer, (in rgb-exponent format on ps3, where blending can be handled in pixel shaders by reading the framebuffer before writing, and flushing the texture cache occasionally)</description>
		<content:encoded><![CDATA[<p>In my opinion, light prepass rendering is much more flexible.<br />
Though you can&#8217;t modify the lighting equations, you can add things like emissive, lightmapping, colored specular etc. to a subset of objects at little cost. Where the deferred rendering approach would require additional g-buffer layers, and any effect you add is paid for at every pixel in the lighting pass even if only a few objects use it.</p>
<p>Also, with light prepass it is possible to use hardware multisample anti-aliasing on current console hardware (where msaa is not allowed with multiple render targets)</p>
<p>In my experience light prepass was faster on ps3 than on 360, partly because of the &#8220;depth bounds test&#8221; which only exists on nvidia hardware and can cull many of the light volume pixels before shading. However, we used 32 bpp render targets for the light buffer, (in rgb-exponent format on ps3, where blending can be handled in pixel shaders by reading the framebuffer before writing, and flushing the texture cache occasionally)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Deferred Shading Shines. Deferred Lighting? Not So Much. by Ola Olsson</title>
		<link>http://gameangst.com/?p=141&#038;cpage=1#comment-4010</link>
		<dc:creator>Ola Olsson</dc:creator>
		<pubDate>Thu, 05 Aug 2010 11:07:49 +0000</pubDate>
		<guid isPermaLink="false">http://gameangst.com/?p=141#comment-4010</guid>
		<description>Thank you for replying!

Correct me if Im wrong, but doesn&#039;t Calvers article actually describe *Deferred Shading*, with full G-Buffers and only one geometry pass? To further fuel the confusion :)

Pritchard and Geldreich’s presentation is the first place I&#039;ve seen name used. Might see if I can get hold of either author.

Cheers again</description>
		<content:encoded><![CDATA[<p>Thank you for replying!</p>
<p>Correct me if Im wrong, but doesn&#8217;t Calvers article actually describe *Deferred Shading*, with full G-Buffers and only one geometry pass? To further fuel the confusion <img src='http://gameangst.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Pritchard and Geldreich’s presentation is the first place I&#8217;ve seen name used. Might see if I can get hold of either author.</p>
<p>Cheers again</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Deferred Shading Shines. Deferred Lighting? Not So Much. by Adrian Stone</title>
		<link>http://gameangst.com/?p=141&#038;cpage=1#comment-3994</link>
		<dc:creator>Adrian Stone</dc:creator>
		<pubDate>Wed, 04 Aug 2010 21:28:18 +0000</pubDate>
		<guid isPermaLink="false">http://gameangst.com/?p=141#comment-3994</guid>
		<description>The earliest references I&#039;m aware of are Dean Calver&#039;s 2003 article for Beyond 3d (http://www.beyond3d.com/content/articles/19/) and Matt Pritchard and Rich Geldreich&#039;s excellent presentation at GDC in 2005 (http://archive.gdconf.com/gdc_2004/pritchard_matt.ppt).  I don&#039;t know where the term &quot;Deferred Lighting&quot; originates, however, since both of those sources refer to it as an established technique.</description>
		<content:encoded><![CDATA[<p>The earliest references I&#8217;m aware of are Dean Calver&#8217;s 2003 article for Beyond 3d (<a href="http://www.beyond3d.com/content/articles/19/" rel="nofollow">http://www.beyond3d.com/content/articles/19/</a>) and Matt Pritchard and Rich Geldreich&#8217;s excellent presentation at GDC in 2005 (<a href="http://archive.gdconf.com/gdc_2004/pritchard_matt.ppt" rel="nofollow">http://archive.gdconf.com/gdc_2004/pritchard_matt.ppt</a>).  I don&#8217;t know where the term &#8220;Deferred Lighting&#8221; originates, however, since both of those sources refer to it as an established technique.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Deferred Shading Shines. Deferred Lighting? Not So Much. by Ola Olsson</title>
		<link>http://gameangst.com/?p=141&#038;cpage=1#comment-3917</link>
		<dc:creator>Ola Olsson</dc:creator>
		<pubDate>Mon, 02 Aug 2010 13:41:15 +0000</pubDate>
		<guid isPermaLink="false">http://gameangst.com/?p=141#comment-3917</guid>
		<description>Somewhat late to the party, perhaps.

I was just wondering if you would care to provide a reference to the original description of &quot;deferred lighting&quot;. I have found the exact technique described in a paper from 2003:
&quot;Optimized Shadow Mapping Using the Stencil Buffer&quot;,  JGT 2003, Jukka Arvo and Timo Aila, 
but they dont refer anywhere for the technique in particular, and do not give it a name. 

Hope you still get notifications from this thread :)</description>
		<content:encoded><![CDATA[<p>Somewhat late to the party, perhaps.</p>
<p>I was just wondering if you would care to provide a reference to the original description of &#8220;deferred lighting&#8221;. I have found the exact technique described in a paper from 2003:<br />
&#8220;Optimized Shadow Mapping Using the Stencil Buffer&#8221;,  JGT 2003, Jukka Arvo and Timo Aila,<br />
but they dont refer anywhere for the technique in particular, and do not give it a name. </p>
<p>Hope you still get notifications from this thread <img src='http://gameangst.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CrossStitch 2.0: Dynamic Shader Linking in a Statically Linked World by Adrian Stone</title>
		<link>http://gameangst.com/?p=441&#038;cpage=1#comment-2238</link>
		<dc:creator>Adrian Stone</dc:creator>
		<pubDate>Mon, 07 Jun 2010 04:32:52 +0000</pubDate>
		<guid isPermaLink="false">http://gameangst.com/?p=441#comment-2238</guid>
		<description>I confess to not having spent a lot of time investigating preshaders.  I&#039;m careful about arranging the constant inputs for costly shaders like post-processing filters, and I&#039;ve manually compared the value of preshaders in those cases without positive results; but for the vast majority of our shaders that are more fully data-driven, I have no idea how much perf we&#039;re leaving on the table by not taking advantage of preshaders.</description>
		<content:encoded><![CDATA[<p>I confess to not having spent a lot of time investigating preshaders.  I&#8217;m careful about arranging the constant inputs for costly shaders like post-processing filters, and I&#8217;ve manually compared the value of preshaders in those cases without positive results; but for the vast majority of our shaders that are more fully data-driven, I have no idea how much perf we&#8217;re leaving on the table by not taking advantage of preshaders.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CrossStitch 2.0: Dynamic Shader Linking in a Statically Linked World by Daniel</title>
		<link>http://gameangst.com/?p=441&#038;cpage=1#comment-2237</link>
		<dc:creator>Daniel</dc:creator>
		<pubDate>Mon, 07 Jun 2010 00:02:14 +0000</pubDate>
		<guid isPermaLink="false">http://gameangst.com/?p=441#comment-2237</guid>
		<description>This is an awesome post that lets us see the other side of the shader compilation fence without having to actually invest the resources in it.  Thanks Adrian.

&gt; adding a new type of node to Façade is as simple as creating a new shader fragment and 
&gt; annotating its public-facing variables.

How did you handle preshaders (pulling out and evaluating uniform expressions on the CPU) then?  That&#039;s an important optimization in my experience.

&gt; the plain old HLSL uber-shader approach gives comparable amount of headache when it comes
&gt; to the combinatorial explosion of permutations and their compilation time.

I think the compile time of permutations is a solveable problem with some work.  You can parallelize and even distribute shader compilation, speeding up shader compiling by orders of magnitude.

One of the big disadvantages of offline shader compiling is the memory required to store all the permutations that get generated.  It helps to compress all the shaders in chunks and only decompress as needed, but it will still be a significant amount of memory (usually 10-15mb on 360).</description>
		<content:encoded><![CDATA[<p>This is an awesome post that lets us see the other side of the shader compilation fence without having to actually invest the resources in it.  Thanks Adrian.</p>
<p>&gt; adding a new type of node to Façade is as simple as creating a new shader fragment and<br />
&gt; annotating its public-facing variables.</p>
<p>How did you handle preshaders (pulling out and evaluating uniform expressions on the CPU) then?  That&#8217;s an important optimization in my experience.</p>
<p>&gt; the plain old HLSL uber-shader approach gives comparable amount of headache when it comes<br />
&gt; to the combinatorial explosion of permutations and their compilation time.</p>
<p>I think the compile time of permutations is a solveable problem with some work.  You can parallelize and even distribute shader compilation, speeding up shader compiling by orders of magnitude.</p>
<p>One of the big disadvantages of offline shader compiling is the memory required to store all the permutations that get generated.  It helps to compress all the shaders in chunks and only decompress as needed, but it will still be a significant amount of memory (usually 10-15mb on 360).</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Symbol Sort : A Utility for Measuring C++ Code Bloat by Code Bloat Hunting &#124; EntBlog</title>
		<link>http://gameangst.com/?p=320&#038;cpage=1#comment-2144</link>
		<dc:creator>Code Bloat Hunting &#124; EntBlog</dc:creator>
		<pubDate>Fri, 21 May 2010 15:10:13 +0000</pubDate>
		<guid isPermaLink="false">http://gameangst.com/?p=320#comment-2144</guid>
		<description>[...] a thoroughly study with the help of tools like Sizer, Symbol Sort (I strongly recommend reading the articles associated to this tool: 1, 2, 3, 4, 5, 6 and passing [...]</description>
		<content:encoded><![CDATA[<p>[...] a thoroughly study with the help of tools like Sizer, Symbol Sort (I strongly recommend reading the articles associated to this tool: 1, 2, 3, 4, 5, 6 and passing [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CrossStitch 2.0: Dynamic Shader Linking in a Statically Linked World by Adrian Stone</title>
		<link>http://gameangst.com/?p=441&#038;cpage=1#comment-2089</link>
		<dc:creator>Adrian Stone</dc:creator>
		<pubDate>Thu, 13 May 2010 13:10:01 +0000</pubDate>
		<guid isPermaLink="false">http://gameangst.com/?p=441#comment-2089</guid>
		<description>You&#039;re certainly right that the heart of the problem is that we have too many variables to compile all permutations offline.  One simple example is that Facade materials don&#039;t include any indication as to how they&#039;re going to be used.  So while a particular material may only ever be applied to a rigid mesh, in theory the same material could be used as a decal, on a particle, or any number of other ways.  One of the steps in eventually replacing CrossStitch has been narrowing the number of variables.

However, there is another factor that separates offline and runtime compilation.  Since CrossStitch shaders are pieced together at runtime, the &quot;data&quot; that defines whole shaders is partially platform-dependent C++ code.  To write an offline compiler, parts of our renderer would either have to be duplicated in a PC tool (and then kept in sync) or factored out in such a way that the same code could run on PC and (for example) Playstation 3 without additional cost.</description>
		<content:encoded><![CDATA[<p>You&#8217;re certainly right that the heart of the problem is that we have too many variables to compile all permutations offline.  One simple example is that Facade materials don&#8217;t include any indication as to how they&#8217;re going to be used.  So while a particular material may only ever be applied to a rigid mesh, in theory the same material could be used as a decal, on a particle, or any number of other ways.  One of the steps in eventually replacing CrossStitch has been narrowing the number of variables.</p>
<p>However, there is another factor that separates offline and runtime compilation.  Since CrossStitch shaders are pieced together at runtime, the &#8220;data&#8221; that defines whole shaders is partially platform-dependent C++ code.  To write an offline compiler, parts of our renderer would either have to be duplicated in a PC tool (and then kept in sync) or factored out in such a way that the same code could run on PC and (for example) Playstation 3 without additional cost.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
