<?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 on: Strided blur and other tips for SSAO</title>
	<atom:link href="http://aras-p.info/blog/2009/09/17/strided-blur-and-other-tips-for-ssao/feed/" rel="self" type="application/rss+xml" />
	<link>http://aras-p.info/blog/2009/09/17/strided-blur-and-other-tips-for-ssao/</link>
	<description>Random thoughts of a triangle pusher</description>
	<lastBuildDate>Fri, 10 Feb 2012 03:15:49 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Jason Hoerner</title>
		<link>http://aras-p.info/blog/2009/09/17/strided-blur-and-other-tips-for-ssao/comment-page-1/#comment-29841</link>
		<dc:creator>Jason Hoerner</dc:creator>
		<pubDate>Tue, 06 Apr 2010 20:00:45 +0000</pubDate>
		<guid isPermaLink="false">http://aras-p.info/blog/?p=409#comment-29841</guid>
		<description>Thank you so much for sharing this!  I was banging my head against the wall for the last week trying to figure out how to do a decent blur.  All the websites on SSAO spend a lot of time discussing the shader algorithm, but gloss over the blur.  I think the blur is the hard part.  Once I found this website, and tried a 2-stride blur, it magically solved all my problems!

I figured out a way to completely eliminate the interleave pattern with an additional blur pass.  You can use a 3x3 mean filter, using the same depth / normal aware sampling algorithm.  You need to adjust the weights of the samples depending on whether you use a 3-stride or 2-stride.

For a 3-stride pattern, you can just use constant weights (1 for all).  For a 2-stride, you can use weights in a pattern like this:

[ 1 2 1 ]
[ 2 4 2 ]
[ 1 2 1 ]

