<?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-30664350</id><updated>2011-04-22T00:40:05.945+01:00</updated><title type='text'>Raytracing Research and Development - by Joao Montenegro</title><subtitle type='html'>In this blog I'll be showing the evolution of my research and developments in the Photorealistic Image Synthesys area. I'll be using several known algorithms and techniques and, hopefully, some new ones created by me.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://joaoraytracing.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://joaoraytracing.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>João Montenegro</name><uri>http://www.blogger.com/profile/02677715675439796293</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>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-30664350.post-115429303316043180</id><published>2006-07-30T21:51:00.000+01:00</published><updated>2006-07-30T21:57:13.170+01:00</updated><title type='text'>Nightly Render - Happy Buddha</title><content type='html'>Here it is, a render of the famous Happy Buddha from the &lt;a href="http://graphics.stanford.edu/data/3Dscanrep/"&gt;Stanford 3D Scanning Repository&lt;/a&gt;. It is a 1 million triangles model rendered with Pathtracing with 150 rays per pixel. It took about 60.000 seconds to render.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3559/180/1600/happy_buddha1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3559/180/400/happy_buddha1.png" alt="" border="0" /&gt;&lt;/a&gt;(The Stanford's Happy Buddha - click to enlarge)&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/30664350-115429303316043180?l=joaoraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joaoraytracing.blogspot.com/feeds/115429303316043180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30664350&amp;postID=115429303316043180' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115429303316043180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115429303316043180'/><link rel='alternate' type='text/html' href='http://joaoraytracing.blogspot.com/2006/07/nightly-render-happy-buddha.html' title='Nightly Render - Happy Buddha'/><author><name>João Montenegro</name><uri>http://www.blogger.com/profile/02677715675439796293</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>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30664350.post-115382386494640338</id><published>2006-07-25T11:14:00.000+01:00</published><updated>2006-07-25T11:37:44.956+01:00</updated><title type='text'>Nightly Render - First Architectural Render</title><content type='html'>Actually, this was a daily render, since I left yesterday my PC at home rendering this model during my working time. This is a model created by my friend Ana Brütt in Autocad. She is studying Architecture, so I guess this is my first real architectural render. Thanks, Ana! ;-)&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3559/180/1600/ana_architecture.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3559/180/400/ana_architecture.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;(Architectural model by Ana Brütt - click to enlarge)&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;This was a loooong 10 hours render, and still it has lots of noise. I really wanted to see the light being scattered inside the building, so I chose a recursion depth of 15 ray bounces and 300 rays per pixel (these two factors are the reason for this long rendering time) . The model has about 2.700 triangles.  The model is lighten by an panoramic image of a sky with a far landscape and with a far triangle light to imitate the sun.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Path tracing is not a good choice for this kind of render with lots of indirect light. The next step will be, definitively, to implement Bi-Directional Path Tracing and Photon Mapping. Both these algorithms find probably more easily good paths through the entrances of light, since part of the emission is done from the lights into the model. Another interesting algorithm that seems to be very good finding the right paths in this kind of scene is Metropolis Light Transport. Well... there's lots of work in front of me... :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30664350-115382386494640338?l=joaoraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joaoraytracing.blogspot.com/feeds/115382386494640338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30664350&amp;postID=115382386494640338' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115382386494640338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115382386494640338'/><link rel='alternate' type='text/html' href='http://joaoraytracing.blogspot.com/2006/07/nightly-render-first-architectural.html' title='Nightly Render - First Architectural Render'/><author><name>João Montenegro</name><uri>http://www.blogger.com/profile/02677715675439796293</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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30664350.post-115359536702571529</id><published>2006-07-22T20:07:00.000+01:00</published><updated>2006-07-22T20:38:03.923+01:00</updated><title type='text'>Nightly Render - Animation with IBL</title><content type='html'>&lt;div style="text-align: left;"&gt;This time I rendered a small animation of a previously rendered scene lighten with IBL and uploaded it to &lt;a href="http://www.youtube.com/watch?v=VBoHFW04xgQ"&gt;YouTube&lt;/a&gt;:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.youtube.com/watch?v=VBoHFW04xgQ"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3559/180/320/ibl_2_100rpp.png" alt="" border="0" /&gt;&lt;/a&gt;(click to see the video at YouTube)&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/30664350-115359536702571529?l=joaoraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joaoraytracing.blogspot.com/feeds/115359536702571529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30664350&amp;postID=115359536702571529' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115359536702571529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115359536702571529'/><link rel='alternate' type='text/html' href='http://joaoraytracing.blogspot.com/2006/07/nightly-render-animation-with-ibl.html' title='Nightly Render - Animation with IBL'/><author><name>João Montenegro</name><uri>http://www.blogger.com/profile/02677715675439796293</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-30664350.post-115347175328298015</id><published>2006-07-21T09:39:00.000+01:00</published><updated>2006-07-22T14:30:23.936+01:00</updated><title type='text'>Nightly Render - Blue Guy</title><content type='html'>From time to time I do some renders that take looong times (hours) during the night while I'm sleeping. Usually in the next morning I have good surprises waiting for me. I'll be posting these nightly renders from now on, even if there are no new techniques being used.&lt;br /&gt;&lt;br /&gt;Here it is, this night's nightly render:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3559/180/1600/kd_ibl_guy.0.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3559/180/400/kd_ibl_guy.0.png" alt="" border="0" /&gt;&lt;/a&gt;(The Blue Guy - click to enlarge)&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: left;"&gt;Render info:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;640 x 480 / 19.500 triangles / 3.5 hours rendering&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Used features:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Pathtracing (200 rays per pixel, max depth of 2 bounces)&lt;/li&gt;&lt;li&gt;Low Dinamic Range Image-based Lighting&lt;/li&gt;&lt;li&gt;KD-Tree ( max depth=30 / min objects per node = 50)&lt;/li&gt;&lt;li&gt;.obj to .mr file converter&lt;br /&gt;&lt;/li&gt;&lt;/ul&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/30664350-115347175328298015?l=joaoraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joaoraytracing.blogspot.com/feeds/115347175328298015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30664350&amp;postID=115347175328298015' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115347175328298015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115347175328298015'/><link rel='alternate' type='text/html' href='http://joaoraytracing.blogspot.com/2006/07/nightly-render-blue-guy.html' title='Nightly Render - Blue Guy'/><author><name>João Montenegro</name><uri>http://www.blogger.com/profile/02677715675439796293</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-30664350.post-115343813663667025</id><published>2006-07-21T00:09:00.000+01:00</published><updated>2006-07-25T11:40:10.600+01:00</updated><title type='text'>Boosting the Render with a KD-Tree</title><content type='html'>I'm astonished with the speed increase of my renders with the use of a KD-Tree! A KD-Tree is a binary space partitioning data-structure that sub-divides the space, dramatically decreasing the time spent in the Ray-Objects intersections. Take a look on the &lt;a href="http://en.wikipedia.org/wiki/Kd-tree"&gt;KD-Tree entry at Wikipedia&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The folowing render consists of a 19.500 triangles mesh rendered into a 320x200 pixels image, with 4 rays-per-pixel with standard Raytracing. Without the KD-Tree it took 1 hour to render, using KD-Tree it took only 2 minutes!!!&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3559/180/1600/kd_tree.1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3559/180/400/kd_tree.0.png" alt="" border="0" /&gt;&lt;/a&gt;(19.500 tris 320p x 200p x 4 rays/p : 2 mins with KD-Tree)&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;I'm sure that the result could be even faster with the ringht KD-Tree settings.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;An even better result was the gargoyle int the previous post. Without the KD-Tree it took 1 hour to render, with the KD-Tree it took only 24 seconds!!!!! In that case I used a tree with a depth of 20 and with a minumum number of objects per node of 100.&lt;br /&gt;&lt;br /&gt;To be effective, the KD-Tree must be balanced. I'm using the following method to do so:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Split a bounding box of a node of the tree, I choose the axis along which the bounding-box is longer;&lt;/li&gt;&lt;li&gt;And split it in the median of the positions of the objects in the node on that axis .&lt;/li&gt;&lt;/ul&gt;I think now I'm almost ready for Bi-Directional Path-tracing or Photon Mapping...&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/30664350-115343813663667025?l=joaoraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joaoraytracing.blogspot.com/feeds/115343813663667025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30664350&amp;postID=115343813663667025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115343813663667025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115343813663667025'/><link rel='alternate' type='text/html' href='http://joaoraytracing.blogspot.com/2006/07/boosting-render-with-kd-tree.html' title='Boosting the Render with a KD-Tree'/><author><name>João Montenegro</name><uri>http://www.blogger.com/profile/02677715675439796293</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-30664350.post-115324386898299685</id><published>2006-07-18T18:22:00.001+01:00</published><updated>2006-07-19T13:32:18.646+01:00</updated><title type='text'>MR File Format &amp; .OBJ Importer</title><content type='html'>Importing a scene modeled in other programs is essencial to test my raytracer. Today I've finished the definition of a file format (.mr) capable of represent objects, normals, UVW maps, lights, shaders, camera and some rendering settings. I've also implemented an .MR parser and a .OBJ to .MR converter. Here is a render of gargoile with about 30.000 triangles:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3559/180/1600/mr_file.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3559/180/400/mr_file.png" alt="" border="0" /&gt;&lt;/a&gt;(render of a gargoile model - imported from .obj format into .mr - click to enlarge)&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;This gargoile render took about 3 hours! I definitely have to implement some ray-object acceleration method soon! My next development will probably be a KD-Tree data structure...&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/30664350-115324386898299685?l=joaoraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joaoraytracing.blogspot.com/feeds/115324386898299685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30664350&amp;postID=115324386898299685' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115324386898299685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115324386898299685'/><link rel='alternate' type='text/html' href='http://joaoraytracing.blogspot.com/2006/07/mr-file-format-obj-importer_18.html' title='MR File Format &amp; .OBJ Importer'/><author><name>João Montenegro</name><uri>http://www.blogger.com/profile/02677715675439796293</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-30664350.post-115324332473562729</id><published>2006-07-18T18:13:00.000+01:00</published><updated>2006-07-18T18:34:25.690+01:00</updated><title type='text'>Phong Material</title><content type='html'>This time I implemented a simple material with a BRDF according to the specular part of the Phong model. Here is the result (look at that glossy material on half of the table):&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3559/180/1600/phong.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3559/180/400/phong.png" alt="" border="0" /&gt;&lt;/a&gt;(Phong Glossy Material - notice the metal-like half of the table - click to enlarge)&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/30664350-115324332473562729?l=joaoraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joaoraytracing.blogspot.com/feeds/115324332473562729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30664350&amp;postID=115324332473562729' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115324332473562729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115324332473562729'/><link rel='alternate' type='text/html' href='http://joaoraytracing.blogspot.com/2006/07/phong-material.html' title='Phong Material'/><author><name>João Montenegro</name><uri>http://www.blogger.com/profile/02677715675439796293</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-30664350.post-115284793432977413</id><published>2006-07-14T04:20:00.000+01:00</published><updated>2006-07-18T18:33:25.756+01:00</updated><title type='text'>Basic Image-Based Lighting</title><content type='html'>Today I've been working on a basic Image Based Lighting. I'm using simple BMP files (8bits per channel) as a light source comming from a globe around the scene with an infinite radius. I was inspired by the works being done by &lt;a href="http://www.debevec.org"&gt;Paul Debevec&lt;/a&gt;, but I didn'r read any of his papers yet. This was a simple, intuitive implementation, based on what I think Image-Based Lighing (IBL) is. Here are two renders produced with a simple scene inserted in two different lighting environments:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3559/180/1600/ibl_1_100rpp.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3559/180/400/ibl_1_100rpp.png" alt="" border="0" /&gt;&lt;/a&gt;(Scene inside Grace Cathedral, San Francisco - click to enlarge)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3559/180/1600/ibl_2_100rpp.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3559/180/400/ibl_2_100rpp.png" alt="" border="0" /&gt;&lt;/a&gt;(Scene inside  Eucalyptus Grove, UC Berkeley - click to enlarge)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Both images were created from two HDR images from Paul Debevec's &lt;a href="http://www.debevec.org/Probes/"&gt;Light Probe Image Gallery&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30664350-115284793432977413?l=joaoraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joaoraytracing.blogspot.com/feeds/115284793432977413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30664350&amp;postID=115284793432977413' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115284793432977413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115284793432977413'/><link rel='alternate' type='text/html' href='http://joaoraytracing.blogspot.com/2006/07/basic-image-based-lighting.html' title='Basic Image-Based Lighting'/><author><name>João Montenegro</name><uri>http://www.blogger.com/profile/02677715675439796293</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-30664350.post-115274933790255851</id><published>2006-07-13T01:01:00.000+01:00</published><updated>2006-07-13T01:09:02.770+01:00</updated><title type='text'>Texture Mapping</title><content type='html'>Today I've implemented the Texture Mapped Lambertian Shader. Here is the result:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3559/180/1600/texture1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3559/180/400/texture1.png" alt="" border="0" /&gt;&lt;/a&gt;(click to enlarge)&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;This image took about 2 hours to render on my Pentium IV at 2.4 GHz. I used 600 rays-per-pixel and an extra point light near the camera (that's why there are those strange shadows in the front wall).&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/30664350-115274933790255851?l=joaoraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joaoraytracing.blogspot.com/feeds/115274933790255851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30664350&amp;postID=115274933790255851' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115274933790255851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115274933790255851'/><link rel='alternate' type='text/html' href='http://joaoraytracing.blogspot.com/2006/07/texture-mapping.html' title='Texture Mapping'/><author><name>João Montenegro</name><uri>http://www.blogger.com/profile/02677715675439796293</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-30664350.post-115274874293259610</id><published>2006-07-13T00:46:00.000+01:00</published><updated>2006-07-13T01:00:52.796+01:00</updated><title type='text'>MonteRay - the C++ Raytracer</title><content type='html'>Finally, I'm back in business! I've decided to re-write everything from scratch in C++. Right now I'm not interested in writing the perfect code because I'm re-learning C++ (a lot more difficult than Java, but also a lot faster). The new program was baptized as "MonteRay" (Montenegro Raytracer or Monte-Carlo Raytracer). Here is MonteRay's first light, a 1000 ray-per-pixel Pathtracing render of a Cornell Box (for change):&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3559/180/1600/path_1024_600rpp.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3559/180/400/path_1024_600rpp.png" alt="" border="0" /&gt;&lt;/a&gt;(click to enlarge)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;It was a lot faster than JRay (it took about 3 hours to be rendered,  against the 8 to 9 hours that Jray would have taken). Notice that there is almost no noise in the image.&lt;br /&gt;&lt;br /&gt;Well, now that I've recovered the lost time, now it is time for new challenges... let's see which new stuff will be implemented in the next days!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30664350-115274874293259610?l=joaoraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joaoraytracing.blogspot.com/feeds/115274874293259610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30664350&amp;postID=115274874293259610' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115274874293259610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115274874293259610'/><link rel='alternate' type='text/html' href='http://joaoraytracing.blogspot.com/2006/07/monteray-c-raytracer.html' title='MonteRay - the C++ Raytracer'/><author><name>João Montenegro</name><uri>http://www.blogger.com/profile/02677715675439796293</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-30664350.post-115226990419000941</id><published>2006-07-07T11:46:00.000+01:00</published><updated>2006-07-07T14:36:53.726+01:00</updated><title type='text'>JRay - Java Raytracer (or Joao's Raytracer :-) )</title><content type='html'>From last October to last  December I spent some of my after-work time studying deeper some of the raytracing family of algorithms. I bought two great books (Henrik Wann Jensen's &lt;a href="http://graphics.ucsd.edu/%7Ehenrik/papers/book/"&gt;"Realistic Image Synthesis Using Photon Mapping"&lt;/a&gt; and Peter Shirley + R. Keith Morley's &lt;a href="http://www.akpeters.com/product.asp?ProdCode=1985"&gt;"Realistic Raytracing"&lt;/a&gt;) which helped me entering in this world. Meanwhile I read several classical papers and after that I decided to implement a raytracer in Java (which is a great language to experiment algorithms, since it is simple enough to help one to be focused on the algorithm, and not on its implementation). The result was JRay - Java Raytracer (or Joao's Raytracer), which was uploaded into Sourceforge. Take a look in JRay's Sourceforge site to see some renders and to download its source-code. Some of the features implemeted are:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Whitted's Raytracing algorithm (shadows, reflections, refractions)&lt;/li&gt;&lt;li&gt;Cook's Distributed Raytracing algorithm (antialiasing, soft shadows,  depth-of-field)&lt;/li&gt;&lt;li&gt;Kajiya's Path-Tracing (to solve the Rendering Equation: color bleeding from inter-object reflections, caustics)&lt;/li&gt;&lt;li&gt;Abstract camera model (whith a pin-hole and thin-lens camera, which allows to render depth-of-field phenomena);&lt;/li&gt;&lt;li&gt;Abstract shaders (with several implementations: lambertian, mirror, glass - with Fresnell effect)&lt;/li&gt;&lt;li&gt;Abstract ray-object intersection accelerator (implementation of a Kd-Tree)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I was planning to implement other algorithms, such as Bidirectional Path-Tracing, Metropolis Light Transport and Photon Mapping, but my after-work time got shorter and shorter, and I had to stop my Java developments. Recently I started to rewrite JRay's algorithms in C++, my next posts will show the results.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30664350-115226990419000941?l=joaoraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joaoraytracing.blogspot.com/feeds/115226990419000941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30664350&amp;postID=115226990419000941' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115226990419000941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115226990419000941'/><link rel='alternate' type='text/html' href='http://joaoraytracing.blogspot.com/2006/07/jray-java-raytracer-or-joaos-raytracer.html' title='JRay - Java Raytracer (or Joao&apos;s Raytracer :-) )'/><author><name>João Montenegro</name><uri>http://www.blogger.com/profile/02677715675439796293</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-30664350.post-115206249412510344</id><published>2006-07-05T02:10:00.000+01:00</published><updated>2006-07-07T14:32:40.060+01:00</updated><title type='text'>My first works in CG</title><content type='html'>My first work in CG was done by 1995 and it consisted in simple fractals renderer written in MS-DOS' QBasic. After that, by 1997 (already during my graduation studies in Computer Engineering in Oporto's University - &lt;a href="http://www.fe.up.pt"&gt;FEUP&lt;/a&gt;) I've implemented a simple raster 3D graphics engine in C and Assembly with Z-Buffer, Gouraud Shading and corrected Texture-Mapping. Unfortunately I don't have any images produced by these programs nor the source code...&lt;br /&gt;&lt;br /&gt;Meanwhile, I stoped these studies until 2005. By then, I started to study the basic (Whitted-style) Raytracing algorithm. Here is my first raytraced image, produced by a test program written in Java:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3559/180/1600/rt.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3559/180/320/rt.png" alt="" border="0" /&gt;&lt;/a&gt;(And, voilá, my first synthetic shadow... )&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;These were my first studies on CG... My interest on this area increases every day and I'm trying to dedicate myself professionally to it. Probably I'll post good news about this in a near future... ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30664350-115206249412510344?l=joaoraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joaoraytracing.blogspot.com/feeds/115206249412510344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30664350&amp;postID=115206249412510344' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115206249412510344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115206249412510344'/><link rel='alternate' type='text/html' href='http://joaoraytracing.blogspot.com/2006/07/my-first-works-in-cg.html' title='My first works in CG'/><author><name>João Montenegro</name><uri>http://www.blogger.com/profile/02677715675439796293</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-30664350.post-115206178887599463</id><published>2006-07-05T02:01:00.000+01:00</published><updated>2006-07-05T02:09:48.883+01:00</updated><title type='text'>Introduction</title><content type='html'>Computer Graphics (Rendering, more precisely)  is one of my greatest passions, and because of that I've decided to learn and implement some rendering algorithms. I'll start an MSc in Computer Animation in Bournemouth University (England) next October, untill then I'll be creating a C++ version of a raytracer I've been developing lately.&lt;br /&gt;&lt;br /&gt;In this blog I expect the evolution of my developments in this area. Hope you enjoy it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30664350-115206178887599463?l=joaoraytracing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://joaoraytracing.blogspot.com/feeds/115206178887599463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30664350&amp;postID=115206178887599463' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115206178887599463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30664350/posts/default/115206178887599463'/><link rel='alternate' type='text/html' href='http://joaoraytracing.blogspot.com/2006/07/introduction.html' title='Introduction'/><author><name>João Montenegro</name><uri>http://www.blogger.com/profile/02677715675439796293</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></feed>
