<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9091017590054989137</id><updated>2011-08-07T16:28:14.662+02:00</updated><category term='srgb'/><category term='open cl'/><category term='adjoint bsdf'/><category term='refraction'/><category term='ray tracing'/><category term='swing'/><category term='progressive'/><category term='Water'/><category term='demo'/><category term='blackbody'/><category term='explicit direct lightning'/><category term='path tracing'/><category term='smooth normals'/><category term='raytracing'/><category term='float4'/><category term='physically based rendering'/><category term='bvh'/><category term='fireflies'/><category term='global illumination'/><category term='Red dot'/><category term='progressive photon mapping'/><category term='threads'/><category term='caustics'/><category term='java'/><category term='mitchell'/><category term='ajax'/><category term='metropolis sampling'/><category term='opencl'/><category term='beer&apos;s law'/><category term='multithreading'/><category term='shadow rays'/><category term='ajax statue'/><category term='prng'/><category term='suzanne'/><category term='gui'/><category term='c'/><category term='outdoor'/><category term='gpu'/><category term='monkey'/><category term='metropolis'/><category term='cornell box'/><category term='sse'/><category term='photon mapping'/><category term='jensen'/><category term='ocaml'/><category term='mlt'/><category term='pathtracing'/><category term='escape analysis'/><category term='filtering'/><category term='sampling'/><title type='text'>Michael's Ray Tracing Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://michaelsraytracing.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://michaelsraytracing.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00169605863590992253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9091017590054989137.post-6052671108441350112</id><published>2011-07-01T01:02:00.007+02:00</published><updated>2011-07-01T01:35:52.323+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='path tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='metropolis sampling'/><category scheme='http://www.blogger.com/atom/ns#' term='progressive photon mapping'/><category scheme='http://www.blogger.com/atom/ns#' term='raytracing'/><category scheme='http://www.blogger.com/atom/ns#' term='sampling'/><category scheme='http://www.blogger.com/atom/ns#' term='global illumination'/><title type='text'>Progressive photon mapping with metropolis sampling</title><content type='html'>Hi again,&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To answer my last entry, I've added metropolis sampler to my photon tracing routine.&lt;/div&gt;&lt;div&gt;Well it was a natural thing to do.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I am aware of that paper by Toshiya et al. - Robust Adaptive Photon Tracing using Photon Path Visibility.&lt;/div&gt;&lt;div&gt;But since I am quite familiar with Kelemen's mlt, and I didn't want to switch to that sppm approach (I keep it as a traditional photon mapper with shrinking radius), I implemented it quite differently. Path quality is equal to how many photons do contribute to photon map (and photon map's bouding box is based on the visible hitpoints). So it just favors longer paths. Perhaps I could extend it to how much flux the path carries.&lt;/div&gt;&lt;div&gt;Also like in standard Kelemen's mlt, there are 2 mutation strategies, small and large mutation, which the former needs some further testing like mutation approach and size.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So enough talking, pics:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Path tracing:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/-QMTXHrbzP0c/Tg0HE8Rat6I/AAAAAAAAAII/IOf1xX7ZtXA/s1600/big_pt.PNG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 307px; height: 320px;" src="http://1.bp.blogspot.com/-QMTXHrbzP0c/Tg0HE8Rat6I/AAAAAAAAAII/IOf1xX7ZtXA/s320/big_pt.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5624159291135670178" /&gt;&lt;/a&gt;&lt;div&gt;&lt;div&gt;Photon mapping - random sampling:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-sVsomRwRbkQ/Tg0HKg_0BiI/AAAAAAAAAIQ/2HpftDkuReY/s1600/big_random.PNG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 307px; height: 320px;" src="http://2.bp.blogspot.com/-sVsomRwRbkQ/Tg0HKg_0BiI/AAAAAAAAAIQ/2HpftDkuReY/s320/big_random.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5624159386893288994" /&gt;&lt;/a&gt;and finally, Photon mapping - metropolis sampling:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-PEAqONBQATU/Tg0HQLFwQvI/AAAAAAAAAIY/Uoq1QLla74c/s1600/big_metro.PNG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 307px; height: 320px;" src="http://4.bp.blogspot.com/-PEAqONBQATU/Tg0HQLFwQvI/AAAAAAAAAIY/Uoq1QLla74c/s320/big_metro.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5624159484091843314" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;All images were computed in 2 minutes, also the metropolis code is still fresh and messy.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9091017590054989137-6052671108441350112?l=michaelsraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelsraytracing.blogspot.com/feeds/6052671108441350112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://michaelsraytracing.blogspot.com/2011/07/progressive-photon-mapping-with.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/6052671108441350112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/6052671108441350112'/><link rel='alternate' type='text/html' href='http://michaelsraytracing.blogspot.com/2011/07/progressive-photon-mapping-with.html' title='Progressive photon mapping with metropolis sampling'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00169605863590992253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-QMTXHrbzP0c/Tg0HE8Rat6I/AAAAAAAAAII/IOf1xX7ZtXA/s72-c/big_pt.PNG' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9091017590054989137.post-8129192965670237937</id><published>2011-06-27T14:46:00.009+02:00</published><updated>2011-06-27T15:38:26.703+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='path tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='progressive photon mapping'/><category scheme='http://www.blogger.com/atom/ns#' term='global illumination'/><category scheme='http://www.blogger.com/atom/ns#' term='outdoor'/><title type='text'>photon mapping vs path tracing outdoor test</title><content type='html'>&lt;div&gt;&lt;br /&gt;So yea photon mapping doesn't handle biger scenes very well.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Glass is farily good (good caustics makes up for crap direct ilumination, I trace 5m photons every pass here, perhaps if I lowered that number I would get better direct lighting and antialiasing, but worse indirect lighting).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Photon mapping:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/-8l5vySH3XzA/Tgh_dJKbb7I/AAAAAAAAAHg/Ry8NqogxDs4/s1600/outdoor_ppm_dl_5m_photons.PNG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="text-align: left;display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; cursor: pointer; width: 309px; height: 320px; " src="http://2.bp.blogspot.com/-8l5vySH3XzA/Tgh_dJKbb7I/AAAAAAAAAHg/Ry8NqogxDs4/s320/outdoor_ppm_dl_5m_photons.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5622884273424658354" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Path tracing:&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/-y6gbaxBdI9A/Tgh_s6G98UI/AAAAAAAAAHo/Kbnn2LquMzk/s1600/outdoor_pt.PNG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 309px; height: 320px;" src="http://3.bp.blogspot.com/-y6gbaxBdI9A/Tgh_s6G98UI/AAAAAAAAAHo/Kbnn2LquMzk/s320/outdoor_pt.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5622884544261517634" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Lambert material, photon mapping (without direct lighting computed separately):&lt;div&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-j4b1O7CYu_8/TgiA-wKKkvI/AAAAAAAAAHw/KrVYdHQaowo/s1600/outdoor_ppm_no_dl.PNG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 309px; height: 320px;" src="http://4.bp.blogspot.com/-j4b1O7CYu_8/TgiA-wKKkvI/AAAAAAAAAHw/KrVYdHQaowo/s320/outdoor_ppm_no_dl.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5622885950339846898" /&gt;&lt;/a&gt;&lt;br /&gt;Photon mapping with direct lighting:&lt;div&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-HVziUqWjt8c/TgiBGMOcC7I/AAAAAAAAAH4/WqTzxnEAP9Q/s1600/outdoor_ppm_dl.PNG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 309px; height: 320px;" src="http://3.bp.blogspot.com/-HVziUqWjt8c/TgiBGMOcC7I/AAAAAAAAAH4/WqTzxnEAP9Q/s320/outdoor_ppm_dl.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5622886078133046194" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Path tracing:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-7jkgcXppPDM/TgiBLEPo8oI/AAAAAAAAAIA/Y8kVUuSLsuM/s1600/outdorr_pt_lambert.PNG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 309px; height: 320px;" src="http://3.bp.blogspot.com/-7jkgcXppPDM/TgiBLEPo8oI/AAAAAAAAAIA/Y8kVUuSLsuM/s320/outdorr_pt_lambert.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5622886161889948290" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As expected path tracing performs better, maybe some fine tunning (photons per pass and initial radius) would help&lt;span class="Apple-style-span" style="white-space: pre;"&gt;, but I don't expect miracles.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9091017590054989137-8129192965670237937?l=michaelsraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelsraytracing.blogspot.com/feeds/8129192965670237937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://michaelsraytracing.blogspot.com/2011/06/photon-mapping-vs-path-tracing-outdoor.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/8129192965670237937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/8129192965670237937'/><link rel='alternate' type='text/html' href='http://michaelsraytracing.blogspot.com/2011/06/photon-mapping-vs-path-tracing-outdoor.html' title='photon mapping vs path tracing outdoor test'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00169605863590992253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-8l5vySH3XzA/Tgh_dJKbb7I/AAAAAAAAAHg/Ry8NqogxDs4/s72-c/outdoor_ppm_dl_5m_photons.PNG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9091017590054989137.post-1267277610925648105</id><published>2011-06-26T19:02:00.006+02:00</published><updated>2011-06-26T20:25:57.579+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='physically based rendering'/><category scheme='http://www.blogger.com/atom/ns#' term='demo'/><category scheme='http://www.blogger.com/atom/ns#' term='ray tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='caustics'/><category scheme='http://www.blogger.com/atom/ns#' term='cornell box'/><category scheme='http://www.blogger.com/atom/ns#' term='Red dot'/><category scheme='http://www.blogger.com/atom/ns#' term='photon mapping'/><category scheme='http://www.blogger.com/atom/ns#' term='progressive'/><category scheme='http://www.blogger.com/atom/ns#' term='global illumination'/><title type='text'>Download Red Dot demo</title><content type='html'>Hi there,&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I would like to provide runnable version of the current incarnation of my raytracer.&lt;/div&gt;&lt;div&gt;I know it's nothing special, but maybe someone would like to run it, just for fun, I know I would.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="https://sites.google.com/site/ciebiada/reddot_demo.zip"&gt;https://sites.google.com/site/ciebiada/reddot_demo.zip&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Unpack the zip archive and there you have it - double click on reddot.jar or type:&lt;/div&gt;&lt;div&gt;java -jar reddot.jar -Xms1g -Xmx1g&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;(if you care about the performance it is acutally a lot, lot better if you specify those options from command line, because if not, jvm will get too little memory for photons, and GC will trigger like crazy)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It reads obj files (with its material representation) straight from blender exporter.&lt;/div&gt;&lt;div&gt;But since camera is fixed I didn't provide a gui for importing your own scenes yet.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Image is updated every each 5 seconds.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Moreover, rendering fashion depends on 3 parameters:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;initial radius = (world_max - world_min).length / 50&lt;/li&gt;&lt;li&gt;photons_per_pass = 100000&lt;/li&gt;&lt;li&gt;alpha = 0.5&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Initial radius just like in regular photon mapping is a tradeoff between smoothness and details. If the initial radius was smaller, the caustic would be sharper from the start, but image would be noiser overall.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Instead of basing it on the world bounding box, I perhaps should base it on bounding box of the photon map. But in this case it's exactly the same.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Photons per pass means how many photons it shoots between ray tracing passes. It doesn't store photons for the first hit, because direct ligting is computed like in regular path tracer.&lt;/div&gt;&lt;div&gt;This is also kind of a tradeoff. In scenes where there is no direct ligting (emitter is not directly visible by the diffuse surfaces) all direct lighting computations (visibility checks mostly) are a waste of time. But in the other case, when surfaces are lit directly, those direct lighting computations helps quite a lot.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And an alpha parameter controls how fast the initial radius shrinks.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here I attach my 45m render (mobile i7):&lt;/div&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-IHH3dFPIxv0/Tgd1o7y-hKI/AAAAAAAAAHY/IYsvDdSeeOs/s1600/demo.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 307px; height: 320px;" src="http://3.bp.blogspot.com/-IHH3dFPIxv0/Tgd1o7y-hKI/AAAAAAAAAHY/IYsvDdSeeOs/s320/demo.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5622592005902075042" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9091017590054989137-1267277610925648105?l=michaelsraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelsraytracing.blogspot.com/feeds/1267277610925648105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://michaelsraytracing.blogspot.com/2011/06/download-red-dot-demo.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/1267277610925648105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/1267277610925648105'/><link rel='alternate' type='text/html' href='http://michaelsraytracing.blogspot.com/2011/06/download-red-dot-demo.html' title='Download Red Dot demo'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00169605863590992253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-IHH3dFPIxv0/Tgd1o7y-hKI/AAAAAAAAAHY/IYsvDdSeeOs/s72-c/demo.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9091017590054989137.post-99593363714155582</id><published>2011-06-24T01:12:00.002+02:00</published><updated>2011-06-24T01:15:36.565+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='adjoint bsdf'/><category scheme='http://www.blogger.com/atom/ns#' term='smooth normals'/><category scheme='http://www.blogger.com/atom/ns#' term='caustics'/><category scheme='http://www.blogger.com/atom/ns#' term='cornell box'/><category scheme='http://www.blogger.com/atom/ns#' term='photon mapping'/><category scheme='http://www.blogger.com/atom/ns#' term='global illumination'/><title type='text'>Photon mapping continued.</title><content type='html'>Quick 5 min render.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/-6yyBp4MwySA/TgPIpt-3qAI/AAAAAAAAAHQ/u6fQIZ7Qdt4/s1600/chrome.PNG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 307px; height: 320px;" src="http://3.bp.blogspot.com/-6yyBp4MwySA/TgPIpt-3qAI/AAAAAAAAAHQ/u6fQIZ7Qdt4/s320/chrome.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5621557378931992578" /&gt;&lt;/a&gt;&lt;div&gt;It clearly reveals an issue with smooth normals.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9091017590054989137-99593363714155582?l=michaelsraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelsraytracing.blogspot.com/feeds/99593363714155582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://michaelsraytracing.blogspot.com/2011/06/photon-mapping-continued.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/99593363714155582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/99593363714155582'/><link rel='alternate' type='text/html' href='http://michaelsraytracing.blogspot.com/2011/06/photon-mapping-continued.html' title='Photon mapping continued.'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00169605863590992253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-6yyBp4MwySA/TgPIpt-3qAI/AAAAAAAAAHQ/u6fQIZ7Qdt4/s72-c/chrome.PNG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9091017590054989137.post-6974217355127794844</id><published>2011-06-22T22:35:00.004+02:00</published><updated>2011-06-22T23:23:46.326+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='adjoint bsdf'/><category scheme='http://www.blogger.com/atom/ns#' term='Water'/><category scheme='http://www.blogger.com/atom/ns#' term='smooth normals'/><category scheme='http://www.blogger.com/atom/ns#' term='ray tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='cornell box'/><category scheme='http://www.blogger.com/atom/ns#' term='photon mapping'/><category scheme='http://www.blogger.com/atom/ns#' term='progressive'/><category scheme='http://www.blogger.com/atom/ns#' term='global illumination'/><title type='text'>Photon mapping ownz!</title><content type='html'>Hi there, it's been a while.&lt;br /&gt;&lt;br /&gt;I've implemented progressive photon mapping, first exactly as it is in original paper (constructing hitmap once and shooting photons in the main loop), it was all nice and fast but quite troublesome, especially if it comes to antialiasing and glossy materials.&lt;br /&gt;Then i've implemented the more basic approach to PPM as in &lt;a href="http://www.cgg.unibe.ch/publications/2011/progressive-photon-mapping-a-probabilistic-approach"&gt;this paper&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;But I have some isues as for now:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I am not sure about the adjoint bsdf for shading normals. What's obvious is smooth normals didnt work out of the box for the lambertian. What I did is using original normal, and scaling contribution  by |in*nor_s| / |in*nor_g|, kinda works but I am not sure. What with other materials? For specular and dielectric it seems to work with just smoothed normal in place of the geometric one.&lt;/li&gt;&lt;li&gt;Since I'm still using Java I have problems with Garbage Collector, I build uniform grid for 100000 - 200000 photons every pass on all 8 threads separately and that really kills the GC, even if I try to reuse the grid. Any suggestions?&lt;/li&gt;&lt;li&gt;Shading on hard corners, for example 90 degree corners between the walls. Right now I use simple hack to check for the angle between the photon and surface normal, but that makes them black, the blackness does shrink over time but doesn't seem to ever disappear. So I wonder if it wouldn't be a better choice to leave it alone converging to the right sollution in +inf time and 1/inf radius (?)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Other than that it's blazing fast. This image took around one hour to render:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/-InZNDtC7DRE/TgJaXjz8ULI/AAAAAAAAAHI/MhEjRchkamo/s1600/Przechwytywanie.PNG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="text-align: left;display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; cursor: pointer; width: 310px; height: 320px; " src="http://3.bp.blogspot.com/-InZNDtC7DRE/TgJaXjz8ULI/AAAAAAAAAHI/MhEjRchkamo/s320/Przechwytywanie.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5621154645708394674" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But was already pretty good after minutes.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9091017590054989137-6974217355127794844?l=michaelsraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelsraytracing.blogspot.com/feeds/6974217355127794844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://michaelsraytracing.blogspot.com/2011/06/photon-mapping-ownz.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/6974217355127794844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/6974217355127794844'/><link rel='alternate' type='text/html' href='http://michaelsraytracing.blogspot.com/2011/06/photon-mapping-ownz.html' title='Photon mapping ownz!'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00169605863590992253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-InZNDtC7DRE/TgJaXjz8ULI/AAAAAAAAAHI/MhEjRchkamo/s72-c/Przechwytywanie.PNG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9091017590054989137.post-6594378501887861409</id><published>2010-11-01T18:57:00.004+01:00</published><updated>2010-11-01T22:13:37.693+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='path tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='open cl'/><category scheme='http://www.blogger.com/atom/ns#' term='float4'/><category scheme='http://www.blogger.com/atom/ns#' term='opencl'/><category scheme='http://www.blogger.com/atom/ns#' term='gpu'/><category scheme='http://www.blogger.com/atom/ns#' term='c'/><category scheme='http://www.blogger.com/atom/ns#' term='sse'/><title type='text'>Couldn't resist the GPU hype,</title><content type='html'>so I wrote an open cl path tracer in C. It's very similar to Dade's SmallptGPU but it uses float4 though.&lt;br /&gt;I don't have proper GPU to test it on, but I got tempted by sse operations that vector operations supposedly utilize.&lt;br /&gt;&lt;br /&gt;A performance note:&lt;br /&gt;&lt;br /&gt;While I get 2 fps on this scene with my core 2 duo (no ht), my friend with his radeon 4870 gets almost 60 fps.&lt;br /&gt;I'm not yet sure if thats good enough.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vEznFXnkVKU/TM8Fy6C5IEI/AAAAAAAAAG0/zyEsmRskero/s1600/pretty_gpu.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 309px; height: 320px;" src="http://2.bp.blogspot.com/_vEznFXnkVKU/TM8Fy6C5IEI/AAAAAAAAAG0/zyEsmRskero/s320/pretty_gpu.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5534648839194615874" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(I misleadingly called frames samples, while they are samples per pixel, yea)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9091017590054989137-6594378501887861409?l=michaelsraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelsraytracing.blogspot.com/feeds/6594378501887861409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://michaelsraytracing.blogspot.com/2010/11/couldnt-resist-gpu-hype.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/6594378501887861409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/6594378501887861409'/><link rel='alternate' type='text/html' href='http://michaelsraytracing.blogspot.com/2010/11/couldnt-resist-gpu-hype.html' title='Couldn&apos;t resist the GPU hype,'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00169605863590992253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vEznFXnkVKU/TM8Fy6C5IEI/AAAAAAAAAG0/zyEsmRskero/s72-c/pretty_gpu.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9091017590054989137.post-4963432510688560260</id><published>2010-10-14T16:19:00.004+02:00</published><updated>2010-10-14T17:02:44.477+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='path tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='Water'/><category scheme='http://www.blogger.com/atom/ns#' term='caustics'/><category scheme='http://www.blogger.com/atom/ns#' term='mlt'/><category scheme='http://www.blogger.com/atom/ns#' term='cornell box'/><category scheme='http://www.blogger.com/atom/ns#' term='refraction'/><title type='text'>Water caustics</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vEznFXnkVKU/TLcSnwlRaSI/AAAAAAAAAGs/aya1woUsIrE/s1600/Zrzut+ekranu+2010-10-14+(godz.+16.15.18).png"&gt;&lt;img style="float:none; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 306px; height: 320px;" src="http://2.bp.blogspot.com/_vEznFXnkVKU/TLcSnwlRaSI/AAAAAAAAAGs/aya1woUsIrE/s320/Zrzut+ekranu+2010-10-14+(godz.+16.15.18).png" border="0" alt=""id="BLOGGER_PHOTO_ID_5527907541886003490" /&gt;&lt;/a&gt;&lt;br /&gt;One of the hardcore scenes to test. Forgive me the noise but my bvh is so slow :(.&lt;br /&gt;&lt;br /&gt;Cheers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9091017590054989137-4963432510688560260?l=michaelsraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelsraytracing.blogspot.com/feeds/4963432510688560260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://michaelsraytracing.blogspot.com/2010/10/water-caustics.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/4963432510688560260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/4963432510688560260'/><link rel='alternate' type='text/html' href='http://michaelsraytracing.blogspot.com/2010/10/water-caustics.html' title='Water caustics'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00169605863590992253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vEznFXnkVKU/TLcSnwlRaSI/AAAAAAAAAGs/aya1woUsIrE/s72-c/Zrzut+ekranu+2010-10-14+(godz.+16.15.18).png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9091017590054989137.post-1604594180463885946</id><published>2010-10-13T00:31:00.003+02:00</published><updated>2010-10-14T09:40:37.035+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='path tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='filtering'/><category scheme='http://www.blogger.com/atom/ns#' term='mlt'/><category scheme='http://www.blogger.com/atom/ns#' term='cornell box'/><category scheme='http://www.blogger.com/atom/ns#' term='mitchell'/><category scheme='http://www.blogger.com/atom/ns#' term='beer&apos;s law'/><category scheme='http://www.blogger.com/atom/ns#' term='suzanne'/><category scheme='http://www.blogger.com/atom/ns#' term='monkey'/><title type='text'>A little update</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vEznFXnkVKU/TLToWNeGjiI/AAAAAAAAAGk/ibDiWe2bcMA/s1600/Zrzut+ekranu+2010-10-13+(godz.+00.15.34).png"&gt;&lt;img style="float:right; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 308px; height: 320px;" src="http://1.bp.blogspot.com/_vEznFXnkVKU/TLToWNeGjiI/AAAAAAAAAGk/ibDiWe2bcMA/s320/Zrzut+ekranu+2010-10-13+(godz.+00.15.34).png" border="0" alt="" id="BLOGGER_PHOTO_ID_5527298110961126946" /&gt;&lt;/a&gt;&lt;br /&gt;Hi there,&lt;br /&gt;&lt;div&gt;&lt;br /&gt;What's new:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Added Beer's law to the glass material - you can tell how absorption varies with the distance traveled (for ex. monkey's ear is barely colored versus it's middle).&lt;/li&gt;&lt;li&gt;Pixel filtering - added variety of filters. The black border around the light source is due the negative values of mitchell filter.&lt;/li&gt;&lt;li&gt;Reimplemented simple bvh and .obj parser.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Btw. could somebody tell me:&lt;/div&gt;&lt;div&gt;when I specify my light intensity with pure rgb triplet as its emittance, for ex. (15, 15, 15) - what units are those? And how could I convert between other, perhaps more physically convenient, units? so I could compare my results with other renderers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cheers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9091017590054989137-1604594180463885946?l=michaelsraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelsraytracing.blogspot.com/feeds/1604594180463885946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://michaelsraytracing.blogspot.com/2010/10/little-update.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/1604594180463885946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/1604594180463885946'/><link rel='alternate' type='text/html' href='http://michaelsraytracing.blogspot.com/2010/10/little-update.html' title='A little update'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00169605863590992253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vEznFXnkVKU/TLToWNeGjiI/AAAAAAAAAGk/ibDiWe2bcMA/s72-c/Zrzut+ekranu+2010-10-13+(godz.+00.15.34).png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9091017590054989137.post-5818059670048226475</id><published>2010-09-27T10:50:00.004+02:00</published><updated>2010-09-27T13:32:45.720+02:00</updated><title type='text'>Sup?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vEznFXnkVKU/TKBbDSRi1RI/AAAAAAAAAGE/uwTuH627K84/s1600/Zrzut+ekranu+2010-09-27+(godz.+10.50.16).png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 306px; height: 320px;" src="http://2.bp.blogspot.com/_vEznFXnkVKU/TKBbDSRi1RI/AAAAAAAAAGE/uwTuH627K84/s320/Zrzut+ekranu+2010-09-27+(godz.+10.50.16).png" border="0" alt=""id="BLOGGER_PHOTO_ID_5521513255159387410" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vEznFXnkVKU/TKBiMhcLcyI/AAAAAAAAAGU/DQjtAeBqx-U/s1600/Zrzut+ekranu+2010-09-27+(godz.+01.28.07).png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 306px; height: 320px;" src="http://4.bp.blogspot.com/_vEznFXnkVKU/TKBiMhcLcyI/AAAAAAAAAGU/DQjtAeBqx-U/s320/Zrzut+ekranu+2010-09-27+(godz.+01.28.07).png" border="0" alt=""id="BLOGGER_PHOTO_ID_5521521110430741282" /&gt;&lt;/a&gt;&lt;br /&gt;Friend of mine has i7:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vEznFXnkVKU/TKB_9d1U5wI/AAAAAAAAAGc/JO0fgTpyXtg/s1600/render6p.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 305px; height: 320px;" src="http://4.bp.blogspot.com/_vEznFXnkVKU/TKB_9d1U5wI/AAAAAAAAAGc/JO0fgTpyXtg/s320/render6p.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5521553837113272066" /&gt;&lt;/a&gt;&lt;br /&gt;rendering time: 20 minutes, no direct lightning, just naive path tracing with metropolis sampling.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9091017590054989137-5818059670048226475?l=michaelsraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelsraytracing.blogspot.com/feeds/5818059670048226475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://michaelsraytracing.blogspot.com/2010/09/sup.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/5818059670048226475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/5818059670048226475'/><link rel='alternate' type='text/html' href='http://michaelsraytracing.blogspot.com/2010/09/sup.html' title='Sup?'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00169605863590992253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vEznFXnkVKU/TKBbDSRi1RI/AAAAAAAAAGE/uwTuH627K84/s72-c/Zrzut+ekranu+2010-09-27+(godz.+10.50.16).png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9091017590054989137.post-7491280348087176731</id><published>2010-09-26T00:13:00.002+02:00</published><updated>2010-09-26T00:15:49.451+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jensen'/><category scheme='http://www.blogger.com/atom/ns#' term='path tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='mlt'/><category scheme='http://www.blogger.com/atom/ns#' term='cornell box'/><category scheme='http://www.blogger.com/atom/ns#' term='global illumination'/><title type='text'>Cornell box</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vEznFXnkVKU/TJ50eA_5rsI/AAAAAAAAAF8/lI-2SnYF84o/s1600/Zrzut+ekranu+2010-09-25+(godz.+23.13.26).png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 258px;" src="http://2.bp.blogspot.com/_vEznFXnkVKU/TJ50eA_5rsI/AAAAAAAAAF8/lI-2SnYF84o/s320/Zrzut+ekranu+2010-09-25+(godz.+23.13.26).png" border="0" alt=""id="BLOGGER_PHOTO_ID_5520978252215725762" /&gt;&lt;/a&gt;&lt;br /&gt;I just like them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9091017590054989137-7491280348087176731?l=michaelsraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelsraytracing.blogspot.com/feeds/7491280348087176731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://michaelsraytracing.blogspot.com/2010/09/cornell-box.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/7491280348087176731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/7491280348087176731'/><link rel='alternate' type='text/html' href='http://michaelsraytracing.blogspot.com/2010/09/cornell-box.html' title='Cornell box'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00169605863590992253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vEznFXnkVKU/TJ50eA_5rsI/AAAAAAAAAF8/lI-2SnYF84o/s72-c/Zrzut+ekranu+2010-09-25+(godz.+23.13.26).png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9091017590054989137.post-8818051015456901258</id><published>2010-09-18T19:29:00.002+02:00</published><updated>2010-09-18T19:47:00.764+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='path tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='pathtracing'/><category scheme='http://www.blogger.com/atom/ns#' term='raytracing'/><category scheme='http://www.blogger.com/atom/ns#' term='ray tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='mlt'/><category scheme='http://www.blogger.com/atom/ns#' term='metropolis'/><title type='text'>I'm back</title><content type='html'>Yet again starting from scratch. Playing with metropolis.&lt;br /&gt;&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/aIvBrRuPIMg?fs=1&amp;amp;hl=pl_PL&amp;amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/aIvBrRuPIMg?fs=1&amp;amp;hl=pl_PL&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Naive path tracing on the left, same thing but with metropolis on the right.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9091017590054989137-8818051015456901258?l=michaelsraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelsraytracing.blogspot.com/feeds/8818051015456901258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://michaelsraytracing.blogspot.com/2010/09/im-back.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/8818051015456901258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/8818051015456901258'/><link rel='alternate' type='text/html' href='http://michaelsraytracing.blogspot.com/2010/09/im-back.html' title='I&apos;m back'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00169605863590992253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9091017590054989137.post-6635656127266566968</id><published>2010-01-09T19:26:00.016+01:00</published><updated>2010-09-18T19:42:17.375+02:00</updated><title type='text'>Metropolis Light Transport and stuff.</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vEznFXnkVKU/S0jjTwVO_cI/AAAAAAAAAFc/-BjLQ8ZeQ-U/s1600-h/Zrzut+ekranu+2010-01-09+(godz.+20.46.55).png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 152px; height: 200px;" src="http://4.bp.blogspot.com/_vEznFXnkVKU/S0jjTwVO_cI/AAAAAAAAAFc/-BjLQ8ZeQ-U/s200/Zrzut+ekranu+2010-01-09+(godz.+20.46.55).png" border="0" alt=""id="BLOGGER_PHOTO_ID_5424835679698746818" /&gt;&lt;/a&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vEznFXnkVKU/S0jjTYuYGWI/AAAAAAAAAFU/rOjar07XjAU/s1600-h/Zrzut+ekranu+2010-01-09+(godz.+21.11.32).png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 191px; height: 200px;" src="http://4.bp.blogspot.com/_vEznFXnkVKU/S0jjTYuYGWI/AAAAAAAAAFU/rOjar07XjAU/s200/Zrzut+ekranu+2010-01-09+(godz.+21.11.32).png" border="0" alt=""id="BLOGGER_PHOTO_ID_5424835673361750370" /&gt;&lt;/a&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vEznFXnkVKU/S0jiYORtGII/AAAAAAAAAFM/HVp_A3zTerU/s1600-h/Zrzut+ekranu+2009-12-26+(godz.+13.59.03).png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 138px;" src="http://4.bp.blogspot.com/_vEznFXnkVKU/S0jiYORtGII/AAAAAAAAAFM/HVp_A3zTerU/s200/Zrzut+ekranu+2009-12-26+(godz.+13.59.03).png" border="0" alt="" id="BLOGGER_PHOTO_ID_5424834656944855170" /&gt;&lt;/a&gt;&lt;br /&gt;Hi!&lt;br /&gt;&lt;br /&gt;Long time no see. Like always I was rewriting it from scratch a couple of times. But nevertheless it's still java and now it uses metropolis sampling to help that poor path tracing converge.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Btw. I did MLT on yesterday evening after 2 beers (it had to be &lt;a href="http://xkcd.com/323/"&gt;Ballmer peak&lt;/a&gt;).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Altough the implementation is still very fresh it easily outperforms standard path tracing, what is to be seen especially when difficult caustics are involved.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've implemented spectral rendering too, it was very easy actually, cause all computations on wavelengths are linear just like rgb. But then I realised that even if it does feel more physically correct to do so, whats the point? 3d applications are operating in rgb color space, and because I cant represent a rgb color as spectrum interchangeably I have to approximate it, so as long as I'm not running a physical simulation or something I don't see the benefits (please correct me if I'm wrong), thus I abandoned that.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I was also working on dispersion (rgb rendering), but that feature needs a little more work (I've included an old pure path tracing rendering with dispersion visible)&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Edit:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vEznFXnkVKU/S0kfV8wAYCI/AAAAAAAAAFs/mZVX0V6aBGY/s1600-h/Zrzut+ekranu+2010-01-09+(godz.+21.55.35).png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 191px; height: 200px;" src="http://3.bp.blogspot.com/_vEznFXnkVKU/S0kfV8wAYCI/AAAAAAAAAFs/mZVX0V6aBGY/s200/Zrzut+ekranu+2010-01-09+(godz.+21.55.35).png" border="0" alt=""id="BLOGGER_PHOTO_ID_5424901688089665570" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9091017590054989137-6635656127266566968?l=michaelsraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelsraytracing.blogspot.com/feeds/6635656127266566968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://michaelsraytracing.blogspot.com/2010/01/metropolis-light-transport-and-stuff.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/6635656127266566968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/6635656127266566968'/><link rel='alternate' type='text/html' href='http://michaelsraytracing.blogspot.com/2010/01/metropolis-light-transport-and-stuff.html' title='Metropolis Light Transport and stuff.'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00169605863590992253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vEznFXnkVKU/S0jjTwVO_cI/AAAAAAAAAFc/-BjLQ8ZeQ-U/s72-c/Zrzut+ekranu+2010-01-09+(godz.+20.46.55).png' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9091017590054989137.post-3587822962350355252</id><published>2009-06-29T17:59:00.005+02:00</published><updated>2009-06-30T00:24:31.783+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shadow rays'/><category scheme='http://www.blogger.com/atom/ns#' term='path tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='prng'/><category scheme='http://www.blogger.com/atom/ns#' term='threads'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='bvh'/><category scheme='http://www.blogger.com/atom/ns#' term='explicit direct lightning'/><title type='text'>Explicit direct lightning</title><content type='html'>&lt;div&gt;gives a lot,&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;unmatched quality:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vEznFXnkVKU/Skjliq8H6RI/AAAAAAAAAEw/uYL1WiwpWRY/s1600-h/Obrazek+1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 192px; height: 200px;" src="http://4.bp.blogspot.com/_vEznFXnkVKU/Skjliq8H6RI/AAAAAAAAAEw/uYL1WiwpWRY/s200/Obrazek+1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5352780540934613266" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A fireflies happen to appear from time to time (there is one on the ceiling for example) and, what's funny, it's a random thing while my PRNG has constant seed values.&lt;/div&gt;&lt;div&gt;I'm almost sure its because all threads share one random number generator and what seem to happen they are at times calling random procedure ALMOST in the same time, reassigning the values unpredictably.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Edit:&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vEznFXnkVKU/Skk-4_dK85I/AAAAAAAAAE4/mAcjMHLr-zE/s1600-h/Obrazek+2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 192px; height: 200px;" src="http://1.bp.blogspot.com/_vEznFXnkVKU/Skk-4_dK85I/AAAAAAAAAE4/mAcjMHLr-zE/s200/Obrazek+2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5352878780933927826" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9091017590054989137-3587822962350355252?l=michaelsraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelsraytracing.blogspot.com/feeds/3587822962350355252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://michaelsraytracing.blogspot.com/2009/06/explicit-direct-lightning.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/3587822962350355252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/3587822962350355252'/><link rel='alternate' type='text/html' href='http://michaelsraytracing.blogspot.com/2009/06/explicit-direct-lightning.html' title='Explicit direct lightning'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00169605863590992253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vEznFXnkVKU/Skjliq8H6RI/AAAAAAAAAEw/uYL1WiwpWRY/s72-c/Obrazek+1.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9091017590054989137.post-9030421051762821128</id><published>2009-06-22T12:11:00.009+02:00</published><updated>2009-06-22T22:33:13.715+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='path tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='ocaml'/><category scheme='http://www.blogger.com/atom/ns#' term='srgb'/><category scheme='http://www.blogger.com/atom/ns#' term='fireflies'/><category scheme='http://www.blogger.com/atom/ns#' term='blackbody'/><title type='text'>Blah</title><content type='html'>Seems my sRGB conversion was causing that fireflies from previous images.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Btw. I was wondering why the farthest I've ever get in ray tracing (excluding fixed path MLT in C++) was when I was using OCaml. Say what You want, but that functional language thing fitted ray tracing very well. Also, but that's maybe caused by my nature - now when I have dozens of ways to implement something I start to wonder what way to choose, what would lead to better design. Too many options confuse me, and slow me down big time.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vEznFXnkVKU/Sj-ZLD4YcoI/AAAAAAAAAEo/dHD4UnV3PdQ/s1600-h/Obrazek+1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 180px; height: 200px;" src="http://2.bp.blogspot.com/_vEznFXnkVKU/Sj-ZLD4YcoI/AAAAAAAAAEo/dHD4UnV3PdQ/s200/Obrazek+1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5350163297638838914" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;I've set emitter colour to rgb approximation of 2600K, it makes some nice, realistic atmosphere.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's still naive path tracing, though.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9091017590054989137-9030421051762821128?l=michaelsraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelsraytracing.blogspot.com/feeds/9030421051762821128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://michaelsraytracing.blogspot.com/2009/06/blah.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/9030421051762821128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/9030421051762821128'/><link rel='alternate' type='text/html' href='http://michaelsraytracing.blogspot.com/2009/06/blah.html' title='Blah'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00169605863590992253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vEznFXnkVKU/Sj-ZLD4YcoI/AAAAAAAAAEo/dHD4UnV3PdQ/s72-c/Obrazek+1.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9091017590054989137.post-6762641284825451747</id><published>2009-06-22T08:18:00.000+02:00</published><updated>2009-06-22T09:17:52.521+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='path tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='swing'/><category scheme='http://www.blogger.com/atom/ns#' term='raytracing'/><category scheme='http://www.blogger.com/atom/ns#' term='threads'/><category scheme='http://www.blogger.com/atom/ns#' term='ray tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='multithreading'/><category scheme='http://www.blogger.com/atom/ns#' term='gui'/><title type='text'>Multithreading and some GUI</title><content type='html'>Hi there,&lt;br /&gt;&lt;br /&gt;I've added some multithreading and was playing with gui in swing.&lt;br /&gt;&lt;br /&gt;As far as everything was a very pleasant experience, I'm concerned that&lt;br /&gt;I got only ~190% load on my two cores, what means that the speedup is not exactly 2x.&lt;br /&gt;&lt;br /&gt;So I've tested &lt;a href="http://sunflow.sourceforge.net/"&gt;sunflow&lt;/a&gt;and noticed&lt;br /&gt;that it also doesn't get anywhere near 200% - 180%-190% most likely. So I don't know...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vEznFXnkVKU/Sj8stDYt1fI/AAAAAAAAAEY/XlCo-vk-Fz0/s1600-h/Obrazek+2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 176px; height: 200px;" src="http://3.bp.blogspot.com/_vEznFXnkVKU/Sj8stDYt1fI/AAAAAAAAAEY/XlCo-vk-Fz0/s200/Obrazek+2.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5350044034854147570" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9091017590054989137-6762641284825451747?l=michaelsraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelsraytracing.blogspot.com/feeds/6762641284825451747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://michaelsraytracing.blogspot.com/2009/06/multithreading-and-some-gui.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/6762641284825451747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/6762641284825451747'/><link rel='alternate' type='text/html' href='http://michaelsraytracing.blogspot.com/2009/06/multithreading-and-some-gui.html' title='Multithreading and some GUI'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00169605863590992253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_vEznFXnkVKU/Sj8stDYt1fI/AAAAAAAAAEY/XlCo-vk-Fz0/s72-c/Obrazek+2.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9091017590054989137.post-2348883491805822709</id><published>2009-06-14T12:34:00.000+02:00</published><updated>2009-06-14T16:02:30.134+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='path tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='raytracing'/><category scheme='http://www.blogger.com/atom/ns#' term='ray tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='cornell box'/><category scheme='http://www.blogger.com/atom/ns#' term='bvh'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax statue'/><category scheme='http://www.blogger.com/atom/ns#' term='escape analysis'/><title type='text'>Java path tracing</title><content type='html'>Hello I'm back.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My current weapon of choice is Java though.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The renderer supports:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;median split BVH,&lt;/li&gt;&lt;li&gt;thin lens and pinhole camera models,&lt;/li&gt;&lt;li&gt;sphere and Triangle primitives,&lt;/li&gt;&lt;li&gt;naive path tracing with lambertian surfaces only,&lt;/li&gt;&lt;li&gt;rendering in a progressive manner.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Performance is not that bad. I designed it to take full advantage of the new feature of java called Escape Analysis, so I'm not reusing objects (what leads to ugly code btw.) but creating them like crazy.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What sucks though is that there is no 1.6.0_14 java for Mac OS X yet, but I've tested in on windows and it works very well.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Some first, naive path tracing, renderings:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vEznFXnkVKU/SjTdAuPCKII/AAAAAAAAAEI/P0Ce_Bo-cnc/s1600-h/Obrazek+2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 191px; height: 200px;" src="http://3.bp.blogspot.com/_vEznFXnkVKU/SjTdAuPCKII/AAAAAAAAAEI/P0Ce_Bo-cnc/s200/Obrazek+2.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5347141662076446850" /&gt;&lt;/a&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vEznFXnkVKU/SjUCYSV6zjI/AAAAAAAAAEQ/KrYD2FXwLKk/s1600-h/Obrazek+1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 191px; height: 200px;" src="http://3.bp.blogspot.com/_vEznFXnkVKU/SjUCYSV6zjI/AAAAAAAAAEQ/KrYD2FXwLKk/s200/Obrazek+1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5347182748836220466" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9091017590054989137-2348883491805822709?l=michaelsraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://michaelsraytracing.blogspot.com/feeds/2348883491805822709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://michaelsraytracing.blogspot.com/2009/06/java-path-tracing.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/2348883491805822709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9091017590054989137/posts/default/2348883491805822709'/><link rel='alternate' type='text/html' href='http://michaelsraytracing.blogspot.com/2009/06/java-path-tracing.html' title='Java path tracing'/><author><name>Michael</name><uri>http://www.blogger.com/profile/00169605863590992253</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_vEznFXnkVKU/SjTdAuPCKII/AAAAAAAAAEI/P0Ce_Bo-cnc/s72-c/Obrazek+2.jpg' height='72' width='72'/><thr:total>6</thr:total></entry></feed>