This is equivalent to averaging the four 2x2 blocks of pixels surrounding the center point (you can&#039;t just do 2x2 because it will shift the image diagonally).  Enjoy!</description>
		<content:encoded><![CDATA[<p>Thank you so much for sharing this!  I was banging my head against the wall for the last week trying to figure out how to do a decent blur.  All the websites on SSAO spend a lot of time discussing the shader algorithm, but gloss over the blur.  I think the blur is the hard part.  Once I found this website, and tried a 2-stride blur, it magically solved all my problems!</p>
<p>I figured out a way to completely eliminate the interleave pattern with an additional blur pass.  You can use a 3&#215;3 mean filter, using the same depth / normal aware sampling algorithm.  You need to adjust the weights of the samples depending on whether you use a 3-stride or 2-stride.</p>
<p>For a 3-stride pattern, you can just use constant weights (1 for all).  For a 2-stride, you can use weights in a pattern like this:</p>
<p>[ 1 2 1 ]<br />
[ 2 4 2 ]<br />
[ 1 2 1 ]</p>
<p>This is equivalent to averaging the four 2&#215;2 blocks of pixels surrounding the center point (you can&#8217;t just do 2&#215;2 because it will shift the image diagonally).  Enjoy!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Timothy Farrar</title>
		<link>http://aras-p.info/blog/2009/09/17/strided-blur-and-other-tips-for-ssao/comment-page-1/#comment-20943</link>
		<dc:creator>Timothy Farrar</dc:creator>
		<pubDate>Fri, 18 Sep 2009 14:36:22 +0000</pubDate>
		<guid isPermaLink="false">http://aras-p.info/blog/?p=409#comment-20943</guid>
		<description>Would be interesting to try adjusting filter tap location by a function of VPOS to attempt to break up the interleave pattern (assuming TEX bound with free ALU capacity). Might play havoc on texture cache however.

Might also be interesting to play with temporal feedback in the filtering (like Gears II) but in combination with Ignacio&#039;s suggestion of importance sampling and changing filter position temporally.</description>
		<content:encoded><![CDATA[<p>Would be interesting to try adjusting filter tap location by a function of VPOS to attempt to break up the interleave pattern (assuming TEX bound with free ALU capacity). Might play havoc on texture cache however.</p>
<p>Might also be interesting to play with temporal feedback in the filtering (like Gears II) but in combination with Ignacio&#8217;s suggestion of importance sampling and changing filter position temporally.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aras Pranckevičius</title>
		<link>http://aras-p.info/blog/2009/09/17/strided-blur-and-other-tips-for-ssao/comment-page-1/#comment-20932</link>
		<dc:creator>Aras Pranckevičius</dc:creator>
		<pubDate>Fri, 18 Sep 2009 04:28:04 +0000</pubDate>
		<guid isPermaLink="false">http://aras-p.info/blog/?p=409#comment-20932</guid>
		<description>@imbusy: ok ok. But it works! :)

@icastano: yeah, makes sense.</description>
		<content:encoded><![CDATA[<p>@imbusy: ok ok. But it works! :)</p>
<p>@icastano: yeah, makes sense.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: icastano</title>
		<link>http://aras-p.info/blog/2009/09/17/strided-blur-and-other-tips-for-ssao/comment-page-1/#comment-20928</link>
		<dc:creator>icastano</dc:creator>
		<pubDate>Fri, 18 Sep 2009 00:15:58 +0000</pubDate>
		<guid isPermaLink="false">http://aras-p.info/blog/?p=409#comment-20928</guid>
		<description>Something that I&#039;ve suggested a few times, but never tried myself, is to use some sort of importance sampling. Pixels closer to the center should be sampled at a higher frequency, since they have more important contributions, than pixels with lower contributions. Note that you would also have to readjust the weights. This is basically like the 2D poison disk distribution that ATI used in some of the old demos, but on one dimension only.</description>
		<content:encoded><![CDATA[<p>Something that I&#8217;ve suggested a few times, but never tried myself, is to use some sort of importance sampling. Pixels closer to the center should be sampled at a higher frequency, since they have more important contributions, than pixels with lower contributions. Note that you would also have to readjust the weights. This is basically like the 2D poison disk distribution that ATI used in some of the old demos, but on one dimension only.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: imbusy</title>
		<link>http://aras-p.info/blog/2009/09/17/strided-blur-and-other-tips-for-ssao/comment-page-1/#comment-20921</link>
		<dc:creator>imbusy</dc:creator>
		<pubDate>Thu, 17 Sep 2009 19:32:58 +0000</pubDate>
		<guid isPermaLink="false">http://aras-p.info/blog/?p=409#comment-20921</guid>
		<description>Using bilateral or just discarding - it&#039;s still not separable.</description>
		<content:encoded><![CDATA[<p>Using bilateral or just discarding &#8211; it&#8217;s still not separable.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aras Pranckevičius</title>
		<link>http://aras-p.info/blog/2009/09/17/strided-blur-and-other-tips-for-ssao/comment-page-1/#comment-20917</link>
		<dc:creator>Aras Pranckevičius</dc:creator>
		<pubDate>Thu, 17 Sep 2009 17:46:18 +0000</pubDate>
		<guid isPermaLink="false">http://aras-p.info/blog/?p=409#comment-20917</guid>
		<description>@imbusy: well yeah, it&#039;s not bilateral in fact. I&#039;m just doing kinda-Gaussian, and discarding samples that don&#039;t meet some criteria.

@steve: word!

@ReJ: I don&#039;t remember us using it, actually. Or I have already forgot about it :)</description>
		<content:encoded><![CDATA[<p>@imbusy: well yeah, it&#8217;s not bilateral in fact. I&#8217;m just doing kinda-Gaussian, and discarding samples that don&#8217;t meet some criteria.</p>
<p>@steve: word!</p>
<p>@ReJ: I don&#8217;t remember us using it, actually. Or I have already forgot about it :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Real-Time Rendering &#187; Blog Archive &#187; Clearing the Queue</title>
		<link>http://aras-p.info/blog/2009/09/17/strided-blur-and-other-tips-for-ssao/comment-page-1/#comment-20916</link>
		<dc:creator>Real-Time Rendering &#187; Blog Archive &#187; Clearing the Queue</dc:creator>
		<pubDate>Thu, 17 Sep 2009 17:35:39 +0000</pubDate>
		<guid isPermaLink="false">http://aras-p.info/blog/?p=409#comment-20916</guid>
		<description>[...] This is one more reason the Internet is great: an in-depth article on normal compression techniques, weighing the pros and cons of each. This sort of article would probably not see the light of day in traditional publications, even Game Developer - too long for them, but all the info presented here is worthwhile for a developer making this decision. Aras&#8217; blog has other nice bits such as packing a float into RGBA and SSAO blurring. [...]</description>
		<content:encoded><![CDATA[<p>[...] This is one more reason the Internet is great: an in-depth article on normal compression techniques, weighing the pros and cons of each. This sort of article would probably not see the light of day in traditional publications, even Game Developer &#8211; too long for them, but all the info presented here is worthwhile for a developer making this decision. Aras&#8217; blog has other nice bits such as packing a float into RGBA and SSAO blurring. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ReJ</title>
		<link>http://aras-p.info/blog/2009/09/17/strided-blur-and-other-tips-for-ssao/comment-page-1/#comment-20914</link>
		<dc:creator>ReJ</dc:creator>
		<pubDate>Thu, 17 Sep 2009 16:24:46 +0000</pubDate>
		<guid isPermaLink="false">http://aras-p.info/blog/?p=409#comment-20914</guid>
		<description>@Aras: I can&#039;t believe you didn&#039;t knew this &quot;trick&quot;... I&#039;m pretty sure we&#039;ve been doing it in late Interamotion days even.</description>
		<content:encoded><![CDATA[<p>@Aras: I can&#8217;t believe you didn&#8217;t knew this &#8220;trick&#8221;&#8230; I&#8217;m pretty sure we&#8217;ve been doing it in late Interamotion days even.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: steve</title>
		<link>http://aras-p.info/blog/2009/09/17/strided-blur-and-other-tips-for-ssao/comment-page-1/#comment-20905</link>
		<dc:creator>steve</dc:creator>
		<pubDate>Thu, 17 Sep 2009 09:24:45 +0000</pubDate>
		<guid isPermaLink="false">http://aras-p.info/blog/?p=409#comment-20905</guid>
		<description>I discovered something similar when doing PCSS on a project last year - that although I should have needed to increase the number of PCF samples as the kernel widened, it was surprising what you could actually get away with in practice. And interestingly, the more detailed / non-uniform your diffuse textures are, the more you can get away with, because the diffuse channel makes it even harder to spot the &#039;dithering&#039; patterns.

Moral of the story, theory sucks, random experimentation FTW :)</description>
		<content:encoded><![CDATA[<p>I discovered something similar when doing PCSS on a project last year &#8211; that although I should have needed to increase the number of PCF samples as the kernel widened, it was surprising what you could actually get away with in practice. And interestingly, the more detailed / non-uniform your diffuse textures are, the more you can get away with, because the diffuse channel makes it even harder to spot the &#8216;dithering&#8217; patterns.</p>
<p>Moral of the story, theory sucks, random experimentation FTW :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: imbusy</title>
		<link>http://aras-p.info/blog/2009/09/17/strided-blur-and-other-tips-for-ssao/comment-page-1/#comment-20904</link>
		<dc:creator>imbusy</dc:creator>
		<pubDate>Thu, 17 Sep 2009 09:00:53 +0000</pubDate>
		<guid isPermaLink="false">http://aras-p.info/blog/?p=409#comment-20904</guid>
		<description>It shouldn&#039;t be separable, but hey, you said it yourself, we&#039;re not building nuclear reactors :)</description>
		<content:encoded><![CDATA[<p>It shouldn&#8217;t be separable, but hey, you said it yourself, we&#8217;re not building nuclear reactors :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aras Pranckevičius</title>
		<link>http://aras-p.info/blog/2009/09/17/strided-blur-and-other-tips-for-ssao/comment-page-1/#comment-20903</link>
		<dc:creator>Aras Pranckevičius</dc:creator>
		<pubDate>Thu, 17 Sep 2009 08:55:56 +0000</pubDate>
		<guid isPermaLink="false">http://aras-p.info/blog/?p=409#comment-20903</guid>
		<description>@imbusy: yeah, something like that. I&#039;m not sure if it&#039;s exactly &quot;bilateral&quot;, but basically it discards samples based on depth/normal difference.</description>
		<content:encoded><![CDATA[<p>@imbusy: yeah, something like that. I&#8217;m not sure if it&#8217;s exactly &#8220;bilateral&#8221;, but basically it discards samples based on depth/normal difference.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: imbusy</title>
		<link>http://aras-p.info/blog/2009/09/17/strided-blur-and-other-tips-for-ssao/comment-page-1/#comment-20902</link>
		<dc:creator>imbusy</dc:creator>
		<pubDate>Thu, 17 Sep 2009 08:50:20 +0000</pubDate>
		<guid isPermaLink="false">http://aras-p.info/blog/?p=409#comment-20902</guid>
		<description>So that&#039;s bilateral blur you&#039;re using, not gaussian, right? Otherwise how do you get it to respect the boundaries?</description>
		<content:encoded><![CDATA[<p>So that&#8217;s bilateral blur you&#8217;re using, not gaussian, right? Otherwise how do you get it to respect the boundaries?</p>
]]></content:encoded>
	</item>
</channel>
</rss>

