<?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: Hemicube Rendering and Integration	</title>
	<atom:link href="https://the-witness.net/news/2010/09/hemicube-rendering-and-integration/feed/" rel="self" type="application/rss+xml" />
	<link>https://the-witness.net/news/2010/09/hemicube-rendering-and-integration/</link>
	<description>Explore an abandoned island.</description>
	<lastBuildDate>Fri, 23 Jun 2017 07:12:13 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.9</generator>
	<item>
		<title>
		By: Stefan Dyulgerov		</title>
		<link>https://the-witness.net/news/2010/09/hemicube-rendering-and-integration/comment-page-1/#comment-8746472</link>

		<dc:creator><![CDATA[Stefan Dyulgerov]]></dc:creator>
		<pubDate>Fri, 23 Jun 2017 07:12:13 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=244#comment-8746472</guid>

					<description><![CDATA[Hi,

Can you update the link to the master thesis?
The old one seems broken, but this one seems to work fine:

https://pdfs.semanticscholar.org/1f23/57fc5a6102b745eb37ba1ab03a9c382de1f2.pdf]]></description>
			<content:encoded><![CDATA[<p>Hi,</p>
<p>Can you update the link to the master thesis?<br />
The old one seems broken, but this one seems to work fine:</p>
<p><a href="https://pdfs.semanticscholar.org/1f23/57fc5a6102b745eb37ba1ab03a9c382de1f2.pdf" rel="nofollow ugc">https://pdfs.semanticscholar.org/1f23/57fc5a6102b745eb37ba1ab03a9c382de1f2.pdf</a></p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Hugo Elias		</title>
		<link>https://the-witness.net/news/2010/09/hemicube-rendering-and-integration/comment-page-1/#comment-11571</link>

		<dc:creator><![CDATA[Hugo Elias]]></dc:creator>
		<pubDate>Sun, 25 Mar 2012 21:11:09 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=244#comment-11571</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://the-witness.net/news/2010/09/hemicube-rendering-and-integration/comment-page-1/#comment-1215&quot;&gt;Stephan Ahonen&lt;/a&gt;.

I&#039;m glad you liked my site. Sadly I can&#039;t update it for 2 reasons: 1) I don&#039;t do much graphics progamming any more. Moved to robotics, and was, for a time, trying to write a CAD package for designing PCBs (www.liquidpcb.org). 2) I don&#039;t have access to my own site any more, so I can&#039;t add articles or fix errors. :(]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://the-witness.net/news/2010/09/hemicube-rendering-and-integration/comment-page-1/#comment-1215">Stephan Ahonen</a>.</p>
<p>I&#8217;m glad you liked my site. Sadly I can&#8217;t update it for 2 reasons: 1) I don&#8217;t do much graphics progamming any more. Moved to robotics, and was, for a time, trying to write a CAD package for designing PCBs (www.liquidpcb.org). 2) I don&#8217;t have access to my own site any more, so I can&#8217;t add articles or fix errors. :(</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Josh W		</title>
		<link>https://the-witness.net/news/2010/09/hemicube-rendering-and-integration/comment-page-1/#comment-3009</link>

		<dc:creator><![CDATA[Josh W]]></dc:creator>
		<pubDate>Thu, 28 Apr 2011 02:32:54 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=244#comment-3009</guid>

					<description><![CDATA[Ever get round to part 2?]]></description>
			<content:encoded><![CDATA[<p>Ever get round to part 2?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Nathan Reed		</title>
		<link>https://the-witness.net/news/2010/09/hemicube-rendering-and-integration/comment-page-1/#comment-1351</link>

		<dc:creator><![CDATA[Nathan Reed]]></dc:creator>
		<pubDate>Fri, 15 Oct 2010 06:05:28 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=244#comment-1351</guid>

					<description><![CDATA[@Ignacio Thanks, that cleared it up.]]></description>
			<content:encoded><![CDATA[<p>@Ignacio Thanks, that cleared it up.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Ignacio Castaño		</title>
		<link>https://the-witness.net/news/2010/09/hemicube-rendering-and-integration/comment-page-1/#comment-1327</link>

		<dc:creator><![CDATA[Ignacio Castaño]]></dc:creator>
		<pubDate>Wed, 13 Oct 2010 23:02:35 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=244#comment-1327</guid>

					<description><![CDATA[@Nathan Imagine the intersection between the floor and a wall. Along the intersection, some of the floor texels are partially outside of the floor and inside the wall. If the geometry is manifold, there is an edge along the intersection and the floor does not extend below the wall. 

Now you want to compute the lighting of these texels near the wall. However, the center of some of these texels lies outside of the floor polygon (behind the wall). The solution that I propose is to clip the texel quad against the floor polygon and instead of using the center of the quad, use the center of the clipped quad. That&#039;s what&#039;s usually known as centroid sampling and it guarantees that the sampling point is outside of the wall.

Note that on the GPU the centroid is computed approximately numerically by taking a fixed number of samples. In this case, since we don&#039;t have overlaps in the parameterization, we can compute the centroid analytically.]]></description>
			<content:encoded><![CDATA[<p>@Nathan Imagine the intersection between the floor and a wall. Along the intersection, some of the floor texels are partially outside of the floor and inside the wall. If the geometry is manifold, there is an edge along the intersection and the floor does not extend below the wall. </p>
<p>Now you want to compute the lighting of these texels near the wall. However, the center of some of these texels lies outside of the floor polygon (behind the wall). The solution that I propose is to clip the texel quad against the floor polygon and instead of using the center of the quad, use the center of the clipped quad. That&#8217;s what&#8217;s usually known as centroid sampling and it guarantees that the sampling point is outside of the wall.</p>
<p>Note that on the GPU the centroid is computed approximately numerically by taking a fixed number of samples. In this case, since we don&#8217;t have overlaps in the parameterization, we can compute the centroid analytically.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Nathan Reed		</title>
		<link>https://the-witness.net/news/2010/09/hemicube-rendering-and-integration/comment-page-1/#comment-1312</link>

		<dc:creator><![CDATA[Nathan Reed]]></dc:creator>
		<pubDate>Wed, 13 Oct 2010 01:22:56 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=244#comment-1312</guid>

					<description><![CDATA[Ignacio, could you elaborate a bit on the centroid-sampling part?  I confess I didn&#039;t understand it at all.  &quot;Without centroid sampling the location where the hemicube is rendered from can easily end up being outside of the polygon that contains the sample and thus inside another volume.&quot;  I&#039;m confused - which polygon are we talking about?  What is &quot;another volume&quot;?]]></description>
			<content:encoded><![CDATA[<p>Ignacio, could you elaborate a bit on the centroid-sampling part?  I confess I didn&#8217;t understand it at all.  &#8220;Without centroid sampling the location where the hemicube is rendered from can easily end up being outside of the polygon that contains the sample and thus inside another volume.&#8221;  I&#8217;m confused &#8211; which polygon are we talking about?  What is &#8220;another volume&#8221;?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: a		</title>
		<link>https://the-witness.net/news/2010/09/hemicube-rendering-and-integration/comment-page-1/#comment-1289</link>

		<dc:creator><![CDATA[a]]></dc:creator>
		<pubDate>Fri, 08 Oct 2010 16:07:03 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=244#comment-1289</guid>

					<description><![CDATA[hey guis! i found a site that deals with maze&#039;s architecture and algorithms. i thought it would be interesting for followers of the witness and people interested in spaces... like inInception...

you guys provably read it already, but it&#039;s very informative and educational. really interesting..

http://www.astrolog.org/labyrnth/algrithm.htm

have fun making those trees behave and hemicubing stuff!]]></description>
			<content:encoded><![CDATA[<p>hey guis! i found a site that deals with maze&#8217;s architecture and algorithms. i thought it would be interesting for followers of the witness and people interested in spaces&#8230; like inInception&#8230;</p>
<p>you guys provably read it already, but it&#8217;s very informative and educational. really interesting..</p>
<p><a href="http://www.astrolog.org/labyrnth/algrithm.htm" rel="nofollow ugc">http://www.astrolog.org/labyrnth/algrithm.htm</a></p>
<p>have fun making those trees behave and hemicubing stuff!</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: justin		</title>
		<link>https://the-witness.net/news/2010/09/hemicube-rendering-and-integration/comment-page-1/#comment-1286</link>

		<dc:creator><![CDATA[justin]]></dc:creator>
		<pubDate>Thu, 07 Oct 2010 04:21:51 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=244#comment-1286</guid>

					<description><![CDATA[Ignacio, is this the first time a game does this or is this something normal that games have already and you just don&#039;t want to use a pre built engine but create your own from scratch?

b/c it sounds as if it&#039;s something revolutionary or something that is noth normal in games or that a lot of games don&#039;t have.

sorry, i&#039;m not a technical person so all that was like reading japanese or something... i&#039;m bearly in my first year of computer science in high school so all the 3d space thing is unknown to me.

the pictures look very pretty, that castle like tower looks very cool and fantasy yet real like. do i even make sense? i remember a few years ago in the Braid blog that Jonathan was talking about &quot;iconic landmarks&quot; and he talked about how iconic things in games should be tied to interactivity (since that is what the meadium is supposed to be about, actual gameplay) with places like 2 fort and de-dust that encourtage sertain types of gameplays and then spaces that just look cool, like that &quot;hell?&quot; level in Painkiller.

i remembered this b/c the concept art of that tower and the windmill look super iconic and immediately recognisable. i wander how interactivity will be in those spaces...

good luck finding all the answers and algorithms and doing all the math, really best of wishes. and be sure to report back to tell us how you did it!]]></description>
			<content:encoded><![CDATA[<p>Ignacio, is this the first time a game does this or is this something normal that games have already and you just don&#8217;t want to use a pre built engine but create your own from scratch?</p>
<p>b/c it sounds as if it&#8217;s something revolutionary or something that is noth normal in games or that a lot of games don&#8217;t have.</p>
<p>sorry, i&#8217;m not a technical person so all that was like reading japanese or something&#8230; i&#8217;m bearly in my first year of computer science in high school so all the 3d space thing is unknown to me.</p>
<p>the pictures look very pretty, that castle like tower looks very cool and fantasy yet real like. do i even make sense? i remember a few years ago in the Braid blog that Jonathan was talking about &#8220;iconic landmarks&#8221; and he talked about how iconic things in games should be tied to interactivity (since that is what the meadium is supposed to be about, actual gameplay) with places like 2 fort and de-dust that encourtage sertain types of gameplays and then spaces that just look cool, like that &#8220;hell?&#8221; level in Painkiller.</p>
<p>i remembered this b/c the concept art of that tower and the windmill look super iconic and immediately recognisable. i wander how interactivity will be in those spaces&#8230;</p>
<p>good luck finding all the answers and algorithms and doing all the math, really best of wishes. and be sure to report back to tell us how you did it!</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: David Amador		</title>
		<link>https://the-witness.net/news/2010/09/hemicube-rendering-and-integration/comment-page-1/#comment-1220</link>

		<dc:creator><![CDATA[David Amador]]></dc:creator>
		<pubDate>Thu, 30 Sep 2010 21:56:38 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=244#comment-1220</guid>

					<description><![CDATA[Awesome article!
Keep &#039;em coming =)]]></description>
			<content:encoded><![CDATA[<p>Awesome article!<br />
Keep &#8217;em coming =)</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Stephan Ahonen		</title>
		<link>https://the-witness.net/news/2010/09/hemicube-rendering-and-integration/comment-page-1/#comment-1215</link>

		<dc:creator><![CDATA[Stephan Ahonen]]></dc:creator>
		<pubDate>Thu, 30 Sep 2010 19:39:52 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=244#comment-1215</guid>

					<description><![CDATA[I really wish that Hugo Elias had kept maintaining his site with ever-more-modern graphics algorithms. It used to be one of my favorite sites, but the only thing on it that&#039;s really applicable anymore is the radiosity article.]]></description>
			<content:encoded><![CDATA[<p>I really wish that Hugo Elias had kept maintaining his site with ever-more-modern graphics algorithms. It used to be one of my favorite sites, but the only thing on it that&#8217;s really applicable anymore is the radiosity article.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: pascal		</title>
		<link>https://the-witness.net/news/2010/09/hemicube-rendering-and-integration/comment-page-1/#comment-1210</link>

		<dc:creator><![CDATA[pascal]]></dc:creator>
		<pubDate>Thu, 30 Sep 2010 10:49:16 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=244#comment-1210</guid>

					<description><![CDATA[Probably a stupid question, since I don&#039;t know anything about the matter: Why is the integration being done on the CPU? Couldn&#039;t you use a GPU shader to integrate from the hemicube texture to an even smaller output texture and only copy that to the CPU?]]></description>
			<content:encoded><![CDATA[<p>Probably a stupid question, since I don&#8217;t know anything about the matter: Why is the integration being done on the CPU? Couldn&#8217;t you use a GPU shader to integrate from the hemicube texture to an even smaller output texture and only copy that to the CPU?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Roel		</title>
		<link>https://the-witness.net/news/2010/09/hemicube-rendering-and-integration/comment-page-1/#comment-1208</link>

		<dc:creator><![CDATA[Roel]]></dc:creator>
		<pubDate>Thu, 30 Sep 2010 09:57:30 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=244#comment-1208</guid>

					<description><![CDATA[That is just an awesome post, thanks!]]></description>
			<content:encoded><![CDATA[<p>That is just an awesome post, thanks!</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Stefan Kamoda		</title>
		<link>https://the-witness.net/news/2010/09/hemicube-rendering-and-integration/comment-page-1/#comment-1207</link>

		<dc:creator><![CDATA[Stefan Kamoda]]></dc:creator>
		<pubDate>Thu, 30 Sep 2010 09:37:54 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=244#comment-1207</guid>

					<description><![CDATA[Great post Ignacio, that was a really good read. Looking forward to part two.]]></description>
			<content:encoded><![CDATA[<p>Great post Ignacio, that was a really good read. Looking forward to part two.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Ignacio Castaño		</title>
		<link>https://the-witness.net/news/2010/09/hemicube-rendering-and-integration/comment-page-1/#comment-1206</link>

		<dc:creator><![CDATA[Ignacio Castaño]]></dc:creator>
		<pubDate>Thu, 30 Sep 2010 06:04:37 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=244#comment-1206</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://the-witness.net/news/2010/09/hemicube-rendering-and-integration/comment-page-1/#comment-1205&quot;&gt;Daniel&lt;/a&gt;.

@Daniel: Irradiance Caching is the topic of the next post. The main reason why I implemented the integration on the CPU was that the computation of the irradiance gradients was complex enough to make it worth prototyping it on the CPU. 

I thought about using NVIRT, since I&#039;m somewhat familiar with it, but there are some disadvantages:
- Having to write and maintain surface shaders for all our materials.
- Dealing with texture limitations in NVIRT. We currently use a lot more textures than NVIRT supports.
- KD-Tree construction times used to be pretty slow, but maybe that has changed recently. The tracer would not be suitable for quick prototyping if you have to rebuild the hierarchy and wait a long time every time you move an object, and it might be too slow if every independent object uses a separate acceleration structure.

On the other side, it would also have other advantages... I would love to hear people&#039;s experiences in this regard.]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://the-witness.net/news/2010/09/hemicube-rendering-and-integration/comment-page-1/#comment-1205">Daniel</a>.</p>
<p>@Daniel: Irradiance Caching is the topic of the next post. The main reason why I implemented the integration on the CPU was that the computation of the irradiance gradients was complex enough to make it worth prototyping it on the CPU. </p>
<p>I thought about using NVIRT, since I&#8217;m somewhat familiar with it, but there are some disadvantages:<br />
&#8211; Having to write and maintain surface shaders for all our materials.<br />
&#8211; Dealing with texture limitations in NVIRT. We currently use a lot more textures than NVIRT supports.<br />
&#8211; KD-Tree construction times used to be pretty slow, but maybe that has changed recently. The tracer would not be suitable for quick prototyping if you have to rebuild the hierarchy and wait a long time every time you move an object, and it might be too slow if every independent object uses a separate acceleration structure.</p>
<p>On the other side, it would also have other advantages&#8230; I would love to hear people&#8217;s experiences in this regard.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Daniel		</title>
		<link>https://the-witness.net/news/2010/09/hemicube-rendering-and-integration/comment-page-1/#comment-1205</link>

		<dc:creator><![CDATA[Daniel]]></dc:creator>
		<pubDate>Thu, 30 Sep 2010 03:05:40 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=244#comment-1205</guid>

					<description><![CDATA[Awesome post!  That must have taken a long time to put together with all the nice diagrams and debug visualizations.  

I&#039;m a little bit &#039;grossed out&#039; by the choice to use hemicubes on the GPU due to the inflexibility and CPU scene traversal bottlenecks instead of ray tracing which is trivially parallelizable and much more flexible (importance sampling), but it&#039;s really useful to see all the stuff that&#039;s involved with that approach.  The async transfer in DX9 is especially interesting, no doubt I&#039;ll find a use for that somewhere.  

Since you are reading the data back to the CPU, is there a reason you can&#039;t use irradiance caching to reduce the number of final gathers and speed up the process?  Irradiance caching is also really useful for smoothing the results too because you can just interpolate in a second pass with larger thresholds than you used in the first pass when deciding where to place samples.]]></description>
			<content:encoded><![CDATA[<p>Awesome post!  That must have taken a long time to put together with all the nice diagrams and debug visualizations.  </p>
<p>I&#8217;m a little bit &#8216;grossed out&#8217; by the choice to use hemicubes on the GPU due to the inflexibility and CPU scene traversal bottlenecks instead of ray tracing which is trivially parallelizable and much more flexible (importance sampling), but it&#8217;s really useful to see all the stuff that&#8217;s involved with that approach.  The async transfer in DX9 is especially interesting, no doubt I&#8217;ll find a use for that somewhere.  </p>
<p>Since you are reading the data back to the CPU, is there a reason you can&#8217;t use irradiance caching to reduce the number of final gathers and speed up the process?  Irradiance caching is also really useful for smoothing the results too because you can just interpolate in a second pass with larger thresholds than you used in the first pass when deciding where to place samples.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: safetydank		</title>
		<link>https://the-witness.net/news/2010/09/hemicube-rendering-and-integration/comment-page-1/#comment-1201</link>

		<dc:creator><![CDATA[safetydank]]></dc:creator>
		<pubDate>Thu, 30 Sep 2010 00:40:24 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=244#comment-1201</guid>

					<description><![CDATA[Great post clearly explained. It&#039;s really interesting to see the implementation evolve from prototype to production.]]></description>
			<content:encoded><![CDATA[<p>Great post clearly explained. It&#8217;s really interesting to see the implementation evolve from prototype to production.</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
