<?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>UncleZeiv's Corner &#187; GSoC 2008</title>
	<atom:link href="http://unclezeiv.kerid.org/category/gsoc-2008/feed" rel="self" type="application/rss+xml" />
	<link>http://unclezeiv.kerid.org</link>
	<description>frequently lost in thought</description>
	<lastBuildDate>Mon, 15 Jun 2009 23:37:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Still here</title>
		<link>http://unclezeiv.kerid.org/2009/06/still-here</link>
		<comments>http://unclezeiv.kerid.org/2009/06/still-here#comments</comments>
		<pubDate>Mon, 15 Jun 2009 23:37:17 +0000</pubDate>
		<dc:creator>UncleZeiv</dc:creator>
				<category><![CDATA[Blender]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[GSoC 2008]]></category>
		<category><![CDATA[Graphics]]></category>

		<guid isPermaLink="false">http://unclezeiv.kerid.org/?p=80</guid>
		<description><![CDATA[I can&#8217;t believe it&#8217;s already six months since my last post here. It&#8217;s definitely time to resume regular blogging &#8212; also broadening the scope of this blog from Blender to other technical stuff as well.
In Milan on Wednesday 17
Even though I&#8217;ve not been active as a Blender developer in the last few months, I kept [...]]]></description>
			<content:encoded><![CDATA[<p>I can&#8217;t believe it&#8217;s already six months since my last post here. It&#8217;s definitely time to resume regular blogging &#8212; also broadening the scope of this blog from Blender to other technical stuff as well.</p>
<h4>In Milan on Wednesday 17</h4>
<p>Even though I&#8217;ve not been active as a Blender developer in the last few months, I kept lurking the mailing lists in an effort to stay up-to-date on the latest developments &#8212; and 2.5 in particular.</p>
<p>On Wednesday 17, together with a bunch of fellow Italian blenderheads, <a title="Page in Italian" href="http://it.hackmeeting.org/warm-up#183" target="_blank">we will be talking about our dear 3d suite</a> as part of the <a title="Page in Italian" href="http://it.hackmeeting.org/warm-up" target="_blank">warm-up meetings</a> of the <a title="Page in Italian" href="http://it.hackmeeting.org/home" target="_blank">Italian hackmeeting 2009</a>.</p>
<h4>Plans for the Lightcuts branch</h4>
<p>Recent efforts, especially those led by the <strong>awesome cuban coder</strong> nicknamed <a href="http://farsthary.wordpress.com/" target="_blank">Farsthary</a>, have made it clear that sooner or later (but probably sooner), true Global Illumination will be available to Blender Internal.</p>
<p>Apart from that, in a number of discussions on the mailing list, it become apparent that the problem with Blender Internal is that its amazingly broad feature-set <strong>lacks a bit of overall vision</strong>, so that its not always clear how any two features interact. It seems that the post-2.5 period will be dedicated to <a href="http://lists.blender.org/pipermail/bf-committers/2009-March/022823.html">some sort of design refactoring of Blender Internal</a> so that different render paths can be handled more smoothly, both on the coder&#8217;s and on the user&#8217;s side.</p>
<p>I think that now it makes sense to wait for that to happen before attempting the integration of the Lightcuts stuff.</p>
<p>Moreover, I&#8217;m also <strong>very glad</strong> to hear that André Susando Pinto a.k.a <a href="http://wiki.blender.org/index.php/User:Jaguarandi" target="_blank">Jaguarandi</a>, great developer and past gsoccer colleague of mine, is again a gsoccer this year working on <a href="http://socghop.appspot.com/student_project/show/google/gsoc2009/blender/t124021852044" target="_blank">performance improvements to the internal raytracer</a>. He&#8217;s the right guy to do that, after the convincing job he did last year on the BVH stuff. His work for 2009 will turn out <strong>extremely beneficial</strong> for my Lightcuts branch, which relies on the raytracer pretty heavily.</p>
<p>So my next steps are: 1) finishing the &#8220;reconstruction cuts&#8221; part of the algorithm and 2) porting the branch over to 2.5 &#8212; but not necessarily in this order.</p>
<p>In the meanwhile, I would like to spend my small amount of spare time to help out on 2.5 which is <strong>coming along really well</strong>: I&#8217;m truly impressed! Congratulations to everyone that has been working on it so far.</p>
]]></content:encoded>
			<wfw:commentRss>http://unclezeiv.kerid.org/2009/06/still-here/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>It finally arrived</title>
		<link>http://unclezeiv.kerid.org/2008/12/it-finally-arrived</link>
		<comments>http://unclezeiv.kerid.org/2008/12/it-finally-arrived#comments</comments>
		<pubDate>Fri, 05 Dec 2008 14:57:25 +0000</pubDate>
		<dc:creator>UncleZeiv</dc:creator>
				<category><![CDATA[Blender]]></category>
		<category><![CDATA[GSoC 2008]]></category>

		<guid isPermaLink="false">http://unclezeiv.kerid.org/?p=73</guid>
		<description><![CDATA[It took a while but it finally arrived!
Even though this much awaited t-shirt is now secured in my hands, I&#8217;m still committed to improve my project. Admittedly I&#8217;ve not committed much recently (sorry for the pun) but I&#8217;m still working on it, albeit at a slow pace. Stay tuned!
]]></description>
			<content:encoded><![CDATA[<p>It took a while but it finally arrived!</p>
<div id="attachment_74" class="wp-caption aligncenter" style="width: 410px"><a href="http://unclezeiv.kerid.org/download/2008/12/geeky_t-shirts.jpg"><img class="size-medium wp-image-74" title="Geeky T-Shirts" src="http://unclezeiv.kerid.org/download/2008/12/geeky_t-shirts-400x300.jpg" alt="My collection of geeky t-shirts just got a lot better!" width="400" height="300" /></a><p class="wp-caption-text">My collection of geeky t-shirts just got a lot better!</p></div>
<p>Even though this much awaited t-shirt is now secured in my hands, I&#8217;m still committed to improve my project. Admittedly I&#8217;ve not committed much recently (sorry for the pun) but I&#8217;m still working on it, albeit at a slow pace. Stay tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://unclezeiv.kerid.org/2008/12/it-finally-arrived/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Leaving for Blender Conference</title>
		<link>http://unclezeiv.kerid.org/2008/10/leaving-for-blender-conference</link>
		<comments>http://unclezeiv.kerid.org/2008/10/leaving-for-blender-conference#comments</comments>
		<pubDate>Wed, 22 Oct 2008 23:40:02 +0000</pubDate>
		<dc:creator>UncleZeiv</dc:creator>
				<category><![CDATA[Blender]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[GSoC 2008]]></category>
		<category><![CDATA[Graphics]]></category>

		<guid isPermaLink="false">http://unclezeiv.kerid.org/?p=64</guid>
		<description><![CDATA[Tomorrow I&#8217;ll head towards Amsterdam to attend my third Blender Conference in a row. This time, besides meeting the usual lot of cool people, I&#8217;m also going to talk about my work on lightcuts &#8212; and I hope to get some useful feedback as well.
Anyway: in the last couple of days I took the time [...]]]></description>
			<content:encoded><![CDATA[<p>Tomorrow I&#8217;ll head towards Amsterdam to attend my third <a href="http://www.blender.org/community/blender-conference/" target="_blank">Blender Conference</a> in a row. This time, besides meeting the usual lot of cool people, I&#8217;m also going to talk about my work on lightcuts &#8212; and I hope to get some useful feedback as well.</p>
<p>Anyway: in the last couple of days I took the time to implement some minor stuff I had been postponing for a while.</p>
<p>First of all, <strong>support for baking</strong> is now in. Just bake with the &#8220;Enable Lightcuts&#8221; toggle pressed: it should work now. I have to admit that this did not go through much testing, so please report any strange behavior.</p>
<p>A second addition was <strong>compatibility with the SSS feature</strong> from Blender Internal. Previously, it used to crash outright. Now, it gives pretty good and smooth results:</p>
<div id="attachment_65" class="wp-caption aligncenter" style="width: 410px"><a href="http://unclezeiv.kerid.org/download/2008/10/sss.png"><img class="size-medium wp-image-65" title="SSS + Lightcuts" src="http://unclezeiv.kerid.org/download/2008/10/sss-400x300.png" alt="SSS + Lightcuts" width="400" height="300" /></a><p class="wp-caption-text">SSS + Lightcuts (actually 1024 lights, not 8k as stamped)</p></div>
<p>(Apologies to Maurice R., who asked for this a long time ago&#8230; and it was actually a pretty easy fix!)</p>
<p>The possibility to have <strong>meshlights</strong> was another frequently requested feature. I just committed some initial code to support it.</p>
<div id="attachment_66" class="wp-caption aligncenter" style="width: 410px"><a href="http://unclezeiv.kerid.org/download/2008/10/meshlight.png"><img class="size-medium wp-image-66" title="Meshlight" src="http://unclezeiv.kerid.org/download/2008/10/meshlight-400x300.png" alt="Meshlight" width="400" height="300" /></a><p class="wp-caption-text">Suzanne is the only light in this scene</p></div>
<p>It works automatically for all materials having an Emit value &gt; 0.0. Unfortunately the object itself gets a completely flat shading. This will probably require a different handling UI-wise in the future, avoiding the Emit value altogether.</p>
<p>Finally, I also implemented some algorithmic improvements recently described <a href="http://www.graphics.cornell.edu/~bjw/IRT08Agglomerative.pdf" target="_blank">in a paper</a> by the <a href="http://www.graphics.cornell.edu/~bjw/papers.html" target="_blank">original authors</a> of the Lightcuts algorithm. According to them, this should lead to faster tree building times and better quality trees, which have in turn a positive effect on rendering times. Actually the improvements are barely noticeable most of the time but at the very least it simplifies code.</p>
]]></content:encoded>
			<wfw:commentRss>http://unclezeiv.kerid.org/2008/10/leaving-for-blender-conference/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Lightcuts: multiple representatives</title>
		<link>http://unclezeiv.kerid.org/2008/09/lightcuts-multiple-representatives</link>
		<comments>http://unclezeiv.kerid.org/2008/09/lightcuts-multiple-representatives#comments</comments>
		<pubDate>Sun, 28 Sep 2008 09:13:41 +0000</pubDate>
		<dc:creator>UncleZeiv</dc:creator>
				<category><![CDATA[Blender]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[GSoC 2008]]></category>
		<category><![CDATA[Graphics]]></category>

		<guid isPermaLink="false">http://unclezeiv.kerid.org/?p=61</guid>
		<description><![CDATA[I finally surrendered and added &#8220;multiple representatives&#8221; to my Lightcuts implementation. This essentially means that you have an option to select noise instead of banding.
When computing the contribution of a cluster, you need to select a representative point light, whose position will be used to compute visibility and whose color will be used to shade [...]]]></description>
			<content:encoded><![CDATA[<p>I finally surrendered and added &#8220;multiple representatives&#8221; to my Lightcuts implementation. This essentially means that you have an option to <strong>select noise instead of banding</strong>.</p>
<p>When computing the contribution of a cluster, you need to select a representative point light, whose position will be used to compute visibility and whose color will be used to shade the pixel. The original Lightcuts paper selects this representative light at a global level. With multiple representatives you choose a different representative at each sample.</p>
<p>The current implementation required some code refactoring, so that I ended up being a bit cautious about correctness &#8212; read: a number of optimizations are still missing. A lot of testing is still required but, as always, I rely upon my <a href="http://blenderartists.org/forum/showthread.php?t=133170" target="_blank">friends at blenderartists</a> who are doing <strong>a wonderful job</strong> stress testing the system and reporting their feedback.</p>
<div id="attachment_62" class="wp-caption aligncenter" style="width: 410px"><a href="http://unclezeiv.kerid.org/download/2008/09/multiple_representatives.png"><img class="size-medium wp-image-62" title="Multiple Representatives" src="http://unclezeiv.kerid.org/download/2008/09/multiple_representatives-400x300.png" alt="Quick comparison of original algorithm vs. multiple representatives option; the latter is currently significantly slower but a number of optimizations are still missing" width="400" height="300" /></a><p class="wp-caption-text">Quick comparison of original algorithm vs. multiple representatives option; the latter is currently significantly slower but a number of optimizations are still missing</p></div>
<p>In different news, the insane amount of bug fixing that has been going on at the end of the <a href="http://www.yofrankie.org/" target="_blank">Apricot project</a>, led many developers to plan <a href="http://lists.blender.org/pipermail/bf-committers/2008-September/021796.html" target="_blank">a new release</a> before diving headfirst into the enormous 2.50 undertaking. As far as I understand, Blender 2.48 will include not only bug fixes but also new features, including some of the <strong>amazing work</strong> my fellow soccers did this summer.</p>
<p>As for my project, while the code itself is in a fairly acceptable shape, it will take more time to merge. Unfortunately, even though the code is not invasive at all, the concept of lightcuts is not that easy to integrate cleanly in the current Blender workflow. And we all know that Ton would rather miss a feature than pollute the user experience with an alien concept; this error has been made in the past and now core developers are stricter on this &#8212; and I don&#8217;t blame them at all. I&#8217;m waiting for the <a href="http://www.blender.org/community/blender-conference/" target="_blank">Blender Conference</a> to have some input or even some enlightening discussions with them about this delicate part of the work.</p>
]]></content:encoded>
			<wfw:commentRss>http://unclezeiv.kerid.org/2008/09/lightcuts-multiple-representatives/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>The future of the Lightcuts GSoC project</title>
		<link>http://unclezeiv.kerid.org/2008/08/the-future-of-the-lightcuts-gsoc-project</link>
		<comments>http://unclezeiv.kerid.org/2008/08/the-future-of-the-lightcuts-gsoc-project#comments</comments>
		<pubDate>Sat, 30 Aug 2008 23:21:55 +0000</pubDate>
		<dc:creator>UncleZeiv</dc:creator>
				<category><![CDATA[Blender]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[GSoC 2008]]></category>
		<category><![CDATA[Graphics]]></category>

		<guid isPermaLink="false">http://unclezeiv.kerid.org/?p=58</guid>
		<description><![CDATA[Next week the Google Summer of Code 2008 will be conclusively over. I will sum up my thoughts on this wonderful experience in a future post, adding some suggestions for prospective applicants as well.
Here, instead, I would like to detail my plans for the future of this project.
Development &#8212; Development will continue, but necessarily at [...]]]></description>
			<content:encoded><![CDATA[<p>Next week the Google Summer of Code 2008 will be conclusively over. I will sum up my thoughts on this wonderful experience in a future post, adding some suggestions for prospective applicants as well.</p>
<p>Here, instead, I would like to detail my plans for the future of this project.</p>
<p><strong>Development</strong> &#8212; Development <strong>will continue</strong>, but necessarily at a <strong>slower pace</strong>. At the end of October I&#8217;ll be attending the <a href="http://www.blender.org/community/blender-conference/" target="_blank">Blender Conference</a> where I would like to show a couple of new features. Apart from that, though, what this project needs now is some &#8220;boring&#8221; refinement.</p>
<p><strong>Blender Internal features</strong> &#8212; I&#8217;ll have to go through all the Blender Internal features and for each of them ponder if it is possible to support it. Unfortunately the very nature of the algorithm makes it impossible to support all features (some of which are pure hacks) but what&#8217;s in and what&#8217;s left out must be clearly stated to users.</p>
<p><strong>Workflow design</strong> &#8212; In my opinion if you want to use Lightcuts, especially if you want to obtain indirect lighting, you have to plan ahead a bit; I can&#8217;t see, in general, the same light rigs being successful in both Blender &#8220;vanilla&#8221; and Blender Lightcuts. Matt Ebb, and many others for that matter, would be happier to see Lightcuts as a less invasive tool. Of course mine is a statement while Matt&#8217;s is a desire, so it&#8217;s easy to agree with both. Anyway, however this &#8220;fight&#8221; ends, I need to figure out how to integrate Lightcuts in Blender from a UI point of view. In this particular area I would like to hear opinions from users.</p>
<p><strong>Merging</strong> &#8212; Some people are afraid that a project living in its own branch is at a greater risk of dying; for sure it&#8217;s at a greater risk of going out of sync. While it&#8217;s true that this project is fairly isolated code-wise, and that development could continue also on trunk, I feel more free to experiment in my own branch. As my confidence with the Blender codebase increases, I could also attempt some bolder refactoring of some rendering engine internals &#8212; and that would be better tested in a branch.</p>
<p>My idea is to merge after the Blender Conference, while the aim for the entire project is to be released in Blender 2.50.</p>
<p>Ok, enough words. Here&#8217;s a <a href="http://hdri.cgtechniques.com/~sponza/" target="_blank">Sponza test</a>, provided by Melon on <a href="http://blenderartists.org/" target="_blank">blenderartists</a>:</p>
<div id="attachment_59" class="wp-caption aligncenter" style="width: 410px"><a href="http://unclezeiv.kerid.org/download/2008/08/sponza3.png"><img class="size-medium wp-image-59" title="Sponza" src="http://unclezeiv.kerid.org/download/2008/08/sponza3-400x300.png" alt="Sponza" width="400" height="300" /></a><p class="wp-caption-text">A Sponza rendering lit by a single area light, with 5 bounces of indirect lighting</p></div>
<p>The <a href="http://blenderartists.org/forum/showthread.php?t=133170" target="_blank">entire thread</a> is worth reading in my opinion.</p>
<p>Ps. &#8212; Next week I won&#8217;t be working on this project, but this is a planned break as I resume my duties so don&#8217;t think I&#8217;m running away!</p>
]]></content:encoded>
			<wfw:commentRss>http://unclezeiv.kerid.org/2008/08/the-future-of-the-lightcuts-gsoc-project/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>More indirect lighting stuff</title>
		<link>http://unclezeiv.kerid.org/2008/08/more-indirect-lighting-stuff</link>
		<comments>http://unclezeiv.kerid.org/2008/08/more-indirect-lighting-stuff#comments</comments>
		<pubDate>Sun, 17 Aug 2008 10:28:11 +0000</pubDate>
		<dc:creator>UncleZeiv</dc:creator>
				<category><![CDATA[Blender]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[GSoC 2008]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[indirect lighting]]></category>

		<guid isPermaLink="false">http://unclezeiv.kerid.org/?p=54</guid>
		<description><![CDATA[This week I have been busy completing the indirect lighting part of my project, but this turned out to be harder than expected. The problem was not particularly the algorithm itself, as I&#8217;m currently implementing a naive variant. As a reader pointed out, the state of the art in instant radiosity is currently Metropolis Instant [...]]]></description>
			<content:encoded><![CDATA[<p>This week I have been busy completing the indirect lighting part of my project, but this turned out to be harder than expected. The problem was not particularly the algorithm itself, as I&#8217;m currently implementing a naive variant. As a reader pointed out, the state of the art in instant radiosity is currently <a href="http://www710.univ-lyon1.fr/~bsegovia/papers/mir.html" target="_blank">Metropolis Instant Radiosity</a> by Benjamin Segovia, but implementing that is not trivial and is left as future work.</p>
<p>I actually had a hard time figuring out <strong>how to read surface colors</strong>, which is something I need to color indirect lights and obtain color bleeding in the end. In the end I came up with some <em>very</em> <strong>hackish code</strong> that for sure wouldn&#8217;t be accepted in trunk. On the other hand I can&#8217;t see a cleaner way to do that without some changes in the existing Blender codebase. I have to talk to some other developer and see what&#8217;s the best thing to do.</p>
<p>Anyway, right now I have the ability to generate 1st and 2nd bounce indirect lighting from area lights, taking colours into account. I was able to obtain a rendering like this one:</p>
<div id="attachment_53" class="wp-caption aligncenter" style="width: 410px"><a href="http://unclezeiv.kerid.org/download/2008/08/unfinished_match_indir.png"><img class="size-medium wp-image-53" title="&quot;Unfinished Match&quot; with indirect lighting" src="http://unclezeiv.kerid.org/download/2008/08/unfinished_match_indir-400x250.png" alt="&quot;Unfinished Match&quot; with indirect lighting" width="400" height="250" /></a><p class="wp-caption-text">&quot;Unfinished Match&quot; with indirect lighting - Tree creation time: 00:04.64 - Lights: 19968 (0l + 0s + 19968o) (10000d + 9968i) - Error rate: 0.020 Max cut: 1000 - Average cut size: 362.88 - Shadow rays: 345.63 (1.73%) </p></div>
<p>The interesting thing is that this model was previously lit by a very complex lighting setup in order to fake indirect lighting. This rendering was obtained by placing <strong>a single area light</strong> behind the window.</p>
<p>Here are some more tests:</p>
<div id="attachment_56" class="wp-caption aligncenter" style="width: 187px"><a href="http://unclezeiv.kerid.org/download/2008/08/test1.png"><img class="size-medium wp-image-56" title="Color bleeding test" src="http://unclezeiv.kerid.org/download/2008/08/test1-177x400.png" alt="Color bleeding test" width="177" height="400" /></a><p class="wp-caption-text">Here there&#39;s an area light near the wall, turned upwards at 45°.</p></div>
<div id="attachment_55" class="wp-caption aligncenter" style="width: 276px"><a href="http://unclezeiv.kerid.org/download/2008/08/h2.png"><img class="size-medium wp-image-55" title="Hangar test" src="http://unclezeiv.kerid.org/download/2008/08/h2-266x400.png" alt="Hangar test" width="266" height="400" /></a><p class="wp-caption-text">Hangar test - Here I exaggerated indirect lighting through post-process.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://unclezeiv.kerid.org/2008/08/more-indirect-lighting-stuff/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Indirect lighting teaser</title>
		<link>http://unclezeiv.kerid.org/2008/08/indirect-lighting-teaser</link>
		<comments>http://unclezeiv.kerid.org/2008/08/indirect-lighting-teaser#comments</comments>
		<pubDate>Sun, 10 Aug 2008 11:57:44 +0000</pubDate>
		<dc:creator>UncleZeiv</dc:creator>
				<category><![CDATA[Blender]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[GSoC 2008]]></category>
		<category><![CDATA[Graphics]]></category>

		<guid isPermaLink="false">http://unclezeiv.kerid.org/?p=45</guid>
		<description><![CDATA[This week I&#8217;ve been busy with something rather unexciting: speeding up the light tree creation time. You might remember that, initially, I just implemented a O(n²) method in order to have a working prototype quickly; now I lowered that to O(nlogn) following advice from Miroslav Mikšík.
It is now possible to have several tens of thousands [...]]]></description>
			<content:encoded><![CDATA[<p>This week I&#8217;ve been busy with something rather unexciting: <strong>speeding up the light tree creation time</strong>. You <a href="http://unclezeiv.kerid.org/2008/05/a-sprouting-tree" target="_blank">might remember</a> that, initially, I just implemented a O(n²) method in order to have a working prototype quickly; now I lowered that to O(n<em>log</em>n) following <a href="http://www.cescg.org/CESCG-2007/papers/Prague-Miksik-Miroslav/Lightcuts_MiksikMiroslav.pdf" target="_blank">advice</a> from Miroslav Mikšík.</p>
<p>It is now possible to have <strong>several tens of thousands</strong> point lights without incurring in terrible tree creation times. This is particularly important when <em>indirect lighting</em> is added to the mix.</p>
<p>A simple way to add indirect illumination to renderers is to place several small lights on surfaces hit by direct lighting. This principle is used by a family of algorithms called <strong>instant radiosity</strong>, originally developed by <a href="http://graphics.uni-ulm.de/" target="_blank">Alexander Keller</a>. A lot of research has gone into reducing the number of resulting lights, in optimizing their placement in the scene (so that, for instance, lights not influencing the final rendering get trimmed), and in overcoming some of the shortcomings of the algorithm, since it tends to suffer in some corner cases.</p>
<p>The final part of my Summer of Code project is indeed about creating a toy implementation of instant radiosity, in order to show a potential &#8220;killer application&#8221; for Lightcuts in Blender. I think it&#8217;s also important to have it in order to have a clearer idea on how to integrate Lightcuts from a UI point of view.</p>
<p>Ideally it would be nice to have just a button to press, without having to rework all the lighting differently, but I&#8217;m afraid that <strong>the user must have some awareness</strong> of the strengths and weaknesses of the algorithm in order to take full advantage of it. More on this in a later post.</p>
<p>Here are some <em>very</em> preliminary results from my initial experiments with virtual point light placement.</p>
<div id="attachment_48" class="wp-caption aligncenter" style="width: 410px"><a href="http://unclezeiv.kerid.org/download/2008/08/areatex_indir.png"><img class="size-medium wp-image-48" title="Textured area light with indirect lighting" src="http://unclezeiv.kerid.org/download/2008/08/areatex_indir-400x300.png" alt="Textured area light with indirect lighting" width="400" height="300" /></a><p class="wp-caption-text">Textured area light with indirect lighting - Tree creation time: 00:00.54 - Number of (point) lights: 5966 (0l + 0s + 5966o) - Average cut size: 155.22 - Shadow rays: 153.77 (2.58%)</p></div>
<div id="attachment_47" class="wp-caption aligncenter" style="width: 410px"><a href="http://unclezeiv.kerid.org/download/2008/08/areatex_dir.png"><img class="size-medium wp-image-47" title="Textured area light with direct lighting alone" src="http://unclezeiv.kerid.org/download/2008/08/areatex_dir-400x300.png" alt="Textured area light with direct lighting alone" width="400" height="300" /></a><p class="wp-caption-text">Textured area light with direct lighting alone (despite the stamp) - Tree creation time: 00:00.26 - Number of (point) lights: 3102 (0l + 0s + 3102o) - Average cut size: 134.83 - Shadow rays: 132.35 (4.27%)</p></div>
<div id="attachment_49" class="wp-caption aligncenter" style="width: 410px"><a href="http://unclezeiv.kerid.org/download/2008/08/indirect_orig_indir_lc.png"><img class="size-medium wp-image-49" title="Test scene - with indirect lighting" src="http://unclezeiv.kerid.org/download/2008/08/indirect_orig_indir_lc-400x300.png" alt="Test scene - with indirect lighting" width="400" height="300" /></a><p class="wp-caption-text">Test scene - with indirect lighting - Tree creation time: 00:02.00 - Number of (point) lights: 18091 (0l + 0s + 18091o) (4900d + 13191i) - Requested error rate: 0.018 - Average cut size: 587.30 - Shadow rays: 582.20 (3.22%)</p></div>
<div id="attachment_50" class="wp-caption aligncenter" style="width: 410px"><a href="http://unclezeiv.kerid.org/download/2008/08/indirect_orig_lc.png"><img class="size-medium wp-image-50" title="Test scene - direct only" src="http://unclezeiv.kerid.org/download/2008/08/indirect_orig_lc-400x300.png" alt="Test scene - direct only" width="400" height="300" /></a><p class="wp-caption-text">Test scene - direct only - Tree creation time: 00:00.43 - Number of (point) lights: 4900 (0l + 0s + 4900o) - Requested error rate: 0.020 - Average cut size: 567.16 - Shadow rays: 562.23 (11.47%)</p></div>
<p>(Yes, I am aware of the banding problems; it&#8217;s one of the issues I have to address next week before the Gsoc is over.)</p>
]]></content:encoded>
			<wfw:commentRss>http://unclezeiv.kerid.org/2008/08/indirect-lighting-teaser/feed</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Lightcuts: week 9</title>
		<link>http://unclezeiv.kerid.org/2008/07/lightcuts-week-9</link>
		<comments>http://unclezeiv.kerid.org/2008/07/lightcuts-week-9#comments</comments>
		<pubDate>Sun, 27 Jul 2008 14:07:24 +0000</pubDate>
		<dc:creator>UncleZeiv</dc:creator>
				<category><![CDATA[Blender]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[GSoC 2008]]></category>
		<category><![CDATA[Graphics]]></category>

		<guid isPermaLink="false">http://unclezeiv.kerid.org/?p=34</guid>
		<description><![CDATA[Textured area lights turned out hugely popular, so now it&#8217;s hard to live up to expectations I guess!
This week&#8217;s work was indeed far less exciting: I worked on supporting more material features, as so far only lambertian diffuse and phong specular where supported. Now, all diffuse shaders are supported.
Every single shader must be specifically supported [...]]]></description>
			<content:encoded><![CDATA[<p>Textured area lights turned out hugely popular, so now it&#8217;s hard to live up to expectations I guess!</p>
<p>This week&#8217;s work was indeed far less exciting: I worked on supporting more material features, as so far only lambertian diffuse and phong specular where supported. Now, <strong>all diffuse shaders are supported</strong>.</p>
<p>Every single shader must be specifically supported as we need to be able to answer this question: what&#8217;s the maximum value that a specific pixel, shaded this way, may assume over a bounding box of point lights? You don&#8217;t really need the exact maximum value, so a ridiculously large number would always be a &#8220;viable&#8221; answer. On the other hand, <strong>you want the bounding value to be as tight as possible</strong>, because if the error turns out to be very low, you may decide to skip all the lights further down in the light tree, thus saving rendering time.</p>
<p>I also added <strong>support for all falloff types</strong> (except custom curve falloffs). The default falloff type for Blender lamps is &#8220;inverse linear&#8221;, while only &#8220;inverse square&#8221; was supported so far: this could lead to very incorrect renderings, especially when testing existing scenes.</p>
<p>Now, for instance, this hangar scene (featuring a lot of dupliverted &#8220;inverse linear&#8221; point lights plus a couple of additional area lights) looks a bit better:</p>
<div id="attachment_38" class="wp-caption aligncenter" style="width: 410px"><a href="http://unclezeiv.kerid.org/download/2008/07/hangar2_lc.png"><img class="size-medium wp-image-38" title="Hangar" src="http://unclezeiv.kerid.org/download/2008/07/hangar2_lc-400x250.png" alt="Tree creation time:     00:02.27 Number of (point) lights: 3841 (1476l + 0s + 2365o) Requested error rate: 0.020 Average cut size: 239.44 Shadow rays: 233.08 (6.07%)" width="400" height="250" /></a><p class="wp-caption-text">Tree creation time:     00:02.27 Number of (point) lights: 3841 (1476l + 0s + 2365o) Requested error rate: 0.020 Average cut size: 239.44 Shadow rays: 233.08 (6.07%)</p></div>
<div id="attachment_39" class="wp-caption aligncenter" style="width: 410px"><a href="http://unclezeiv.kerid.org/download/2008/07/hangar2_lc_fc.png"><img class="size-medium wp-image-39" title="Hangar (False colour)" src="http://unclezeiv.kerid.org/download/2008/07/hangar2_lc_fc-400x250.png" alt="Hangar (False colour)" width="400" height="250" /></a><p class="wp-caption-text">Hangar (False colour)</p></div>
<p>(Thanks Gillan for pointing me to this model).</p>
<p style="text-align: center;">◊ ◊ ◊</p>
<p>On the textured area light side, Italian Blenderhead <strong>Lusque</strong> has performed an interesting experiment. If you bake direct lighting coming from a light source (e.g. an area light) onto the walls of a <a href="http://www.graphics.cornell.edu/online/box/" target="_blank">Cornell-like box</a>, and then you use the baked textures as textured area lights, you basically have a <strong>simple indirect lighting pass</strong>.</p>
<p>Here you can see a test, where the indirect lighting has been exaggerated on purpose:</p>
<p style="text-align: center;"><a href="http://img440.imageshack.us/my.php?image=cornellbbbokug0.png" target="_blank"><img class="aligncenter" src="http://img440.imageshack.us/img440/7889/cornellbbbokug0.th.png" border="0" alt="" /></a></p>
<p>I&#8217;ll post Lusque&#8217;s blend file here as soon as we sort the remaining issues out.</p>
<p>(Please note that this is just an experiment and that it has nothing to do with the &#8220;Instant Radiosity&#8221; scheme I would like to implement; I am also perfectly aware that it has limited applicability, but it&#8217;s still very clever in my opinion).</p>
]]></content:encoded>
			<wfw:commentRss>http://unclezeiv.kerid.org/2008/07/lightcuts-week-9/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Textured area lights in Blender</title>
		<link>http://unclezeiv.kerid.org/2008/07/textured-area-lights-in-blender</link>
		<comments>http://unclezeiv.kerid.org/2008/07/textured-area-lights-in-blender#comments</comments>
		<pubDate>Sun, 13 Jul 2008 14:03:30 +0000</pubDate>
		<dc:creator>UncleZeiv</dc:creator>
				<category><![CDATA[Blender]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[GSoC 2008]]></category>
		<category><![CDATA[Graphics]]></category>

		<guid isPermaLink="false">http://unclezeiv.kerid.org/?p=29</guid>
		<description><![CDATA[One of my favourite pictures from the original Lightcuts paper is an office scene lit exclusively by a tv screen. You can do that with textured area lights.
In Blender you can already link a texture to a light, but the outcome is a sort of texture projection, which is useful if you want to fake [...]]]></description>
			<content:encoded><![CDATA[<p>One of my favourite pictures from the original Lightcuts paper is an office scene lit exclusively by a tv screen. You can do that with <strong>textured area lights</strong>.</p>
<p>In Blender you can already link a texture to a light, but the outcome is a sort of texture projection, which is useful if you want to fake effects like light passing through a tree without actually computing the visibility: that comes of course very handy for cutting rendering time, to have artistic control on shadowing, etc.</p>
<p>What I mean here with textured area lights, on the other hand, is actually <strong>modulating the color and intensity of the light throughout its area</strong>. This way you can obtain the effect of lighting coming from tv screens, large windows with varying lighting conditions, and even area lights with custom shapes. Here are some examples.</p>
<p style="text-align: center;"><a href="http://unclezeiv.kerid.org/download/2008/07/color2_lc.png"><img class="alignnone size-medium wp-image-31 aligncenter" title="Textured area light" src="http://unclezeiv.kerid.org/download/2008/07/color2_lc-400x300.png" alt="Textured area light" width="400" height="300" /></a></p>
<p style="text-align: center;"><a href="http://unclezeiv.kerid.org/download/2008/07/circle2_lc.png"><img class="alignnone size-medium wp-image-30 aligncenter" title="Area light with custom shape" src="http://unclezeiv.kerid.org/download/2008/07/circle2_lc-400x300.png" alt="Area light with custom shape" width="400" height="300" /></a></p>
<p style="text-align: center;"><a href="http://unclezeiv.kerid.org/download/2008/07/area_tex2_lc.png"><img class="alignnone size-medium wp-image-33" title="Tv screen" src="http://unclezeiv.kerid.org/download/2008/07/area_tex2_lc-400x300.png" alt="Tv screen" width="400" height="300" /></a></p>
<p>In the lightcuts paper you had also the added contribution of indirect light. In this case I added some additional lighting using a faint environment map. The interesting point to note is that <strong>putting additional lighting has a negligible impact on rendering time</strong>, if not a beneficial effect! This is because completely occluded areas evaluate far more lights than bright areas, as a consequence of using a proportional error metric; thus, having those parts brighter allows for less evaluations.</p>
<p>Here&#8217;s a false colour rendering where the green areas show where the environment lighting is more influential and the bluish areas show where the area light is more influential. The red channel counts the number of lights used with respect to the maximum, so the image is white where it&#8217;s most occluded, as expected.</p>
<p style="text-align: center;"><a href="http://unclezeiv.kerid.org/download/2008/07/color2_lc_fc.png"><img class="alignnone size-medium wp-image-32 aligncenter" title="Textured area light (false colour)" src="http://unclezeiv.kerid.org/download/2008/07/color2_lc_fc-400x300.png" alt="Textured area light (false colour)" width="400" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://unclezeiv.kerid.org/2008/07/textured-area-lights-in-blender/feed</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>GSoC: midterm evaluation</title>
		<link>http://unclezeiv.kerid.org/2008/07/gsoc-midterm-evaluation</link>
		<comments>http://unclezeiv.kerid.org/2008/07/gsoc-midterm-evaluation#comments</comments>
		<pubDate>Thu, 10 Jul 2008 16:38:59 +0000</pubDate>
		<dc:creator>UncleZeiv</dc:creator>
				<category><![CDATA[Blender]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[GSoC 2008]]></category>
		<category><![CDATA[Graphics]]></category>

		<guid isPermaLink="false">http://unclezeiv.kerid.org/?p=28</guid>
		<description><![CDATA[Apologies for not having updated my blog recently. There&#8217;s quite a lot of stuff I have yet to blog about and I&#8217;ll surely do that in the near future. This week is halfway through the Summer of Code and it&#8217;s midterm evaluation time. Having been scolded for the lack of coolness of my rendering tests [...]]]></description>
			<content:encoded><![CDATA[<p>Apologies for not having updated my blog recently. There&#8217;s quite a lot of stuff I have yet to blog about and I&#8217;ll surely do that in the near future. This week is halfway through the Summer of Code and it&#8217;s midterm evaluation time. Having been scolded for the lack of coolness of my rendering tests during the last developer meeting, I took the time to grab some better looking model and arrange more interesting tests. You can find my midterm report, together with said renderings, on <a href="http://wiki.blender.org/index.php/User:UncleZeiv/SummerOfCode2008/Midterm" target="_blank">Blender&#8217;s wiki</a>. A warm thank you to the <a href="http://www.kino3d.com" target="_blank">Kino3D</a> guys who helped a lot in the process.</p>
<p>By the way, as a SoCer I got to visit Google&#8217;s London office today. I was glad to have my Blender t-shirt handy for the circumstance. During the tour I&#8217;m pretty sure I saw a couple of guys editing a video using Blender on an enormous screen. Overall the visit was very inspiring and, you know, a free lunch is always welcome!</p>
]]></content:encoded>
			<wfw:commentRss>http://unclezeiv.kerid.org/2008/07/gsoc-midterm-evaluation/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
