<?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-7277449027963623452</id><updated>2012-02-02T07:19:52.934-08:00</updated><category term='ruby'/><category term='high quality'/><category term='octree'/><category term='rendering'/><category term='octtree'/><category term='Gaiking'/><category term='ray tracing'/><category term='LightStage'/><category term='dynamic'/><category term='hybrid'/><category term='transformers'/><category term='graphics'/><category term='voxels'/><category term='sparse voxel octree'/><category term='bidirectional'/><category term='games'/><category term='svo'/><category term='ray casting'/><category term='real-time'/><category term='brigade'/><category term='webgl'/><category term='voxel'/><category term='gigavoxels'/><category term='path tracing'/><category term='id tech 6'/><category term='gpu'/><category term='raytracing'/><category term='realtime'/><category term='arauna'/><category term='id'/><category term='otoy'/><category term='voxelstein 3D'/><category term='pathtracing'/><category term='kajiya'/><category term='cbox'/><category term='global illumination'/><category term='geometry maps'/><title type='text'>Ray Tracey's blog</title><subtitle type='html'>Quasi-random blog about real-time photorealistic graphics on the GPU</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default?start-index=101&amp;max-results=100'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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>230</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-3441794409509226355</id><published>2012-02-02T07:19:00.000-08:00</published><updated>2012-02-02T07:19:52.946-08:00</updated><title type='text'>Separable subsurface scattering</title><content type='html'>This has nothing to do with ray tracing, but this is a truly amazing video demonstrating a new technique to realistically render human skin:&lt;br /&gt;&lt;br /&gt;Vimeo vid:&amp;nbsp;&lt;a href="http://vimeo.com/36048029"&gt;http://vimeo.com/36048029&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Original blogpost, including executable demo + source code:&amp;nbsp;&lt;a href="http://www.iryoku.com/separable-sss-released"&gt;http://www.iryoku.com/separable-sss-released&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-3441794409509226355?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/3441794409509226355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=3441794409509226355' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/3441794409509226355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/3441794409509226355'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2012/02/separable-subsurface-scattering.html' title='Separable subsurface scattering'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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-7277449027963623452.post-50688911778145741</id><published>2012-01-31T14:49:00.000-08:00</published><updated>2012-01-31T15:16:49.412-08:00</updated><title type='text'>VoxLOD: Interactive ray tracing of massive models with indirect lighting using voxels</title><content type='html'>&lt;div style="text-align: justify;"&gt;Just encountered an impressive video of a technology named VoxLOD on Youtube today:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.youtube.com/watch?v=1IwtKLtYc9M"&gt;http://www.youtube.com/watch?v=1IwtKLtYc9M&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;As the name aptly implies, VoxLOD&amp;nbsp;uses a voxel-based LOD scheme to smoothly stream in and visualize the geometry of the massive model. The first part of the video shows direct lighting only (primary and shadow rays), while the second half is much more interesting and demonstrates real-time one bounce diffuse indirect lighting (filtered Monte Carlo GI). From the &lt;a href="http://voxelium.wordpress.com/2012/01/31/interactive-ray-tracing-of-large-models-using-voxel-hierarchies/"&gt;paper&amp;nbsp;"Interactive ray tracing of large models using voxel hierarchies":&lt;/a&gt;&lt;/div&gt;&lt;blockquote class="tr_bq" style="text-align: justify;"&gt;"We cast one shadow ray per primary or diffuse ray, and&amp;nbsp;two random diffuse rays per primary ray. The diffuse rays are used to compute both one bounce of indirect irradiance and&amp;nbsp;environment irradiance, which are processed with a bilateral ﬁlter [TM98] to eliminate noise."&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;From &lt;a href="http://voxelium.wordpress.com/2010/07/25/shadows-and-global-illumination/"&gt;an earlier post on the author's blog&lt;/a&gt;:&lt;/div&gt;&lt;blockquote class="tr_bq" style="text-align: justify;"&gt;&lt;span style="color: #e69138; font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif;"&gt;&lt;span style="line-height: 16px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span style="color: #e69138; font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif;"&gt;&lt;span style="line-height: 16px;"&gt;"There are two light sources: a point light (the Sun) and a hemispherical one (the sky). I use Monte Carlo integration to compute the GI with one bounce of indirect lighting. Nothing is precomputed (except the massive model data structure of course).&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="color: #e69138; font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif;"&gt;&lt;span style="line-height: 16px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span style="color: #e69138; font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif;"&gt;&lt;span style="line-height: 16px;"&gt;I trace only two GI rays per pixel, and therefore, the resulting image must be heavily filtered in order to eliminate the extreme noise. While all the ray tracing is done on the CPU, the noise filter runs on the GPU and is implemented in CUDA. Since diffuse indirect lighting is quite low frequency, it is adequate to use low LODs for the GI rays."&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="color: #e69138; font-family: 'Trebuchet MS', Trebuchet, Verdana, sans-serif;"&gt;&lt;span style="line-height: 16px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;Another interesting tidbit from the paper:&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;"By using LOD voxels, signiﬁcantly higher frame rates can&amp;nbsp;be achieved, with minimal loss of image quality, because ray&amp;nbsp;traversals are less deep, memory accesses are more coherent, and intersections with voxels are free, contrary to triangles (the voxel ﬁlls its parent node, therefore, the intersection is equal to the already computed intersection with the&amp;nbsp;node). Furthermore, the LOD framework can also reduce the&amp;nbsp;amount of aliasing artifacts, especially in case of highly tessellated models"&lt;/blockquote&gt;&lt;br /&gt;The quality of the indirect lighting looks pretty amazing for just 2 (filtered) random samples per pixel and is completely noise-free, as can be seen in this picture from the paper&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-gOr4JbhBSRA/TyhttvyxDhI/AAAAAAAABtg/dMvL1koPjk4/s1600/voxLOD_GI.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="298" src="http://2.bp.blogspot.com/-gOr4JbhBSRA/TyhttvyxDhI/AAAAAAAABtg/dMvL1koPjk4/s400/voxLOD_GI.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;All the ray tracing is currently CPU based (the GI algorithm runs at 1-2 fps on a quad core cpu), but it would probably run in real-time at much higher framerates when implemented entirely on the GPU.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-50688911778145741?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/50688911778145741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=50688911778145741' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/50688911778145741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/50688911778145741'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2012/01/voxlod-interactive-ray-tracing-of.html' title='VoxLOD: Interactive ray tracing of massive models with indirect lighting using voxels'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-gOr4JbhBSRA/TyhttvyxDhI/AAAAAAAABtg/dMvL1koPjk4/s72-c/voxLOD_GI.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-1478347540707403838</id><published>2012-01-26T12:16:00.000-08:00</published><updated>2012-01-26T12:16:08.379-08:00</updated><title type='text'>Brigade 2 Blowout!</title><content type='html'>&lt;div style="text-align: justify;"&gt;Jacco Bikker, one of the Brigade developers, posted some updates about the Brigade 2 path tracer:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- there is a new downloadable demo showing off the Blinn shader (Fermi only). I haven't been able to test it yet, but the screenshot looks sweet!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- a brand new video of the Reflect game using Brigade 2&amp;nbsp;running on 2 GTX 470 GPUs, which demonstrates some dramatic lighting effects and very low noise levels (for a real-time path traced interior scene)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;All can be seen and downloaded from here:&amp;nbsp;&lt;a href="http://igad.nhtv.nl/~bikker/"&gt;http://igad.nhtv.nl/~bikker/&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;There should also be a playable Reflect demo up by tomorrow!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-1478347540707403838?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/1478347540707403838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=1478347540707403838' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1478347540707403838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1478347540707403838'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2012/01/brigade-2-blowout.html' title='Brigade 2 Blowout!'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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-7277449027963623452.post-5073516317468298307</id><published>2012-01-26T11:54:00.000-08:00</published><updated>2012-01-26T11:55:26.918-08:00</updated><title type='text'>GigaVoxels thesis online</title><content type='html'>Cyril Crassin has just posted his entire PhD thesis on GigaVoxels, the sparse voxel octree raycasting technology which supports efficient depth-of-field, soft shadows, animated voxel objects and indirect lighting at&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.icare3d.org/2012/01/phd-thesis-gigavoxels.html"&gt;http://blog.icare3d.org/2012/01/phd-thesis-gigavoxels.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There are over 200 pages of voxel raytracing goodies :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-5073516317468298307?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/5073516317468298307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=5073516317468298307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5073516317468298307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5073516317468298307'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2012/01/gigavoxels-thesis-online.html' title='GigaVoxels thesis online'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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-7277449027963623452.post-2302138867390695249</id><published>2012-01-24T04:39:00.000-08:00</published><updated>2012-01-24T07:40:24.936-08:00</updated><title type='text'>Real-time path traced Sponza fly-through on 3 GPUs!</title><content type='html'>&lt;div style="text-align: justify;"&gt;I've sent the executable of the teapot in Sponza scene to a friend, szczyglo74 on Youtube, who has a much more powerful rig than my own (a PC with 3 GPUs: 1 GTX 590 (dual gpu card) + 1 GTX 460) &amp;nbsp;and who made some very cool real-time videos of the sponza scene. Many thanks szczyglo!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;The maximum path depth in each of these videos is 4 (= 3 bounces max):&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="color: #6aa84f;"&gt;&lt;u&gt;32 spp per frame&lt;/u&gt; (480x360, 1/4th render resolution, &lt;u&gt;8 fps&lt;/u&gt;):&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.youtube.com/watch?v=fVAl-oKAL9I"&gt;http://www.youtube.com/watch?v=fVAl-oKAL9I&lt;/a&gt;&amp;nbsp; :awesome video, shows real-time convergence in most parts of the scene&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="color: #6aa84f;"&gt;32 spp per frame (640x480, 1/4th render resolution, 4.7 fps):&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.youtube.com/watch?v=OSqfIDHLido"&gt;http://www.youtube.com/watch?v=OSqfIDHLido&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="color: #6aa84f;"&gt;8 spp per frame (480x360, 1/4th render resolution, ~21fps):&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.youtube.com/watch?v=rYsdlDEaMfY"&gt;http://www.youtube.com/watch?v=rYsdlDEaMfY&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="color: #6aa84f;"&gt;4 spp per frame (640x480, 1/4th render resolution, ~18fps):&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.youtube.com/watch?v=lb8SAGCu57k"&gt;http://www.youtube.com/watch?v=lb8SAGCu57k&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The above videos clearly show the importance of the number of samples per pixel per frame in indirectly lit areas: despite the low max path depth of 4, it is still possible to discern some details in the corridors in the first two videos (32 spp per frame) during navigation, while the last two videos (8 and 4 spp per frame) are obviously too dark in these regions, but clear up very fast with a stationary camera. Note that these tests were made with a kernel that is not optimized for indirect lighting (no multiple importance sampling is used here).&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I'm quite happy with the sense of photorealism in these videos, especially when you consider that this is just brute force path tracing (no caching, filtering or interpolation yet nor anything like image reconstruction, adaptive sampling, importance sampling, bidirectional pt, eye path reprojection, ... which are all interesting approaches). A textured version of Sponza will probably further increase the realism, which is something I will try in a next test.&amp;nbsp;&amp;nbsp;&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/7277449027963623452-2302138867390695249?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/2302138867390695249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=2302138867390695249' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/2302138867390695249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/2302138867390695249'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2012/01/real-time-path-traced-sponza-fly.html' title='Real-time path traced Sponza fly-through on 3 GPUs!'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-7956055925605774933</id><published>2012-01-23T12:23:00.000-08:00</published><updated>2012-01-23T13:29:28.369-08:00</updated><title type='text'>Utah Teapot in Sponza continued</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: justify;"&gt;I've managed to get the "teapot in Sponza" scene to render slightly faster by treating all objects in the scene as static.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Youtube videos (rendered on a GeForce GTS 450):&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://www.youtube.com/watch?v=Rs5Tq8tzp2E"&gt;http://www.youtube.com/watch?v=Rs5Tq8tzp2E&lt;/a&gt;&amp;nbsp;(8 spp per frame)&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://www.youtube.com/watch?v=OmTtsFfH_mw"&gt;http://www.youtube.com/watch?v=OmTtsFfH_mw&lt;/a&gt;&amp;nbsp;(8 spp per frame)&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-dInO86r437w/Tx3AWtGF5DI/AAAAAAAABss/ydzrFqSS3Lg/s1600/B2_teapot8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="255" src="http://2.bp.blogspot.com/-dInO86r437w/Tx3AWtGF5DI/AAAAAAAABss/ydzrFqSS3Lg/s320/B2_teapot8.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-IvBKdt9Rnys/Tx3AZHiub8I/AAAAAAAABs0/DbVPLRMG8V8/s1600/B2_teapot9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="255" src="http://4.bp.blogspot.com/-IvBKdt9Rnys/Tx3AZHiub8I/AAAAAAAABs0/DbVPLRMG8V8/s320/B2_teapot9.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-EYDmHElf5Uc/Tx3AbUS1t1I/AAAAAAAABs8/lpgubZsvFeo/s1600/B2_teapot9b.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="255" src="http://3.bp.blogspot.com/-EYDmHElf5Uc/Tx3AbUS1t1I/AAAAAAAABs8/lpgubZsvFeo/s320/B2_teapot9b.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-DMFw0ajsQkg/Tx3AdyREKEI/AAAAAAAABtE/gu5xQWhhDk8/s1600/B2_teapot9c.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="255" src="http://4.bp.blogspot.com/-DMFw0ajsQkg/Tx3AdyREKEI/AAAAAAAABtE/gu5xQWhhDk8/s320/B2_teapot9c.png" width="320" /&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/7277449027963623452-7956055925605774933?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/7956055925605774933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=7956055925605774933' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/7956055925605774933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/7956055925605774933'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2012/01/utah-teapot-in-sponza-continued.html' title='Utah Teapot in Sponza continued'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-dInO86r437w/Tx3AWtGF5DI/AAAAAAAABss/ydzrFqSS3Lg/s72-c/B2_teapot8.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-3276399014766891681</id><published>2012-01-22T11:45:00.000-08:00</published><updated>2012-01-25T02:41:06.898-08:00</updated><title type='text'>Optix 2.5 released</title><content type='html'>&lt;div style="text-align: justify;"&gt;A few days ago, Nvidia has released &lt;a href="http://developer.nvidia.com/optix"&gt;OptiX SDK 2.5 RC1&lt;/a&gt; which stands out compared to prior releases due to a number of major improvements:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- out-of-core GPU ray tracing: scenes can now exceed the amount of available GPU RAM (up to 3 times)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- HLBVH2 support (&lt;a href="http://www.google.be/url?sa=t&amp;amp;rct=j&amp;amp;q=hlbvh+garanzha&amp;amp;source=web&amp;amp;cd=2&amp;amp;ved=0CCwQFjAB&amp;amp;url=http%3A%2F%2Fgaranzha.com%2FDocuments%2Fhlbvh.pdf&amp;amp;ei=XWQcT9DjDpGd-wabs4G1Cg&amp;amp;usg=AFQjCNG4i9sNZHlDuiTM0cuD1BtQrL5G1A&amp;amp;sig2=vyTmZT2sPFBAOvOxeGEVZA"&gt;Garanzha and Pantaleoni&lt;/a&gt;): replaces the previous LBVH builder and is able to build the BVH acceleration structure on the GPU at a fraction of the time it would take a CPU, which allows for completely dynamic scenes by rebuilding the acceleration structure each frame in real-time (e.g. the HLBVH2 paper reports building times of 10.5 ms on a GTX480 for a model consisting of 1.76M fully dynamic polygons). HLBVH2 traversal speed is said to be comparable to a CPU built BVH&lt;br /&gt;&lt;br /&gt;This will greatly benefit real-time GPU path traced games and animations as it not only reduces the BVH build times by several orders of magnitude compared to CPU builders, but also eliminates costly per-frame CPU-to-GPU transfers of the updated BVH (when built on the cpu)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- the SDK path tracing sample is enhanced with multiple importance sampling&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-3276399014766891681?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/3276399014766891681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=3276399014766891681' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/3276399014766891681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/3276399014766891681'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2012/01/optix-25-released.html' title='Optix 2.5 released'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-2511811564957152700</id><published>2012-01-20T08:00:00.000-08:00</published><updated>2012-01-20T12:22:12.933-08:00</updated><title type='text'>Real-time browser based path tracer</title><content type='html'>&lt;div style="text-align: justify;"&gt;While searching the net for ways to improve convergence in dynamic, path traced environments, I stumbled upon this neat web-based path tracer created by Edward Porten:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.openprocessing.org/visuals/?visualID=14228"&gt;http://www.openprocessing.org/visuals/?visualID=14228&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;It uses progressive spatial caching and runs pretty fast despite being CPU-based.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-o9orbSmrtJ8/TxmPV-ur_QI/AAAAAAAABsQ/TefwnJ3Qy-w/s1600/javaknot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-o9orbSmrtJ8/TxmPV-ur_QI/AAAAAAAABsQ/TefwnJ3Qy-w/s320/javaknot.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-5Fy-6EIf6_Q/TxmPWiPw2kI/AAAAAAAABsU/NfIwHBQ2pZg/s1600/dinojava.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="316" src="http://1.bp.blogspot.com/-5Fy-6EIf6_Q/TxmPWiPw2kI/AAAAAAAABsU/NfIwHBQ2pZg/s320/dinojava.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Also check out some other browser-based demos from the same author at&amp;nbsp;&lt;a href="http://www.openprocessing.org/portal/?userID=6535"&gt;http://www.openprocessing.org/portal/?userID=6535&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The&amp;nbsp;&lt;a href="http://www.openprocessing.org/visuals/?visualID=12868"&gt;Sphere flake tracer&lt;/a&gt; uses a cool looking frameless rendering technique, roughly comparable to frame averaging.&lt;br /&gt;&lt;br /&gt;"Hair Ball" and &amp;nbsp;"Terrain Ray Marching" &amp;nbsp;are awesome as well.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-2511811564957152700?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/2511811564957152700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=2511811564957152700' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/2511811564957152700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/2511811564957152700'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2012/01/real-time-browser-based-path-tracer.html' title='Real-time browser based path tracer'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-o9orbSmrtJ8/TxmPV-ur_QI/AAAAAAAABsQ/TefwnJ3Qy-w/s72-c/javaknot.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-2387207717552171678</id><published>2012-01-19T05:27:00.000-08:00</published><updated>2012-01-19T09:26:06.568-08:00</updated><title type='text'>Brigade 2 Teapot in Sponza test</title><content type='html'>&lt;div style="text-align: justify;"&gt;Testing indirect lighting with motion blur in Brigade 2 with the teapot and the Sponza atrium:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Youtube videos:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=QCPCAZlS5QI"&gt;http://www.youtube.com/watch?v=QCPCAZlS5QI&lt;/a&gt;&amp;nbsp;(8 spp per frame)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=GyVPwhs592I"&gt;http://www.youtube.com/watch?v=GyVPwhs592I&lt;/a&gt;&amp;nbsp;(4 spp per frame)&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Some pics:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-haFLVBrysL4/TxgZ3I6tVpI/AAAAAAAABro/wu4m_5TyzC0/s1600/teapotsponza1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="257" src="http://4.bp.blogspot.com/-haFLVBrysL4/TxgZ3I6tVpI/AAAAAAAABro/wu4m_5TyzC0/s320/teapotsponza1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-hiaY1udPK0o/TxgZ5ERsKgI/AAAAAAAABrw/IfWj7K2eVH4/s1600/teapotsponza2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="260" src="http://1.bp.blogspot.com/-hiaY1udPK0o/TxgZ5ERsKgI/AAAAAAAABrw/IfWj7K2eVH4/s320/teapotsponza2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-9dEahJFo7Zo/TxgZ6BWCIUI/AAAAAAAABr4/0dX26PYzJ90/s1600/teapotsponza3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="260" src="http://4.bp.blogspot.com/-9dEahJFo7Zo/TxgZ6BWCIUI/AAAAAAAABr4/0dX26PYzJ90/s320/teapotsponza3.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-JKExNRcMBFo/TxgZ7aliB7I/AAAAAAAABsA/RbpcBpFVdCc/s1600/teapotsponza4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="260" src="http://2.bp.blogspot.com/-JKExNRcMBFo/TxgZ7aliB7I/AAAAAAAABsA/RbpcBpFVdCc/s320/teapotsponza4.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-o7so-3yuzGA/TxgezmnWp6I/AAAAAAAABsI/U16xsGjpMBE/s1600/teapotsponza5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="260" src="http://3.bp.blogspot.com/-o7so-3yuzGA/TxgezmnWp6I/AAAAAAAABsI/U16xsGjpMBE/s320/teapotsponza5.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This is a particularly nasty scene, since all the light is coming&amp;nbsp;from the skydome&amp;nbsp;through the narrow roof &amp;nbsp;(no portals or importance sampling are used, max path depth is 4). Nevertheless, it still converges rather quickly on a GTS 450 using the motion blur trick.&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-2387207717552171678?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/2387207717552171678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=2387207717552171678' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/2387207717552171678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/2387207717552171678'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2012/01/brigade-2-teapot-in-sponza-test.html' title='Brigade 2 Teapot in Sponza test'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-haFLVBrysL4/TxgZ3I6tVpI/AAAAAAAABro/wu4m_5TyzC0/s72-c/teapotsponza1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-8961418082828851369</id><published>2012-01-18T06:46:00.000-08:00</published><updated>2012-01-19T02:01:08.465-08:00</updated><title type='text'>Brigade 2 motion blur test continued</title><content type='html'>&lt;div style="text-align: justify;"&gt;I made some side-by-side comparisons from the Utah teapot scene (&lt;a href="http://www.youtube.com/watch?v=KxELvSK3Gl0"&gt;http://www.youtube.com/watch?v=KxELvSK3Gl0&lt;/a&gt;)&amp;nbsp;to show the difference that the motion blur technique makes in areas that are partially lit with indirect lighting. Both sides in the comparison screens use only 4 samples per pixel. The low samplerate is required to achieve playable framerates. Motion blur (frame averaging) is disabled in the left image, while the right image averages the pixels of the current frame with those of the previous 7 frames (equivalent to 32 samples per pixel). The difference in obscured regions is enormous. This is the quality that can be achieved in real-time (+10 fps) using one current high end GPU (GTX 570 or better):&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-WLJ_OYlsgvE/TxbaFjaIv5I/AAAAAAAABrY/EL1J5L623P8/s1600/B2indirectmotionblur2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="126" src="http://1.bp.blogspot.com/-WLJ_OYlsgvE/TxbaFjaIv5I/AAAAAAAABrY/EL1J5L623P8/s320/B2indirectmotionblur2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Edges and shadows become much more clearly defined:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-PhHwVdXNXQo/TxbaGTSsBwI/AAAAAAAABrc/Sm2sk1BSf7Y/s1600/B2indirectmotionblur.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="126" src="http://3.bp.blogspot.com/-PhHwVdXNXQo/TxbaGTSsBwI/AAAAAAAABrc/Sm2sk1BSf7Y/s320/B2indirectmotionblur.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Video (low framerate, rendered at 640x480 on a GTS 450):&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&amp;nbsp;&lt;a href="http://www.youtube.com/watch?v=U0_dgeiaxHc"&gt;http://www.youtube.com/watch?v=U0_dgeiaxHc&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;It's amazing what such a simple trick can do to the quality of the image, without losing any detail. My next test will involve a 3rd person car camera like the one in&amp;nbsp;&lt;a href="http://www.youtube.com/watch?v=SOic3eE8wrs"&gt;http://www.youtube.com/watch?v=SOic3eE8wrs&lt;/a&gt;&amp;nbsp;which should work really well in combination with the motion blur (no sudden sideways movement).&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-8961418082828851369?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/8961418082828851369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=8961418082828851369' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/8961418082828851369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/8961418082828851369'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2012/01/brigade-2-motion-blur-test-continued.html' title='Brigade 2 motion blur test continued'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-WLJ_OYlsgvE/TxbaFjaIv5I/AAAAAAAABrY/EL1J5L623P8/s72-c/B2indirectmotionblur2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-2394150619265951378</id><published>2012-01-17T11:47:00.000-08:00</published><updated>2012-01-17T14:35:53.868-08:00</updated><title type='text'>New paper about noise reduction for real-time/interactive path tracing</title><content type='html'>"Practical noise reduction for progressive stochastic ray tracing with perceptual control"&lt;br /&gt;&lt;br /&gt;Check it out here:&amp;nbsp;&lt;a href="http://www.karsten-schwenk.de/papers/papers_noisered.html"&gt;http://www.karsten-schwenk.de/papers/papers_noisered.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The "supplemental.zip" folder contains some very nice comparison videos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-2394150619265951378?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/2394150619265951378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=2394150619265951378' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/2394150619265951378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/2394150619265951378'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2012/01/new-paper-about-noise-reduction-for.html' title='New paper about noise reduction for real-time/interactive path tracing'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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-7277449027963623452.post-1206049316728100127</id><published>2012-01-17T04:32:00.000-08:00</published><updated>2012-01-17T10:58:50.897-08:00</updated><title type='text'>Brigade 2 motion blurred Utah teapot</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-CLri0NegWdE/TxSLg7EFS5I/AAAAAAAABrQ/SIdxE20z9Mk/s1600/B2_teapot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="318" src="http://3.bp.blogspot.com/-CLri0NegWdE/TxSLg7EFS5I/AAAAAAAABrQ/SIdxE20z9Mk/s400/B2_teapot.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Small update on my previous post about motion blur in Brigade 2. I've made a small Bullet physics demo featuring a holy symbol of computer graphics, the Utah teapot:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.youtube.com/watch?v=KxELvSK3Gl0"&gt;http://www.youtube.com/watch?v=KxELvSK3Gl0&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The video was rendered on a low end GTS 450.&amp;nbsp;The scene is inspired by and meant to be a real-time remake of an&amp;nbsp;&lt;a href="http://www.youtube.com/watch?v=YlGVitBaaHE"&gt;animation rendered with GPU path tracing using SmallLuxGPU&lt;/a&gt;&amp;nbsp;(last scene in the video).&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-1206049316728100127?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/1206049316728100127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=1206049316728100127' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1206049316728100127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1206049316728100127'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2012/01/brigade-2-motion-blurred-utah-teapot.html' title='Brigade 2 motion blurred Utah teapot'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-CLri0NegWdE/TxSLg7EFS5I/AAAAAAAABrQ/SIdxE20z9Mk/s72-c/B2_teapot.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-8331046526533606459</id><published>2012-01-15T08:43:00.000-08:00</published><updated>2012-01-15T11:09:21.693-08:00</updated><title type='text'>Brigade 2 motion blur test</title><content type='html'>&lt;div style="text-align: justify;"&gt;Today I've added cheap camera motion blur to the Brigade 2 path tracer using the OpenGL accumulation buffer.&amp;nbsp;The technique blends the pixels of one or more previous frames with the current frame and works very well for real-time path traced dynamic scenes, provided the framerate is sufficiently high (10+ fps).&amp;nbsp;&amp;nbsp;The difference in image quality is huge: path tracing noise is drastically reduced and since all calculations pertaining to the accumulation buffer are hardware accelerated on the GPU, there is zero impact on the rendering performance. Depending on the accumulation value,&amp;nbsp;you essentially get two to ten times the amount of samples per pixel for free at the expense of slight blurring caused by the frame averaging (the blurring is actually not so bad because it adds a nice cinematic effect).&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Below is a comparison image of a stress test of an indoor scene without and with motion blur applied (rendered on 8600M GT). The images were rendered with&amp;nbsp;multiple importance sampling&amp;nbsp;using&amp;nbsp;&lt;u&gt;only 1 sample per pixel&lt;/u&gt; to better show the differences (converging is off):&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-rvhAY1KUoU0/TxL_mf6GNlI/AAAAAAAABqo/9pwuE3FOYGY/s1600/B2comparison.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="124" src="http://3.bp.blogspot.com/-rvhAY1KUoU0/TxL_mf6GNlI/AAAAAAAABqo/9pwuE3FOYGY/s320/B2comparison.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;span style="text-align: left;"&gt;Comparison of the scene with the rotating ogre from a previous demo (see&amp;nbsp;&lt;/span&gt;&lt;a href="http://raytracey.blogspot.com/2011/12/videos-and-executable-demo-of-brigade-2.html" style="text-align: left;"&gt;http://raytracey.blogspot.com/2011/12/videos-and-executable-demo-of-brigade-2.html&lt;/a&gt;&lt;span style="text-align: left;"&gt;) rendered at 1 sample per pixel (on a 8600M GT), with (right) and without motion blur:&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;span style="text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-TkdBsA7Epgo/TxMI2mgHfRI/AAAAAAAABrI/84PhtmK_118/s1600/B2ogrecompare2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="126" src="http://1.bp.blogspot.com/-TkdBsA7Epgo/TxMI2mgHfRI/AAAAAAAABrI/84PhtmK_118/s320/B2ogrecompare2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;The following image has nothing to do with frame averaging but it is an image from an earlier test of the MIS indoor scene with a highly detailed Alyx character (40k triangles) with a Blinn shader applied. It rendered very fast:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-VMC_IbqkkRE/TxMAotsZqGI/AAAAAAAABqw/wgsJlcLpxHs/s1600/B2glossyalyx2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="186" src="http://2.bp.blogspot.com/-VMC_IbqkkRE/TxMAotsZqGI/AAAAAAAABqw/wgsJlcLpxHs/s320/B2glossyalyx2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;I'll upload some videos of the above tests soon.&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-8331046526533606459?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/8331046526533606459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=8331046526533606459' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/8331046526533606459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/8331046526533606459'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2012/01/brigade-2-motion-blur-test.html' title='Brigade 2 motion blur test'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-rvhAY1KUoU0/TxL_mf6GNlI/AAAAAAAABqo/9pwuE3FOYGY/s72-c/B2comparison.png' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-1689750948769009178</id><published>2012-01-09T15:24:00.000-08:00</published><updated>2012-01-09T15:39:21.920-08:00</updated><title type='text'>A new real-time sphere path tracer (CUDA and OpenCL)</title><content type='html'>&lt;div style="text-align: justify;"&gt;Real-time path tracing of spheres on the GPU is hot it seems :-)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.youtube.com/watch?v=033I1EpjfzI"&gt;http://www.youtube.com/watch?v=033I1EpjfzI&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.youtube.com/watch?v=xB8TPkqlzCE"&gt;http://www.youtube.com/watch?v=xB8TPkqlzCE&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.youtube.com/watch?v=lQpgLPIW4YM"&gt;http://www.youtube.com/watch?v=lQpgLPIW4YM&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;It looks very impressive and pretty. The path tracer owes its speed to the fact that it is completely running on the GPU and to a custom precomputed hashing algorithm. More info at&amp;nbsp;&lt;a href="http://bertolami.com/projectView.php?content=research_content&amp;amp;project=real-time-path-tracer"&gt;http://bertolami.com/projectView.php?content=research_content&amp;amp;project=real-time-path-tracer&lt;/a&gt;&amp;nbsp;There are also downloadable executables further down the page.&lt;br /&gt;&lt;br /&gt;Tokaspt (by tbp), Sfera (by LuxRender's Dade), the WebGL path tracer (by Evan Wallace), ... the list of real-time GPU path tracers featuring dynamic scenes with spheres keeps growing.&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-1689750948769009178?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/1689750948769009178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=1689750948769009178' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1689750948769009178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1689750948769009178'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2012/01/new-real-time-path-tracer-cuda-and.html' title='A new real-time sphere path tracer (CUDA and OpenCL)'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-5851655069551128149</id><published>2012-01-09T10:30:00.000-08:00</published><updated>2012-01-15T08:43:16.655-08:00</updated><title type='text'>Brigade 2 GI test</title><content type='html'>&lt;div style="text-align: justify;"&gt;Just a small test with a Cornell box scene to test diffuse color bleeding with Brigade 2, rendered on my faithful 8600M GT (the female character is a high poly version of Alyx from Half-Life 2 (character model from &lt;a href="http://www.gfx-3d-model.com/category/3d-characters/page/7/"&gt;here&lt;/a&gt;), containing almost 40k triangles and can be moved around the scene in real-time, the spheres are made of triangles):&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-o9BfVm53l90/TwstZm6BYhI/AAAAAAAABp8/XA9SP19DViw/s1600/B2GI1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://2.bp.blogspot.com/-o9BfVm53l90/TwstZm6BYhI/AAAAAAAABp8/XA9SP19DViw/s400/B2GI1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Some more tests with an area light that show indirect lighting and subtle brownish/greenish color bleeding on the left side of the character:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-spK6H2cN0tU/TwxsBTNs10I/AAAAAAAABqE/FEgv9aMffpc/s1600/B2Alyx2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="313" src="http://3.bp.blogspot.com/-spK6H2cN0tU/TwxsBTNs10I/AAAAAAAABqE/FEgv9aMffpc/s400/B2Alyx2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-32ECPAZfSbY/TwxsCxrgCfI/AAAAAAAABqM/lFF-4oELeQc/s1600/B2Alyx3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="313" src="http://1.bp.blogspot.com/-32ECPAZfSbY/TwxsCxrgCfI/AAAAAAAABqM/lFF-4oELeQc/s400/B2Alyx3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;These scenes use Brigade's multiple importance sampling kernel which drastically reduces the noise in interior scenes compared to the kernel used in previous test scenes (which converged fast because those were open outdoor scenes lit by an HDR skydome).&amp;nbsp;Brigade's MIS algorithm&amp;nbsp;allows this kind of interior scenes to converge extremely fast as can be seen in &lt;a href="http://www.youtube.com/watch?v=k9p-2WeARMw"&gt;this video&lt;/a&gt;&amp;nbsp;made by Jacco Bikker. It uses two GTX 470s to render at real-time framerates with 80 spp per frame!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-5851655069551128149?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/5851655069551128149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=5851655069551128149' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5851655069551128149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5851655069551128149'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2012/01/brigade-2-gi-test.html' title='Brigade 2 GI test'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-o9BfVm53l90/TwstZm6BYhI/AAAAAAAABp8/XA9SP19DViw/s72-c/B2GI1.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-4950801683118164521</id><published>2012-01-03T10:49:00.000-08:00</published><updated>2012-01-04T04:51:50.177-08:00</updated><title type='text'>Brigade 2 website launched with source code + new videos and exe's</title><content type='html'>&lt;div style="text-align: justify;"&gt;Great news today: the website for the Brigade 2 path tracer has been launched and includes the source code so anyone can make their own real-time path traced game. The path tracing kernels are still closed source and precompiled in a library.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The website can be found here:&amp;nbsp;&lt;a href="http://brigade.roenyroeny.com/"&gt;http://brigade.roenyroeny.com/&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I have also developed two small demos showing real-time path traced interior scenes with animation. The first one is a simple study room like scene, in which the ceiling and back walls are removed to let more light enter the scene (there is a problem with the normals from the chair):&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-HmQ7vHRbBj4/TwNKs5BUWWI/AAAAAAAABpU/7rm8YWXxdcg/s1600/B2ogrerobot1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="171" src="http://3.bp.blogspot.com/-HmQ7vHRbBj4/TwNKs5BUWWI/AAAAAAAABpU/7rm8YWXxdcg/s320/B2ogrerobot1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-lHCAnH7vhgw/TwNKvbOBAfI/AAAAAAAABpc/79SIK-33xPA/s1600/B2ogrerobot2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="171" src="http://3.bp.blogspot.com/-lHCAnH7vhgw/TwNKvbOBAfI/AAAAAAAABpc/79SIK-33xPA/s320/B2ogrerobot2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;480p video:&amp;nbsp;&lt;a href="http://www.youtube.com/watch?v=7ys8MvzUEAo"&gt;http://www.youtube.com/watch?v=7ys8MvzUEAo&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&amp;nbsp;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/7ys8MvzUEAo/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/7ys8MvzUEAo?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/7ys8MvzUEAo?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;The second one is a more complex bedroom scene (180k triangles). The scene is a free 3ds max model from&amp;nbsp;&lt;a href="http://www.3dmodelfree.com/"&gt;http://www.3dmodelfree.com&lt;/a&gt;, which was tweaked a little bit (I took out the ceiling, two walls and the curtains). The scene came without textures, so I had to set every material manually in the mtl file. Some screens:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-uOBlsopcRFw/TwNKlYbweMI/AAAAAAAABo8/3qtEq-54NYA/s1600/B2bedroom1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="171" src="http://4.bp.blogspot.com/-uOBlsopcRFw/TwNKlYbweMI/AAAAAAAABo8/3qtEq-54NYA/s320/B2bedroom1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-G1COEnCoymY/TwNKoNcm20I/AAAAAAAABpE/70C3Vixrib0/s1600/B2bedroom2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="171" src="http://4.bp.blogspot.com/-G1COEnCoymY/TwNKoNcm20I/AAAAAAAABpE/70C3Vixrib0/s320/B2bedroom2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-2RP8gBwQ14U/TwNKqfImXrI/AAAAAAAABpM/Yj3HOsALPoU/s1600/B2bedroom3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="171" src="http://3.bp.blogspot.com/-2RP8gBwQ14U/TwNKqfImXrI/AAAAAAAABpM/Yj3HOsALPoU/s320/B2bedroom3.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Diffuse(.1,.1,.1) and spec(.9) for bedframe and closet:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-NZrL2eXRc3w/TwRLTvR-16I/AAAAAAAABp0/1BRrSls70XU/s1600/B2bedroom5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="171" src="http://3.bp.blogspot.com/-NZrL2eXRc3w/TwRLTvR-16I/AAAAAAAABp0/1BRrSls70XU/s320/B2bedroom5.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Two videos showing real-time material tweaking and animation with physics:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;480p quarter res:&amp;nbsp;&lt;a href="http://www.youtube.com/watch?v=feKzOs_Q9hw"&gt;http://www.youtube.com/watch?v=feKzOs_Q9hw&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/feKzOs_Q9hw/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/feKzOs_Q9hw?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/feKzOs_Q9hw?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;480p full res:&amp;nbsp;&lt;a href="http://www.youtube.com/watch?v=mEIyalP39Oo"&gt;http://www.youtube.com/watch?v=mEIyalP39Oo&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/mEIyalP39Oo/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/mEIyalP39Oo?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/mEIyalP39Oo?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;span style="color: #ffd966;"&gt;The executable demo can be downloaded at&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;(all CUDA architectures supported)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Expect many more demos made with the Brigade 2 path tracer in the coming weeks and months. Brigade is also going to be ported to OpenCL soon. 2012 is going to be a breakthrough year for real-time GPGPU path tracing.&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-4950801683118164521?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/4950801683118164521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=4950801683118164521' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/4950801683118164521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/4950801683118164521'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2012/01/brigade-2-website-launched-with-source.html' title='Brigade 2 website launched with source code + new videos and exe&apos;s'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-HmQ7vHRbBj4/TwNKs5BUWWI/AAAAAAAABpU/7rm8YWXxdcg/s72-c/B2ogrerobot1.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-8319978938240764108</id><published>2012-01-02T11:13:00.001-08:00</published><updated>2012-01-02T11:43:24.207-08:00</updated><title type='text'>Pepeland inspired Brigade 2 scene</title><content type='html'>Inspired by &lt;a href="http://www.youtube.com/watch?v=R7qhR2qtfNE"&gt;a Pepeland animation&lt;/a&gt;&amp;nbsp;(one of the first truly photorealistic animations, rendered with Arnold in 1999), I've created a scene with the Brigade 2 path tracer in an attempt to achieve photorealism in real-time. Some pics (rendered with 8600M GT):&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-eEaeDGl9quY/TwIDrnDLynI/AAAAAAAABow/62xY03BjBnI/s1600/pepe1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="313" src="http://1.bp.blogspot.com/-eEaeDGl9quY/TwIDrnDLynI/AAAAAAAABow/62xY03BjBnI/s400/pepe1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-pKIoCvuvCY8/TwIDoU1cRvI/AAAAAAAABog/dD9-459v8uc/s1600/pepe3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="313" src="http://3.bp.blogspot.com/-pKIoCvuvCY8/TwIDoU1cRvI/AAAAAAAABog/dD9-459v8uc/s400/pepe3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-8eeyAJQnRd4/TwIDqIqn2LI/AAAAAAAABoo/i38B5hqu2pg/s1600/pepe2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="314" src="http://1.bp.blogspot.com/-8eeyAJQnRd4/TwIDqIqn2LI/AAAAAAAABoo/i38B5hqu2pg/s400/pepe2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-UU41PqoqN0A/TwIDm8U71YI/AAAAAAAABoY/jgD2XST9BY0/s1600/pepe4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="314" src="http://4.bp.blogspot.com/-UU41PqoqN0A/TwIDm8U71YI/AAAAAAAABoY/jgD2XST9BY0/s400/pepe4.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The scene contains 110k triangles (the chair and robot are free models found on the net, the ogre is the same model from the previous demo). It renders in real-time at low resolution on a high end GPU and is pretty amazing to see in action.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Videos and executable will follow soon.&lt;/div&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/7277449027963623452-8319978938240764108?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/8319978938240764108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=8319978938240764108' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/8319978938240764108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/8319978938240764108'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2012/01/inspired-by-pepeland-animation-of-first.html' title='Pepeland inspired Brigade 2 scene'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-eEaeDGl9quY/TwIDrnDLynI/AAAAAAAABow/62xY03BjBnI/s72-c/pepe1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-7542203163200130163</id><published>2012-01-02T05:17:00.000-08:00</published><updated>2012-01-02T05:59:39.905-08:00</updated><title type='text'>Bungie talks about ray tracing and voxels</title><content type='html'>Gamasutra has an interview up with Bungie's senior graphics engineer. The whole interview can be found at&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gamasutra.com/view/news/39332/The_Big_Graphics_Problems_Bungie_Wants_To_Solve.php"&gt;http://www.gamasutra.com/view/news/39332/The_Big_Graphics_Problems_Bungie_Wants_To_Solve.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Some interesting fragments:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="color: #6fa8dc;"&gt;&lt;strong&gt;I've certainly seen how even today people are having a lot of trouble rendering shadows without a lot of blockiness or dithering.&lt;/strong&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;blockquote class="tr_bq"&gt;&lt;div style="text-align: justify;"&gt;HC: That's kind of the problem with computer game graphics these days. A lot of things people consider solved problems are actually quite far from being solved, and shadows are one of them. After all these years we don't have a very satisfactory shadow solution. They're improving; every generation of games they're improving, but they're nowhere near the perfect solution that people thought we already have.&amp;nbsp;&lt;/div&gt;&lt;/blockquote&gt;&lt;blockquote class="tr_bq"&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="color: #6fa8dc;"&gt;&lt;strong&gt;What do you think might be the answer? Your potential megatexture solution, or something else?&lt;/strong&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;blockquote class="tr_bq"&gt;&lt;div style="text-align: justify;"&gt;HC: We are still far from seeing perfect shadows. Shadows are a byproduct of lighting. All frequency shadows (shadows that are hard and soft in all the right places) are a byproduct of global illumination, and these things are notoriously hard in real time.&amp;lt;&amp;nbsp;&lt;/div&gt;&lt;/blockquote&gt;&lt;blockquote class="tr_bq"&gt;&lt;div style="text-align: justify;"&gt;There's just not enough machine power, even in today's generation or the next generation, to be able to capture that kind of fidelity. There are also inherent limitations to the current techniques, such as shadow maps, for example. When the light is near the glancing angle of a shadow receiver, then it is impossible to do the correct thing.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;With the current state of the art shadow techniques we can manage the resolution much better, and we can do high quality filtering, but we still have long ways to go to get where we need to be, even if we just talk about hard shadows from direct illumination.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I think megatextures could help, but still &lt;span style="color: orange;"&gt;fundamentally there are things you cannot solve with our current shadow meshes. And until the performance supports real-time ray tracing and global illumination, we're going to continue seeing hack after hack for rendering shadows.&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;About the potential of using voxels for faster and more efficient global illumination:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;div style="text-align: justify;"&gt;HC: Voxels are very very interesting to us. For example, when we take advantage of voxelization, we basically voxelize our level and then we build these portalizations and clustering of our spaces based on the voxelization. And so &lt;span style="color: orange;"&gt;voxelization, what it does is hide all the small geometry details.&lt;/span&gt; &lt;span style="color: orange;"&gt;And in the regular data structures, it's very easy to reason out the space when it's voxelized versus dealing with individual polygons.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="color: orange;"&gt;But besides this ability, there's also the very interesting possibility for us to use voxelization or a voxelized scene to do lighting and global illumination.&lt;/span&gt; We have some thoughts in that area that we might research in the future, but in general I think it's a very good direction for us to think about; to use voxelization to hide all the details of the scene geometry and sort of decouple the complexity of the scene from the complexity of lighting and visibility. In that way everything becomes easier in voxelization.&lt;/div&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-7542203163200130163?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/7542203163200130163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=7542203163200130163' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/7542203163200130163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/7542203163200130163'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2012/01/bungie-talking-about-ray-tracing-and.html' title='Bungie talks about ray tracing and voxels'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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-7277449027963623452.post-5659562261130680403</id><published>2011-12-30T09:04:00.000-08:00</published><updated>2011-12-31T05:56:15.266-08:00</updated><title type='text'>Videos and executable demo of Brigade 2 GUI and animation test</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-EgF72xWILwI/Tv3Rs8QhwjI/AAAAAAAABoA/UcrB4ezsKlU/s1600/B2ogre1hd.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="235" src="http://4.bp.blogspot.com/-EgF72xWILwI/Tv3Rs8QhwjI/AAAAAAAABoA/UcrB4ezsKlU/s400/B2ogre1hd.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-nbo75DniT58/Tv8TjXOkazI/AAAAAAAABoM/t0UXX7jKt7I/s1600/B2ogre2hd.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="235" src="http://2.bp.blogspot.com/-nbo75DniT58/Tv8TjXOkazI/AAAAAAAABoM/t0UXX7jKt7I/s400/B2ogre2hd.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="text-align: justify;"&gt;Some videos of the GUI that I developed for Brigade 2, showing real-time changing of materials with simultaneous animation and physics simulation. The GUI is still a work in progress, but being able to tweak any material on the fly is so much more easy to get the look right.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="color: #f1c232;"&gt;480p (320x240 render res, 4 spp, max depth 4)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.youtube.com/watch?v=4Q_L_At_mAk"&gt;http://www.youtube.com/watch?v=4Q_L_At_mAk&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/4Q_L_At_mAk/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/4Q_L_At_mAk?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/4Q_L_At_mAk?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="color: #f1c232;"&gt;480p (640x480 render res, 4 spp, max depth 4)&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.youtube.com/watch?v=65t2_FKd4Ds"&gt;http://www.youtube.com/watch?v=65t2_FKd4Ds&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/65t2_FKd4Ds/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/65t2_FKd4Ds?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/65t2_FKd4Ds?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Ogre (model from &lt;a href="http://javor.tech.officelive.com/tmp.aspx"&gt;here&lt;/a&gt;) is just simply rotating for now. The mesh consists of 51k triangles of which the BVH is dynamically updated every frame (as are the BVHs of the car and the stack of blocks which are physics driven).&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The executable demo is available at&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(all CUDA architectures supported)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Further experiments will include:&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- skeletal animation&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- first person camera and gun&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- cam following the vehicle&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- architecture&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-5659562261130680403?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/5659562261130680403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=5659562261130680403' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5659562261130680403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5659562261130680403'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/12/videos-and-executable-demo-of-brigade-2.html' title='Videos and executable demo of Brigade 2 GUI and animation test'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-EgF72xWILwI/Tv3Rs8QhwjI/AAAAAAAABoA/UcrB4ezsKlU/s72-c/B2ogre1hd.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-8874107190170691213</id><published>2011-12-29T05:42:00.000-08:00</published><updated>2011-12-29T06:04:33.836-08:00</updated><title type='text'>GUI test in Brigade 2</title><content type='html'>&lt;div style="text-align: justify;"&gt;I've been working on a IMGUI (immediate mode GUI) for Brigade 2 based on SDL, which is working pretty well and is quite responsive when the framerate is more than 5 fps. There are sliders for specularity, transparency and RGB values of the diffuse color of the material. Every material in the scene can be picked and updates in real-time + you can navigate the scene, control the vehicle and let a physics simulation run, all simultaneously while chaning materials. I will upload an executable demo and some videos of the GUI in action tomorrow.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Screenshot of the GUI while tweaking a glossy Ogre (almost 50k triangles, model from &lt;a href="http://javor.tech.officelive.com/tmp.aspx"&gt;Javor Kalojanov's real-time raytraced animation demo&lt;/a&gt;):&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-kGkiYQ7ZoMg/TvxuAlE3p2I/AAAAAAAABns/HscZkWAHwxM/s1600/ogreGUI.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://3.bp.blogspot.com/-kGkiYQ7ZoMg/TvxuAlE3p2I/AAAAAAAABns/HscZkWAHwxM/s400/ogreGUI.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;szczyglo74 (CG artist/architect) also provided me with a modern half-open architectural structure (&lt;a href="http://januszowka.pl/Altana-01-28.html"&gt;Altana model from Januszowka&lt;/a&gt;) which is great to test indirect lighting and which I will turn into a demo soon (screen rendered on 8600M GT):&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ItHpVGl9sBQ/TvxuGounJtI/AAAAAAAABn0/u0HtS8XW3fc/s1600/brigade2altanatest1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="232" src="http://1.bp.blogspot.com/-ItHpVGl9sBQ/TvxuGounJtI/AAAAAAAABn0/u0HtS8XW3fc/s400/brigade2altanatest1.jpg" width="400" /&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/7277449027963623452-8874107190170691213?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/8874107190170691213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=8874107190170691213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/8874107190170691213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/8874107190170691213'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/12/gui-test-in-brigade-2.html' title='GUI test in Brigade 2'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-kGkiYQ7ZoMg/TvxuAlE3p2I/AAAAAAAABns/HscZkWAHwxM/s72-c/ogreGUI.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-6609067060666853447</id><published>2011-12-29T04:39:00.000-08:00</published><updated>2011-12-29T04:40:15.898-08:00</updated><title type='text'>Paper + video of "Real-time bidirectional path tracing via rasterization"</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: left;"&gt;Available here:&amp;nbsp;&lt;a href="http://www.square-enix.com/jp/info/library/"&gt;http://www.square-enix.com/jp/info/library/&lt;/a&gt;&amp;nbsp; (thanks to selfshadow)&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;It looks pretty damn good and the technique seems to be a very likely candidate for implementation in next-gen games because it fully exploits the rasterization hardware. One of the limitations (as mentioned in the paper) is that it doesn't work well for highly glossy and perfectly specular surfaces (sharp reflections) for which ray tracing is proposed as an alternative.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-6609067060666853447?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/6609067060666853447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=6609067060666853447' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/6609067060666853447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/6609067060666853447'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/12/paper-video-of-real-time-bidirectional.html' title='Paper + video of &quot;Real-time bidirectional path tracing via rasterization&quot;'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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-7277449027963623452.post-5842097919959749386</id><published>2011-12-26T02:44:00.000-08:00</published><updated>2011-12-26T10:42:44.187-08:00</updated><title type='text'>Real-time bidirectional path tracing via rasterization</title><content type='html'>&lt;div style="text-align: justify;"&gt;This is the title of an upcoming I3D 2012 paper by Yusuke Tokuyoshi and Shinji Ogaki, see&lt;br /&gt;&lt;br /&gt;&lt;a href="http://graphics.ics.uci.edu/I3D2012/papers.php"&gt;http://graphics.ics.uci.edu/I3D2012/papers.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The title reminds me of "&lt;a href="http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter38.html"&gt;High-quality global illumination rendering using rasterization&lt;/a&gt;" by Toshiya Hachisuka from 2005, which described a technique to obtain&amp;nbsp;&lt;a href="http://www.bee-www.com/parthenon/"&gt;photorealistic images on a typical 2005 GPU (like the Radeon 9700) in mere seconds&lt;/a&gt;, extremely impressive for that time. Shinji Ogaki is also a co-author on the Progressive Photon Mapping paper by Hachisuka and Jensen, so this new paper is definitely going to be interesting.&lt;br /&gt;&lt;br /&gt;If the paper lives up to the title, this could be quite interesting. &lt;a href="http://www.square-enix.com/jp/info/library/"&gt;Both researchers work at Square Enix&lt;/a&gt;&amp;nbsp;and&amp;nbsp;there seems to be a connection with the recently unveiled photorealistic &lt;a href="http://www.rockpapershotgun.com/2011/10/14/luminous-revolution-squeenixs-new-gfx-tech/"&gt;Luminous engine&lt;/a&gt;&amp;nbsp;which uses high quality offline baked&amp;nbsp;lightmaps (see &lt;a href="http://www.siggraph.org/asia2011/technical-sketches-detail?id=68&amp;amp;session=sketches"&gt;this page&lt;/a&gt;&amp;nbsp;for more details). A paper about the rasterization-based lightmap baking in Luminous can be found&amp;nbsp;&lt;a href="http://local.wasp.uwa.edu.au/~pbourke/transient/SG11/sketches/25-0046.pdf"&gt;here&lt;/a&gt;&amp;nbsp;and&amp;nbsp;the real-time bidirectional PT technique probably works very similarly (i.e. ray bundles computed with rasterization by parallel visibilty tests):&lt;br /&gt;&lt;br /&gt;Quote from the "&lt;a href="http://local.wasp.uwa.edu.au/~pbourke/transient/SG11/sketches/25-0046.pdf"&gt;Fast global illumination baking via ray bundles&lt;/a&gt;" paper (describing the tech behind the Luminous engine):&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span style="color: orange;"&gt;7 high-quality light maps are rendered in 181 seconds&amp;nbsp;with NVIDIA GeForce GTX 580. The resolution of ray-bundle is&amp;nbsp;2048x2048 pixels, and 10000 directions are sampled. The performance of our renderer is over 200 M rays per second on a commodity GPU.&lt;/span&gt;&lt;/blockquote&gt;Assuming everything scales linearly, this means that it would take about 16 milliseconds (60 fps) on a GTX 580 to compute a GI lightmap with ray bundles of 512x512 pixels and 100 ray bundle directions (= 100 directional samples) which should still yield great quality real-time global illumination. This tech could potentially be used for making real-time photorealistic games on current GPUs. It doesn't work however for objects with highly glossy and perfectly specular materials.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-5842097919959749386?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/5842097919959749386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=5842097919959749386' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5842097919959749386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5842097919959749386'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/12/real-time-bidirectional-path-tracing.html' title='Real-time bidirectional path tracing via rasterization'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-3613101278422692679</id><published>2011-12-21T15:35:00.000-08:00</published><updated>2011-12-24T05:33:32.502-08:00</updated><title type='text'>Executable for Brigade 2 vehicle physics test available</title><content type='html'>&lt;div style="text-align: justify;"&gt;An executable demo of the scene in the previous post is available at&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've recompiled the cuda binaries on my laptop for every possible CUDA GPU architecture (compute capability 1.0, 1.1, 1.2, 1.3, 2.0 and 2.1). Since the binaries were not natively compiled on their respective architecture and use a fixed maxregistercount of 63, higher end GPUs like the GTX 560 and up are not used to their fullest potential (&lt;a href="http://forum.beyond3d.com/showpost.php?p=1607810&amp;amp;postcount=72"&gt;a member of the Beyond3D forum reports only 35% GPU load on a GTX 460 with this demo&lt;/a&gt;). But at least it works on all CUDA architectures :-)&lt;br /&gt;&lt;br /&gt;UPDATE:&amp;nbsp;Roeny (one of Brigade's developers) has posted an explanation of why the GPU is not fully loaded here: &lt;a href="http://forum.beyond3d.com/showpost.php?p=1608008&amp;amp;postcount=86"&gt;http://forum.beyond3d.com/showpost.php?p=1608008&amp;amp;postcount=86&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: yellow;"&gt;UPDATE 2&lt;/span&gt;:&amp;nbsp;szczyglo74 has posted a &lt;a href="http://www.youtube.com/watch?v=0jVAwz-RGj4"&gt;cool video on Youtube&lt;/a&gt; of the 480p demo on a GTX 590 + GTX 460 (3 GPUs in total!)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-3613101278422692679?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/3613101278422692679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=3613101278422692679' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/3613101278422692679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/3613101278422692679'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/12/executable-for-brigade-2-vehicle.html' title='Executable for Brigade 2 vehicle physics test available'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-5651519097105061506</id><published>2011-12-20T05:07:00.000-08:00</published><updated>2011-12-20T06:15:39.765-08:00</updated><title type='text'>Brigade 2 Glossy test 480p and 720p videos on GTS 450</title><content type='html'>Some videos of the scene in the previous post:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-7dVkm7jEIdE/TvCEiY-Gf8I/AAAAAAAABng/TQ5Om0mYVro/s1600/BrigadeHD_720p_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="188" src="http://4.bp.blogspot.com/-7dVkm7jEIdE/TvCEiY-Gf8I/AAAAAAAABng/TQ5Om0mYVro/s320/BrigadeHD_720p_1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;480p &lt;a href="http://www.youtube.com/watch?v=QzNa92xo5pU"&gt;Watch on Youtube&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/QzNa92xo5pU/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/QzNa92xo5pU?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/QzNa92xo5pU?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;720p HD &lt;a href="http://www.youtube.com/watch?v=67mfmvrWHLg"&gt;Watch on Youtube&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/67mfmvrWHLg/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/67mfmvrWHLg?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/67mfmvrWHLg?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Stats:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- rendered on just one GTS 450, no CPUs involved (hybrid CPU/GPU rendering is actually slower than pure GPU rendering (due to synching) besides being more complex)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- 640x480 render resolution (first video)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- 1280x720 HD render resolution (second video)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- extremely fast convergence: great image quality with only 4 samples per pixel per frame (when the camera is non-stationary) which is sufficient for scenes with skydome lighting&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- max path depth 4&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- floor, blue boxes, vehicle wheels and chassis are partially glossy to create a plastic look&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- containers, mirror ball and flat mirror are perfectly specular&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- orange ball is perfectly refractive in first video&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- walls are perfectly diffuse (Lambertian)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- almost 3800 triangles (not that many but it's a lot less restrictive than the spheres and boxes from TOKAP and actually not that much slower thanks to BVH acceleration)&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The framerate would be a lot smoother on a GTX 580, or better yet a pair of them :-)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-5651519097105061506?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/5651519097105061506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=5651519097105061506' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5651519097105061506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5651519097105061506'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/12/brigade-2-glossy-test-480p-and-720p.html' title='Brigade 2 Glossy test 480p and 720p videos on GTS 450'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-7dVkm7jEIdE/TvCEiY-Gf8I/AAAAAAAABng/TQ5Om0mYVro/s72-c/BrigadeHD_720p_1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-3161093966275392949</id><published>2011-12-19T14:44:00.000-08:00</published><updated>2011-12-19T14:51:40.967-08:00</updated><title type='text'>Glossy test in Brigade 2</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Some screenshots of a new Brigade 2 powered demo that I'm working on (rendered with a 8600M GT at 640x360). The floor is textured and slightly glossy and almost every object in the scene is fully or partially specular e.g. the blue boxes in the stack and the wheels and body of the vehicle now have a plastic look. The scene looks great in motion.&amp;nbsp;Videos on a GTS 450 will follow tomorrow.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-FopSIvZGWnc/Tu-89oVe7eI/AAAAAAAABnQ/xCH5g4kpddw/s1600/B2_physiscs2HD.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="186" src="http://1.bp.blogspot.com/-FopSIvZGWnc/Tu-89oVe7eI/AAAAAAAABnQ/xCH5g4kpddw/s320/B2_physiscs2HD.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-XtFpzzOpv_8/Tu-8-q8fjoI/AAAAAAAABnU/KnkC5OIF2BA/s1600/B2_physiscs3HD.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="186" src="http://3.bp.blogspot.com/-XtFpzzOpv_8/Tu-8-q8fjoI/AAAAAAAABnU/KnkC5OIF2BA/s320/B2_physiscs3HD.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-3161093966275392949?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/3161093966275392949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=3161093966275392949' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/3161093966275392949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/3161093966275392949'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/12/glossy-test-in-brigade-2.html' title='Glossy test in Brigade 2'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-FopSIvZGWnc/Tu-89oVe7eI/AAAAAAAABnQ/xCH5g4kpddw/s72-c/B2_physiscs2HD.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-4435442169959693734</id><published>2011-12-18T05:40:00.000-08:00</published><updated>2011-12-18T07:43:33.183-08:00</updated><title type='text'>480p and 720p videos of Brigade 2 physics and UI tests on  the GTS 450</title><content type='html'>&lt;div style="text-align: justify;"&gt;The following videos demonstrate some Bullet physics tests that I've been working on and which were rendered in real-time with the Brigade 2 path tracer on a GeForce GTS 450. All the rendering is pure GPU path tracing with CUDA, the CPU doesn't take part in the rendering process except for recalculating the dynamic BVH of the car and the boxes every frame.&amp;nbsp;All the light in the scene is coming from a skydome.&amp;nbsp;The code for the car physics is essentially the same as what was used in the "Unbiased Stunt Racer" demo. The physics simulation can be paused and resumed and the image converges (extremely fast) when nothing moves (physics simulation paused + stationary camera).&amp;nbsp;There is also a short demo of a work-in-progress material UI (only diffuse to glossy/specular for now, the final version will have sliders for transparency, specularity, diffuse color and emissive color).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;480p physics test (640x480 screen resolution,&amp;nbsp;320x240 render resolution):&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/JNWp8gd392c/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/JNWp8gd392c?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/JNWp8gd392c?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;480p UI test&amp;nbsp;(640x480 screen resolution,&amp;nbsp;320x240 render resolution):&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/rH9C5AX2-RI/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/rH9C5AX2-RI?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/rH9C5AX2-RI?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="color: #f1c232;"&gt;480p UI test (640x480 screen and render resolution)&lt;/span&gt; &lt;a href="http://www.youtube.com/watch?v=svPn64HF5_0"&gt;watch on youtube in 480p:&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/svPn64HF5_0/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/svPn64HF5_0?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/svPn64HF5_0?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="color: #f1c232;"&gt;720p UI test (1280x720 screen resolution &lt;u&gt;and&lt;/u&gt; render resolution!)&amp;nbsp;&lt;a href="http://www.youtube.com/watch?v=cErFkjOD5Us"&gt;watch on Youtube in 720p&lt;/a&gt;&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/cErFkjOD5Us/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/cErFkjOD5Us?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/cErFkjOD5Us?version=3&amp;f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&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/7277449027963623452-4435442169959693734?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/4435442169959693734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=4435442169959693734' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/4435442169959693734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/4435442169959693734'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/12/480p-and-720p-videos-of-brigade-2.html' title='480p and 720p videos of Brigade 2 physics and UI tests on  the GTS 450'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-5497751754348315832</id><published>2011-12-14T03:06:00.001-08:00</published><updated>2011-12-14T12:30:28.936-08:00</updated><title type='text'>Physics tests in Brigade 2</title><content type='html'>&lt;div&gt;&lt;div style="text-align: justify;"&gt;Jeroen van Schijndel, one of the developers of the Brigade path tracer, has posted a cool video showing off the physics inside Brigade:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Video: &lt;a href="http://www.youtube.com/watch?v=DkLhPQ-NeBU"&gt;http://www.youtube.com/watch?v=DkLhPQ-NeBU&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-fBeGTRhS6-E/TuiaKCosb6I/AAAAAAAABm8/b1mSvM7Iw-8/s1600/B2physics.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 254px;" src="http://3.bp.blogspot.com/-fBeGTRhS6-E/TuiaKCosb6I/AAAAAAAABm8/b1mSvM7Iw-8/s400/B2physics.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5685964026852175778" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;During the last several days, I have been working on implementing vehicle physics in a new simple demo that uses the Brigade 2 path tracer. The scene in the demo is only lit by a sky texture and consists of a vehicle with mass, a few perfectly specular containers and a stack of boxes (more than 2800 triangles in total). The maximum path depth is 4 to make the reflections more interesting.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The following screenshots and videos were all rendered in real-time on a mobile GPU, the 8600M GT, which is extremely low-end by today's standards and is about 30 times slower than a GTX 580. Nevertheless, despite its very low "CUDA core" count and clocks, it can still produce some pretty amazing footage, path-traced in real-time at 4 samples per pixel and a max path depth of 4 (allowing for reflections of reflections). Better videos with much higher framerate (captured on a GTS 450) will follow soon.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/i73aC0uKhOc" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Somewhat better quality, but lower framerate&lt;br /&gt;&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/k2zy-_eiWXc" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;4 spp, 480x360&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-wy0t8fRp-yc/TuiPGhFBaMI/AAAAAAAABmw/BzOKG-cjeQo/s1600/B2boxesvehiclephysics4.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 320px;" src="http://2.bp.blogspot.com/-wy0t8fRp-yc/TuiPGhFBaMI/AAAAAAAABmw/BzOKG-cjeQo/s400/B2boxesvehiclephysics4.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5685951871676672194" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-MDi1eoJf1tg/TuiOT3jLt2I/AAAAAAAABmc/IZqkH8nACcM/s1600/B2boxesvehiclephysics2.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 321px;" src="http://1.bp.blogspot.com/-MDi1eoJf1tg/TuiOT3jLt2I/AAAAAAAABmc/IZqkH8nACcM/s400/B2boxesvehiclephysics2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5685951001535428450" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Glossy floor, 4 spp&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://1.bp.blogspot.com/-hRoTtOTba34/Tuiq5gk4KAI/AAAAAAAABnI/ZBiE8WwlGZ4/s1600/B2boxesvehiclephysicsglossyfloor1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 383px; height: 400px;" src="http://1.bp.blogspot.com/-hRoTtOTba34/Tuiq5gk4KAI/AAAAAAAABnI/ZBiE8WwlGZ4/s400/B2boxesvehiclephysicsglossyfloor1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5685982434529126402" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;24 spp, 480x360:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-tayhVywLVAU/TuiOUZCGsaI/AAAAAAAABmk/RYcbXDTG6Ik/s1600/B2boxesvehiclephysics3.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 320px;" src="http://2.bp.blogspot.com/-tayhVywLVAU/TuiOUZCGsaI/AAAAAAAABmk/RYcbXDTG6Ik/s400/B2boxesvehiclephysics3.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5685951010523492770" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Some ideas that I want to work on next:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- frame averaging, which greatly reduces the noise at the expense of slight blurring&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- a camera that follows the vehicle automatically&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- a first-person gun which can shoot projectiles with physical mass&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- (low-poly) animated enemies (with cheap-to-update BVH)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- investigate the use of bump mapping to further increase realism (Dade's &lt;a href="http://www.youtube.com/watch?v=Dh9uWYaiP3s"&gt;Sfera&lt;/a&gt; demo has shown that bump mapped surfaces converge almost as fast as non-bump mapped ones)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- more interesting scenes, using a greater variety of materials (Brigade supports diffuse, glass, glossy and perfectly specular) and textures. I'm still aiming to replicate &lt;a href="http://www.youtube.com/watch?v=yPU6xNNCE68"&gt;this path traced animation&lt;/a&gt; in real-time&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Brigade 2 path tracer is just great fun to play with and the speed and quality in a well-lit environment (on a high end GPU) are truly amazing. Seeing a real-time animated character with perfectly photoreal lighting while orbiting the camera around it is so damn rewarding...&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/7277449027963623452-5497751754348315832?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/5497751754348315832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=5497751754348315832' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5497751754348315832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5497751754348315832'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/12/physics-tests-in-brigade-2.html' title='Physics tests in Brigade 2'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-fBeGTRhS6-E/TuiaKCosb6I/AAAAAAAABm8/b1mSvM7Iw-8/s72-c/B2physics.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-5403046564349987028</id><published>2011-12-10T11:02:00.000-08:00</published><updated>2011-12-11T02:00:03.941-08:00</updated><title type='text'>Sfera, the first real-time path traced game based on OpenCL!</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/-WTfQZu2le1s/TuOy4NSZNMI/AAAAAAAABmA/ASKwCOS3bBk/s1600/sfera1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 223px;" src="http://3.bp.blogspot.com/-WTfQZu2le1s/TuOy4NSZNMI/AAAAAAAABmA/ASKwCOS3bBk/s400/sfera1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5684583833380926658" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;This is very cool: there is a new game called Sfera, it's using only spheres and is rendered with real-time path tracing on the GPU and CPU using OpenCL. The developer of the game, Dade (David Bucciarelli), is a LuxRender developer who is the first to make a working implementation of OpenCL-based unbiased path tracing on ATI cards. He created SmallptGPU, SmallLuxGPU and LuxRays.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Youtube video of the Sfera game: &lt;a href="http://www.youtube.com/watch?v=Dh9uWYaiP3s"&gt;http://www.youtube.com/watch?v=Dh9uWYaiP3s&lt;/a&gt; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The demo features HDR image based lighting, bump mapping, multiple physically accurate materials, Bullet physics and multi-GPU support. I think it is absolutely awesome to see more developers using the power of the GPU (I'm glad that this time OpenCL and GPUs from ATI are used) to create amazing looking simple games with real-time photorealistic lighting. This game is a very nice proof-of-concept to show that real-time photorealism is very close. I hope this is the beginning of a paradigm shift for game graphics from rasterization to real-time ray tracing.&lt;span class="Apple-style-span" style="text-align: left; "&gt; T&lt;/span&gt;he code is also open source and can be found at &lt;a href="http://code.google.com/p/sfera/" style="text-align: left; "&gt;http://code.google.com/p/sfera/&lt;/a&gt; (includes executables for Windows and Linux).&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;More info about the game Sfera can be found at &lt;a href="http://www.luxrender.net/forum/viewtopic.php?f=17&amp;amp;t=7539" style="text-align: left; "&gt;http://www.luxrender.net/forum/viewtopic.php?f=17&amp;amp;t=7539&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Btw, thanks Dade for mentioning Tokap and my blog on &lt;a href="http://code.google.com/p/sfera/"&gt;Sfera's project page&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/7277449027963623452-5403046564349987028?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/5403046564349987028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=5403046564349987028' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5403046564349987028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5403046564349987028'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/12/sfera-first-real-time-path-trace-game.html' title='Sfera, the first real-time path traced game based on OpenCL!'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-WTfQZu2le1s/TuOy4NSZNMI/AAAAAAAABmA/ASKwCOS3bBk/s72-c/sfera1.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-3284949056584461981</id><published>2011-12-09T12:31:00.000-08:00</published><updated>2011-12-10T10:01:16.396-08:00</updated><title type='text'>Vehicle test in Brigade 2</title><content type='html'>&lt;div style="text-align: justify;"&gt;Another test with the Brigade 2 path tracer: this time I've added a user-controllable vehicle (included in Brigade) to the scene from the previous post. The truck consists of 1953 triangles and uses a dynamic BVH which is updated (BVH refitting as there are only translations and rotations) every frame when the truck moves.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;There is also some variation in the materials (all objects are no longer diffuse): the horse has a glass material applied to it (no Beer's law, although the engine supports it), the green sphere is glossy and the truck's trailer is perfectly specular.  The following video and screenshots were rendered at 320x240 with 12 spp per frame on a low-end GPU (GeForce GTS 450):&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Video: &lt;a href="http://www.youtube.com/watch?v=8nwotFaB0X4"&gt;http://www.youtube.com/watch?v=8nwotFaB0X4&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The shadows and refraction are awesome:&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/-ITAKGbD4OU0/TuJwnHDFp0I/AAAAAAAABlo/gF_iqVhggXk/s1600/brigade2horse3.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 320px;" src="http://2.bp.blogspot.com/-ITAKGbD4OU0/TuJwnHDFp0I/AAAAAAAABlo/gF_iqVhggXk/s400/brigade2horse3.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5684229496904197954" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-lnbSpk0uIUA/TuJwmvbGf6I/AAAAAAAABlc/HYUntGshTT8/s1600/brigade2horse2.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 320px;" src="http://1.bp.blogspot.com/-lnbSpk0uIUA/TuJwmvbGf6I/AAAAAAAABlc/HYUntGshTT8/s400/brigade2horse2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5684229490562465698" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;640x480 render resolution:&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-s-SbYY50OnI/TuJwmTu58GI/AAAAAAAABlQ/Z0aTbYpmKe0/s1600/brigade2truck1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 318px;" src="http://3.bp.blogspot.com/-s-SbYY50OnI/TuJwmTu58GI/AAAAAAAABlQ/Z0aTbYpmKe0/s400/brigade2truck1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5684229483129335906" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Some ideas for upcoming tests:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- recycle the vehicle physics code from the &lt;a href="http://raytracey.blogspot.com/2011/09/unbiased-stunt-racer.html"&gt;Unbiased Stunt Racer demo&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- move to an outdoor environment with skydome lighting. From early trials I've found out that the convergence in such a setting is extremely fast and 8 spp are often enough&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- make a real-time Bullet physics demo of a collapsing structure, e.g. something like &lt;a href="http://www.youtube.com/watch?v=YlGVitBaaHE"&gt;this&lt;/a&gt; or &lt;a href="http://www.youtube.com/watch?v=yPU6xNNCE68"&gt;this&lt;/a&gt;&lt;/div&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/7277449027963623452-3284949056584461981?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/3284949056584461981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=3284949056584461981' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/3284949056584461981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/3284949056584461981'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/12/brigade-2-path-tracer-vehicle-test.html' title='Vehicle test in Brigade 2'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-ITAKGbD4OU0/TuJwnHDFp0I/AAAAAAAABlo/gF_iqVhggXk/s72-c/brigade2horse3.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-1285177286708953445</id><published>2011-12-07T03:28:00.000-08:00</published><updated>2011-12-07T04:01:58.761-08:00</updated><title type='text'>Bullet physics test 1 in Brigade 2</title><content type='html'>&lt;div style="text-align: justify;"&gt;I've made a very simple real-time, interactive Bullet physics simulation of a bouncing light-emitting cube, rendered using the Brigade 2 path tracer with 8 spp per frame on a low-end GTS 450 (render resolution is 320x240 to keep the framerate acceptable). The simulation can be paused and resumed and the image converges when nothing moves. The scene contains 12733 triangles.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Video:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.youtube.com/watch?v=stahUUH8yIE"&gt;http://www.youtube.com/watch?v=stahUUH8yIE&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-PXOaqJFLwF8/Tt9TjS1NupI/AAAAAAAABk4/LaCc6FZbu3E/s1600/B2horse3.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 321px;" src="http://4.bp.blogspot.com/-PXOaqJFLwF8/Tt9TjS1NupI/AAAAAAAABk4/LaCc6FZbu3E/s400/B2horse3.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5683353120580418194" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-w0oWWuzkv9A/Tt9Tj0zOdnI/AAAAAAAABlI/q6R5u8wDO84/s1600/B2horse1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 319px;" src="http://3.bp.blogspot.com/-w0oWWuzkv9A/Tt9Tj0zOdnI/AAAAAAAABlI/q6R5u8wDO84/s400/B2horse1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5683353129698883186" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-1285177286708953445?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/1285177286708953445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=1285177286708953445' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1285177286708953445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1285177286708953445'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/12/bullet-physics-test-1-in-brigade-2.html' title='Bullet physics test 1 in Brigade 2'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-PXOaqJFLwF8/Tt9TjS1NupI/AAAAAAAABk4/LaCc6FZbu3E/s72-c/B2horse3.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-4800002009941270865</id><published>2011-12-01T14:14:00.000-08:00</published><updated>2011-12-03T03:46:57.410-08:00</updated><title type='text'>Real-time path traced outdoor scene with Brigade 2 engine</title><content type='html'>&lt;div style="text-align: justify;"&gt;Jacco Bikker has just posted a gorgeous looking new video of a WIP game oozing with atmosphere, which is running on the real-time path tracer Brigade 2:&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Youtube: &lt;a href="http://www.youtube.com/watch?v=AZz9zNgDxlM"&gt;http://www.youtube.com/watch?v=AZz9zNgDxlM&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;A downloadable direct feed version (strongly recommended) can be found here: &lt;a href="http://igad.nhtv.nl/~bikker/files/sections.avi"&gt;http://igad.nhtv.nl/~bikker/files/sections.avi&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The video description says it all:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; line-height: 18px; background-color: rgb(255, 255, 255); "&gt;&lt;blockquote style="text-align: justify;"&gt;"This is some early footage from the student game "It's About Time", created by students of the IGAD program of the NHTV university of applied sciences, Breda, The Netherlands. This game uses the Brigade 2 path tracer for rendering. Although this results in a noisy image, the lighting is very realistic. A proof-of-concept demo of the game will be ready in January 2012. After that, the team intends to continue working on the project until the end of the academic year."&lt;/blockquote&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;Some screengrabs from the video: &lt;/div&gt;&lt;div&gt;Note the ambient occlusion under the cylindrical stones and the greenish color bleeding on them&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/-8pxjrGu29dg/TtgFqbJGySI/AAAAAAAABkA/fMa8GdDS2u4/s1600/brigade2outdoor1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 301px;" src="http://2.bp.blogspot.com/-8pxjrGu29dg/TtgFqbJGySI/AAAAAAAABkA/fMa8GdDS2u4/s400/brigade2outdoor1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5681297156326476066" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/-KyKyIy4LSkg/TtgFrc_QJtI/AAAAAAAABkY/-cwbrYWqfxU/s1600/brigade2outdoor3.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/-KyKyIy4LSkg/TtgFrc_QJtI/AAAAAAAABkY/-cwbrYWqfxU/s400/brigade2outdoor3.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5681297174001886930" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sun + Sky lighting:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-rtPzs7yxSZc/TtgFq2gIm3I/AAAAAAAABkM/sy0k3TPfQrA/s1600/brigade2outdoor2.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/-rtPzs7yxSZc/TtgFq2gIm3I/AAAAAAAABkM/sy0k3TPfQrA/s400/brigade2outdoor2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5681297163670821746" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The lighting in the video is of the same quality as a precomputed lightmap, but is completely real-time. Obviously there is still some noise, most visible in indirectly lit parts of the scene, but I personally think it adds a special touch to the image, while at the same time attesting to the "real-timeness" of the lighting.  The Brigade engine will truly shine when moving objects and animated characters will be added, which will both receive and radiate the same "perfect" physically based lighting as their environments. Moreover, this scene is just showing diffuse materials, but Brigade 2 can handle materials such as glass (with physically based light attenuation according to Beer's law), glossy (Blinn shader) and perfectly specular effortlessly, as proven in the videos in &lt;a href="http://raytracey.blogspot.com/2011/11/new-videos-of-brigade.html"&gt;this post&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In the image below, notice the indirect lighting with brownish color bleeding under the wooden roof. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/-b2WWgxbpKGY/TtgFstqc4gI/AAAAAAAABkg/RKAdbWkMQHQ/s1600/brigade2outdoor4.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/-b2WWgxbpKGY/TtgFstqc4gI/AAAAAAAABkg/RKAdbWkMQHQ/s400/brigade2outdoor4.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5681297195657912834" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify; "&gt;Today's games use a variety of tricks to approximate indirect lighting, such as high quality precomputed lightmaps (e.g. RAGE from id Software, Mirror's Edge from D.I.C.E.), instant radiosity (e.g. Geomeric's Enlighten technology in Battlefield 3, Lightsprint in Rockstar's L.A. Noire), cascaded light propagation volumes (LPV) with screen space GI (Crysis 2) and point based color bleeding (&lt;a href="http://www.youtube.com/watch?v=HiazZdVlOKw"&gt;Danger Planet tech demo from Fantasy Labs&lt;/a&gt;, based on Michael Bunnell's surfel technique which was also used in Pixar's Up and in Pirates of the Caribbean). Each of these techniques has its own drawbacks:&lt;/div&gt;&lt;div style="text-align: justify; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify; "&gt; &lt;/div&gt;&lt;div style="text-align: justify; "&gt;- full or partial precomputation of lighting, &lt;/div&gt;&lt;div style="text-align: justify; "&gt;- limited scene destructability, &lt;/div&gt;&lt;div style="text-align: justify; "&gt;- real-time hard shadows superimposed over high quality, prebaked soft shadows resulting in an ugly shadow mix (RAGE and Mirror's Edge are nice examples)&lt;/div&gt;&lt;div style="text-align: justify; "&gt;-  limited number of bounces&lt;/div&gt;&lt;div style="text-align: justify; "&gt;- crudely approximated, diffuse only indirect lighting &lt;/div&gt;&lt;div style="text-align: justify; "&gt;- no influence from the color of dynamic objects on the environment (e.g. a red wall will cast a reddish glow on a nearby white barrel, but a red explosive barrel near a white wall will do nothing)  &lt;/div&gt;&lt;div style="text-align: justify; "&gt;- time consuming artist intervention (e.g. manual light probe placement in areas of interest) &lt;/div&gt;&lt;div style="text-align: justify; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify; "&gt;While it's great to see that some games are finally implementing real-time GI approximations, they are still hacks that start to break when mirrors, glass and highly glossy objects are added to the scene. Real-time path tracing solves all these issues in one breath. While the performance on one current high-end GPU is still not sufficient, very nice looking real-time path traced prototypes (with animation) are already possible, giving a glimpse of where game graphics are headed when GPU clusters in the cloud come into play. &lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify; "&gt;Right now, I'm busy working on some Brigade 2 powered real-time demo's (with Bullet physics) which I hope to show very soon. &lt;/div&gt;&lt;div style="text-align: justify; "&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/7277449027963623452-4800002009941270865?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/4800002009941270865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=4800002009941270865' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/4800002009941270865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/4800002009941270865'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/12/real-time-path-traced-outdoor-scene.html' title='Real-time path traced outdoor scene with Brigade 2 engine'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-8pxjrGu29dg/TtgFqbJGySI/AAAAAAAABkA/fMa8GdDS2u4/s72-c/brigade2outdoor1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-5171365788710177468</id><published>2011-11-28T01:22:00.001-08:00</published><updated>2011-11-28T12:16:05.259-08:00</updated><title type='text'>Temporary solution for Ompf forum</title><content type='html'>&lt;div style="text-align: justify;"&gt;Since the ompf.org forum (the one and only forum for ray tracing aficionados) has been down for over a week, and only the administrator can bring it back online, Jacco Bikker has set up a server with a temporary replacement for the forum (&lt;a href="http://raytracey.blogspot.com/2011/11/new-videos-of-brigade.html"&gt;see comments in the previous post&lt;/a&gt;) and asked me to point the readers of this blog who frequented ompf (and who are -like me- craving for a daily dose of ray tracing news with accompanying withdrawal symptoms) to the new address at:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://igad2.nhtv.nl/ompf2"&gt;http://igad2.nhtv.nl/ompf2&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Enjoy! &lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;UPDATE: there's an interesting discussion and technical details on the improvements in the Brigade path tracer &lt;a href="http://igad2.nhtv.nl/ompf2/viewtopic.php?f=5&amp;amp;t=3"&gt;in this topic&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/7277449027963623452-5171365788710177468?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/5171365788710177468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=5171365788710177468' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5171365788710177468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5171365788710177468'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/11/temporary-solution-for-ompf-forum.html' title='Temporary solution for Ompf forum'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-5958289917643489729</id><published>2011-11-25T12:27:00.000-08:00</published><updated>2011-11-26T09:23:10.876-08:00</updated><title type='text'>New videos of Brigade!</title><content type='html'>&lt;div style="text-align: justify;"&gt;The developers behind the Brigade path tracer (Jacco Bikker and Jeroen van Schijndel) have released two very impressive videos on Youtube and the jump in quality and performance is quite huge. The scene in the video runs smoothly on just one GTX 470 at 8spp and 640x360 render resolution (1280x720 display resolution) with very little noise:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.youtube.com/watch?v=YQNUtzCpEZ4"&gt;http://www.youtube.com/watch?v=YQNUtzCpEZ4&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.youtube.com/watch?v=0U0hDb7dDFs"&gt;http://www.youtube.com/watch?v=0U0hDb7dDFs&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This latest version of the Brigade path tracer contains at least two major improvements compared to previous versions: multiple importance sampling and a Blinn shader for glossy materials (e.g. the floor) which greatly enhances the realism of the scene (and seems to converge very fast). The kernel now runs on the GPU only. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-viKFMCOBwX0/TtDfqjBXgCI/AAAAAAAABjc/IjQW2Ob5EUw/s1600/brigade_horse1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 221px;" src="http://4.bp.blogspot.com/-viKFMCOBwX0/TtDfqjBXgCI/AAAAAAAABjc/IjQW2Ob5EUw/s400/brigade_horse1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5679285052162670626" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-rnLSAdS24y4/TtDgk_QlELI/AAAAAAAABjo/FAQcUqTwEnU/s1600/brigade_horse3.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 219px;" src="http://3.bp.blogspot.com/-rnLSAdS24y4/TtDgk_QlELI/AAAAAAAABjo/FAQcUqTwEnU/s400/brigade_horse3.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5679286056175079602" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Very impressive what they have achieved so far. With an extra GPU, the noise should almost vanish and become imperceptible after playing a while. And with Nvidia's Kepler and AMD's compute-focused GCN (HD7000) on the horizon, this path tracer is going to become very interesting (when the code will be ported to OpenCL in AMD's case). Something like real-time photorealistic chess rendered on the GPU is very close now. Jacco also mentions in the comments under the video that a new game is in the works with support for animated objects (including skeletal animation). &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The mere thought of having truly real-time, photoreal global illumination in games is the most exciting thing that has happened in computer graphics over the past ten years. The last time I was this excited was with the introduction of real-time lighting and shadowing with normal mapping in Doom 3, &lt;a href="http://www.youtube.com/watch?v=Qj3dPyk7hPI"&gt;first shown to the world on the MacWorld Expo 2001&lt;/a&gt;:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-RuIhSQogb5s/TtDrx7GnX3I/AAAAAAAABj0/BieK6Q3OzaM/s1600/doom3_macworld.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 256px;" src="http://1.bp.blogspot.com/-RuIhSQogb5s/TtDrx7GnX3I/AAAAAAAABj0/BieK6Q3OzaM/s400/doom3_macworld.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5679298373025750898" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I can't wait to get my hands dirty and experiment with the new Brigade code.&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/7277449027963623452-5958289917643489729?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/5958289917643489729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=5958289917643489729' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5958289917643489729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5958289917643489729'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/11/new-videos-of-brigade.html' title='New videos of Brigade!'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-viKFMCOBwX0/TtDfqjBXgCI/AAAAAAAABjc/IjQW2Ob5EUw/s72-c/brigade_horse1.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-8583614276260362282</id><published>2011-11-17T04:16:00.000-08:00</published><updated>2011-11-17T04:34:33.537-08:00</updated><title type='text'>CentiLeo paper available</title><content type='html'>&lt;div style="text-align: justify;"&gt;A paper about the out-of-core GPU ray tracer CentiLeo, entitled "&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(0, 0, 0); "&gt;Out-of-core GPU ray tracing of complex scenes" is available at ACM here: &lt;/span&gt;&lt;a href="http://dl.acm.org/citation.cfm?id=2037826.2037854" style="background-color: rgb(0, 0, 0); "&gt;http://dl.acm.org/citation.cfm?id=2037826.2037854&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-weight: bold; background-color: rgb(0, 0, 0); "&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(0, 0, 0); "&gt;(behind a paywall).&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"&gt;If you don't have an ACM subscription, you can still read a free version of the paper by downloading the file "Supplemental files" under the tab "Source Materials" on the same page. &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;The paper contains an interesting analysis of the overhead of the out-of-core GPU ray tracing algorithm compared to the in-core Aila/Laine GPU ray tracing algorithm.&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/7277449027963623452-8583614276260362282?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/8583614276260362282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=8583614276260362282' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/8583614276260362282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/8583614276260362282'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/11/centileo-paper-available.html' title='CentiLeo paper available'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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-7277449027963623452.post-793909456637514375</id><published>2011-11-04T03:53:00.000-07:00</published><updated>2011-11-08T00:42:18.011-08:00</updated><title type='text'>Photorealistic animation rendered with Octane Render from within 3ds Max   UPDATE: new video of Octane/3ds Max integration</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/-KexLAhQptpo/TrPXMdF8ZDI/AAAAAAAABjE/P5QxEEhqCxA/s1600/lego.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 222px;" src="http://3.bp.blogspot.com/-KexLAhQptpo/TrPXMdF8ZDI/AAAAAAAABjE/P5QxEEhqCxA/s400/lego.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5671112964757546034" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Check it out: &lt;a href="http://octanerender.com/forum/viewtopic.php?f=7&amp;amp;t=9692" style="text-align: left; "&gt;http://octanerender.com/forum/viewtopic.php?f=7&amp;amp;t=9692&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Details about the scene and system used are in the video description (average rendertime 2.5 min at 720p HD resolution with only 1 GTX580).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Besides the fact that it looks so unbelievably real, the most interesting part about this animation is that it was rendered from within 3ds Max, using an in-development plug-in version of Octane Render that is completely integrated with the Max software. This will enable users to edit, move, add and delete geometry and lights in the scene and see the results instantly rendered in the viewport with Octane Render's photorealistic quality. It also eliminates the lengthy per-frame export times (in some cases longer than the actual rendertime of the frame itself) which will do wonders for animation rendering. I think this integration is going to become Octane's new killer feature which will take insanely fast photorealistic rendering on the GPU to the next level.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" &gt;UPDATE: a new video appeared on the Octane Render forum, showing fully integrated Octane in the 3ds Max environment: &lt;/span&gt;&lt;a href="http://octanerender.com/forum/viewtopic.php?f=7&amp;amp;t=9692" style="text-align: left; "&gt;http://octanerender.com/forum/viewtopic.php?f=7&amp;amp;t=9692&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/7277449027963623452-793909456637514375?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/793909456637514375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=793909456637514375' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/793909456637514375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/793909456637514375'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/11/photorealistic-animation-rendered-with.html' title='Photorealistic animation rendered with Octane Render from within 3ds Max   UPDATE: new video of Octane/3ds Max integration'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-KexLAhQptpo/TrPXMdF8ZDI/AAAAAAAABjE/P5QxEEhqCxA/s72-c/lego.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-7626420550642413004</id><published>2011-10-26T11:38:00.000-07:00</published><updated>2011-10-27T06:57:44.056-07:00</updated><title type='text'>Update 2 on Exposure Render</title><content type='html'>&lt;div style="text-align: justify;"&gt;There is now a stable release of Exposure Render, the open source direct volume renderer with physically based lighting on the GPU: &lt;a href="http://code.google.com/p/exposure-render/"&gt;http://code.google.com/p/exposure-render/&lt;/a&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;It now even runs on a laptop with a 8600M GT (and all the example datasets fit in the GPU memory). The photoreal lighting makes this renderer stand out when compared to other volume renderers. And it converges surprisingly fast. Some pictures (rendered for only 20 seconds on the ultraslow 8600M GT):&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-jUA6ZLMfC10/TqhUEgwb6UI/AAAAAAAABiQ/luP33dgGhFo/s1600/ERbackpack.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 400px;" src="http://4.bp.blogspot.com/-jUA6ZLMfC10/TqhUEgwb6UI/AAAAAAAABiQ/luP33dgGhFo/s400/ERbackpack.png" alt="" id="BLOGGER_PHOTO_ID_5667872567535069506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-hwUnF19Kccc/TqhUECDgPFI/AAAAAAAABiI/fyuEveIlL7g/s1600/ERengine.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 294px; height: 400px;" src="http://3.bp.blogspot.com/-hwUnF19Kccc/TqhUECDgPFI/AAAAAAAABiI/fyuEveIlL7g/s400/ERengine.png" alt="" id="BLOGGER_PHOTO_ID_5667872559293545554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-ru_YEmuKG2k/TqhUD_hgrVI/AAAAAAAABh8/suHC8UZI4ac/s1600/ERskull.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 314px; height: 393px;" src="http://2.bp.blogspot.com/-ru_YEmuKG2k/TqhUD_hgrVI/AAAAAAAABh8/suHC8UZI4ac/s400/ERskull.png" alt="" id="BLOGGER_PHOTO_ID_5667872558614097234" border="0" /&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/7277449027963623452-7626420550642413004?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/7626420550642413004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=7626420550642413004' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/7626420550642413004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/7626420550642413004'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/10/update-2-on-exposure-render.html' title='Update 2 on Exposure Render'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-jUA6ZLMfC10/TqhUEgwb6UI/AAAAAAAABiQ/luP33dgGhFo/s72-c/ERbackpack.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-8167886737390867804</id><published>2011-10-21T02:33:00.000-07:00</published><updated>2011-10-21T04:34:02.397-07:00</updated><title type='text'>OTOY partners with Autodesk to stream real-time path traced graphics from the cloud</title><content type='html'>&lt;div style="text-align: justify;"&gt;Awesome news!!! In addition to the partnerships with Refractive Software (makers of Octane Render) and the development team behind the Brigade path tracer (which I blogged about &lt;a href="http://raytracey.blogspot.com/2011/08/otoy-partners-with-gpu-path-tracing.html"&gt;here&lt;/a&gt;), OTOY now announced a partnership with Autodesk to integrate Octane Render into the viewport of Autodesk's 3D Studio Max 2012 and stream real-time path traced visuals for animations, movies and games from remote GPU clusters in the cloud to the client. Real-time GPU path tracing is big business, and the best part is that it's going to bring game graphics up to ultrarealistic levels in the not too distant future.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;VentureBeat article (includes an image of Octane's subsurface scattering implementation): &lt;a href="http://venturebeat.com/2011/10/20/otoy-teams-up-with-autodesk-to-create-cloud-rendering-platform/"&gt;http://venturebeat.com/2011/10/20/otoy-teams-up-with-autodesk-to-create-cloud-rendering-platform/&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Yahoo biz (Business Wire): &lt;a href="http://finance.yahoo.com/news/OTOY-and-Autodesk-to-Create-bw-395764800.html?x=0&amp;amp;.v=1"&gt;http://finance.yahoo.com/news/OTOY-and-Autodesk-to-Create-bw-395764800.html?x=0&amp;amp;.v=1&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Some quotes from the article and official press release:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(250, 160, 50); font-family: arial, helvetica, sans-serif; font-size: 12px; "&gt;&lt;p class="listHdr" style="margin-top: 0px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 20px; font-weight: bold; "&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p class="listHdr" style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 20px; font-weight: bold; "&gt;Real Time Path Tracing in the Viewport - A New Level of Photorealism&lt;/p&gt;&lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 20px; "&gt;OTOY's 3D rendering tools, including Octane Render™ and Brigade™, are the premier rendering solutions for next generation 'path traced' games and films.&lt;/p&gt;&lt;p style="text-align: justify;margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; line-height: 20px; "&gt;Path tracing significantly reduces the cost and complexity of high quality rendering by automatically generating effects traditionally handled through manual post processing – including spectral rainbows, lens flares, unbiased motion blur and depth of field.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;“A year ago, path tracing was considered too expensive to be used even in high-end Hollywood blockbusters. Today, thanks to advances in GPU rendering, OTOY is bringing real time path-tracing technology to millions of artists by leveraging GPU hardware that costs only a few hundred dollars. This is a game-changer on any budget,” said Jules Urbach, CEO of OTOY.&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="text-align: justify;margin-top: 1em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; "&gt;“Autodesk is the leader in 3D design software for film and video game production. We are incredibly excited about our partnership and proud to be bringing their industry leading tools to an ever-expanding market through our cloud solutions,” said Alissa Grainger, President of OTOY.&lt;/p&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;One of the images in the VentureBeat article looks like the Kajiya scene (which can now be &lt;a href="http://raytracey.blogspot.com/2011/04/kajiyas-scene-from-rendering-equation.html"&gt;rendered at  more than 10 fps with the Brigade engine, including caustics&lt;/a&gt;) in an IBL environment:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://venturebeat.files.wordpress.com/2011/10/otoy-5.jpg?w=300" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 166px;" src="http://venturebeat.files.wordpress.com/2011/10/otoy-5.jpg?w=300" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Very cool!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-8167886737390867804?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/8167886737390867804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=8167886737390867804' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/8167886737390867804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/8167886737390867804'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/10/otoy-partners-with-autodesk-to-stream.html' title='OTOY partners with Autodesk to stream real-time path traced graphics from the cloud'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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-7277449027963623452.post-8127338544781355243</id><published>2011-10-18T14:36:00.000-07:00</published><updated>2011-10-27T07:41:09.293-07:00</updated><title type='text'>Real-time path tracing of animated meshes on the GPU (2): OGRE</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-OSui1ayPDos/Tp30zURyKrI/AAAAAAAABhw/R_hkL_UOVzQ/s1600/ogre1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 202px;" src="http://3.bp.blogspot.com/-OSui1ayPDos/Tp30zURyKrI/AAAAAAAABhw/R_hkL_UOVzQ/s400/ogre1.png" alt="" id="BLOGGER_PHOTO_ID_5664953068755757746" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;Another test in my never relenting quest for real-time photorealistic graphics. &lt;/span&gt;This time I was inspired by one of the first animations rendered with unbiased Monte Carlo path tracing. The animation was made by Daniel Martinez Lara from &lt;a href="http://www.pepeland.com/"&gt;Pepeland&lt;/a&gt; in 1999 and can be seen here: &lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;a href="http://www.youtube.com/watch?v=VNyknZ2zrsM"&gt;http://www.youtube.com/watch?v=VNyknZ2zrsM&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;It’s one of the first animations that uses Arnold, the Monte Carlo path tracing based production renderer developed by Marcos Fajardo, that is currently taking Hollywood VFX by storm: it was used in e.g. Cloudy with a Chance of Meatballs, 2012, Alice in Wonderland and the Assassin’s Creed: Brotherhood and Revelations CG trailers and is giving PRMan and mental ray a run for their money (probably making them obsolete soon, mainly because of ease of use and huge artist time savings). The animation shows a very lifelike clay figure coming to life. Despite the simplicity of the scene, the whole looks very believable thanks to physically accurate global illumination and materials and an extensive use of depth-of-field and camera shake.&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;In an attempt to reproduce that particular scene, I’ve used the animated Ogre model from a ray tracing demo developed by Javor Kalojanov which can be found at &lt;/span&gt;&lt;a href="http://javor.tech.officelive.com/tmp.aspx"&gt;&lt;span lang="EN-US"&gt;http://javor.tech.officelive.com/tmp.aspx&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;span lang="EN-US"&gt;. The Ogre model (which was created by William Vaughan) consists of 50,855 triangles &lt;span&gt; &lt;/span&gt;and was also used in the excellent paper “&lt;a href="http://www.intel-vci.uni-saarland.de/fileadmin/grafik_uploads/publications/59.pdf"&gt;Two-level grids for ray tracing on GPUs&lt;/a&gt;” by Javor Kalojanov and Philipp Slusallek (really great people btw, whom I've had the pleasure to meet in person recently. The conversations I've had with them inspired me to finally try triangles as primitive for my real-time path tracing experiments (instead of just spheres), which led to this Ogre demo. To my surprise, triangle meshes are not that much slower to intersect compared to spheres. I think this is due to the fact that the cost of primitive intersection is becoming increasingly smaller compared to the cost of shading).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;The following videos show an animated Ogre path traced in real-time with real-time, per frame update of the acceleration structure of the Ogre’s 50k triangle mesh (watch in 480p):&lt;/span&gt;&lt;/p&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/qPFjBuVEGec" allowfullscreen="" frameborder="0" height="390" width="480"&gt;&lt;/iframe&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=qPFjBuVEGec"&gt;http://www.youtube.com/watch?v=qPFjBuVEGec&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/z7IjCiazdJ0" allowfullscreen="" frameborder="0" height="390" width="480"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=z7IjCiazdJ0"&gt;http://www.youtube.com/watch?v=z7IjCiazdJ0&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/u0a0mPR8jdM" allowfullscreen="" frameborder="0" height="390" width="480"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=u0a0mPR8jdM"&gt;http://www.youtube.com/watch?v=u0a0mPR8jdM&lt;/a&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;Path tracing is performed entirely on the GPU, in this case a GTS 450 (a low-end GPU by today’s standards). The framerate of the walk animation is about 4 fps max on my card but should be around 15-20 fps on a GTX 580. The image converges extremely fast to a very high quality result (in about 1-2 seconds). The movement of the Ogre (translation, rotation, animation) is actually much more fluid in real life without Fraps, the overhead of the video capturing software almost halfs performance.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;The images below were each rendered at 20 samples per pixel in under 2 seconds on a GTS 450 (it would take less then 0.5 seconds on a GTX 580):&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;Note the very subtle color bleeding from the ground plane onto the Ogre:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-q2lWnsADt9Q/Tp30zD6nQOI/AAAAAAAABhk/c0FoFCYJJaI/s1600/ogre2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 202px;" src="http://3.bp.blogspot.com/-q2lWnsADt9Q/Tp30zD6nQOI/AAAAAAAABhk/c0FoFCYJJaI/s400/ogre2.png" alt="" id="BLOGGER_PHOTO_ID_5664953064363606242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-9eAlQ8RarZE/Tp30yud9TSI/AAAAAAAABhM/ieyGmognuqQ/s1600/ogre4.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 202px;" src="http://3.bp.blogspot.com/-9eAlQ8RarZE/Tp30yud9TSI/AAAAAAAABhM/ieyGmognuqQ/s400/ogre4.png" alt="" id="BLOGGER_PHOTO_ID_5664953058606271778" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;With a glossy floor:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-NaMDvPFuEyk/Tp30yxBH3NI/AAAAAAAABhY/QiLsG0MX75E/s1600/ogre3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 200px;" src="http://2.bp.blogspot.com/-NaMDvPFuEyk/Tp30yxBH3NI/AAAAAAAABhY/QiLsG0MX75E/s400/ogre3.png" alt="" id="BLOGGER_PHOTO_ID_5664953059290635474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;If you’re interested in trying this scene out yourself, send me an e-mail at sam [dot] lapere [at] live [dot] be. A CUDA enabled GPU is required (minimum compute capability 1.1).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;I’m planning to build a (very) simple game with this tech. The possibilities are really endless. We're on the cusp of having truly photorealistic games. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-8127338544781355243?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/8127338544781355243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=8127338544781355243' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/8127338544781355243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/8127338544781355243'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/10/real-time-path-tracing-of-animated.html' title='Real-time path tracing of animated meshes on the GPU (2): OGRE'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-OSui1ayPDos/Tp30zURyKrI/AAAAAAAABhw/R_hkL_UOVzQ/s72-c/ogre1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-1418890519574535093</id><published>2011-10-14T16:01:00.000-07:00</published><updated>2011-10-17T00:16:27.978-07:00</updated><title type='text'>Real-time path tracing of animated meshes on the GPU (1)</title><content type='html'>&lt;div style="text-align: justify;"&gt;Another experiment: no spheres this time, but a real-time animated triangle mesh (the hand is from &lt;a href="http://www.sci.utah.edu/~wald/animrep/"&gt;the Utah 3D Animation Repository&lt;/a&gt;, a textured mesh containing 15,855 triangles). The goal was to create a simple animated scene and achieve a look as close to photorealism as possible with completely dynamic, physically accurate global illumination in real-time using path tracing.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The following animation was rendered in real-time on a GTS 450 (stretching the compute capabilities of my GPU to the max):&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;div&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/akZNUe0L8y8" allowfullscreen="" frameborder="0" height="390" width="480"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.youtube.com/watch?v=akZNUe0L8y8"&gt;http://www.youtube.com/watch?v=akZNUe0L8y8&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Details will follow.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The image below was rendered with path tracing at 26 samples per pixel in 0.8 seconds on a GeForce GTS 450 (192 cuda cores at factory clocks, it would render 3 to 4 times faster on a GTX 580, which has 512 cuda cores and is clocked higher):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-diZfaGIEajA/TpjB3Ad_35I/AAAAAAAABhA/qlpDOh0Xq-8/s1600/reflectivehand2.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 210px;" src="http://2.bp.blogspot.com/-diZfaGIEajA/TpjB3Ad_35I/AAAAAAAABhA/qlpDOh0Xq-8/s400/reflectivehand2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5663489682181185426" /&gt;&lt;/a&gt;&lt;br /&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/7277449027963623452-1418890519574535093?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/1418890519574535093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=1418890519574535093' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1418890519574535093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1418890519574535093'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/10/real-time-animation-path-tracing-on-gpu.html' title='Real-time path tracing of animated meshes on the GPU (1)'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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://img.youtube.com/vi/akZNUe0L8y8/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-2116622032268177653</id><published>2011-10-13T04:25:00.000-07:00</published><updated>2011-10-13T07:41:25.864-07:00</updated><title type='text'>Update on Exposure Render</title><content type='html'>&lt;div style="text-align: justify;"&gt;Two new great looking videos of &lt;a href="http://code.google.com/p/exposure-render/"&gt;Exposure Render&lt;/a&gt;, the real-time CUDA-based volume path tracer have appeared on Youtube. It's quite cool to see these anatomical volume datasets being rendered with physically based shading in near real-time:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=cZaPIEo6PPs"&gt;http://www.youtube.com/watch?v=cZaPIEo6PPs&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=4D2HfJ5Cwqc"&gt;http://www.youtube.com/watch?v=4D2HfJ5Cwqc&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Someone has also put the video from the paper &lt;a href="http://agl.unm.edu/rpf/"&gt;"On filtering the noise from the random parameters in Monte Carlo rendering"&lt;/a&gt; on Youtube, making it more convenient to retrieve and watch:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=ZQ6TFZE5QEU"&gt;http://www.youtube.com/watch?v=ZQ6TFZE5QEU&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The results for filtered images using only 8 input samples per pixel are extremely impressive.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-2116622032268177653?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/2116622032268177653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=2116622032268177653' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/2116622032268177653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/2116622032268177653'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/10/update-on-exposure-render.html' title='Update on Exposure Render'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-9037264310335180860</id><published>2011-10-04T06:05:00.000-07:00</published><updated>2011-10-04T06:55:14.417-07:00</updated><title type='text'>Unbiased subsurface scattering on the GPU in next version of Octane Render</title><content type='html'>&lt;div style="text-align: justify;"&gt;Wow, the developers behind Octane render never cease to amaze. After being the first GPU renderer to implement Population Monte Carlo (a more complex rendering method than plain path tracing which borrows concepts from Metropolis light transport and energy redistribution path tracing to handle scenes with difficult lighting more efficiently), Octane render is now adding unbiased subsurface scattering along with other features such as instancing. Here's the announcement post from radiance (Octane's main developer) over at the &lt;a href="http://octanerender.com/forum/viewtopic.php?f=5&amp;amp;t=8777&amp;amp;start=0&amp;amp;sid=21ebe6a88652ef9a4100174f9c55dcb0"&gt;Octane forum&lt;/a&gt;:&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;blockquote&gt;"We have fully working and VERY fast SSS ready for release in the next test version. It renders about as fast (a tiny bit slower) as a glossy specular material. And, it's unbiased/bruteforce SSS, eg no bias introducing photon grids or other precomputed approximations.&lt;br /&gt;[...]&lt;br /&gt;This is the prime new feature in the next test release,  along with instancing support and FAST voxelisation, and another suprise  feature, aswell as the soon to be publically released first of a series of new products, OctaneRender for 3DS Max."&lt;/blockquote&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Surprise feature?  Refractive Software knows how to keep their audience hyped ;-)&lt;br /&gt;&lt;br /&gt;Some screenshots with the new SSS method can be seen in &lt;a href="http://octanerender.com/forum/viewtopic.php?f=5&amp;amp;t=8777&amp;amp;sid=21ebe6a88652ef9a4100174f9c55dcb0"&gt;this thread&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I think it will eventually be possible to implement every feature found in traditional CPU renderers on the GPU and make it an order of magnitude faster. For example, Radiance &lt;a href="http://octanerender.com/forum/viewtopic.php?p=55695&amp;amp;sid=ab27583386a7f277739bf42c8ab1d461#p55695"&gt;hinted at bidirectional path tracing + PMC&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;"Bidirectional pathtracing (and PMC) should make renders like this one converge MUCH faster and bidirectional pathtracing + PMC is something we will be starting work on next, after 2.5 is out.&lt;br /&gt;PMC + bidirectional will be ideal, it will be as efficient as the popular standard in CPU based unbiased engines (MLT+bidir), and this combined with the power of GPUs should really take things to a new level."&lt;/blockquote&gt;GPU rendering is going to redefine every area of rendering from movies, animation, visualization and design to games, simulation and virtual reality. Truly the most exciting time for rendering in decades. I'm very happy that this paradigm shift is in full swing and that things are evolving at nauseating speed :-)&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/7277449027963623452-9037264310335180860?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/9037264310335180860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=9037264310335180860' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/9037264310335180860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/9037264310335180860'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/10/unbiased-subsurface-scattering-on-gpu.html' title='Unbiased subsurface scattering on the GPU in next version of Octane Render'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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-7277449027963623452.post-5377516146271770280</id><published>2011-10-01T04:10:00.000-07:00</published><updated>2011-10-09T08:49:26.348-07:00</updated><title type='text'>Real-time physically based volume rendering with CUDA</title><content type='html'>&lt;div style="text-align: justify;"&gt;Just saw a very impressive video of "Exposure Render", an open source CUDA based volumetric path tracer which will be presented at EuroGraphics 2012:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.youtube.com/watch?v=qzFv0draRG8"&gt;http://www.youtube.com/watch?v=qzFv0draRG8&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://4.bp.blogspot.com/-rp9ehBLT8dU/Tob61FxXcbI/AAAAAAAABg4/dLrpjRvuJKM/s1600/volumetricCUDApathtracer1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 237px; height: 237px;" src="http://4.bp.blogspot.com/-rp9ehBLT8dU/Tob61FxXcbI/AAAAAAAABg4/dLrpjRvuJKM/s400/volumetricCUDApathtracer1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5658485771826852274" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;The video shows an eerily realistic representation of a person scanned with CT (computed tomography), where anatomical layers of skin, muscle, cartilage, connective tissue and bone can be peeled away and rendered with photorealistic quality global illumination in real-time. This could be an extremely useful training tool for medical students and aspiring surgeons. The physically based photorealistic 3D renders of skull, bones and soft tissue could also benefit radiologists in diagnostic decision making.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Most medical volume rendering software uses ray casting, which is fast but provides very unrealistic looking lighting. With volumetric path tracing finally being feasible in real-time thanks to the GPU, this will hopefully change soon. I think we will see an implementation of real-time path traced sparse voxel octrees pop up sometime in the very near future.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;An executable and source code (Oct 3rd) are available at &lt;a href="http://code.google.com/p/exposure-render/"&gt;http://code.google.com/p/exposure-render/&lt;/a&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/7277449027963623452-5377516146271770280?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/5377516146271770280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=5377516146271770280' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5377516146271770280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5377516146271770280'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/10/real-time-physically-based-volume.html' title='Real-time physically based volume rendering with CUDA'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-rp9ehBLT8dU/Tob61FxXcbI/AAAAAAAABg4/dLrpjRvuJKM/s72-c/volumetricCUDApathtracer1.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-5339196372191184757</id><published>2011-09-29T23:40:00.000-07:00</published><updated>2011-09-30T01:21:28.016-07:00</updated><title type='text'>In-depth video on micropolygons in OpenGL</title><content type='html'>&lt;div style="text-align: justify;"&gt;Anyone interested in OpenGL and micropolygons should definitely check out the following 1-hour-long video presentation by Kayvon Fatahalian, "Evolving the OpenGL Graphics Pipeline in Pursuit of Real-Time, Film-Quality Rendering":&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.youtube.com/watch?v=KfGX73NOA6I"&gt;http://www.youtube.com/watch?v=KfGX73NOA6I&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Lots of interesting insights in the future of GPU hardware.&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/7277449027963623452-5339196372191184757?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/5339196372191184757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=5339196372191184757' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5339196372191184757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5339196372191184757'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/09/in-depth-video-on-micropolygons-in.html' title='In-depth video on micropolygons in OpenGL'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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-7277449027963623452.post-1982306216985092710</id><published>2011-09-27T23:38:00.000-07:00</published><updated>2011-09-30T08:16:40.788-07:00</updated><title type='text'>Real-time dynamic GPU path tracing</title><content type='html'>A small teaser of something I'm working on, rendered in real-time on a GeForce GTS 450:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=1Q0z2E_mfXY"&gt;http://www.youtube.com/watch?v=1Q0z2E_mfXY&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;12 samples per pixel, max path length = 4, 584x266 render resolution, Stanford Bunny with 69k triangles (rendered in about 0.4 seconds on a low-end GTS450):&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-IbsI_JU7vXY/ToW6gug-9II/AAAAAAAABgw/wxArpk1jHss/s1600/bunnytest1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 183px;" src="http://4.bp.blogspot.com/-IbsI_JU7vXY/ToW6gug-9II/AAAAAAAABgw/wxArpk1jHss/s400/bunnytest1.jpg" alt="" id="BLOGGER_PHOTO_ID_5658133578265851010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;This will eventually become a full-fledged game inspired by this video: &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=pmu5sRIizdw"&gt;http://www.youtube.com/watch?v=pmu5sRIizdw&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/7277449027963623452-1982306216985092710?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/1982306216985092710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=1982306216985092710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1982306216985092710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1982306216985092710'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/09/real-time-dynamic-gpu-path-tracing.html' title='Real-time dynamic GPU path tracing'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-IbsI_JU7vXY/ToW6gug-9II/AAAAAAAABgw/wxArpk1jHss/s72-c/bunnytest1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-3385821309429143643</id><published>2011-09-27T04:25:00.000-07:00</published><updated>2011-09-27T04:39:23.314-07:00</updated><title type='text'>A few details on Imagination's PowerVR GPU with Caustic Graphics hardware ray tracing</title><content type='html'>&lt;div style="text-align: justify;"&gt;A few days ago, an article appeared on the Japanese website 4gamer.net about an in-development PowerVR GPU, the PowerVR RTX, which is said to have integrated ray tracing hardware from Caustic Graphics (acquired by Imagination Technologies in December 2010). The article is in Japanese, and the Google translated version is barely understandable:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://translate.google.com/translate?hl=en&amp;amp;sl=auto&amp;amp;tl=en&amp;amp;u=http%3A%2F%2Fwww.4gamer.net%2Fgames%2F017%2FG001762%2F20110920023%2F"&gt;http://translate.google.com/translate?hl=en&amp;amp;sl=auto&amp;amp;tl=en&amp;amp;u=http%3A%2F%2Fwww.4gamer.net%2Fgames%2F017%2FG001762%2F20110920023%2F&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-3385821309429143643?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/3385821309429143643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=3385821309429143643' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/3385821309429143643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/3385821309429143643'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/09/few-details-on-imaginations-powervr-gpu.html' title='A few details on Imagination&apos;s PowerVR GPU with Caustic Graphics hardware ray tracing'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-6019866956052605775</id><published>2011-09-24T10:50:00.000-07:00</published><updated>2011-09-24T12:06:23.073-07:00</updated><title type='text'>Video of Unbiased FPS + a new video of Brigade!</title><content type='html'>&lt;div style="text-align: justify;"&gt;The following two videos of "Unbiased FPS" were rendered on a GTS 450 and demonstrate mouse look, shooting mechanics and how adjusting the number of averaged frames affects the amount of noise and blurring. Youtube has a terrible video compression algorithm for videos containing fine-grained noise (such as Monte Carlo noise), so these came out much worse than expected:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/k0Q-JgRC20o" allowfullscreen="" frameborder="0" height="390" width="480"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/g5VYwLC9Bj0" allowfullscreen="" frameborder="0" height="390" width="480"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The frame averaging technique (implemented by Kerrash) significantly reduces the amount of noise without affecting the framerate, but the resulting blurring of fast moving objects is of course less than ideal. At the upcoming Siggraph Asia 2011, a paper entitled "Image-space bidirectional scene reprojection" will be presented which could potentially solve the blurring issue by reconstructing additional frames without distracting blurry artefacts (there are two versions, a raster based version and an image-based one). The video accompanying the paper shows a lot of promise and is definitely worth checking out: &lt;a href="http://research.microsoft.com/en-us/um/people/hoppe/proj/bireproj/"&gt;http://research.microsoft.com/en-us/um/people/hoppe/proj/bireproj/&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;On a sidenote, I found a new, short video of the Brigade path tracer, showing a real-time pathtraced animated character: &lt;a href="http://www.youtube.com/watch?v=RbxoZK6Apj8"&gt;http://www.youtube.com/watch?v=RbxoZK6Apj8&lt;/a&gt; (no details on the hardware used)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-sBTCLq97yXA/Tn4gTnE6qYI/AAAAAAAABgo/REp113xG158/s1600/brigadebob.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 296px;" src="http://1.bp.blogspot.com/-sBTCLq97yXA/Tn4gTnE6qYI/AAAAAAAABgo/REp113xG158/s400/brigadebob.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5655993703303129474" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The video shows very nice soft shadows and path traced ambient light coming from the skydome (calculated in real-time contrary to the constant ambient term which is used by many games to approximate indirect lighting).&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-6019866956052605775?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/6019866956052605775/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=6019866956052605775' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/6019866956052605775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/6019866956052605775'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/09/video-of-unbiased-fps-new-video-of.html' title='Video of Unbiased FPS + a new video of Brigade!'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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://img.youtube.com/vi/k0Q-JgRC20o/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-5366704157247256712</id><published>2011-09-21T01:01:00.001-07:00</published><updated>2011-09-22T07:59:15.682-07:00</updated><title type='text'>Unbiased FPS</title><content type='html'>Another small experiment to see how a path traced first person shooter game might look like (all screenshots rendered on a 8600M GT):&lt;div&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-kssd_Wzq8ng/TnmkMFePg5I/AAAAAAAABgI/gvrgZvHHKyk/s1600/unbiasedfps.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 279px;" src="http://3.bp.blogspot.com/-kssd_Wzq8ng/TnmkMFePg5I/AAAAAAAABgI/gvrgZvHHKyk/s400/unbiasedfps.png" alt="" id="BLOGGER_PHOTO_ID_5654731334674776978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4spp, reusing samples from the previous 6 frames, 720p resolution:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-gjJ8o3FqyUY/TntMe5uEiEI/AAAAAAAABgg/U_nkEV9es9A/s1600/unbiasedfpshd2.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 247px;" src="http://1.bp.blogspot.com/-gjJ8o3FqyUY/TntMe5uEiEI/AAAAAAAABgg/U_nkEV9es9A/s400/unbiasedfpshd2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5655197850867632194" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;720p resolution, 4spp with 12 averaged frames (reusing samples from the previous 12 frames, resulting in heavy blur for moving objects, but crisp image quality for the rest of the scene):&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-WZuWPj6QrCY/TnmstFcAqiI/AAAAAAAABgY/xAXVXRRUalI/s1600/unbiasedfpshd1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 247px;" src="http://4.bp.blogspot.com/-WZuWPj6QrCY/TnmstFcAqiI/AAAAAAAABgY/xAXVXRRUalI/s400/unbiasedfpshd1.png" alt="" id="BLOGGER_PHOTO_ID_5654740697694120482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-ZB8ZHIYLVMI/TnmkMTt15II/AAAAAAAABgQ/eDIFS_5_wa4/s1600/unbiasedfps2.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 280px;" src="http://2.bp.blogspot.com/-ZB8ZHIYLVMI/TnmkMTt15II/AAAAAAAABgQ/eDIFS_5_wa4/s400/unbiasedfps2.png" alt="" id="BLOGGER_PHOTO_ID_5654731338498303106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Some features:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- a first person "gun" sticks to the camera and shoots chrome balls with physical weight &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- mouse look is semi-functional, you can move the mouse cursor up to the borders of the screen&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- the car can be controlled with the arrow keys&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- the robot has an initial angular momentum, but essentially does nothing&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- the camera is controlled with mouse + WASD keys (the classic FPS controls)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- the number of averaged frames can now be set with a slider (from 0 to 12). It regulates the amount of "blur" caused by reusing samples from previous frames and is very useful for comparison purposes. Setting the slider to 1 or higher greatly reduces the amount of noise at the expense of a more blurry image and doesn't have any impact on the framerate. You can for example quadruple the number of samples per pixel (thereby halving the amount of noise) for free and if the framerate is high enough, the blurring isn't even that distracting. Setting the slider to 12 with just 4 spp results in a very high quality image (effectively more than 100 spp) at high framerates, but at the expense of lots of motion blur when the car or camera are moving&lt;br /&gt;&lt;br /&gt;There are no acceleration structures used (not even a bounding box around the car or the robot). Implementing those should give a nice ray tracing performance boost.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Executable is available at &lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&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/7277449027963623452-5366704157247256712?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/5366704157247256712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=5366704157247256712' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5366704157247256712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5366704157247256712'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/09/unbiased-fps.html' title='Unbiased FPS'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-kssd_Wzq8ng/TnmkMFePg5I/AAAAAAAABgI/gvrgZvHHKyk/s72-c/unbiasedfps.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-5364526625367336960</id><published>2011-09-12T05:45:00.001-07:00</published><updated>2011-09-15T03:43:18.898-07:00</updated><title type='text'>Video of Octane Render rendering in real-time on 8x GTX580s</title><content type='html'>&lt;div style="text-align: justify;"&gt;I just saw a very impressive video on Youtube, showing real-time rendering of a complex interior scene with Octane Render using eight GTX 580s. Octane Render has very recently improved its "direct lighting/AO" kernel which includes a new ambient occlusion preset and a diffuse indirect lighting option (there are now separate sliders for specular, glossy and diffuse path depth and a slider for AO distance) so that it is now capable of rendering very realistic looking interior scenes extremely fast:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.youtube.com/watch?v=CZ1IRQTqMMY"&gt;http://www.youtube.com/watch?v=CZ1IRQTqMMY&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Screengrab from Youtube:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-b0yv8mC1Bng/Tm4iSWxWAUI/AAAAAAAABfw/LQ6P-d_t1X0/s1600/octanerender8gpu.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 241px;" src="http://4.bp.blogspot.com/-b0yv8mC1Bng/Tm4iSWxWAUI/AAAAAAAABfw/LQ6P-d_t1X0/s400/octanerender8gpu.png" alt="" id="BLOGGER_PHOTO_ID_5651492281142083906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Some observations:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- in contrast to the type of scenes that is usually used to show off unbiased renderers (wide open outdoor scenes with shiny cars and lots of direct lighting from a skydome or sun/sky)  this is an interior scene that is mostly lit by indirect lighting with many glossy surfaces&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- the scene in the video contains more than 1.3 million triangles&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- rendered at very high resolution (1500x1000 pixels)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- perfect scaling with number of GPUs (99-100% extra performance per additional GPU)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- while navigating through the scene, the image remains remarkably clear and recognizable without ever degenerating into a pixelated mess of big, blocky (and often black) pixels &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- convergence to a noise-free image is extremely quick &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;It's not hard to imagine that this renderer will be truly real-time with the upcoming generation of GPUs (according to Nvidia, Kepler will be more than twice as fast at path tracing as Fermi, just like Fermi is 2-4x as fast as Tesla (GT200) thanks to caches and other improvements (see &lt;a href="http://www.youtube.com/watch?v=0IC2NIogWR4"&gt;http://www.youtube.com/watch?v=0IC2NIogWR4&lt;/a&gt;) and AMD's Graphics Core Next will be much more focused on GPGPU computing than previous architectures). These graphics can be rendered noise-free in real-time at high resolution with techniques like adaptive sampling, image reconstruction, &lt;a href="http://www.ece.unm.edu/%7Epsen/Papers/TVCG11_CompressiveRendering.pdf"&gt;compressed sensing&lt;/a&gt; (a hot topic in medical imaging currently), edge-aware filtering of indirect lighting (e.g. the a-trous wavelet noise filter), extraction of spatiotemporal coherence with reprojection, path regeneration, reusing samples with frame averaging and frameless rendering. Rendering complex, 100% photorealistic scenes in real-time is much closer than commonly believed and cloud rendering will play a key role in accelerating this process.&lt;br /&gt;&lt;br /&gt;UPDATE: another interior animation rendered on a Nvidia GTX 590 with Octane Render's new indirect diffuse lighting/AO kernel: &lt;a href="http://www.youtube.com/watch?v=O2Aufjr44g4Hi"&gt;http://www.youtube.com/watch?v=O2Aufjr44g4Hi&lt;/a&gt;&lt;br /&gt;Rendertime per frame: ~1 minute, 1024 samples per pixel (see screenshot in &lt;a href="http://www.refractivesoftware.com/forum/viewtopic.php?f=5&amp;amp;t=7978"&gt;this thread&lt;/a&gt;). This is absolutely amazing...&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/7277449027963623452-5364526625367336960?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/5364526625367336960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=5364526625367336960' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5364526625367336960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5364526625367336960'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/09/video-of-octane-render-rendering-in.html' title='Video of Octane Render rendering in real-time on 8x GTX580s'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-b0yv8mC1Bng/Tm4iSWxWAUI/AAAAAAAABfw/LQ6P-d_t1X0/s72-c/octanerender8gpu.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-9123554956012249292</id><published>2011-09-07T05:01:00.001-07:00</published><updated>2011-09-29T02:35:41.389-07:00</updated><title type='text'>Unbiased Stunt Racer in HD!</title><content type='html'>&lt;div style="text-align: justify;"&gt;I've changed the &lt;a href="http://raytracey.blogspot.com/2011/09/unbiased-stunt-racer.html"&gt;'Unbiased Stunt Racer' demo&lt;/a&gt; a little bit: I've added the buildings from my Futuristic Buildings demo to the scene and also added a function to adjust the speed of the physics simulation at runtime with the N and M keys. The platform and sphere are also moving at a speed that's independent of the framerate, so the game is still playable on high-end cards like the GTX 480 and higher. The new executable contains 480p and 720p executables. I find it mindblowing that real-time path tracing is feasable today at HD resolutions using only one GPU.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Below is a 720p image of the new demo, rendered on a 8600M GT at 8 samples per pixel:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/-J5ATwIXS4I8/TmdeZ142jnI/AAAAAAAABfI/V5SqQ-YkuJI/s1600/usrHD.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 233px;" src="http://3.bp.blogspot.com/-J5ATwIXS4I8/TmdeZ142jnI/AAAAAAAABfI/V5SqQ-YkuJI/s400/usrHD.png" alt="" id="BLOGGER_PHOTO_ID_5649588055614852722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Some 480p screenshots (all captured on a 8600m GT):&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-5j5WOk1K6ww/Tmdk-5JB4fI/AAAAAAAABfY/lu99esb04r0/s1600/usrhd3.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 315px;" src="http://2.bp.blogspot.com/-5j5WOk1K6ww/Tmdk-5JB4fI/AAAAAAAABfY/lu99esb04r0/s400/usrhd3.jpg" alt="" id="BLOGGER_PHOTO_ID_5649595289212936690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-VqB_EU4IVNk/Tmdk-7Nr_rI/AAAAAAAABfQ/PWB6xKsTq2A/s1600/usrhd2.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 315px;" src="http://4.bp.blogspot.com/-VqB_EU4IVNk/Tmdk-7Nr_rI/AAAAAAAABfQ/PWB6xKsTq2A/s400/usrhd2.png" alt="" id="BLOGGER_PHOTO_ID_5649595289769344690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-zFDN6Nk_d_A/Tmdk_FajDiI/AAAAAAAABfg/vITKDe_vcKA/s1600/usrhd4.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 315px;" src="http://1.bp.blogspot.com/-zFDN6Nk_d_A/Tmdk_FajDiI/AAAAAAAABfg/vITKDe_vcKA/s400/usrhd4.png" alt="" id="BLOGGER_PHOTO_ID_5649595292507639330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;A video will follow soon and the source code will also be uploaded. The code is very messy with lots of obsolete comments and there are heaps of global variables, which isn't good programming practice but it does the job. :)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;The executable "Unbiased Stunt Racer HD Final" is available at &lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This will be one of my last demos involving only spheres and boxes as primitives. The limitations on the number of objects and shapes are starting to outweigh the benefits of these cheap-to-intersect primitives, so I'm moving to the wonderful world of triangles and BVHs soon.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;UPDATE: source code is online at&lt;/b&gt; &lt;b&gt;&lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;UPDATE 2: sneak peek at an upcoming demo (robot and car will be user controlled and "shootable")&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-Dyvh9e1p-Xg/TmoPNDRiQkI/AAAAAAAABfo/zLSkXIVGi8M/s1600/robotintokap.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 280px;" src="http://3.bp.blogspot.com/-Dyvh9e1p-Xg/TmoPNDRiQkI/AAAAAAAABfo/zLSkXIVGi8M/s400/robotintokap.jpg" alt="" id="BLOGGER_PHOTO_ID_5650345399381279298" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;UPDATE 3: Finally found some time to make an HD video of Unbiased Stunt Racer HD:&lt;br /&gt;&lt;br /&gt;720p "fly-through":&lt;br /&gt;&lt;div&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/A3bS26exG00" allowfullscreen="" frameborder="0" height="390" width="480"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;480p gameplay:&lt;br /&gt;&lt;div&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/lCQh40F3zVA" allowfullscreen="" frameborder="0" height="390" width="480"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Executable and source can  be found at &lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-NA2hkOoHBwg/TnOOdG5Cc4I/AAAAAAAABgA/bbAlZKpA97Y/s1600/usr8.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 236px;" src="http://4.bp.blogspot.com/-NA2hkOoHBwg/TnOOdG5Cc4I/AAAAAAAABgA/bbAlZKpA97Y/s400/usr8.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5653018587997303682" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-hThgw30ss4Q/TnOOc4UyLpI/AAAAAAAABf4/IeadDwLfmJ0/s1600/usr7.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 236px;" src="http://3.bp.blogspot.com/-hThgw30ss4Q/TnOOc4UyLpI/AAAAAAAABf4/IeadDwLfmJ0/s400/usr7.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5653018584087146130" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There is also a new paper and video on reducing Monte Carlo rendering noise called "Random parameter filtering" with amazing results (thanks to ompf.org forum): &lt;a href="http://agl.unm.edu/rpf/"&gt;http://agl.unm.edu/rpf/&lt;/a&gt; The video is definitely worth the download and shows great potential for real-time path tracing.&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/7277449027963623452-9123554956012249292?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/9123554956012249292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=9123554956012249292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/9123554956012249292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/9123554956012249292'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/09/unbiased-stunt-racer-in-hd.html' title='Unbiased Stunt Racer in HD!'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-J5ATwIXS4I8/TmdeZ142jnI/AAAAAAAABfI/V5SqQ-YkuJI/s72-c/usrHD.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-7305242471785845360</id><published>2011-09-05T02:41:00.001-07:00</published><updated>2011-09-05T12:11:04.059-07:00</updated><title type='text'>Unbiased Stunt Racer!</title><content type='html'>&lt;div style="text-align: justify;"&gt;For the last couple of days, I've been busy creating "Unbiased Stunt Racer", a new real-time path traced demo involving physics, a vehicle and a shooting robot. It's actually a mix of a platformer and a stunt driving game. First you have to reach a platform by driving the vehicle over a ramp, then you have to reach another platform with a robot which is shooting at you, by driving over two rails where a nasty chrome sphere hinders the passage. The final goal is to push the robot off of his cosy place. The sunlight is constantly changing position and color, casting nice soft shadows over the scene. Below is a walkthrough video (rendered on GTS450) and some screenshots:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/SOic3eE8wrs" allowfullscreen="" frameborder="0" height="390" width="480"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-M8M5nR6ivTg/TmUHz6QFucI/AAAAAAAABeY/mcSTKfo8EuA/s1600/usr1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 318px;" src="http://4.bp.blogspot.com/-M8M5nR6ivTg/TmUHz6QFucI/AAAAAAAABeY/mcSTKfo8EuA/s400/usr1.png" alt="" id="BLOGGER_PHOTO_ID_5648929895997618626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-SrUZnlnVDcg/TmUH0csfXEI/AAAAAAAABeo/e3kly4aMbz0/s1600/usr3.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 319px;" src="http://4.bp.blogspot.com/-SrUZnlnVDcg/TmUH0csfXEI/AAAAAAAABeo/e3kly4aMbz0/s400/usr3.png" alt="" id="BLOGGER_PHOTO_ID_5648929905243544642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-jwKUvGGq3Fw/TmUH0IAD0_I/AAAAAAAABeg/gBPCbPquKX8/s1600/usr2.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 319px;" src="http://3.bp.blogspot.com/-jwKUvGGq3Fw/TmUH0IAD0_I/AAAAAAAABeg/gBPCbPquKX8/s400/usr2.png" alt="" id="BLOGGER_PHOTO_ID_5648929899688481778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-l-hs6LJh2So/TmUH0l4oqYI/AAAAAAAABew/uEXA0Ue6ptE/s1600/usr4.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 319px;" src="http://2.bp.blogspot.com/-l-hs6LJh2So/TmUH0l4oqYI/AAAAAAAABew/uEXA0Ue6ptE/s400/usr4.png" alt="" id="BLOGGER_PHOTO_ID_5648929907710404994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-zstKMMVDKmk/TmUH06-jBDI/AAAAAAAABe4/8GELsLXi9ZY/s1600/usr5.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 319px;" src="http://2.bp.blogspot.com/-zstKMMVDKmk/TmUH06-jBDI/AAAAAAAABe4/8GELsLXi9ZY/s400/usr5.png" alt="" id="BLOGGER_PHOTO_ID_5648929913372345394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-9-_x1nXOQrs/TmUIIcvHd4I/AAAAAAAABfA/1grfo8CRhfw/s1600/usr6.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 319px;" src="http://4.bp.blogspot.com/-9-_x1nXOQrs/TmUIIcvHd4I/AAAAAAAABfA/1grfo8CRhfw/s400/usr6.png" alt="" id="BLOGGER_PHOTO_ID_5648930248851945346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The number of samples per pixel can now be altered at runtime with the O and P keys. Pressing space resets the car. I've converted some of the stratified sampling in the original code back  to purely random sampling, resulting in a slightly noisier but more  realistic image.&lt;br /&gt;&lt;br /&gt;An executable demo for Unbiased Stunt Racer is available at &lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The biggest advantage of using real-time ray tracing/path tracing for these "games" (besides having higher quality graphics) is that almost anyone can immediately start creating simple games without worrying about lighting, shadows, multiple reflections, refractions and all combinations of these effects. Everything just works as expected and without any effort on the artist side. It's like a "push button" game engine: just create the scene and the renderer takes care of everything else.&lt;/div&gt;&lt;div style="text-align: justify;"&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/7277449027963623452-7305242471785845360?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/7305242471785845360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=7305242471785845360' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/7305242471785845360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/7305242471785845360'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/09/unbiased-stunt-racer.html' title='Unbiased Stunt Racer!'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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://img.youtube.com/vi/SOic3eE8wrs/default.jpg' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-6118210690833100374</id><published>2011-09-01T05:53:00.000-07:00</published><updated>2011-09-01T06:15:51.193-07:00</updated><title type='text'>New video of Unbiased Physics Games</title><content type='html'>&lt;div style="text-align: justify;"&gt;Changed the ground color and brightened up the sky in preparation for an upcoming demo called "Unbiased Stunt Racer" (courtesy of Anonymous blog reader :). It looks a little bit more realistic now (480p video on GTS 450):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/Xi1Kj-Vp09g" allowfullscreen="" frameborder="0" height="390" width="480"&gt;&lt;/iframe&gt;&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;b&gt;"Unbiased Physics Games v1.0" executable demo at &lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-6118210690833100374?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/6118210690833100374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=6118210690833100374' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/6118210690833100374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/6118210690833100374'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/09/new-video-of-unbiased-physics-games.html' title='New video of Unbiased Physics Games'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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://img.youtube.com/vi/Xi1Kj-Vp09g/default.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-8463247136675662711</id><published>2011-08-30T08:24:00.000-07:00</published><updated>2011-08-30T12:18:27.526-07:00</updated><title type='text'>OTOY partners with GPU path tracing renderers Octane and Brigade!</title><content type='html'>&lt;div style="text-align: justify;"&gt;Wowowow... this is superawesome news! An &lt;a href="http://venturebeat.com/2011/08/30/otoy-cloud-video-games/"&gt;article on Venturebeat&lt;/a&gt; today revealed that OTOY will be partnering with two fantastic renderers, Octane Render from Refractive Software and Brigade from Jacco Bikker, both pioneers in interactive/realtime high quality GPU based rendering.&lt;br /&gt;&lt;br /&gt;I've blogged about these three developers before, and the fact that all three will be joining forces is just breathtakingly awesome! It's a dream come true:&lt;br /&gt;&lt;br /&gt;- Octane Render is by far the fastest, most feature rich and highest quality unbiased GPU renderer, trouncing traditional biased and unbiased CPU renderers&lt;br /&gt;&lt;br /&gt;- Brigade is a realtime CPU/GPU path tracer targeted at games (with many noise reducing optimizations) developed by Jacco Bikker, who also developed the GPU path tracing code used in &lt;a href="http://raytracey.blogspot.com/2011/08/upg-unbiased-physics-games.html"&gt;my latest demos&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- OTOY is an emerging cloud rendering/cloud gaming company (probably best known from the AMD Radeon 4800 and 5800 launch events and the Ruby demo which used voxel ray tracing) that also owns LightStage, a state-of-the-art dome-shaped capturing environment for creating 100% photorealistic digital actors, which was used in blockbuster movies like Benjamin Button, Avatar and The Social Network&lt;br /&gt;&lt;br /&gt;This new partnership means that there is now a very high concentration of high-quality rendering know-how and I've got a feeling that there will be more to come. This will have a profound impact on the movie/game/rendering industry... I'm extremely happy and excited to see what's coming from all this :D.&lt;br /&gt;&lt;br /&gt;The VentureBeat article is here: &lt;a href="http://venturebeat.com/2011/08/30/otoy-cloud-video-games/"&gt;http://venturebeat.com/2011/08/30/otoy-cloud-video-games/&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-8463247136675662711?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/8463247136675662711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=8463247136675662711' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/8463247136675662711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/8463247136675662711'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/08/otoy-partners-with-gpu-path-tracing.html' title='OTOY partners with GPU path tracing renderers Octane and Brigade!'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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-7277449027963623452.post-6017297916834077735</id><published>2011-08-28T14:45:00.000-07:00</published><updated>2011-08-29T04:42:35.382-07:00</updated><title type='text'>UPG: Unbiased Physics Games!</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/-lZ9KS6T1GTw/TltLpNwnFVI/AAAAAAAABeI/zdll2i01wf0/s1600/up1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 315px;" src="http://1.bp.blogspot.com/-lZ9KS6T1GTw/TltLpNwnFVI/AAAAAAAABeI/zdll2i01wf0/s400/up1.png" alt="" id="BLOGGER_PHOTO_ID_5646189729279317330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;I've been working on some new real-time path traced demos during the past week involving physics, driving and shooting, three popular ingredients in action games. The demos will be bundled under a new 3 letter acronym, i.e. UPG (GPU in reverse), which stands for Unbiased Physics Games.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I've created two new small games:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- a simple driving game where you can pull some driving stunts with lighting effects (the camera follows the car):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/Bfydu9emESE" allowfullscreen="" frameborder="0" height="390" width="480"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- a simple shooter game where you can hit the car and a robot-like character which will respond to the impact of a cannonball:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/kDTtLMl35UM" allowfullscreen="" frameborder="0" height="390" width="480"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Both games use the GPU path tracer developed by Jacco Bikker for the Simplex Paternitas demo. The videos were recorded on a GTS450 with 16 samples per pixel (which already offers very good image quality with little noise) at a resolution of 640x480.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The robot and car in the second demo are both encapsulated by a "hitbox" (an axis aligned bounding box to maximize the path tracing performance), which position is updated every frame.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I'm going to implement a movable and "shootable" light hanging from a chain, which should create dramatic shadow effects. Some basic AI path finding code so the robot starts chasing and shooting the user-controlled car might also be an option. Still thinking about implementing oriented bounding boxes which would enable some cool collapsing structures. Plenty of ideas still and new ones are coming every day, there's just not enough time to execute all of them :) On the rendering side, I think I'll shift the geometric focus of the demos to triangle meshes and two-level BVH or grid, because there's only so much you can do with spheres and boxes - even though they're relatively cheap to intersect.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I've also tried porting the code to OpenCL with the recently released OpenCL1.1 drivers from Nvidia but the OpenCL kernel refuses to build for some reason and there's no easy way to find out what's causing the error. It will take some time to get this right.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Download the executables at &lt;/span&gt;&lt;a style="font-weight: bold;" href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&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/7277449027963623452-6017297916834077735?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/6017297916834077735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=6017297916834077735' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/6017297916834077735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/6017297916834077735'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/08/upg-unbiased-physics-games.html' title='UPG: Unbiased Physics Games!'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-lZ9KS6T1GTw/TltLpNwnFVI/AAAAAAAABeI/zdll2i01wf0/s72-c/up1.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-6163641009573034238</id><published>2011-08-19T07:10:00.000-07:00</published><updated>2011-08-19T07:43:40.811-07:00</updated><title type='text'>Ray tracing in CryEngine 3!</title><content type='html'>&lt;div style="text-align: justify;"&gt;Crytek has pioneered a lot of well known rendering techniques like screen space ambient occlusion and light propagation volumes for real-time dynamic global illumination.  Proving that they're still at the forefront of real-time rendering, Crytek revealed at Siggraph that they are using a limited form of ray tracing in CryEngine 3 to enable real-time local reflections. The technique involves screen space ray marching along the direction of the reflection vector. More info about this method and lots of other interesting details in their Siggraph presentation at &lt;a href="http://advances.realtimerendering.com/s2011/index.html"&gt;http://advances.realtimerendering.com/s2011/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's nice to see that ray tracing is finally being used by a leading game developer (without a doubt the most talented PC game engine developer of the moment), albeit in a limited form. If SSAO is any indication, we'll be seeing ray tracing based reflections in all of the other major game engines within the next year. From there, it's only a small step to use full ray tracing for reflections, shadows, refractions and ultimately global illumination. :)&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/7277449027963623452-6163641009573034238?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/6163641009573034238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=6163641009573034238' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/6163641009573034238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/6163641009573034238'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/08/ray-tracing-in-cryengine-3.html' title='Ray tracing in CryEngine 3!'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-9052730351160675983</id><published>2011-08-16T08:21:00.000-07:00</published><updated>2011-08-16T11:48:59.573-07:00</updated><title type='text'>Unbiased Truck with Plausible Bullet Physics!</title><content type='html'>&lt;div style="text-align: justify;"&gt;The physics in the previous demo were funny and also a bit strange, because the chassis dove down when the wheels were going up. I discovered that the Z-angle of the chassis had to have the same sign as the Z-angle of the wheels, which gives a much more plausible result, although the wheels are still quite jerky and are jumping around because of the loose suspension. The car will pull itself to its original state in most cases, so I've decided to leave the wonky physics as is.&lt;br /&gt;&lt;br /&gt;Rendered on 8600m gt:&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/bli8u9XWAaY" allowfullscreen="" frameborder="0" height="390" width="480"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Unbiased truck test drive in the Cornell Box:&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/XbeiqZDXkkI" allowfullscreen="" frameborder="0" height="390" width="480"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;New executable at &lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Some people reported problems with the last executable, so I included an updated version of "cudart.dll" this time (the CUDA 4.0 version).&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/7277449027963623452-9052730351160675983?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/9052730351160675983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=9052730351160675983' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/9052730351160675983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/9052730351160675983'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/08/unbiased-truck-with-plausable-bullet.html' title='Unbiased Truck with Plausible Bullet Physics!'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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://img.youtube.com/vi/bli8u9XWAaY/default.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-420762398399434178</id><published>2011-08-15T05:02:00.001-07:00</published><updated>2011-08-16T02:27:20.382-07:00</updated><title type='text'>Unbiased Truck with Bullet Physics!!</title><content type='html'>&lt;div style="text-align: justify;"&gt;After lots of trial-and-error, I have finally implemented car physics in the real-time path traced Unbiased Truck demos. Bullet doesn't like it when physical objects are not placed according to Newtonian rules, which has caused some unexpected behaviour and crashes.&lt;br /&gt;&lt;br /&gt;The Bullet SDK provides a vehicle physics example with parameters for wheel friction, suspension, chassis stiffness, etc. The "car" consists of a rigid chassis with four independent wheels. Matching the physics world with the rendered world took some time to get right: for example, since each of the four wheels can move independently from each other and from the car chassis, each "rim" had to match up perfectly with its respective wheel.&lt;br /&gt;&lt;br /&gt;Crashing the car into the walls is just plain fun. When hitting a wall, the car seems to disintegrate at first, after which it pulls its wheels and chassis together again.&lt;br /&gt;&lt;br /&gt;The video below was rendered on a 8600M GT at low resolution, spp and max path length to achieve a somewhat playable framerate (it should look much better on a high end Fermi GPU):&lt;br /&gt;&lt;br /&gt;512x256 resolution, max path length=3, 4 samples per pixel/frame:&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/fw_wnRMO99U" allowfullscreen="" frameborder="0" height="390" width="480"&gt;&lt;/iframe&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;256x256 resolution, max path length=4, 4 samples per pixel/frame:&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/0EcdQFX_ZFU" allowfullscreen="" frameborder="0" height="390" width="480"&gt;&lt;/iframe&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;A better video with higher framerate and image quality will follow soon. The new executable demo "Unbiased Truck Bullet Physics" can be downloaded from:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is all work in progress. I'm planning to port this to the GPU path tracer developed by Jacco Bikker (which was also used in the Futuristic Buildings demos), which has support for AABB acceleration structures, better shadows, and which generally runs faster. A camera will follow the car, not only by targeting the car's center, but by moving along with it behind the car. Some basic shooting mechanics will be included as well, and maybe also some ragdoll physics with one of these:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/--mpcc31F5bQ/TkkPRHBY5cI/AAAAAAAABdo/qfHuWqSougs/s1600/unbiased_character.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 397px; height: 400px;" src="http://4.bp.blogspot.com/--mpcc31F5bQ/TkkPRHBY5cI/AAAAAAAABdo/qfHuWqSougs/s400/unbiased_character.jpg" alt="" id="BLOGGER_PHOTO_ID_5641056794875323842" border="0" /&gt;&lt;/a&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/7277449027963623452-420762398399434178?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/420762398399434178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=420762398399434178' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/420762398399434178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/420762398399434178'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/08/unbiased-truck-with-bullet-physics.html' title='Unbiased Truck with Bullet Physics!!'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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://img.youtube.com/vi/fw_wnRMO99U/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-2485411932786217087</id><published>2011-08-15T04:53:00.000-07:00</published><updated>2011-08-15T05:01:59.168-07:00</updated><title type='text'>WebGL water ray tracing demo</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);" class="" style="display: block;" id="formatbar_CreateLink" title="Link"&gt;&lt;img src="http://www.blogger.com/img/blank.gif" alt="Link" class="gl_link" border="0" /&gt;&lt;/span&gt;&lt;/span&gt; I always like a nice real-time ray tracing demo, especially when it involves physics. Evan Wallace released a very impressive WebGL demo featuring real-time raytraced water with caustics and physics (waves, buoyancy).&lt;br /&gt;&lt;br /&gt;The demo is playable  (Google Chrome browser required) at &lt;a href="http://madebyevan.com/webgl-water/"&gt;http://madebyevan.com/webgl-water/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Youtube: &lt;a href="http://www.youtube.com/watch?v=i6aEQ5pY1aQ"&gt;http://www.youtube.com/watch?v=i6aEQ5pY1aQ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Source code is available in the Chrome browser (right-click on the page &amp;gt; Inspect element &amp;gt; choose the "Scripts" button &amp;gt; choose "renderer.js" from the drop-down menu)&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/7277449027963623452-2485411932786217087?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/2485411932786217087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=2485411932786217087' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/2485411932786217087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/2485411932786217087'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/08/webgl-water-ray-tracing-demo.html' title='WebGL water ray tracing demo'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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-7277449027963623452.post-1595346868905728815</id><published>2011-08-13T02:22:00.000-07:00</published><updated>2011-08-14T09:53:06.734-07:00</updated><title type='text'>John Carmack: "Eventually ray tracing will win"</title><content type='html'>&lt;div style="text-align: justify;"&gt;Aaah, delightful August... Holiday, warm, sunny, relaxing, enjoying mountains and beaches alternated with reports from QuakeCon, Siggraph and High Performance Graphics :-) &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;John Carmack has said some interesting things about ray tracing during the Q&amp;amp;A following his QuakeCon keynote this year (which was mostly about the practical problems of working with MegaTextures in a production environment). I made a transcript of the relevant Q&amp;amp;A portion which can be seen in its entirety on youtube:  &lt;a href="http://www.youtube.com/watch?v=00Q9-ftiPVQ#t=18m30s"&gt;http://www.youtube.com/watch?v=00Q9-ftiPVQ#t=18m30s&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote style="text-align: justify;"&gt;"I expect, &lt;span class="Apple-style-span"&gt;as we look at next-gen console and broad enough adoption of PC stuff, that there will be some novelty games that are all raytraced or all voxeled on there.&lt;/span&gt; But when you look at the top end triple A titles, I do not expect that transition happening in that timeframe but I keep looking at it. &lt;/blockquote&gt;&lt;blockquote style="text-align: justify;"&gt;There’s a lot of these things that we look at every five years on and on and eventually… you know I do think that some form of raytracing, of forward tracing or reversed tracing rather than forward rendering will eventually win because there’s so many things that just get magically better there. There’s so much crap that we deal with in rasterisation with, okay let’s depth fade or fake our atmospheric stuff using environment maps, use shadows. And when you just say “well just trace a ray”&lt;span&gt;  &lt;/span&gt;a lot of these problems vanish. But one interesting thing that people say “look real-time raytracing on current hardware”, that’s what I did in OpenCL recently and I did some interesting work with that. But the real truth is, you don’t just trace one ray it goes sixty frames per second. &lt;/blockquote&gt;&lt;blockquote style="text-align: justify;"&gt;To do the things that people want to see out of ray tracing, you’re gonna need to trace a dozen rays on there if you want your soft reflections or even sharp reflections if you got bump mapping on there and not to look like a mess of noise on there, &lt;span&gt; &lt;/span&gt;you start needing an order of magnitude more rays than that. And most people still avert their gaze from the whole problem of dynamic geometry. There’s some interesting work that goes on with very rapid GPU assisted KD tree construction that’s starting to look at some of that, but it’s still a long ways off. It’s always the problem of fighting against an entrenched incumbent where we’re doing polygon… Vertex fragment polygon based rasterizers are so far and away the most successful&lt;span&gt;  &lt;/span&gt;parallel computing architecture ever it’s not even funny. I mean all the research projects and everything else just haven’t added up to one fraction of the value that we get out of that. And there’s a lot of work, lots of smart people, lots of effort and lots of great results coming out of it. &lt;b&gt;&lt;span class="Apple-style-span"&gt;Eventually ray tracing will win&lt;/span&gt;&lt;/b&gt;, but it’s not clear exactly when it’s gonna be."&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;There is also a brand new video and interview with Carmack on PCPer where he's rambeling about voxels, ray tracing and Larrabee, Fusion, GPUs with ARM cores (Project Denver/Maxwell): &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.pcper.com/reviews/Editorial/John-Carmack-Interview-GPU-Race-Intel-Graphics-Ray-Tracing-Voxels-and-more"&gt;http://www.pcper.com/reviews/Editorial/John-Carmack-Interview-GPU-Race-Intel-Graphics-Ray-Tracing-Voxels-and-more&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;From the article: &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="background-color: rgb(245, 245, 245); "&gt;&lt;blockquote style="text-align: justify;"&gt;&lt;span class="Apple-style-span"&gt;"On the topic of ray tracing, a frequently debated issue on PC Perspective, Carmack does admit to finding its uses quite surprising and has spent some time building ray tracing engines for development testing. He seemed surprised by the results in his initial attempt to replace rasterization with a ray tracing engine, getting as much as &lt;b&gt;60 FPS at 720p resolutions on a Fermi-based NVIDIA graphics card. &lt;/b&gt;When performance dropped below the targeted frame rate he was able to either produce an image of a lower resolution and display that or use previous frames to sort of “blend” them for a smoother image. The issue though is the delta between a tech demo and fully implemented gaming engine – demos deal with static models, there is no character animation, etc. And while the fact that it runs at 60 FPS at 720p sounds impressive, if you were drawing that with a traditional rasterization engine it would be running at 1000 FPS!"&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;A transcript of the PCPer interview with Carmack (with some in-depth thoughts about ray tracing) can be found here: &lt;a href="http://www.pcper.com/reviews/Editorial/John-Carmack-Interview-GPU-Race-Intel-Graphics-Ray-Tracing-Voxels-and-more/Intervi"&gt;http://www.pcper.com/reviews/Editorial/John-Carmack-Interview-GPU-Race-Intel-Graphics-Ray-Tracing-Voxels-and-more/Intervi&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;There's also new interesting research material from HPG, mainly about ray tracing: active thread compaction for GPU path tracing (Wald) (performance boost is much less than initially thought), improving SIMD efficiency for GPU Monte Carlo rendering with stream compaction (van Antwerpen), 10x faster HLBVH (Garanzha), raytraced moblur (Grünschloss), VoxelPipe (Pantaleoni), CUDA rasterization (Laine):&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- Slides: &lt;a href="http://www.highperformancegraphics.org/media/Papers"&gt;http://www.highperformancegraphics.org/media/Papers&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- Posters: &lt;a href="http://www.highperformancegraphics.org/media/Posters"&gt;http://www.highperformancegraphics.org/media/Posters&lt;/a&gt;   The idea in this poster is quite intruiging:  &lt;a href="http://www.highperformancegraphics.org/media/Posters/HPG2011_Posters_Keller2_abstract.pdf"&gt;www.highperformancegraphics.org/media/Posters/HPG2011_Posters_Keller2_abstract.pdf&lt;/a&gt;&lt;/div&gt;&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/7277449027963623452-1595346868905728815?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/1595346868905728815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=1595346868905728815' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1595346868905728815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1595346868905728815'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/08/john-carmack-eventually-ray-tracing.html' title='John Carmack: &quot;Eventually ray tracing will win&quot;'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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-7277449027963623452.post-7600803066416379396</id><published>2011-08-10T03:15:00.000-07:00</published><updated>2011-08-10T04:24:52.885-07:00</updated><title type='text'>GTS 450 video of Unbiased Sphere Stack Shooter game</title><content type='html'>Much better quality video (480p) of "Unbiased Sphere Stack Shooter" rendered on a GTS 450:&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/Dbkvc-MZqho" allowfullscreen="" frameborder="0" height="390" width="480"&gt;&lt;/iframe&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The photoreal lighting of the scene is much more obvious in this video (less noise, higher framerate and higher resolution than the previous vid which was rendered on a 8600M GT) Unfortunately Youtube puts a nasty filter over the image, the original image quality is much crisper.&lt;br /&gt;&lt;br /&gt;The executable demo of TOKAP Unbiased Sphere Stack Shooter is available at &lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt; (CUDA 4.0 required)&lt;br /&gt;&lt;br /&gt;After much tinkering with the Bullet code (converting quaternions to degrees) the car physics for &lt;a href="http://raytracey.blogspot.com/2011/03/unbiased-truck-soccer-coming-soon.html"&gt;Unbiased Truck Soccer&lt;/a&gt; are finally working (just one car atm, but it looks hilarious), so I'll be posting a new demo and video soon.&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/7277449027963623452-7600803066416379396?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/7600803066416379396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=7600803066416379396' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/7600803066416379396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/7600803066416379396'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/08/gts-450-video-of-unbiased-sphere-stack.html' title='GTS 450 video of Unbiased Sphere Stack Shooter game'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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://img.youtube.com/vi/Dbkvc-MZqho/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-2576615349321518928</id><published>2011-08-08T08:08:00.000-07:00</published><updated>2011-08-08T11:15:37.330-07:00</updated><title type='text'>Small update on CentiLeo</title><content type='html'>&lt;div style="text-align: justify;"&gt;Just found this: &lt;a href="http://gpgpu.org/2011/08/04/centileo-out-of-core-ray-tracer"&gt;http://gpgpu.org/2011/08/04/centileo-out-of-core-ray-tracer&lt;/a&gt; I wrote about this amazing out-of-core GPU path tracer (which will be presented at Siggraph this week) before (see &lt;a href="http://raytracey.blogspot.com/2011/04/centileo-brand-new-interactive-out-of.html"&gt;http://raytracey.blogspot.com/2011/04/centileo-brand-new-interactive-out-of.html&lt;/a&gt; and &lt;a href="http://raytracey.blogspot.com/2011/06/update-on-centileo-out-of-core-gpu-ray.html"&gt;http://raytracey.blogspot.com/2011/06/update-on-centileo-out-of-core-gpu-ray.html&lt;/a&gt;) .&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;There is also a dedicated website about CentiLeo at &lt;a href="http://www.centileo.com/"&gt;http://www.centileo.com&lt;/a&gt;. Some interesting quotes from the website:&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;blockquote&gt;"CPU-based rendering solutions (even many-core, e.g. 16-core) are much  slower than our GPU-based software (around 25x slower). Such 16-core  CPUs are 3-4x more expensive than our GPU."&lt;br /&gt;&lt;br /&gt;&lt;div id="clear_2"&gt; 	&lt;/div&gt; 	&lt;div id="right"&gt; 	&lt;span style="font-weight: bold;"&gt;"&lt;/span&gt;The target of CentiLeo development is to move all the flexible  rendering related tools from slow and expensive CPU-based rendering  solutions to new innovative GPU-based solutions. &lt;p&gt;Release version should provide with the libraries and ray tracing acceleration tools which will allow: &lt;/p&gt; &lt;p&gt;- to setup own standalone graphics rendering applications;&lt;/p&gt; &lt;p&gt;- to integrate our accelerated individual rendering stages into  existing rendering solutions and pipelines in various industries such as  engineering design, architecture, movie industry, visualization and  etc."&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-2576615349321518928?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/2576615349321518928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=2576615349321518928' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/2576615349321518928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/2576615349321518928'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/08/another-update-on-centileo.html' title='Small update on CentiLeo'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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-7277449027963623452.post-2476968806418243506</id><published>2011-08-03T15:04:00.000-07:00</published><updated>2011-08-04T00:52:00.701-07:00</updated><title type='text'>Unbiased Sphere Stack Shooter, the first real-time path traced shooter</title><content type='html'>A physics based demo without user interaction with the physical objects in the scene is only half as fun, so I've been working on a little physics based game where you can shoot a ball into the scene and hit physics objects. It's not a real game, it's just mindless fun and the graphics are as good as photoreal.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-I83rxH2E3AY/TjnzcHttzcI/AAAAAAAABdY/h4V_GRGYuXY/s1600/unbiasedshooter3.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 280px;" src="http://1.bp.blogspot.com/-I83rxH2E3AY/TjnzcHttzcI/AAAAAAAABdY/h4V_GRGYuXY/s400/unbiasedshooter3.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5636804073063566786" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-3ldROpqMmQk/TjnzbjFUchI/AAAAAAAABdQ/JFE3ntkvgV8/s1600/unbiasedshooter2.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 280px;" src="http://2.bp.blogspot.com/-3ldROpqMmQk/TjnzbjFUchI/AAAAAAAABdQ/JFE3ntkvgV8/s400/unbiasedshooter2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5636804063230456338" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-d4jkL0KUYRU/TjnzbKEvNYI/AAAAAAAABdI/FOs2zrevVcY/s1600/unbiasedshooter1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 280px;" src="http://3.bp.blogspot.com/-d4jkL0KUYRU/TjnzbKEvNYI/AAAAAAAABdI/FOs2zrevVcY/s400/unbiasedshooter1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5636804056517129602" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-4I7dgFGwTyo/Tjn0jZyKTDI/AAAAAAAABdg/N1uiiz7bbJI/s1600/unbiasedshooter4.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 280px;" src="http://3.bp.blogspot.com/-4I7dgFGwTyo/Tjn0jZyKTDI/AAAAAAAABdg/N1uiiz7bbJI/s400/unbiasedshooter4.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5636805297684761650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Features:&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- &lt;b&gt;real-time path traced graphics on the GPU:&lt;/b&gt; produces ultra-high quality physically accurate global illumination, soft shadows and reflections&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- &lt;b&gt;integration of the Bullet physics engine:&lt;/b&gt; start/pause the physics simulation by pressing 'm'&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- &lt;b&gt;first person camera:&lt;/b&gt; move forward, backwards and sideways with the arrow keys &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- &lt;b&gt;mouse look:&lt;/b&gt; click and hold the left mouse button to look around the scene (already working, but needs a bit more work to make it more robust)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- &lt;b&gt;shooting mechanics:&lt;/b&gt; fire a ball into the stack or try hitting a bouncing sphere by pressing 'Enter'. The ball is shot from the current camera position at the current view target in the center of the screen. Due to performance reasons, only one ball is shot at a time (the same ball is 'recycled' with every shot). &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Make the physics go berserk!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Video rendered on 8600M GT (a better quality video on GTS 450 will follow soon):&lt;/div&gt;&lt;div&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/bdCMhQk8QZM" allowfullscreen="" width="480" frameborder="0" height="390"&gt;&lt;/iframe&gt;&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;b&gt;Download the executable for this game at &lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-2476968806418243506?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/2476968806418243506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=2476968806418243506' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/2476968806418243506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/2476968806418243506'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/08/first-real-time-path-traced-shooter.html' title='Unbiased Sphere Stack Shooter, the first real-time path traced shooter'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-I83rxH2E3AY/TjnzcHttzcI/AAAAAAAABdY/h4V_GRGYuXY/s72-c/unbiasedshooter3.png' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-3004933486576531603</id><published>2011-08-01T13:37:00.000-07:00</published><updated>2011-08-01T14:03:38.393-07:00</updated><title type='text'>Tokap Chrome spheres stack: video on GTS 450</title><content type='html'>&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/CSgQNuYIf5Y" allowfullscreen="" width="480" frameborder="0" height="390"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Download exe at &lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Celebrating the third anniversary of this blog (first post on Aug 1, 2008: &lt;a href="http://raytracey.blogspot.com/2008/08/ruby-voxels-and-ray-tracing.html"&gt;http://raytracey.blogspot.com/2008/08/ruby-voxels-and-ray-tracing.html&lt;/a&gt;) Cheers!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-3004933486576531603?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/3004933486576531603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=3004933486576531603' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/3004933486576531603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/3004933486576531603'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/08/tokap-chrome-spheres-stack-video-on-gts.html' title='Tokap Chrome spheres stack: video on GTS 450'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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://img.youtube.com/vi/CSgQNuYIf5Y/default.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-9153116800554991291</id><published>2011-07-31T05:19:00.000-07:00</published><updated>2011-08-01T01:19:40.523-07:00</updated><title type='text'>TOKAP with Bullet: Mirror physics</title><content type='html'>Update to my previous post, just to show that the scene remains fully customizable at runtime:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-F-iA27KL010/TjV35d3aPuI/AAAAAAAABcs/1FbjrWtbQYs/s1600/ballstack9.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 247px;" src="http://3.bp.blogspot.com/-F-iA27KL010/TjV35d3aPuI/AAAAAAAABcs/1FbjrWtbQYs/s400/ballstack9.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5635542337877327586" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-xlCn54VJlI8/TjV2DCekfZI/AAAAAAAABck/Yg_Y2F3-zjQ/s1600/stackballscaustic.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 247px;" src="http://4.bp.blogspot.com/-xlCn54VJlI8/TjV2DCekfZI/AAAAAAAABck/Yg_Y2F3-zjQ/s400/stackballscaustic.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5635540303300820370" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-CqUJ1eErJ7U/TjVPdVBOiNI/AAAAAAAABcM/HxS2_8pNVTk/s1600/ballstack6.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 248px;" src="http://3.bp.blogspot.com/-CqUJ1eErJ7U/TjVPdVBOiNI/AAAAAAAABcM/HxS2_8pNVTk/s400/ballstack6.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5635497874001135826" /&gt;&lt;/a&gt;&lt;div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/-lhiL3lDz7Pg/TjVYFFbjsYI/AAAAAAAABcc/VhMat2uW_Y4/s1600/stackballs8.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 247px;" src="http://3.bp.blogspot.com/-lhiL3lDz7Pg/TjVYFFbjsYI/AAAAAAAABcc/VhMat2uW_Y4/s400/stackballs8.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5635507353104396674" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;480p video rendered on 8600M GT:&lt;/div&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/HcHimqxwIHM" allowfullscreen="" width="480" frameborder="0" height="390"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Executable for "Tokap Sphere Stack with Bullet Physics Release" at &lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt; (this version is the release version and should run without needing the Visual C++ 2008 Redistributable package for x86)&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm really hooked on this path tracer, the photorealistic quality is so damn awesome.&lt;br /&gt;&lt;br /&gt;Coming up next:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tcd.ie/Physics/Foams/PICS/Cradle.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 250px; height: 197px;" src="http://www.tcd.ie/Physics/Foams/PICS/Cradle.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&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/7277449027963623452-9153116800554991291?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/9153116800554991291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=9153116800554991291' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/9153116800554991291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/9153116800554991291'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/07/tokap-with-bullet-mirror-physics.html' title='TOKAP with Bullet: Mirror physics'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-F-iA27KL010/TjV35d3aPuI/AAAAAAAABcs/1FbjrWtbQYs/s72-c/ballstack9.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-5983000041749301814</id><published>2011-07-30T04:00:00.000-07:00</published><updated>2011-07-31T04:26:06.882-07:00</updated><title type='text'>Bullet Physics demo 3: Collapsing stack of balls + EXE</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/-GSKATBTU368/TjQCCfbq9WI/AAAAAAAABb0/HgLJxpdY4Ic/s1600/stackballs3.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 280px;" src="http://2.bp.blogspot.com/-GSKATBTU368/TjQCCfbq9WI/AAAAAAAABb0/HgLJxpdY4Ic/s400/stackballs3.png" alt="" id="BLOGGER_PHOTO_ID_5635131275567887714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-JZ93riLQiVE/TjQL_IHlK1I/AAAAAAAABb8/8QcLlA087VQ/s1600/ballstack4.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 280px;" src="http://4.bp.blogspot.com/-JZ93riLQiVE/TjQL_IHlK1I/AAAAAAAABb8/8QcLlA087VQ/s400/ballstack4.png" alt="" id="BLOGGER_PHOTO_ID_5635142212886276946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-PQT7VbEQJE0/TjQZfPFOSPI/AAAAAAAABcE/7nAYTLKy1h8/s1600/ballstack5.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 280px;" src="http://1.bp.blogspot.com/-PQT7VbEQJE0/TjQZfPFOSPI/AAAAAAAABcE/7nAYTLKy1h8/s400/ballstack5.png" alt="" id="BLOGGER_PHOTO_ID_5635157058162411762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Yesterday I got a new idea for a real-time path traced Bullet physics animation: a collapsing stack of spheres. The plan:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-brvhmhtLNcA/TjPxtDppLmI/AAAAAAAABbc/QudoSvAVp0k/s1600/stackballs.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 391px;" src="http://3.bp.blogspot.com/-brvhmhtLNcA/TjPxtDppLmI/AAAAAAAABbc/QudoSvAVp0k/s400/stackballs.jpg" alt="" id="BLOGGER_PHOTO_ID_5635113315147001442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've implemented the scene and physics in both the tokaspt and the Simplex Paternitas path tracers to see the difference in framerate and realism.&lt;br /&gt;&lt;br /&gt;Picture from Tokap (some circular artefacts which look kinda cool :) :&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-cbOerduxGuM/TjPxthpF3XI/AAAAAAAABbk/HaqhPiwDdgU/s1600/stackballs1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 280px;" src="http://1.bp.blogspot.com/-cbOerduxGuM/TjPxthpF3XI/AAAAAAAABbk/HaqhPiwDdgU/s400/stackballs1.png" alt="" id="BLOGGER_PHOTO_ID_5635113323197750642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Picture from the Futuristic Buildings (Simplex Paternitas) path tracer:&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-mTi2ZjfDbvM/TjPxt4_vcSI/AAAAAAAABbs/ekZnlpZEjzY/s1600/stackballs2.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 313px;" src="http://4.bp.blogspot.com/-mTi2ZjfDbvM/TjPxt4_vcSI/AAAAAAAABbs/ekZnlpZEjzY/s400/stackballs2.png" alt="" id="BLOGGER_PHOTO_ID_5635113329466765602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;All videos below were rendered in real-time on my poor little 8600M GT, probably one of the weakest CUDA-enabled cards in existence. Every animation below should run smoothly and at much higher quality on a GTX 260 or higher:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Tokap with Bullet 4 spp:&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/8wLOYJMb1M8" allowfullscreen="" width="480" frameborder="0" height="390"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Futuristic Buildings with Bullet 12 spp:&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/nshvttMmLno" allowfullscreen="" width="480" frameborder="0" height="390"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Futuristic Buildings with Bullet 24 spp:&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/Ri9Rk7Lw930" allowfullscreen="" width="480" frameborder="0" height="390"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Futuristic Buildings with Bullet 4 spp, Eagle's view:&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/Zk-Xab6JG-M" allowfullscreen="" width="480" frameborder="0" height="390"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/ndKDQ9zzKCU" allowfullscreen="" width="480" frameborder="0" height="390"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/TWSWAkXNRO4" allowfullscreen="" width="480" frameborder="0" height="390"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/TW0UVFQE9Ns" allowfullscreen="" width="480" frameborder="0" height="390"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/HaNLtXmKJR0" allowfullscreen="" width="480" frameborder="0" height="390"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;Download the executable for "TOKAP Bullet Sphere Stack" at &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;UPDATE: Some people have reported that the Bullet demos don't work on their systems, receiving the following message: &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: 12px; "&gt;&lt;p style="border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 5px; padding-left: 0px; "&gt;&lt;b&gt;&lt;i&gt;"Activation context generation failed for "programme name".&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 5px; padding-left: 0px; "&gt;&lt;b&gt;&lt;i&gt;Dependent Assembly Microsoft.VC90.DebugCRT, processorArchitecture="x86", publicKeyToken = "1fc8b3b9a1e18e3b", type="win32", version="9.0.21022.8" could not be found. Please use sxstrace.exe for detailed diagnosis.&lt;/i&gt;&lt;/b&gt;"&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This error is due to the fact that the demos were compiled with the Bullet library in debug mode and are dependent on the Visual C++ 2008 runtime library. Downloading the Microsoft Visual C++ 2008 Redistributable Package (x86) from &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=29"&gt;http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=29&lt;/a&gt; should solve the issue.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-5983000041749301814?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/5983000041749301814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=5983000041749301814' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5983000041749301814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5983000041749301814'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/07/bullet-physics-demo-3-collapsing-stack.html' title='Bullet Physics demo 3: Collapsing stack of balls + EXE'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-GSKATBTU368/TjQCCfbq9WI/AAAAAAAABb0/HgLJxpdY4Ic/s72-c/stackballs3.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-6535653211589861882</id><published>2011-07-29T05:08:00.000-07:00</published><updated>2011-07-29T09:42:20.121-07:00</updated><title type='text'>Bullet Physics in Simplex Paternitas path tracer</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-Bvn8VUpjj64/TjLi4sbZwuI/AAAAAAAABbU/_kmf1ZXXRaA/s1600/FB%2Bbullet3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 315px;" src="http://4.bp.blogspot.com/-Bvn8VUpjj64/TjLi4sbZwuI/AAAAAAAABbU/_kmf1ZXXRaA/s400/FB%2Bbullet3.png" alt="" id="BLOGGER_PHOTO_ID_5634815547420558050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Someone on youtube suggested to make a version of the physics animation from my previous post where the scene is only lit by the small white ball on top. For this purpose I've incorporated the Bullet library to the Simplex Paternitas path tracer of Jacco Bikker. The results are pretty wicked:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-sccGNKmIoqE/TjKlnRRUg0I/AAAAAAAABbE/qfsEQdMApFs/s1600/FB%2Bbullet%2B1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 315px;" src="http://2.bp.blogspot.com/-sccGNKmIoqE/TjKlnRRUg0I/AAAAAAAABbE/qfsEQdMApFs/s400/FB%2Bbullet%2B1.png" alt="" id="BLOGGER_PHOTO_ID_5634748177863443266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This video was rendered on a 8600M GT, 12 spp, 480x360 resolution:&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/LJBpik7IJlo" allowfullscreen="" width="480" frameborder="0" height="390"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Without caustic noise (only reflective and diffuse balls, 12 spp, 640x480 resolution on 8600M GT):&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/9Np9EnJpypw" allowfullscreen="" width="480" frameborder="0" height="390"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;The new executable and source code are available at &lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Damn this stuff is really addictive!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-6535653211589861882?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/6535653211589861882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=6535653211589861882' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/6535653211589861882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/6535653211589861882'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/07/bullet-physics-in-simplex-paternitas.html' title='Bullet Physics in Simplex Paternitas path tracer'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-Bvn8VUpjj64/TjLi4sbZwuI/AAAAAAAABbU/_kmf1ZXXRaA/s72-c/FB%2Bbullet3.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-8488266376283479791</id><published>2011-07-28T06:05:00.000-07:00</published><updated>2011-07-28T23:51:45.677-07:00</updated><title type='text'>TOKAP with Bullet demo 2</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/--uKMvAGJC5g/TjFe4GucnDI/AAAAAAAABas/067W6k3Remc/s1600/tokap_bullet_balls.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 280px;" src="http://4.bp.blogspot.com/--uKMvAGJC5g/TjFe4GucnDI/AAAAAAAABas/067W6k3Remc/s400/tokap_bullet_balls.png" alt="" id="BLOGGER_PHOTO_ID_5634388926788312114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;While working on the car physics for the Futuristic Buildings demo, I've decided to first finish something that I wanted to do for a long time: a real-time version of a Bullet Physics animation created by Chiaroscuro (Phymec on Youtube) which was rendered off-line with SmallptGPU (OpenCL path tracing) and can be seen at&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.youtube.com/watch?v=33rU1axSKhQ"&gt;http://www.youtube.com/watch?v=33rU1axSKhQ&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I've recreated the scene in TOKAP, added physical properties to the balls with Bullet Physics et voilà:&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/Oxvpc3z00Lw" allowfullscreen="" width="480" frameborder="0" height="390"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;The above video was rendered on a ultra-low end GPU (8600M GT). The animation should run at 60 fps on a GTX 580 at 8spp at default resolution. Physically accurate lighting + physics in real-time!!!&lt;br /&gt;&lt;br /&gt;Caustics:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-fl3vYe7TI14/TjFxyvy2zfI/AAAAAAAABa8/gk-FLG06VeA/s1600/tokap%2Bbullet%2Bcaustics2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 280px;" src="http://4.bp.blogspot.com/-fl3vYe7TI14/TjFxyvy2zfI/AAAAAAAABa8/gk-FLG06VeA/s400/tokap%2Bbullet%2Bcaustics2.png" alt="" id="BLOGGER_PHOTO_ID_5634409725454372338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Download the executable at:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify; font-weight: bold;"&gt;&lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&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/7277449027963623452-8488266376283479791?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/8488266376283479791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=8488266376283479791' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/8488266376283479791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/8488266376283479791'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/07/tokap-with-bullet-demo-2.html' title='TOKAP with Bullet demo 2'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/--uKMvAGJC5g/TjFe4GucnDI/AAAAAAAABas/067W6k3Remc/s72-c/tokap_bullet_balls.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-1356823318129895802</id><published>2011-07-27T09:37:00.000-07:00</published><updated>2011-07-27T09:51:22.304-07:00</updated><title type='text'>Latest version of Futuristic Buildings with AABB</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/-SyFTOGF3Ut8/TjBBfkuN3wI/AAAAAAAABak/SK111s4jeRw/s1600/Futuristic%2BBuildings%2B29%2BAABB1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 315px;" src="http://2.bp.blogspot.com/-SyFTOGF3Ut8/TjBBfkuN3wI/AAAAAAAABak/SK111s4jeRw/s400/Futuristic%2BBuildings%2B29%2BAABB1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5634075144529764098" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;I've implemented tight fitting AABB hitboxes around the car and the two buildings, which gives a nice performance boost of about 50-200%, depending on the viewpoint. Since the car can be moved (with the I, J, K, L keys), the AABB around the car is moving with it and its position is updated every frame.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Download the executables and the source code for "Futuristic Buildings v2.9 with AABB" from &lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Real car physics are coming up next. After those are in, OBBs (oriented bounding boxes) or oriented cylinders (depending on which one's cheaper to intersect) are on the todo list for some crazy real-time path traced physics simulations.&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/7277449027963623452-1356823318129895802?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/1356823318129895802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=1356823318129895802' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1356823318129895802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1356823318129895802'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/07/latest-version-of-futuristic-buildings.html' title='Latest version of Futuristic Buildings with AABB'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-SyFTOGF3Ut8/TjBBfkuN3wI/AAAAAAAABak/SK111s4jeRw/s72-c/Futuristic%2BBuildings%2B29%2BAABB1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-1015457520826247727</id><published>2011-07-26T05:19:00.000-07:00</published><updated>2011-07-26T05:56:17.810-07:00</updated><title type='text'>VoxelPipe paper and a preview of real-time path traced global illumination</title><content type='html'>&lt;div style="text-align: justify;"&gt;Just read Nvidia's HPG 2011 paper &lt;a href="http://research.nvidia.com/publication/voxelpipe-programmable-pipeline-3d-voxelization"&gt;"VoxelPipe: A Programmable Pipeline for 3D Voxelization"&lt;/a&gt; by Jacopo Pantaleoni. One thing that immediately caught attention was the preview of a real-time global illumination system, in which primary rays are traced against the regular triangle version of the scene, but secondary incoherent rays are traced against a voxelized version of the scene which is much more efficient intersection-wise. Scene voxelization is performed every frame (it takes only a few milliseconds even for multi-million triangle scenes), so this allows for completely dynamic scenes with (path traced) global illumination in real-time. From the paper:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div style="text-align: justify;"&gt;"Finally, in Figure 5 we show a proof of concept of a real-time global illumination system that we plan to disclose in the near future. The system relies on our voxelization pipeline to create a proxy of the scene geometry that is used to trace incoherent rays. The proxy is rebuilt every frame, allowing support of fully dynamic geometry, materials and lighting."&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;Combined with previous work from Pantaleoni on &lt;a href="http://research.nvidia.com/publication/pantaray-fast-ray-traced-occlusion-caching-massive-scenes"&gt;PantaRay&lt;/a&gt; (an out-of-core GPU ray tracing renderer for precomputing GI &lt;a href="http://raytracey.blogspot.com/2010/08/faster-raytraced-global-illumination-by.html"&gt;with LOD&lt;/a&gt; techniques, which was used in "Avatar") and on &lt;a href="http://research.nvidia.com/publication/hlbvh-hierarchical-lbvh-construction-real-time-ray-tracing"&gt;HLBVH&lt;/a&gt; and a yet to be released paper from Pantaleoni and Garanzha on "&lt;a href="http://research.nvidia.com/publication/simpler-and-faster-hlbvh-work-queues"&gt;Simpler and Faster HLBVH with Work Queues&lt;/a&gt;" (which describes a system for real-time raytracing of dynamic scenes), this new voxelization technique could do wonders for real-time high quality global illumination and also for unbiased real-time GPU renderers.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-1015457520826247727?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/1015457520826247727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=1015457520826247727' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1015457520826247727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1015457520826247727'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/07/voxelpipe-paper-and-preview-of-real.html' title='VoxelPipe paper and a preview of real-time path traced global illumination'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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-7277449027963623452.post-3283908154761821996</id><published>2011-07-26T01:59:00.000-07:00</published><updated>2011-08-01T03:05:07.516-07:00</updated><title type='text'>Writing real-time path tracing demos</title><content type='html'>&lt;div style="text-align: justify;"&gt;Several readers of this blog (woohoo I've got readers ;-) have asked me what skills you need to learn to make the demos that I've posted.  To those, I want to give some C++ pointers (pun intended) in this post.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Six months ago, I didn't know anything about programming (let alone C++). After seeing some amazing real-time path tracing demos on the net (like Jacco Bikker's Brigade), I wanted to write my own stuff because I had some ideas that I wanted to see materialized (such as the Pong game for which I got the help from Kerrash, a programmer with CUDA experience). I didn't want to be too dependent on other programmers so I decided to learn C++ on my own in my spare time. I've read some C++ tutorials on the net and some excellent books that have been a great help in understanding the C++ language and writing your own programs. This is the list of books and websites that I've read:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- "Beginning programming with C++ for Dummies", an excellent beginner's book, easy to read, explains the concept of object-oriented programming very well&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- "C++ without Fear", another great book, which delves deeper into the basics than the first book and also discusses code optimization&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- tutorials on &lt;a href="http://www.learncpp.com/"&gt;www.learncpp.com&lt;/a&gt;, this is a great website with lots of small Q&amp;amp;A's, and also discusses smaller subjects like enums&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- "Practical C++ Programming", this is a little bit harder than the first two books (especially the exercises)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Other books that were recommended by others (that I haven't read yet):&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- "Thinking in C++"&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- "Accelerated C++"&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- "Effective C++"&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- &lt;a href="www.cprogramming.com"&gt;www.cprogramming.com&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- &lt;a href="http://www.cplusplus.com/"&gt;www.cplusplus.com&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Reading these books and doing the exercises with perseverance, I slowly got a hold on the C++ language. Frankly I'm amazed that the language becomes almost second nature so quickly. I'm still getting compiler errors that I don't understand, but luckily there is Google, which quickly solves the problem in most cases.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In order to write a real-time path tracing demo, learning C++ is not enough. Some basic knowledge about ray tracing and path tracing is necessary as well. "Realistic Ray Tracing" by Shirley is an excellent resource for this. There are also lots of powerpoint presentations about ray tracing and Monte Carlo rendering on the net. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Not having the patience to reinvent the wheel of real-time path tracing, I wanted to base my path tracing demos on existing open source code that I knew was ultrafast and ultra-efficient. So I did some research on the net. This is what I came up with:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;-&lt;b&gt; &lt;a href="http://code.google.com/p/tokaspt/"&gt;tokaspt&lt;/a&gt;&lt;/b&gt;, an excellent real-time CUDA path tracer&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;-&lt;a href="http://kevinbeason.com/smallpt/"&gt;&lt;b&gt; smallpt&lt;/b&gt;&lt;/a&gt;, a very short but complete CPU path tracer by Kevin Beason (not real-time)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- &lt;a href="http://davibu.interfree.it/opencl/smallptgpu/smallptGPU.html"&gt;&lt;b&gt;smallptGPU&lt;/b&gt;&lt;/a&gt;, a real-time OpenCL path tracer by Dade from LuxRender&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;- &lt;a href="http://mxadd.org/CenterFrame.php?wherejump=projects"&gt;&lt;b&gt;mxadd.org&lt;/b&gt;&lt;/a&gt;, another CUDA path tracer with source code&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;-  &lt;a href="http://javor.tech.officelive.com/tmp.aspx"&gt;&lt;b&gt;Javor's CUDA path tracer&lt;/b&gt;&lt;/a&gt; (click on the thumbnail to download the demo)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- &lt;a href="http://code.google.com/p/understanding-the-efficiency-of-ray-traversal-on-gpus/"&gt;&lt;b&gt;Understanding the Efficiency of Ray Traversal on GPUs&lt;/b&gt;&lt;/a&gt;,  ultra-fast CUDA path tracing code by Timo Aila and Samuli Laine &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- &lt;b&gt;&lt;a href="http://igad.nhtv.nl/~bikker/"&gt;Brigade path tracer&lt;/a&gt;, &lt;/b&gt;real-time CPU/GPU(cuda) path tracer by Jacco Bikker&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- &lt;a href="http://igad.nhtv.nl/~bikker/files/kajiya_src.zip"&gt;&lt;b&gt;Kajiya demo&lt;/b&gt;&lt;/a&gt;, a real-time CUDA path tracer by Jacco Bikker and Jeroen van Schijndel, very well optimized&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- &lt;a href="http://igad.nhtv.nl/~bikker/files/Simplex%20Paternitas%20src.rar"&gt;&lt;b&gt;Simplex Paternitas&lt;/b&gt;&lt;/a&gt;, another real-time CUDA path tracer by Jacco Bikker, this is an &lt;b&gt;excellent&lt;/b&gt; starting point for learning to write new code and add new objects and animations (and see the results immediately). You don't have to touch the CUDA part of the code (although it's quite easy to understand once you're familiar with C++). Every frame, all the framedata is passed from C++ to CUDA, so you only need to know C++ to write new animations and to add a physics library like Bullet Physics.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Adding the Bullet Physics library to the code (as shown in &lt;a href="http://www.youtube.com/watch?v=8nftCY4ZYH4"&gt;my latest demo&lt;/a&gt;) and learning the Bullet API was actually not so difficult in retrospect (the Hello World example included in the Bullet SDK was very helpful in this respect). Right now, I'm incorporating the vehicle physics from the Bullet SDK into the Futuristic Buildings demo (which is based on the code framework of the Simplex Paternitas demo). It's kinda working right now, but I won't make a vid until I'm satisfied. The AABB hitboxes for the car and buildings are almost working as well (after identifying which variable triggered the ray shooting functions using the hitboxes).  &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;To summarize, learning the basics of C++ is a must. You have to invest some time in it (it took me about 3 months of learning in my spare time to get a good grasp on the basics and an additional month to read and understand someone else's code and adding own stuff). Understanding the structure of a program (which functions call other functions, which loop is the control flow entering, what stuff has to be initialized before rendering the first frame, how are variables efficiently shared between files, ...) is extremely important. From that point, you'll need creativity and perseverance to make an interesting demo and the possibilities will only be limited by imagination. A cool idea would be &lt;a href="http://www.youtube.com/watch?v=ycquURFi9-c"&gt;this one&lt;/a&gt; (this should be possible with fewer planks (20-30) in real-time once I've added support for oriented bounding boxes to represent the planks).&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-3283908154761821996?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/3283908154761821996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=3283908154761821996' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/3283908154761821996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/3283908154761821996'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/07/writing-real-time-path-tracing-demos.html' title='Writing real-time path tracing demos'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-2026213016502465110</id><published>2011-07-25T04:00:00.001-07:00</published><updated>2011-07-27T00:28:02.350-07:00</updated><title type='text'>Paper on accelerating path tracing using eye path reprojection available</title><content type='html'>&lt;div style="text-align: justify;"&gt;The paper "Accelerating path tracing by eye path reprojection" by Niklas Henrich et al., &lt;a href="http://raytracey.blogspot.com/2011/06/accelerating-path-tracing-by-eye-path.html"&gt;which I blogged about earlier&lt;/a&gt; is available from &lt;a href="http://www.rendering.ovgu.de/publikationen.html"&gt;http://www.rendering.ovgu.de/publikationen.html&lt;/a&gt;. The algorithm achieves similar quality as regular path tracing in half the time and can easily be ported to the GPU. The authors also plan to incorporate their technique into a real-time raytracer.&lt;/div&gt;&lt;div&gt;&lt;br /&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/7277449027963623452-2026213016502465110?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/2026213016502465110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=2026213016502465110' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/2026213016502465110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/2026213016502465110'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/07/paper-on-accelerating-path-tracing.html' title='Paper on accelerating path tracing using eye path reprojection available'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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-7277449027963623452.post-7250030875179423706</id><published>2011-07-23T04:52:00.000-07:00</published><updated>2011-07-25T00:23:04.309-07:00</updated><title type='text'>Videos on GTS 450</title><content type='html'>&lt;div style="text-align: justify;"&gt;I've made two video's of somewhat better quality, resolution and framerate on the GTS 450, which is about 5x faster than a 8600M GT in Tokap (and about 8x faster in Futuristic Buildings).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The animation is now being rendered at 60 fps, 8 spp per frame and 512x256 resolution. The physics simulation itself runs internally at 60 fps, so the physics are rendered in "true" real-time.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/8nftCY4ZYH4" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Video of Future Buildings v2 ( 8 spp per frame, 640x480 resolution, still no acceleration structures):&lt;/div&gt;&lt;div&gt;&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/nE-_Ug1ncsw" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;The source code for "TOKAP with Bullet Physics" is available at &lt;/b&gt;&lt;b&gt;&lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-7250030875179423706?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/7250030875179423706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=7250030875179423706' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/7250030875179423706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/7250030875179423706'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/07/videos-on-gts-450.html' title='Videos on GTS 450'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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://img.youtube.com/vi/8nftCY4ZYH4/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-5127009911910931669</id><published>2011-07-20T09:23:00.000-07:00</published><updated>2011-07-22T04:28:08.565-07:00</updated><title type='text'>Bullet Physics! It works!!!</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/-zwca2rN8duo/Tib6bg-h-kI/AAAAAAAABaI/xjN11E2wVnA/s1600/bullettest2.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 280px;" src="http://4.bp.blogspot.com/-zwca2rN8duo/Tib6bg-h-kI/AAAAAAAABaI/xjN11E2wVnA/s400/bullettest2.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5631463734689004098" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;I've been wanting to integrate the Bullet Physics library in the real-time path tracing demo's like Tokap and Unbiased Truck Soccer for a while now (since February actually), but I lacked the programming knowledge and experience to make it work back then. Today I've finally made it work, which will open up lots of new gameplay ideas for future demo's.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I retrofitted TOKAP (the real-time path traced 3D Pong) with the Bullet physics library and the results are awesome, even though I have only tested it on a very low-end 8600M GT.&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Below is a very low-res video captured in real-time on a 8600M GT at 256x256 resolution and 4spp (I will soon make a higher quality video with a GTS450):&lt;/div&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/6AYCKRTH4VQ" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The physics simulation can be stepped and paused by holding down the UP key. You can walk around the scene during simulation or when the simulation is paused as shown in the video. The simulation is deterministic, so it will produce the exact same result every time it runs.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now that I've passed this hurdle, the possibilities are endless and I will finally be able to implement proper car physics (see &lt;a href="http://raytracey.blogspot.com/2011/03/unbiased-truck-soccer-first-physics.html"&gt;http://raytracey.blogspot.com/2011/03/unbiased-truck-soccer-first-physics.html&lt;/a&gt;).&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;The new demo can be downloaded from &lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;UPDATE:&lt;/b&gt; The source code is also available at &lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&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/7277449027963623452-5127009911910931669?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/5127009911910931669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=5127009911910931669' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5127009911910931669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5127009911910931669'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/07/bullet-physics-it-works.html' title='Bullet Physics! It works!!!'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-zwca2rN8duo/Tib6bg-h-kI/AAAAAAAABaI/xjN11E2wVnA/s72-c/bullettest2.jpg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-3263354566441244801</id><published>2011-07-19T05:39:00.000-07:00</published><updated>2011-07-25T04:49:35.854-07:00</updated><title type='text'>Update 2 on Futuristic Buildings</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;/div&gt;I've added a new animated building to the Futuristic Buildings demo:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-zC3bDosNpHY/TiV7hebOlNI/AAAAAAAABaA/_NZg8y39ols/s1600/futuristicbuildingandcar6.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 313px;" src="http://3.bp.blogspot.com/-zC3bDosNpHY/TiV7hebOlNI/AAAAAAAABaA/_NZg8y39ols/s400/futuristicbuildingandcar6.png" alt="" id="BLOGGER_PHOTO_ID_5631042724129838290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;There are no 'hitboxes' (aabb acceleration structure) around the car and the buildings yet, which is responsible for the greatly reduced framerate. The path tracing performance should get a nice boost once they are implemented.&lt;br /&gt;&lt;br /&gt;Video rendered on the ultra low end 8600M GT (4 spp at 480x360):&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/qZ_Lo2n67cI" allowfullscreen="" frameborder="0" height="390" width="480"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Download the new demo at &lt;/span&gt;&lt;a style="font-weight: bold;" href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next on my todo list:&lt;br /&gt;&lt;br /&gt;- implement AABB hitboxes to boost performance&lt;br /&gt;- make the car "drivable" with the keyboard and track the car with the camera&lt;br /&gt;- get Bullet physics in for some real gameplay (this is quite tricky)&lt;br /&gt;- implement oriented bounding boxes (ray-OBB intersection is similar to ray-AABB intersection but there is an additional cost because every ray first needs to be multiplied by the inverse transformation matrix of the OBB). OBBs will be needed for creating physics animations involving collapsing buildings like &lt;a href="http://www.youtube.com/watch?v=yPU6xNNCE68"&gt;this one&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- (add more sorts of geometric primitives: cylinders, cones, tori, capsules) &lt;/div&gt;&lt;div style="text-align: justify;"&gt;- (add more complex materials like coated glossy with roughness and fresnel parameters)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- (add a GUI with sliders using nv widgets)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- (make an OpenCL version) &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;UPDATE:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The car mechanics are sorta working now. The choppy framerate in the video below is due to the fact that it's still being rendered on a 8600M GT and because there aren't any acceleration structures yet. I bet this will run smooth as butter on a GTX 580 :D. I also temporarily removed the second skyscraper until the AABB acceleration structures are properly implemented:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/mI-l4kQsA5s" allowfullscreen="" frameborder="0" height="390" width="480"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Download the executable demo "Futuristic Buildings Drivable Car" from &lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-3263354566441244801?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/3263354566441244801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=3263354566441244801' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/3263354566441244801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/3263354566441244801'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/07/update-2-on-futuristic-buildings.html' title='Update 2 on Futuristic Buildings'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-zC3bDosNpHY/TiV7hebOlNI/AAAAAAAABaA/_NZg8y39ols/s72-c/futuristicbuildingandcar6.png' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-4869665102645546481</id><published>2011-07-18T03:48:00.000-07:00</published><updated>2011-07-18T14:50:55.408-07:00</updated><title type='text'>Update on Futuristic Buildings</title><content type='html'>Update on my &lt;a href="http://raytracey.blogspot.com/2011/07/futuristic-buildings-new-real-time-path.html"&gt;previous post&lt;/a&gt;: I brought back my beloved car character from Unbiased Truck Soccer. Some images (rendered blazingly fast at 16 spp per frame):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-_rBlmwJ0AvA/TiQQFOu96pI/AAAAAAAABZY/-JsWlLuZGeU/s1600/futurebuildingandcar.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 315px;" src="http://4.bp.blogspot.com/-_rBlmwJ0AvA/TiQQFOu96pI/AAAAAAAABZY/-JsWlLuZGeU/s400/futurebuildingandcar.png" alt="" id="BLOGGER_PHOTO_ID_5630643116160445074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-6YYVeGVEjgo/TiQQFU5wmTI/AAAAAAAABZg/vptF17ZgG7M/s1600/futurebuildingandcar2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 315px;" src="http://4.bp.blogspot.com/-6YYVeGVEjgo/TiQQFU5wmTI/AAAAAAAABZg/vptF17ZgG7M/s400/futurebuildingandcar2.png" alt="" id="BLOGGER_PHOTO_ID_5630643117816322354" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One 720p image (16 spp, almost no noise to be found):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-eqTSWQ-6Xqg/TiQexAiw1II/AAAAAAAABZo/73GOcde8neQ/s1600/futurebuildingandcar3_720p.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 233px;" src="http://3.bp.blogspot.com/-eqTSWQ-6Xqg/TiQexAiw1II/AAAAAAAABZo/73GOcde8neQ/s400/futurebuildingandcar3_720p.png" alt="" id="BLOGGER_PHOTO_ID_5630659261428192386" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;I still have to create a tight fitting bounding box around the car to increase the path tracing performance (although the performance is still quite good without it). The source code of Simplex Paternitas also provides examples of rotation matrices and scripted camera animation sequences, so there are lots of cool things left to explore. The car will eventually be user controllable with a camera following the car and in contrast to my previous demos featuring the car (Unbiased Truck Soccer etc.), it will also be able to rotate instead of just translate.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;UPDATE: The rotation of the car is now working. Below is a video that was rendered on my 8600M GT with only 4 samples per pixel per frame (framerate is about 5 fps at 640x480 resolution).&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/CWLpjZwPBiw" allowfullscreen="" frameborder="0" height="390" width="480"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;There still isn't an acceleration structure for the car (in this case an  axis aligned bounding box), which degrades the path tracing performance  a little, but the code for should be done soon. After that I'm going to  make the car user controllable. There's also a new 'futuristic building' which degrades performance even more, so  it will need a hitbox as well:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-GD9KkYD2Gv0/TiSqhFxgHSI/AAAAAAAABZw/wkJuuywiMrQ/s1600/futuristicbuildingandcar5.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 315px;" src="http://3.bp.blogspot.com/-GD9KkYD2Gv0/TiSqhFxgHSI/AAAAAAAABZw/wkJuuywiMrQ/s400/futuristicbuildingandcar5.png" alt="" id="BLOGGER_PHOTO_ID_5630812919582170402" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-4869665102645546481?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/4869665102645546481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=4869665102645546481' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/4869665102645546481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/4869665102645546481'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/07/update-on-futuristic-buildings.html' title='Update on Futuristic Buildings'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-_rBlmwJ0AvA/TiQQFOu96pI/AAAAAAAABZY/-JsWlLuZGeU/s72-c/futurebuildingandcar.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-7275633874916141539</id><published>2011-07-17T14:24:00.000-07:00</published><updated>2011-07-18T09:03:04.997-07:00</updated><title type='text'>"Futuristic Buildings" a new real-time path traced demo</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-klxCFB_fM_I/TiNqwRvxCyI/AAAAAAAABZQ/_YxnI0OXOjw/s1600/futureb3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 315px;" src="http://4.bp.blogspot.com/-klxCFB_fM_I/TiNqwRvxCyI/AAAAAAAABZQ/_YxnI0OXOjw/s400/futureb3.png" alt="" id="BLOGGER_PHOTO_ID_5630461336773266210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;I've decided to put my freshly learned C++ skills to the test, and what better way is there than modifying the source code of an already awesome program, in this case the recently released real-time path tracer  &lt;a href="http://raytracey.blogspot.com/2011/07/simplex-paternitas-real-time-path.html"&gt;"Simplex Paternitas" by Jacco Bikker&lt;/a&gt;. For "Futuristic Buildings" I modified some of the animation from Simplex Paternitas, added some new animations and also a new "skyscraper" building with moving spheres.&lt;br /&gt;&lt;br /&gt;The purpose of this demo was to emphasize the extraordinary capabilities of this path tracer, in particular the ultra-high-quality global illumination with color bleeding and dynamic soft shadows at real-time framerates. The demo renders almost noise-free images at 16 samples per pixel and should render them very fast when you have a high end GPU (&amp;gt;30 fps I guess, I only tested it with a 8600 M GT).&lt;br /&gt;&lt;br /&gt;Some images:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-R3ndZfeOs14/TiNZ1Q6EbEI/AAAAAAAABYw/9zFIFegwsYg/s1600/clp6B54.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 315px;" src="http://3.bp.blogspot.com/-R3ndZfeOs14/TiNZ1Q6EbEI/AAAAAAAABYw/9zFIFegwsYg/s400/clp6B54.bmp" alt="" id="BLOGGER_PHOTO_ID_5630442730749717570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-MQQhPNiPxFY/TiNZ08M4k8I/AAAAAAAABYo/Np2iUOVBn2s/s1600/clpD000.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 315px;" src="http://1.bp.blogspot.com/-MQQhPNiPxFY/TiNZ08M4k8I/AAAAAAAABYo/Np2iUOVBn2s/s400/clpD000.bmp" alt="" id="BLOGGER_PHOTO_ID_5630442725191488450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-HcnhOnmI-JU/TiNZ02ELv6I/AAAAAAAABYg/F7YxJuK3jOY/s1600/clp4385.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 315px;" src="http://4.bp.blogspot.com/-HcnhOnmI-JU/TiNZ02ELv6I/AAAAAAAABYg/F7YxJuK3jOY/s400/clp4385.bmp" alt="" id="BLOGGER_PHOTO_ID_5630442723544383394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-DvSd3_HssE0/TiNnzWzGPlI/AAAAAAAABZI/nkLW4q7aPO0/s1600/futureb2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 313px;" src="http://1.bp.blogspot.com/-DvSd3_HssE0/TiNnzWzGPlI/AAAAAAAABZI/nkLW4q7aPO0/s400/futureb2.png" alt="" id="BLOGGER_PHOTO_ID_5630458091134139986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-rbNkCWORKos/TiNkjcObZYI/AAAAAAAABZA/8ygNAnpPuGs/s1600/futurebuild.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 315px;" src="http://2.bp.blogspot.com/-rbNkCWORKos/TiNkjcObZYI/AAAAAAAABZA/8ygNAnpPuGs/s400/futurebuild.png" alt="" id="BLOGGER_PHOTO_ID_5630454519178159490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-MxLRfJ_tn94/TiNZ1k6ld3I/AAAAAAAABY4/8--A_LVHw4Q/s1600/clp1250.bmp"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 315px;" src="http://1.bp.blogspot.com/-MxLRfJ_tn94/TiNZ1k6ld3I/AAAAAAAABY4/8--A_LVHw4Q/s400/clp1250.bmp" alt="" id="BLOGGER_PHOTO_ID_5630442736120592242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Download "Futuristic Buildings" at&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a style="font-weight: bold;" href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A CUDA enabled GPU is required as the path tracing happens entirely on the GPU.&lt;br /&gt;&lt;br /&gt;This is work in progress of course, I'm planning to add another building  and a user-controllable character (the truck from Unbiased Truck Soccer :) .  A video should follow soon.&lt;br /&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/7277449027963623452-7275633874916141539?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/7275633874916141539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=7275633874916141539' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/7275633874916141539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/7275633874916141539'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/07/futuristic-buildings-new-real-time-path.html' title='&quot;Futuristic Buildings&quot; a new real-time path traced demo'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-klxCFB_fM_I/TiNqwRvxCyI/AAAAAAAABZQ/_YxnI0OXOjw/s72-c/futureb3.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-3571968268625118266</id><published>2011-07-15T02:07:00.000-07:00</published><updated>2011-07-15T10:20:55.088-07:00</updated><title type='text'>Simplex Paternitas, a real-time path traced animation by Jacco Bikker</title><content type='html'>&lt;div style="text-align: justify;"&gt;Jacco Bikker (developer of the Brigade path tracer and Arauna ray tracer) has released a cool video and executable demo of a real-time path traced animation called "Simplex Paternitas" created for iGathering 2011 (a demoscene festival organised at IGAD):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=PaTz9tJ7_KY"&gt;http://www.youtube.com/watch?v=PaTz9tJ7_KY&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The demo in the video runs smoothly on just one GTX 470. Links to the executable demo and source code can be found in the video description. I've tried the 32 spp demo on my laptop with 8600M GT and got around 2 fps! :)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-4HEO_xhw9fo/TiAPs08cUnI/AAAAAAAABX4/gX6q-GRIdlo/s1600/simplexpatern.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 298px;" src="http://2.bp.blogspot.com/-4HEO_xhw9fo/TiAPs08cUnI/AAAAAAAABX4/gX6q-GRIdlo/s400/simplexpatern.png" alt="" id="BLOGGER_PHOTO_ID_5629516797013938802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Soft shadows, refraction and caustics&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-8eOSiKUecPM/TiAS2QRAvPI/AAAAAAAABYI/FC-2s7s9reQ/s1600/simplexpatern3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/-8eOSiKUecPM/TiAS2QRAvPI/AAAAAAAABYI/FC-2s7s9reQ/s400/simplexpatern3.png" alt="" id="BLOGGER_PHOTO_ID_5629520257501674738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Accurate color bleeding from the blue and red walls is clearly visible in the shadows of the characters and reflective sphere &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The animation reminds me of vintage CG from the eighties (like &lt;a href="http://www.youtube.com/watch?v=k-GZ0PogVLw"&gt;this&lt;/a&gt; one) which was rendered with either rasterization or Whitted-style ray tracing and needed several CPU hours per frame, while this is path traced in just a few milliseconds per frame.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;UPDATE: I tinkered a bit with the scene parameters (different colors and materials and brighter sky). The image is taken at 28 samples per pixel. There is some slight greenish color bleeding from the ground onto the bottom half of the spheres and the character (not Kirby :) I will upload a video very soon. Even at 16 spp, there is almost no noise in the outdoor scene except for refractive spheres.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-6c-IUDcbYgc/TiBxgAFKT0I/AAAAAAAABYQ/5wLe3encRYA/s1600/simplex_brightsky.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 315px;" src="http://1.bp.blogspot.com/-6c-IUDcbYgc/TiBxgAFKT0I/AAAAAAAABYQ/5wLe3encRYA/s400/simplex_brightsky.png" alt="" id="BLOGGER_PHOTO_ID_5629624328804519746" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-btR3bey6w8w/TiB23JpJmZI/AAAAAAAABYY/tbgSdA2vLVY/s1600/simplx.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 315px;" src="http://4.bp.blogspot.com/-btR3bey6w8w/TiB23JpJmZI/AAAAAAAABYY/tbgSdA2vLVY/s400/simplx.png" alt="" id="BLOGGER_PHOTO_ID_5629630224066517394" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-3571968268625118266?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/3571968268625118266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=3571968268625118266' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/3571968268625118266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/3571968268625118266'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/07/simplex-paternitas-real-time-path.html' title='Simplex Paternitas, a real-time path traced animation by Jacco Bikker'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-4HEO_xhw9fo/TiAPs08cUnI/AAAAAAAABX4/gX6q-GRIdlo/s72-c/simplexpatern.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-1424144436643852075</id><published>2011-07-13T06:19:00.000-07:00</published><updated>2011-07-14T08:09:43.375-07:00</updated><title type='text'>Trailer for Reflect, the first real-time path traced game</title><content type='html'>&lt;div style="text-align: justify;"&gt;A video of the Portal-inspired game "Reflect", which uses the Brigade path tracer has surfaced on Youtube (sassy soundtrack included):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=qntMz2QPA_E"&gt;http://www.youtube.com/watch?v=qntMz2QPA_E&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The game is running on 2 Xeon (quad core) CPUs and 2 GTX 460s in this video. The number of indirect light bounces seems rather low, but the mere fact that path tracing can be done at playable framerates and reasonable noise levels is quite a breakthrough. Real-time path tracing for games is finally becoming reality, and this is just the beginning. Congratz to the team behind Reflect!&lt;br /&gt;&lt;br /&gt;UPDATE: there's another video of Reflect which is slightly less noisy: &lt;span style="font-weight: bold;"&gt;&lt;a href="http://www.youtube.com/watch?v=z27EpDJprQg"&gt;http://www.youtube.com/watch?v=z27EpDJprQg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-zV1rQP-1Dxo/Th8Gn03Ij9I/AAAAAAAABXw/-plJavdjmWU/s1600/reflect1res.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 257px;" src="http://1.bp.blogspot.com/-zV1rQP-1Dxo/Th8Gn03Ij9I/AAAAAAAABXw/-plJavdjmWU/s400/reflect1res.png" alt="" id="BLOGGER_PHOTO_ID_5629225340510965714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-1424144436643852075?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/1424144436643852075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=1424144436643852075' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1424144436643852075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1424144436643852075'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/07/trailer-for-reflect-first-real-time.html' title='Trailer for Reflect, the first real-time path traced game'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-zV1rQP-1Dxo/Th8Gn03Ij9I/AAAAAAAABXw/-plJavdjmWU/s72-c/reflect1res.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-359770410774366942</id><published>2011-07-04T03:51:00.000-07:00</published><updated>2011-07-14T02:13:01.276-07:00</updated><title type='text'>EGSR 2011 paper on real-time noise-free GPU path tracing</title><content type='html'>&lt;div style="text-align: justify;"&gt;Just read an interesting paper called "&lt;a href="http://graphics.tu-bs.de/publications/Bauszat2011GIF/"&gt;Guided Image Filtering for Interactive High-quality Global Illumination&lt;/a&gt;" by Bauszat, Eisemann and Magnor, which was accepted at EGSR 2011. The paper describes a novel method for edge-aware filtering of noisy path traced images using the normal and depth buffers instead of the noise image itself. The indirect lighting is filtered separately from the direct lighting and the whole pipeline (path tracing + filtering) is implemented on the GPU using CUDA (the numbers in the paper are obtained with a GTX 285). The new method is compared to cross bilateral filtering and the &lt;a href="http://www.uni-ulm.de/in/mi/graphics/atrous-filter.html"&gt;edge-avoiding à-trous wavelet filter&lt;/a&gt; described in a HPG paper from last year and the results seem very promising.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I very much agree with the introduction to the paper:&lt;br /&gt;&lt;blockquote&gt;&lt;div style="text-align: justify;"&gt;"...many approximations exist to reproduce certain effects of the &lt;span style="font-style: italic;"&gt;real&lt;/span&gt; global illumination and try to incorporate it into a classic rasterizer. Unfortunately, in order to speed up the computation they are either aiming at simulating only a single effect, like soft shadows [ED08] or ambient occlusion [RGS09] or they are are limited to certain constraints, requiring low-frequency lighting environments [SKS02], static scenes [LSK07] or precise parameter adjustment for varying scenes [RGK08]. Code complexity increases tremendously for systems that simulate global illumination effects using rasterization because multiple approximations need to be combined to achieve a sufficient visual quality. On the other hand path tracing naturally incorporates all these effects with a very simple rendering algorithm.&lt;br /&gt;&lt;br /&gt;Another drawback of approximative algorithms is that they not necessarily converge to the correct result. Therefore, &lt;span style="font-weight: bold;"&gt;they will only become faster with better hardware but do not necessarily produce a higher quality result.&lt;/span&gt; Instead of trying to incorporate global illumination effects into a rendering pipeline which is not capable of physically correct rendering, &lt;span style="font-weight: bold;"&gt;it is a much more promising design to take a physically valid rendering approach and implement approximative algorithms on top to speed up the rendering. Designing them in an adjustable way results in a very future-oriented rendering paradigm.&lt;/span&gt;"&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Research in fast interactive GPU path tracing with minimal noise has made enormous advancements over the past year and I'm confident that real-time high-quality path traced global illumination for games will be feasible soon.&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/7277449027963623452-359770410774366942?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/359770410774366942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=359770410774366942' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/359770410774366942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/359770410774366942'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/07/egsr-2011-paper-on-noise-free-real-time.html' title='EGSR 2011 paper on real-time noise-free GPU path tracing'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-8741150556666904282</id><published>2011-06-28T03:33:00.001-07:00</published><updated>2011-07-03T22:08:16.853-07:00</updated><title type='text'>Stunning animation rendered with Octane Render</title><content type='html'>&lt;div style="text-align: justify;"&gt;Just saw this very impressive video on the &lt;a href="http://www.octanerender.com/forum/viewtopic.php?f=5&amp;amp;t=7077"&gt;Octane forum&lt;/a&gt; today and thought it deserved its own post (the level of realism is otherworldly):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/25686881"&gt;http://vimeo.com/25686881&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The whole scene is 3D. Rendertime was two minutes per frame on average on a single GTX480, so  eight of these GPUs rendering simultaneously would reduce the rendertime to just 15 seconds per frame (rendertimes in Octane scale almost linearly with the number of GPUs), which is just completely nuts considering the quality.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Update: there's a &lt;a href="http://www.youtube.com/watch?v=jxrDjKcO5pY"&gt;new video on youtube&lt;/a&gt; showing that Octane can produce a real-time rendered low resolution preview animation of an outdoor scene with &lt;b&gt;a rendertime of only 55 milliseconds per frame!&lt;/b&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-8741150556666904282?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/8741150556666904282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=8741150556666904282' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/8741150556666904282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/8741150556666904282'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/06/stunning-animation-rendered-with-octane.html' title='Stunning animation rendered with Octane Render'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-5559979347879929627</id><published>2011-06-27T05:49:00.000-07:00</published><updated>2011-06-27T07:41:29.768-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='path tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='gpu'/><title type='text'>Accelerating Path Tracing by Eye Path Reprojection</title><content type='html'>&lt;div style="text-align: justify;"&gt;Just stumbled upon this upcoming paper about interactive GPU path tracing from Niklas Henrich. The &lt;a href="http://www.uni-koblenz.de/%7Enikhen/"&gt;abstract&lt;/a&gt; sounds very promising:&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div style="text-align: justify;"&gt;"Recently, path tracing has gained interest for real-time global  illumination since it allows to simulate an unbiased result of the  rendering equation. However, path tracing is still too slow for  real-time applications and shows noise when displayed at interactive  frame rates. The radiance of a pixel is computed by tracing a path,  starting from the eye and connecting each point on the path with the  light source. While conventional path tracing uses the information of a  path for a single pixel only, we demonstrate how to distribute the  intermediate results along the path to other pixels in the image. We  show that this reprojection of an eye path can be implemented  efficiently on graphics hardware with only a small overhead. This  results in an overall improvement of the whole image since the number of  paths per pixel increases. The method is especially useful for many  indirections, which is often circumvented to save computation time.  Furthermore, instead of improving the quality of the rendering, our  method is able to increase the rendering speed by reusing the  reprojected paths instead of tracing new paths while maintaining the  same quality."&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Hopefully, the results from &lt;a href="http://www.mendeley.com/research/accelerating-path-tracing-by-reusing-paths/"&gt;"Accelerating path tracing by re-using paths"&lt;/a&gt; (a paper from 2002 by Bekaert et al. who reported a 9x speed-up for CPU path tracing) can be replicated on the GPU.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-5559979347879929627?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/5559979347879929627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=5559979347879929627' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5559979347879929627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5559979347879929627'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/06/accelerating-path-tracing-by-eye-path.html' title='Accelerating Path Tracing by Eye Path Reprojection'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-5102880422971440104</id><published>2011-06-27T04:06:00.000-07:00</published><updated>2011-06-27T05:24:12.170-07:00</updated><title type='text'>Sparse voxel octree with real-time global illumination and dynamic geometry</title><content type='html'>&lt;div style="text-align: justify;"&gt;Cyril Crassin has posted a very nice video on his blog at &lt;a href="http://blog.icare3d.org/2011/06/interactive-indirect-illumination-and.html"&gt;http://blog.icare3d.org/2011/06/interactive-indirect-illumination-and.html&lt;/a&gt; showing the latest developments in his sparse voxel octree research which will be presented at Siggraph 2011 in Vancouver.&lt;br /&gt;&lt;br /&gt;Major improvements on previously published results (&lt;a href="http://artis.imag.fr/Membres/Cyril.Crassin/"&gt;http://artis.imag.fr/Membres/Cyril.Crassin/&lt;/a&gt;) include real-time indirect lighting (for diffuse and glossy materials) and support for fully dynamic voxel objects (by fast mesh voxelization and updating the voxel octree in real-time). There has been research in animated sparse voxel octrees before (using rasterization, see &lt;a href="http://bautembach.de/wordpress/?page_id=7"&gt;http://bautembach.de/wordpress/?page_id=7&lt;/a&gt;, &lt;a href="http://www.youtube.com/watch?v=Tl6PE_n6zTk"&gt;http://www.youtube.com/watch?v=Tl6PE_n6zTk&lt;/a&gt;, &lt;a href="http://www.youtube.com/watch?v=Hnvr0hxyDvk"&gt;http://www.youtube.com/watch?v=Hnvr0hxyDvk&lt;/a&gt; and &lt;a href="http://www.youtube.com/watch?v=gNZtx3ijjpo"&gt;http://www.youtube.com/watch?v=gNZtx3ijjpo&lt;/a&gt;, which doesn't look as detailed as &lt;a href="http://www.youtube.com/watch?v=VpEpAFGplnI"&gt;Jon Olick's raycasted static sparse voxel octree tech from Siggraph 08&lt;/a&gt;), but this is the first time it's being done with ray casting (cone tracing actually).&lt;br /&gt;&lt;br /&gt;The global illumination algorithm resembles photon mapping: instead of photon tracing, the scene is rasterized from the perspective of the light source and radiance is stored in the octree, followed by filtering in screen-space and a final gathering step using approximate cone tracing. More details: &lt;a href="http://artis.imag.fr/Publications/2011/CNSGE11a/GIVoxels_Siggraph_Talk.pdf"&gt;http://artis.imag.fr/Publications/2011/CNSGE11a/GIVoxels_Siggraph_Talk.pdf&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/7277449027963623452-5102880422971440104?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/5102880422971440104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=5102880422971440104' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5102880422971440104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5102880422971440104'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/06/sparse-voxel-octree-with-real-time.html' title='Sparse voxel octree with real-time global illumination and dynamic geometry'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-3288552842475104865</id><published>2011-06-21T03:37:00.000-07:00</published><updated>2011-06-23T02:00:56.717-07:00</updated><title type='text'>HPG paper and video of "Improving SIMD Efficiency for Parallel Monte Carlo Light Transport on the GPU"!</title><content type='html'>&lt;div style="text-align: justify;"&gt;Another post on the work of Dietger van Antwerpen, but that's because his research efforts for GPU path tracing are so damn amazing and groundbreaking. I can't stop imagining what the possibilities could be when implemented in a real-time path tracer for games. His HPG2011 paper "Improving SIMD Efficiency for Parallel Monte Carlo Light Transport on the GPU" and an accompanying video are available here: &lt;a href="http://graphics.tudelft.nl/%7Edietger/HPG2011/index.html"&gt;http://graphics.tudelft.nl/~dietger/HPG2011/index.html&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-jVxe1OrYoOs/TgJixJFM_GI/AAAAAAAABXg/KK8lMQ8ZuRA/s1600/hpg_van_antw_highquality.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 225px;" src="http://1.bp.blogspot.com/-jVxe1OrYoOs/TgJixJFM_GI/AAAAAAAABXg/KK8lMQ8ZuRA/s400/hpg_van_antw_highquality.png" alt="" id="BLOGGER_PHOTO_ID_5621163881302654050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The video shows a side-by-side comparison between standard path tracing (PT), bidirectional path tracing (BDPT) and Metropolis light transport (MLT) in a number of scenes with complex lighting. The difference in efficiency of the MLT and BDPT algorithms compared to regular path tracing is huge: for example, the kitchen scene (indirect lighting, actually it's lit by light passing through a lens, essentially a caustic) converges extremely slowly with PT and is still mostly pitch black &lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;because the probability of a random path hitting a small light source behind a lens is very low&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt;, while BDPT &lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;paths starting simultaneously from the camera and the light source, "meeting each other half way"&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; and MLT &lt;span style="color: rgb(102, 102, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;paths starting randomly, but once an important light contributing path is found, nearby paths are explored&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;)&lt;/span&gt; both do a much better job and show a recognizable scene in a matter of milliseconds. All these algorithms are running completely on the GPU with almost zero CPU load. The end of the video shows a flooded Cornell box scene rendered with MLT at interactive rates, showing that the caustic light pattern on the floor converges very fast (something that would take a very long time for a regular path tracer). The last page of the &lt;a href="http://graphics.tudelft.nl/%7Edietger/HPG2011/paper.pdf"&gt;HPG 2011 paper&lt;/a&gt; contains a very interesting comparison between a fully converged reference image and a PT, BDPT and MLT image after just 30 seconds on a GTX 480.&lt;br /&gt;&lt;br /&gt;An often recurring criticism of using the GPU for rendering is that for scenes with complex lighting and materials, the CPU outperforms the GPU because the CPU is able to use smarter and more efficient algorithms (like MLT and BDPT) while the GPU is only efficient at regular, "dumb" path tracing. This is no longer true as proven by this paper: not only can GPUs use more efficient rendering algorithms like BDPT and MLT, they can also do it &lt;span style="font-weight: bold;"&gt;an order of magnitude faster than the CPU&lt;/span&gt;! The table comparing performance between GPU rendering and CPU rendering (GTX 480 vs Core i7 920) demonstrates that, depending on the scene, &lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;PT is 10-18x, BDPT 8-15x and MLT  9-15x faster&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;on the GPU&lt;/span&gt; than on the CPU!!&lt;br /&gt;&lt;br /&gt;It's amazing to see that the still very young field of physically based GPU rendering has made such tremendous advancements in just a couple of months (thanks to guys like Dietger among others). I can't wait to see where this field is going to head during the next year with better hardware (Nvidia Kepler, AMD Graphics Core Next) and even more optimized and efficient algorithms. It really is mind-boggling...&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/7277449027963623452-3288552842475104865?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/3288552842475104865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=3288552842475104865' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/3288552842475104865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/3288552842475104865'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/06/hpg-paper-and-video-of-improving-simd.html' title='HPG paper and video of &quot;Improving SIMD Efficiency for Parallel Monte Carlo Light Transport on the GPU&quot;!'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-jVxe1OrYoOs/TgJixJFM_GI/AAAAAAAABXg/KK8lMQ8ZuRA/s72-c/hpg_van_antw_highquality.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-5378839052176039607</id><published>2011-06-15T12:32:00.000-07:00</published><updated>2011-06-15T15:10:13.673-07:00</updated><title type='text'>Dietger van Antwerpen's thesis "Unbiased physically based rendering on the GPU" available!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-WaIWqDa4GJk/TfkMZ7vz74I/AAAAAAAABXQ/-F9mfiIxTds/s1600/dvantwerpenthesis.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 223px;" src="http://2.bp.blogspot.com/-WaIWqDa4GJk/TfkMZ7vz74I/AAAAAAAABXQ/-F9mfiIxTds/s400/dvantwerpenthesis.png" alt="" id="BLOGGER_PHOTO_ID_5618535649795895170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;The thesis from Dietger van Antwerpen, co-developer of the Brigade path tracer who pioneered bidirectional path tracing (BDPT), energy redistribution ray tracing (ERPT) and Metropolis light transport (MLT) in CUDA is finally available (since yesterday) at &lt;a href="http://repository.tudelft.nl/view/ir/uuid%3A4a5be464-dc52-4bd0-9ede-faefdaff8be6/"&gt;http://repository.tudelft.nl/view/ir/uuid%3A4a5be464-dc52-4bd0-9ede-faefdaff8be6/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's 180 pages and this is just a master thesis, nuts! :)&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/7277449027963623452-5378839052176039607?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/5378839052176039607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=5378839052176039607' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5378839052176039607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/5378839052176039607'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/06/dietger-van-antwerpens-thesis-unbiased.html' title='Dietger van Antwerpen&apos;s thesis &quot;Unbiased physically based rendering on the GPU&quot; available!'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-WaIWqDa4GJk/TfkMZ7vz74I/AAAAAAAABXQ/-F9mfiIxTds/s72-c/dvantwerpenthesis.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-1986775650353548444</id><published>2011-06-15T07:55:00.000-07:00</published><updated>2011-06-21T02:17:06.497-07:00</updated><title type='text'>Update on CentiLeo, the out-of-core GPU ray tracer</title><content type='html'>&lt;div style="text-align: justify;"&gt;CentiLeo, the awesome out-of-core interactive GPU path tracer for massive models (like the 400 million polygon Boeing 777 model) that I've blogged about in &lt;a href="http://raytracey.blogspot.com/2011/04/centileo-brand-new-interactive-out-of.html"&gt;this post&lt;/a&gt;, is going to be presented this summer at Siggraph:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.siggraph.org/s2011/content/out-core-gpu-ray-tracing-complex-scenes"&gt;http://www.siggraph.org/s2011/content/out-core-gpu-ray-tracing-complex-scenes&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;According to the &lt;a href="http://www.youtube.com/watch?v=mxx9dyPO0js"&gt;video on youtube&lt;/a&gt; "CentiLeo implementation uses CUDA and is based on Kirill Garanzha's PhD  research in Keldysh Institute of Applied Mathematics, Russian Academy of  Sciences."&lt;br /&gt;&lt;br /&gt;As mentioned in the last post, Kirill Garanzha will also present a paper entitled&lt;b&gt; "Simpler and Faster HLBVH with Work Queues"&lt;/b&gt; at High Performance Graphics 2011, which aims to make real-time ray tracing of highly dynamic scenes possible by fully rebuilding (instead of refitting which significantly degrades ray traversal performance) the BVH from scratch in real-time. Combined with the out-of-core path tracing tech from CentiLeo, this could be very compelling and make photoreal animations of highly dynamic multi-million polygon scenes  render very fast on the GPU.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt; This week, Garanzha also presented a paper at the Computer Graphics International 2011 conference on a novel way to build high quality BVH's on the GPU (quality measured by GPU path tracing on a GTX 480) with the title "&lt;a href="http://www.springerlink.com/content/j213440768285179/"&gt;Grid-based SAH BVH construction on a GPU&lt;/a&gt;" (behind a paywall). The BVH refitting is faster than the original HLBVH implementation.&lt;br /&gt;&lt;h1&gt;&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);" class=" down" style="display: block;" id="formatbar_CreateLink" title="Link"&gt;&lt;img src="http://www.blogger.com/img/blank.gif" alt="Link" class="gl_link" border="0" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-1986775650353548444?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/1986775650353548444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=1986775650353548444' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1986775650353548444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1986775650353548444'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/06/update-on-centileo-out-of-core-gpu-ray.html' title='Update on CentiLeo, the out-of-core GPU ray tracer'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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-7277449027963623452.post-6915148582353591788</id><published>2011-06-06T05:39:00.000-07:00</published><updated>2011-06-08T02:26:37.997-07:00</updated><title type='text'>HPG 2011 paper list online</title><content type='html'>&lt;div style="text-align: justify;"&gt;The &lt;a href="http://www.realtimerendering.com/blog/"&gt;Real-Time Rendering blog&lt;/a&gt; just blogged that Kesen Huang has put the list of papers for the High Performance Graphics  2011 symposium online at &lt;a href="http://kesen.realtimerendering.com/hpg2011Papers.htm"&gt;http://kesen.realtimerendering.com/hpg2011Papers.htm&lt;/a&gt;. HPG 2011 takes place in Vancouver (home of the Canucks ;) on Aug 5-7.&lt;br /&gt;&lt;br /&gt;These are some of the more juicy titles on the subject of ray tracing and path tracing that immediately catch the attention:&lt;br /&gt;&lt;/div&gt;&lt;dl style="text-align: justify;"&gt;&lt;dt&gt;&lt;b&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Simpler and Faster HLBVH with Work Queues&lt;/span&gt; &lt;/b&gt;(Kirill Garanzha, Jacopo Pantaleoni, David McAllister) I've been waiting an eternity for Pantaleoni's &lt;a href="http://code.google.com/p/hlbvh/"&gt;HLBVH code&lt;/a&gt; to be open sourced, so I hope the code from this new paper will get published eventually.&lt;br /&gt;&lt;/dt&gt;&lt;/dl&gt;&lt;dl style="text-align: justify;"&gt;&lt;dt&gt;&lt;b style="color: rgb(51, 51, 255);"&gt;Improving SIMD Efficiency for Parallel Monte Carlo Light Transport on the GPU&lt;/b&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; &lt;/span&gt;(Dietger van Antwerpen) This paper is from the co-developer of the real-time path tracer called Brigade, who also implemented Metropolis light transport and ERPT on the GPU, so it should be really interesting.&lt;br /&gt;&lt;/dt&gt;&lt;/dl&gt;&lt;dl style="text-align: justify;"&gt;&lt;dt&gt;&lt;b style="color: rgb(51, 51, 255);"&gt;Active Thread Compaction for GPU Path Tracin&lt;span style="text-decoration: underline;"&gt;g&lt;/span&gt;&lt;/b&gt; (Ingo Wald) From the guy that pioneered real-time CPU ray tracing.&lt;/dt&gt;&lt;dd&gt;&lt;br /&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;div style="text-align: justify;"&gt;Some other attention-grabbing titles:&lt;br /&gt;&lt;/div&gt;&lt;dl style="text-align: justify;"&gt;&lt;dt&gt;&lt;b&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Real-Time Diffuse Global Illumination Using Radiance Hints&lt;/span&gt; &lt;/b&gt;(Georgios Papaioannou)  &lt;/dt&gt;&lt;/dl&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;dl style="text-align: justify;"&gt;&lt;dt&gt;&lt;b&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;VoxelPipe: A Programmable Pipeline for 3D Voxelization&lt;/span&gt; &lt;/b&gt;(Jacopo Pantaleoni)  &lt;/dt&gt;&lt;/dl&gt;&lt;div style="text-align: justify;"&gt;   &lt;/div&gt;&lt;dl style="text-align: justify;"&gt;&lt;dt&gt;&lt;b style="color: rgb(51, 51, 255);"&gt;High-Performance Software Rasterization on GPUs &lt;/b&gt;(Samuli Laine, Tero Karras)  &lt;/dt&gt;&lt;/dl&gt;&lt;dl style="text-align: justify;"&gt;&lt;dt&gt;&lt;b style="color: rgb(51, 51, 255);"&gt;MSBVH: An Efficient Acceleration Data Structure for Ray Traced Motion Blur&lt;/b&gt; (Leonhard, Gruenschloss, Martin Stich,  Sehera Nawaz,  Alexander Keller)  &lt;/dt&gt;&lt;/dl&gt;&lt;div style="text-align: justify;"&gt;The program looks very promising so far, especially for real-time and interactive ray tracing and path tracing.&lt;br /&gt;&lt;br /&gt;UPDATE:&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;The paper by McGuire et al. on the &lt;a style="font-weight: bold;" href="http://graphics.cs.williams.edu/papers/AlchemyHPG11/VV11AlchemyAO.pdf"&gt;Alchemy Screen Space Ambient Obscurance Algorithm&lt;/a&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;contains a pretty neat idea, which could prove to be very useful for real-time path tracing. The idea is to adapt the number of samples per pixel with distance from the camera, essentially some kind of LOD scheme for the spp number as shown in this picture (taken from the &lt;a href="http://graphics.cs.williams.edu/papers/AlchemyHPG11/VV11AlchemyAO.pdf"&gt;paper&lt;/a&gt;):&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-iqbM2yDVoe8/Te3yFqYFMmI/AAAAAAAABWQ/ICI3P0FUs_s/s1600/morganmcguire_ao_spp.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 304px;" src="http://3.bp.blogspot.com/-iqbM2yDVoe8/Te3yFqYFMmI/AAAAAAAABWQ/ICI3P0FUs_s/s400/morganmcguire_ao_spp.png" alt="" id="BLOGGER_PHOTO_ID_5615410489489437282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);" class="" style="display: block;" id="formatbar_CreateLink" title="Link"&gt;&lt;/span&gt;&lt;/span&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/7277449027963623452-6915148582353591788?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/6915148582353591788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=6915148582353591788' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/6915148582353591788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/6915148582353591788'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/06/hpg-2011-paper-list-online.html' title='HPG 2011 paper list online'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-iqbM2yDVoe8/Te3yFqYFMmI/AAAAAAAABWQ/ICI3P0FUs_s/s72-c/morganmcguire_ao_spp.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-6467460863996026988</id><published>2011-05-06T08:06:00.000-07:00</published><updated>2011-05-07T04:23:31.093-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='path tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='kajiya'/><category scheme='http://www.blogger.com/atom/ns#' term='ray tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='cbox'/><category scheme='http://www.blogger.com/atom/ns#' term='real-time'/><title type='text'>CBox Unbiased Truck</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/-BQvOVgkUUFE/TcQWWWVLP6I/AAAAAAAAAfA/MyuKGTREvOI/s1600/cbox%2But3.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 385px; height: 400px;" src="http://3.bp.blogspot.com/-BQvOVgkUUFE/TcQWWWVLP6I/AAAAAAAAAfA/MyuKGTREvOI/s400/cbox%2But3.png" alt="" id="BLOGGER_PHOTO_ID_5603628409563070370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;I've modified &lt;a href="http://raytracey.blogspot.com/2011/05/real-time-path-traced-unbiased-trucker.html"&gt;the scene in the Kajiya path tracer&lt;/a&gt; a bit more: it now consists of a Cornell Box out of axis aligned boxes with the (in)famous truck from Unbiased Truck Soccer:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-h5-BCaI-l-o/TcQOvc9-M3I/AAAAAAAAAe4/Xs0NZI6QKac/s1600/cbox%2But1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 387px; height: 400px;" src="http://2.bp.blogspot.com/-h5-BCaI-l-o/TcQOvc9-M3I/AAAAAAAAAe4/Xs0NZI6QKac/s400/cbox%2But1.png" alt="" id="BLOGGER_PHOTO_ID_5603620044748501874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Color bleeding from the red and green wall:&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-7vX8zENp_As/TcQYMxAmLVI/AAAAAAAAAfI/9Dcea_6IJXw/s1600/cbox%2But4.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 386px; height: 400px;" src="http://4.bp.blogspot.com/-7vX8zENp_As/TcQYMxAmLVI/AAAAAAAAAfI/9Dcea_6IJXw/s400/cbox%2But4.png" alt="" id="BLOGGER_PHOTO_ID_5603630443949075794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-66IsVJesOwA/TcQOkDA3ZnI/AAAAAAAAAeo/BPmw1ozLBf8/s1600/cbox%2But2.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 385px; height: 400px;" src="http://2.bp.blogspot.com/-66IsVJesOwA/TcQOkDA3ZnI/AAAAAAAAAeo/BPmw1ozLBf8/s400/cbox%2But2.png" alt="" id="BLOGGER_PHOTO_ID_5603619848802756210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The screenshots were rendered with 8600M GT (6 fps default view). On a GTS 450, the demo runs at 70 fps in default view. It should run at &amp;gt;200 fps on a GTX 580 with 8 samples per pixel. This new path tracer is just incredible fun, I can't stop messing with it.&lt;br /&gt;&lt;br /&gt;Executable and source code at &lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;UPDATE: a more challenging lighting set up with an open box only illuminated by the sky:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-zbstYpiwalQ/TcUmTBEqytI/AAAAAAAAAfg/hhqf9ciMqG8/s1600/cbox_ut_indirectlight2.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 385px; height: 400px;" src="http://2.bp.blogspot.com/-zbstYpiwalQ/TcUmTBEqytI/AAAAAAAAAfg/hhqf9ciMqG8/s400/cbox_ut_indirectlight2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5603927419479837394" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The truck seen from behind, indirectly lit by skylight bounced off the back and side walls. As expected with standard path tracing, the noise is a lot worse in this scenario. Bidirectional path tracing should converge faster using fewer samples.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-BBv-A6fYh90/TcUmIAYRK9I/AAAAAAAAAfQ/A1RKozDLvLo/s1600/cbox_ut_indirectlight1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 387px; height: 400px;" src="http://1.bp.blogspot.com/-BBv-A6fYh90/TcUmIAYRK9I/AAAAAAAAAfQ/A1RKozDLvLo/s400/cbox_ut_indirectlight1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5603927230315047890" /&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/7277449027963623452-6467460863996026988?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/6467460863996026988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=6467460863996026988' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/6467460863996026988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/6467460863996026988'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/05/cbox-unbiased-truck.html' title='CBox Unbiased Truck'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-BQvOVgkUUFE/TcQWWWVLP6I/AAAAAAAAAfA/MyuKGTREvOI/s72-c/cbox%2But3.png' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-60179151679040110</id><published>2011-05-05T02:48:00.000-07:00</published><updated>2011-05-05T03:16:09.905-07:00</updated><title type='text'>Arnold Render impressions from FMX 2011</title><content type='html'>&lt;a href="http://www.3dworldmag.com/2011/05/04/sony-pictures-imageworks-unbiased-raytracing-in-feature-films-now-viable/"&gt;http://www.3dworldmag.com/2011/05/04/sony-pictures-imageworks-unbiased-raytracing-in-feature-films-now-viable/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;More details by Marcos Fajardo:  &lt;a href="http://www.cgchannel.com/2011/05/fmx-2011-tuesdays-highlights/"&gt;http://www.cgchannel.com/2011/05/fmx-2011-tuesdays-highlights/&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;div style="text-align: justify;"&gt;Having showed a 400-million-polygon asset from G-Force as proof that  even the heaviest scenes can be raytraced in production, Fajardo singled  out volumetrics as a particular area of benefit.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;blockquote&gt; &lt;p&gt;“[With a traditional hybrid Reyes renderer] you’re losing the  interaction of the raytrace effects with the volumes so even simple  things like shadows become a problem,” he said. “[With Arnold] it just  works. There’s no ‘gotcha’.”&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;The move to fully ray traced rendering in the movie industry (f.e. Sony Pictures Imageworks and Blue Sky) has started and it's happening really fast. Now it's up to the game industry to do the same.&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/7277449027963623452-60179151679040110?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/60179151679040110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=60179151679040110' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/60179151679040110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/60179151679040110'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/05/arnold-render-impressions-from-fmx-2011.html' title='Arnold Render impressions from FMX 2011'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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-7277449027963623452.post-6900033830939919826</id><published>2011-05-04T10:39:00.000-07:00</published><updated>2011-05-06T00:57:54.170-07:00</updated><title type='text'>Real-time path traced Unbiased Truck Soccer moved to Kajiya-engine</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-27XvED6dvVA/TcGxIa7_r6I/AAAAAAAAAeg/Prz7TVy9LXk/s1600/kajiyaUTS7.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 381px; height: 400px;" src="http://4.bp.blogspot.com/-27XvED6dvVA/TcGxIa7_r6I/AAAAAAAAAeg/Prz7TVy9LXk/s400/kajiyaUTS7.png" alt="" id="BLOGGER_PHOTO_ID_5602954169653637026" border="0" /&gt;&lt;/a&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-27XvED6dvVA/TcGxIa7_r6I/AAAAAAAAAeg/Prz7TVy9LXk/s1600/kajiyaUTS7.png"&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;It has been a while since the last update on Unbiased Truck Soccer, the real-time path traced game featuring a truck made of spheres. Two major changes happened since last time: I've upgraded from my laptop with 8600M GT to a desktop with GTS 450, not a high end card but a fair bit better than the ultra-low end 8600M GT (I'm still using the latter for developing and testing new ideas, because if it looks and runs OK on crappy hardware, you can be sure that it will look great on a real GPU). I've also started porting the Unbiased Truck game to the brand new and recently released Kajiya scene path tracer from Jacco Bikker and Jeroen van Schijndel. This decision was made for several reasons:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- when comparing path tracing performance on the 8600M GT and the GTS450, TOKAP runs only 5x faster while the Kajiya path tracer runs 11x faster. It's also optimized for Fermi cards and uses CUDA 3.2, while tokaspt (TOKAP's framework) was developed for CUDA 2.0 and pre-Fermi cards. The path tracing performance of tokaspt was already extremely fast, but this new path tracer is just in a league of its own.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- it's going to be fairly easy to port this to OpenCL, since the CUDA-specific code is very small and there's also an OpenCL port of the Kajiya demo available at &lt;a href="http://code.google.com/p/kajiya-gpu/"&gt;http://code.google.com/p/kajiya-gpu/ &lt;/a&gt; Still waiting for working OpenCL 1.1 drivers from Nvidia.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- more primitives to choose from: not only spheres (as in Tokap), but also cubes (axis aligned bounding boxes actually) and ellipsoids, so there will be less restrictions on game ideas. An example of a physics game: drive the truck into a building made of boxes and make the whole structure collapse like in &lt;a href="http://www.youtube.com/watch?v=yPU6xNNCE68"&gt;this video&lt;/a&gt;. This would require additional support for oriented bounding boxes.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- the Kajiya path tracer uses "hitboxes", a kind of acceleration structure, improving performance. Tokaspt doesn't have built-in acceleration structures, hence the path tracing performance went down very quickly when adding more spheres (or a second truck).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- proper support for skydome and sunlight with much better looking shadows and much reduced noise levels&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Some pictures and videos (screenshots rendered with 8600M GT, videos with GTS450):&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-XjT3WzaRGAA/TcGuEHg-teI/AAAAAAAAAdo/zLIPeWJ4oRA/s1600/kajiyaUTS3.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 388px; height: 400px;" src="http://2.bp.blogspot.com/-XjT3WzaRGAA/TcGuEHg-teI/AAAAAAAAAdo/zLIPeWJ4oRA/s400/kajiyaUTS3.jpg" alt="" id="BLOGGER_PHOTO_ID_5602950797185693154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The next two images show all the advantages of rendering with path tracing: reflection, refraction, soft shadows, ambient occlusion and colour bleeding. Surpassing Pixar quality graphics in real-time! :D&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-huUN7xxp2Do/TcGuESKxkRI/AAAAAAAAAdw/16WWSEn-deI/s1600/kajiyaUTS2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 385px; height: 400px;" src="http://2.bp.blogspot.com/-huUN7xxp2Do/TcGuESKxkRI/AAAAAAAAAdw/16WWSEn-deI/s400/kajiyaUTS2.jpg" alt="" id="BLOGGER_PHOTO_ID_5602950800045347090" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Nice refraction + color bleeding and gradual light fall-off on the car's rear:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-LUBDkpe7EtE/TcGuEwDoWRI/AAAAAAAAAd4/EJxlmZPcLeY/s1600/kajiyaUTS1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 387px; height: 400px;" src="http://3.bp.blogspot.com/-LUBDkpe7EtE/TcGuEwDoWRI/AAAAAAAAAd4/EJxlmZPcLeY/s400/kajiyaUTS1.jpg" alt="" id="BLOGGER_PHOTO_ID_5602950808068446482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;An "overcast" sky (no sunlight):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-juoV_BaLC9c/TcGuExcH0GI/AAAAAAAAAeA/U5Xxd9XFFiU/s1600/kajiyaUTS5.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 384px; height: 400px;" src="http://2.bp.blogspot.com/-juoV_BaLC9c/TcGuExcH0GI/AAAAAAAAAeA/U5Xxd9XFFiU/s400/kajiyaUTS5.jpg" alt="" id="BLOGGER_PHOTO_ID_5602950808439607394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-GqGD4KWmNaY/TcGuNvjD7fI/AAAAAAAAAeI/D5vO2C15yKY/s1600/kajiyaUTS6.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 385px; height: 400px;" src="http://1.bp.blogspot.com/-GqGD4KWmNaY/TcGuNvjD7fI/AAAAAAAAAeI/D5vO2C15yKY/s400/kajiyaUTS6.jpg" alt="" id="BLOGGER_PHOTO_ID_5602950962550664690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Night scene, only illuminated with a spotlight. Notice the indirect light bounced from the floor onto the cuboids:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-CVD-QNIytxs/TcGuN1qk-aI/AAAAAAAAAeQ/-xpW_FrFEic/s1600/kajiyaUTS4.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 385px; height: 400px;" src="http://3.bp.blogspot.com/-CVD-QNIytxs/TcGuN1qk-aI/AAAAAAAAAeQ/-xpW_FrFEic/s400/kajiyaUTS4.jpg" alt="" id="BLOGGER_PHOTO_ID_5602950964192803234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/VC42Li-_a9I" allowfullscreen="" width="480" frameborder="0" height="390"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/kddh26mKZHc" allowfullscreen="" width="480" frameborder="0" height="390"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/iq-ezWn9_is" allowfullscreen="" width="480" frameborder="0" height="390"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Convergence in this simple scene is extremely fast. While moving, frames are displayed at 8 spp and the scene runs with great quality at 50-60 fps (512x512 resolution) on my GTS 450. When the camera is stationary, 32 spp are accumulated.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I hope I will soon be able to animate the truck and incorporate some CPU physics. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Download executable (Win32) and source code at &lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list &lt;/a&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/7277449027963623452-6900033830939919826?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/6900033830939919826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=6900033830939919826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/6900033830939919826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/6900033830939919826'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/05/real-time-path-traced-unbiased-trucker.html' title='Real-time path traced Unbiased Truck Soccer moved to Kajiya-engine'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-27XvED6dvVA/TcGxIa7_r6I/AAAAAAAAAeg/Prz7TVy9LXk/s72-c/kajiyaUTS7.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-120811840615462512</id><published>2011-05-03T04:45:00.001-07:00</published><updated>2011-05-03T06:01:41.415-07:00</updated><title type='text'>Minecraft rendered with Octane</title><content type='html'>&lt;div style="text-align: justify;"&gt;After the impressive and awe-inspiring videos of Minecraft rendered in real-time with the Brigade path tracer (&lt;a href="http://www.youtube.com/watch?v=xZ62VwiLr3A"&gt;1&lt;/a&gt;, &lt;a href="http://www.youtube.com/watch?v=7REP_FE0e98"&gt;2&lt;/a&gt;, &lt;a href="http://www.youtube.com/watch?v=ywo3_HOzh6E"&gt;3&lt;/a&gt; and &lt;a href="http://www.youtube.com/watch?v=wAGEZnFVTos"&gt;4&lt;/a&gt;), here's a pretty neat day/night cycle animation of a Minecraft level rendered with Octane, which looks completely real and kind of resembles a LEGO world: &lt;a href="http://www.youtube.com/watch?v=vCC6Bczi2x0"&gt;http://www.youtube.com/watch?v=vCC6Bczi2x0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;With a couple of ultrahigh-end GPUs, I think the daylight parts in this animation can be path traced in real-time with very good quality, even though all surfaces are glossy, because almost all of the lighting comes from a skylight. The following video demonstrates the extreme speed with which a completely glossy benchmark scene (the Death Star trench from Star Wars) converges in Octane on 2x GTX 460 under different lighting conditions: &lt;a href="http://www.youtube.com/watch?v=uHY90epFf2g."&gt;http://www.youtube.com/watch?v=uHY90epFf2g.&lt;/a&gt; After having messed around with the Brigade path tracer for countless hours on a laptop with 8600M GT and still getting pretty good results in real-time, I'm convinced that Minecraft levels will soon be playable in photoreal quality on high-end hardware. Once that goal is reached, it's pretty easy to imagine what's going to come next.&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/7277449027963623452-120811840615462512?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/120811840615462512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=120811840615462512' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/120811840615462512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/120811840615462512'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/05/minecraft-rendered-with-octane.html' title='Minecraft rendered with Octane'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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-7277449027963623452.post-1485545380432532038</id><published>2011-04-26T14:43:00.000-07:00</published><updated>2011-04-29T05:05:37.845-07:00</updated><title type='text'>Cycles, a new unbiased CPU/GPU renderer for Blender</title><content type='html'>&lt;div style="text-align: justify;"&gt;The GPU path tracing virus keeps spreading at an incredible rate: Blender is soon going to have a fully integrated physically based renderer, codenamed 'Cycles', which can use the CPU or the GPU for rendering (GPU path tracing starts at 1:18).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.blender.org/index.php/2011/04/modernizing-shading-and-rendering/"&gt;http://code.blender.org/index.php/2011/04/modernizing-shading-and-rendering/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Changing materials, moving objects around and adding/deleting new objects can be done in real-time and the Cycles rendering engine can also rebuild the acceleration structure of the Suzanne model at lightning fast speeds. The source code will be available in about two weeks! It's going to be really cool when you can modify your model and immediately see the changes rendered in real-time in photoreal quality. Speaking of real-time editing and rendering, one of Luxrender's developers has made an utterly amazing video showing live editing of a physics simulation inside Blender and rendering it in real-time with Luxrender's PathGPU2 (a 100% OpenCL path tracer and part of SmallLuxGPU v1.8 with a heavy focus on animation rendering):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=bSQoJW9ajmU"&gt;http://www.youtube.com/watch?v=bSQoJW9ajmU&lt;/a&gt; (real-time part starts at 1:23)&lt;br /&gt;&lt;br /&gt;The video was rendered on a Core i7 920 + 2x ATI HD4890's, certainly not a bad system, but the HD4000 series was not exactly conceived with OpenCL computing in mind. I would love to see a GTX580 rendering this scene though. According to &lt;a href="http://www.anandtech.com/show/4209/amds-radeon-hd-6990-the-new-single-card-king/17"&gt;the graph below from Anandtech&lt;/a&gt; depicting the performance of SmallLuxGPU 1.7, I can imagine that card would just fly in this scene and make the video that much more awesome!&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-2UOJvTctVh8/TbfNYN6pRxI/AAAAAAAAAdg/5ifs0AeHK-I/s1600/6990%2Bslg%2Bbenchmark%2Banandtech.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 323px; height: 400px;" src="http://3.bp.blogspot.com/-2UOJvTctVh8/TbfNYN6pRxI/AAAAAAAAAdg/5ifs0AeHK-I/s400/6990%2Bslg%2Bbenchmark%2Banandtech.png" alt="" id="BLOGGER_PHOTO_ID_5600170477594691346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Update: SmallLuxGPU 1.8beta (which incorporates Metropolis light transport in OpenCL) is now available for download from the Luxrender forum&lt;br /&gt;&lt;br /&gt;Update2: A lot of useful information and implementation details on the Cycles renderer can be found on &lt;a href="http://wiki.blender.org/index.php/Dev:2.5/Source/Cycles"&gt;http://wiki.blender.org/index.php/Dev:2.5/Source/Cycles&lt;/a&gt; under the header "Design"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-1485545380432532038?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/1485545380432532038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=1485545380432532038' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1485545380432532038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1485545380432532038'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/04/cycles-new-cpugpu-path-tracer-for.html' title='Cycles, a new unbiased CPU/GPU renderer for Blender'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-2UOJvTctVh8/TbfNYN6pRxI/AAAAAAAAAdg/5ifs0AeHK-I/s72-c/6990%2Bslg%2Bbenchmark%2Banandtech.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-6885641231910306251</id><published>2011-04-19T01:27:00.000-07:00</published><updated>2011-04-21T00:59:22.620-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='path tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='webgl'/><category scheme='http://www.blogger.com/atom/ns#' term='real-time'/><title type='text'>Incredible real-time GPU path tracer using WebGL</title><content type='html'>&lt;div style="text-align: left;"&gt;Yesterday I came across another awesome GPU renderer (made by Evan Wallace), it's a very neat and extremely fast path tracer using GLSL shaders running in the browser:&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;a href="http://madebyevan.com/webgl-path-tracing/"&gt;http://madebyevan.com/webgl-path-tracing/&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;A WebGL-enabled browser is required to run this (I highly recommend the latest Chrome build from &lt;a href="http://www.khronos.org/webgl/wiki/Getting_a_WebGL_Implementation#Chrome.2FChromium"&gt;http://www.khronos.org/webg/wiki/Getting_a_WebGL_Implementation#Chrome.2FChromium&lt;/a&gt; (the Chrome Canary build works great if you're on Windows, Firefox 4.0 crashes and other Chrome versions didn't work for me, it just keeps loading). &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;It's great fun to edit the scene: move the light or objects and see soft shadows being cast in real-time (60 fps) on the walls and other objects. You can also change materials and add extra objects.  It renders blazingly fast even on very low end GPUs. Very impressive!&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-drY5zZboaSc/Ta2mMHY7jrI/AAAAAAAAAdI/IQdPCT4-XlQ/s1600/webglpathtracing3.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 400px;" src="http://3.bp.blogspot.com/-drY5zZboaSc/Ta2mMHY7jrI/AAAAAAAAAdI/IQdPCT4-XlQ/s400/webglpathtracing3.jpg" alt="" id="BLOGGER_PHOTO_ID_5597312638963650226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-NyVZnIJkiK0/Ta1Tpu65vfI/AAAAAAAAAcg/eaBvGnT6OuE/s1600/webglPTstairs.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 400px;" src="http://3.bp.blogspot.com/-NyVZnIJkiK0/Ta1Tpu65vfI/AAAAAAAAAcg/eaBvGnT6OuE/s400/webglPTstairs.jpg" alt="" id="BLOGGER_PHOTO_ID_5597221888326221298" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Source code for the path tracer: &lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;a href="view-source:http://madebyevan.com/webgl-path-tracing/"&gt;view-source:http://madebyevan.com/webgl-path-tracing/&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;There's also a GLSL version (Mac OS X): &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.madebyevan.com/glsl-path-tracing/"&gt;http://www.madebyevan.com/glsl-path-tracing/&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;With this technology, a path traced physics simulation like the one in &lt;a href="http://www.youtube.com/watch?v=YlGVitBaaHE#t=1m00s&amp;amp;videoformat=480p"&gt;this video&lt;/a&gt; is perfectly possible in real-time on a current GPU. Or maybe a real-time path traced version of Tetris ;)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-FOlZdnJaPxQ/Ta2yL0BaDHI/AAAAAAAAAdQ/O9F3OOhfw0o/s1600/webgltetris.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 399px;" src="http://1.bp.blogspot.com/-FOlZdnJaPxQ/Ta2yL0BaDHI/AAAAAAAAAdQ/O9F3OOhfw0o/s400/webgltetris.jpg" alt="" id="BLOGGER_PHOTO_ID_5597325827904244850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&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/7277449027963623452-6885641231910306251?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/6885641231910306251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=6885641231910306251' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/6885641231910306251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/6885641231910306251'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/04/real-time-path-tracing-for-webgl.html' title='Incredible real-time GPU path tracer using WebGL'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-drY5zZboaSc/Ta2mMHY7jrI/AAAAAAAAAdI/IQdPCT4-XlQ/s72-c/webglpathtracing3.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-2717612095339054414</id><published>2011-04-12T04:56:00.001-07:00</published><updated>2011-04-14T02:17:35.194-07:00</updated><title type='text'>CentiLeo: a brand new interactive out-of-core CUDA path tracer for massive models</title><content type='html'>&lt;div style="text-align: justify;"&gt;Wow, the real-time GPU path tracing goodness just keeps on coming! I've barely recovered from the fantastic real-time path traced Kajiya scene by Jacco Bikker and Jeroen van Schijndel, and now I stumbled upon another hugely impressive interactive GPU path tracer, called CentiLeo, which is able to render massive models (such as a stripped down Boeing 777 model containing 370 million polygons) interactively with global illumination on just 1 GTX 480 using out-of-core GPU path tracing (3-10 frames per second at 1024x768, 1 sample per pixel with 1 GI bounce from an HDR image).&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;A twelve-minute video in HD of this amazing renderer in action:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=mxx9dyPO0js"&gt;http://www.youtube.com/watch?v=mxx9dyPO0js&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Some screengrabs of the video with more info:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-Znh7J9aZawk/TaRKkI5_ZMI/AAAAAAAAAcQ/JBJ4GMaHs1k/s1600/centileo1.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor: pointer; width: 400px; height: 218px;" src="http://2.bp.blogspot.com/-Znh7J9aZawk/TaRKkI5_ZMI/AAAAAAAAAcQ/JBJ4GMaHs1k/s400/centileo1.jpg" alt="" id="BLOGGER_PHOTO_ID_5594678621827458242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-DoKMkQBkZ5Y/TaRKj8Y5cfI/AAAAAAAAAcI/s3YGPZC9JaM/s1600/centileo2.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor: pointer; width: 400px; height: 220px;" src="http://3.bp.blogspot.com/-DoKMkQBkZ5Y/TaRKj8Y5cfI/AAAAAAAAAcI/s3YGPZC9JaM/s400/centileo2.jpg" alt="" id="BLOGGER_PHOTO_ID_5594678618467430898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-Yc80xiLYTTg/TaRKeAX-9iI/AAAAAAAAAcA/Ow6dXmO3FHQ/s1600/centileo3.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor: pointer; width: 400px; height: 222px;" src="http://1.bp.blogspot.com/-Yc80xiLYTTg/TaRKeAX-9iI/AAAAAAAAAcA/Ow6dXmO3FHQ/s400/centileo3.jpg" alt="" id="BLOGGER_PHOTO_ID_5594678516458124834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-r90n2RGGosU/TaRKd8J1zsI/AAAAAAAAAb4/gdDFl3BWfPI/s1600/centileo4.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor: pointer; width: 400px; height: 225px;" src="http://3.bp.blogspot.com/-r90n2RGGosU/TaRKd8J1zsI/AAAAAAAAAb4/gdDFl3BWfPI/s400/centileo4.jpg" alt="" id="BLOGGER_PHOTO_ID_5594678515325062850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-5Qxx6TQw1tU/TaRKd_yShpI/AAAAAAAAAbw/sQcgrmfrBjg/s1600/centileo5.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor: pointer; width: 400px; height: 225px;" src="http://4.bp.blogspot.com/-5Qxx6TQw1tU/TaRKd_yShpI/AAAAAAAAAbw/sQcgrmfrBjg/s400/centileo5.jpg" alt="" id="BLOGGER_PHOTO_ID_5594678516300023442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-Jr0QjX2llf0/TaRKdgmswWI/AAAAAAAAAbo/KADutfkpjYI/s1600/centileo6.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor: pointer; width: 400px; height: 227px;" src="http://1.bp.blogspot.com/-Jr0QjX2llf0/TaRKdgmswWI/AAAAAAAAAbo/KADutfkpjYI/s400/centileo6.jpg" alt="" id="BLOGGER_PHOTO_ID_5594678507929911650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-fGKLW0b6gMQ/TaRKKtBd66I/AAAAAAAAAbg/c6e98SM32Dw/s1600/centileo7.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor: pointer; width: 400px; height: 226px;" src="http://2.bp.blogspot.com/-fGKLW0b6gMQ/TaRKKtBd66I/AAAAAAAAAbg/c6e98SM32Dw/s400/centileo7.jpg" alt="" id="BLOGGER_PHOTO_ID_5594678184845896610" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The planned features sound extremely exciting and seem to be aimed at production rendering with among other things bidirectional path tracing, Metropolis light transport, hair and displacement mapping:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-jLCP7rQl-EQ/TaRKKJmbAsI/AAAAAAAAAbY/GOp1KMsmxG0/s1600/centileo8.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor: pointer; width: 400px; height: 227px;" src="http://2.bp.blogspot.com/-jLCP7rQl-EQ/TaRKKJmbAsI/AAAAAAAAAbY/GOp1KMsmxG0/s400/centileo8.jpg" alt="" id="BLOGGER_PHOTO_ID_5594678175337218754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;All these features will be CUDA based according to the author of the video (see youtube comments):&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;"the target is CUDA implementation because it is fast and flexible  enough. BDPT, MLT, tesselation, displacement mapping, hair/fur, texture  filtering - sure, will be CUDA-based.&lt;/span&gt;  &lt;p style="font-weight: bold;"&gt;Programmable materials can be done in CUDA. But an additional idea  would be to port some existing CPU/C++ material shaders to work with our  GPU compute building blocks. Voxels are not﻿ yet planned. But they can be potentially implemented.&lt;/p&gt;&lt;span style="font-weight: bold;"&gt;Our goal is to finish the TODO feature list by September  2011. The concepts﻿ are pretty simple, but all the devil is in details.  The future work is engineering. Almost all research was already done. &lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;The website will be created this or next week. This demo shows what we can do now."&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;The holy grail for game graphics:&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-YcutA0921y0/TaRKJ-1OI4I/AAAAAAAAAbQ/-FLm1Km1ACo/s1600/centileo9.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor: pointer; width: 400px; height: 226px;" src="http://4.bp.blogspot.com/-YcutA0921y0/TaRKJ-1OI4I/AAAAAAAAAbQ/-FLm1Km1ACo/s400/centileo9.jpg" alt="" id="BLOGGER_PHOTO_ID_5594678172446499714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-Fs4QIY3XslA/TaRKJ_65-LI/AAAAAAAAAbI/7-sq7hq-r_w/s1600/centileo9b.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor: pointer; width: 400px; height: 226px;" src="http://3.bp.blogspot.com/-Fs4QIY3XslA/TaRKJ_65-LI/AAAAAAAAAbI/7-sq7hq-r_w/s400/centileo9b.jpg" alt="" id="BLOGGER_PHOTO_ID_5594678172738779314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;This tech would be an ideal fit for rendering huge voxel data sets stored in a sparse voxel octree at interactive rates with high-quality global illumination. Definitely something to keep an eye on in the future.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-2717612095339054414?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/2717612095339054414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=2717612095339054414' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/2717612095339054414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/2717612095339054414'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/04/centileo-brand-new-interactive-out-of.html' title='CentiLeo: a brand new interactive out-of-core CUDA path tracer for massive models'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-Znh7J9aZawk/TaRKkI5_ZMI/AAAAAAAAAcQ/JBJ4GMaHs1k/s72-c/centileo1.jpg' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-2161664115729800979</id><published>2011-04-06T12:13:00.000-07:00</published><updated>2011-04-09T07:09:35.295-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='path tracing'/><category scheme='http://www.blogger.com/atom/ns#' term='kajiya'/><category scheme='http://www.blogger.com/atom/ns#' term='gpu'/><category scheme='http://www.blogger.com/atom/ns#' term='brigade'/><category scheme='http://www.blogger.com/atom/ns#' term='real-time'/><title type='text'>Scene from Kajiya's paper 'The rendering equation' can now be path traced in real-time on the GPU! UPDATE: exe available</title><content type='html'>&lt;div style="text-align: justify;"&gt;This is just incredible, another milestone in the history of rendering! Jacco Bikker, the main developer behind the real-time path tracer Brigade, and Jeroen van Schijndel, an IGAD research assistant, have made a new simple but superb path tracer (similar to tokaspt) which can render the classic path tracing scene from the 1986 paper "The rendering equation" by Jim Kajiya in real-time on just one GTX 470! There is very little noise overall, there's just some in the glass spheres and in the shadowed caustics.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Youtube video: &lt;a href="http://www.youtube.com/watch?v=OHWxsUUataw"&gt;http://www.youtube.com/watch?v=OHWxsUUataw&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-K9Cs8Nw5RuQ/TZzWcE0M4WI/AAAAAAAAAaw/SnAJs3NZp8E/s1600/kajiya3.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor: pointer; width: 400px; height: 347px;" src="http://3.bp.blogspot.com/-K9Cs8Nw5RuQ/TZzWcE0M4WI/AAAAAAAAAaw/SnAJs3NZp8E/s400/kajiya3.jpg" alt="" id="BLOGGER_PHOTO_ID_5592580615104684386" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.youtube.com/watch?v=OHWxsUUataw"&gt;&lt;/a&gt;Some stats:  &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- 512x512 rendering resolution&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- 8 bounces&lt;/div&gt;&lt;div style="text-align: justify;"&gt;- 64 samples per pixel&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;- 12 frames/second on 1 GTX470&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The amazing path tracing speed is partly due to the fact that there are no triangle meshes but only geometric primitives (spheres and boxes) in this scene, which are computationally much cheaper to intersect than triangles. The scene in the video is not 100 % identical to the original one (the structure consisting of the revolved parabola with the oblate spheroid, 'mushroom' for short ;-), is missing), but they're working on it &lt;span style="font-weight: bold;"&gt;(UPDATE 2: the mushroom is finished, see link at the end of this post).&lt;/span&gt;   This is the original scene from the &lt;a href="http://www.google.be/url?sa=t&amp;amp;source=web&amp;amp;cd=6&amp;amp;ved=0CFUQFjAF&amp;amp;url=http%3A%2F%2Fciteseer.ist.psu.edu%2Fviewdoc%2Fdownload%3Bjsessionid%3D2EA69276E27FB5D0C6DDC25D9EEA55AF%3Fdoi%3D10.1.1.63.1402%26rep%3Drep1%26type%3Dpdf&amp;amp;rct=j&amp;amp;q=kajiya%20rendering%20equation&amp;amp;ei=arycTZ2UGo2XhQezruHRBg&amp;amp;usg=AFQjCNEIkNwCEIzqosfxGxdKMNAMreyujw&amp;amp;sig2=PdQitF-vzusnYXdNCJXWJQ"&gt;1986 paper&lt;/a&gt;:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-AnA8gXhHbOk/TZzWb75ijHI/AAAAAAAAAag/Uex2c40r7Ko/s1600/kajiya1.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor: pointer; width: 400px; height: 373px;" src="http://4.bp.blogspot.com/-AnA8gXhHbOk/TZzWb75ijHI/AAAAAAAAAag/Uex2c40r7Ko/s400/kajiya1.jpg" alt="" id="BLOGGER_PHOTO_ID_5592580612711156850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The above is an off-screen photograph (published in the paper). This is the direct feed image:&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-JJ-OaWkiLgI/TZ171myNAQI/AAAAAAAAAbA/qLVp6WwAub0/s1600/kajiya_original.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor: pointer; width: 400px; height: 334px;" src="http://3.bp.blogspot.com/-JJ-OaWkiLgI/TZ171myNAQI/AAAAAAAAAbA/qLVp6WwAub0/s400/kajiya_original.jpg" alt="" id="BLOGGER_PHOTO_ID_5592762473138422018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;It's really mind-boggling when you realize that Kajiya needed 1221 minutes (20.35 hours) to render this image on a supercomputer from 1986 (&lt;a href="http://www-03.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP3081.html"&gt;an IBM 3081 mainframe&lt;/a&gt;) and 25 years later it can be computed at the same resolution in 36 milliseconds on a GTX580! A speed up of 2 million times!! Sounds like a great 25th anniversary :D !&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/-QdBlyJhYA0A/TZzWcBsbvJI/AAAAAAAAAao/rfjjSc7AOKU/s1600/kajiya2.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor: pointer; width: 400px; height: 177px;" src="http://2.bp.blogspot.com/-QdBlyJhYA0A/TZzWcBsbvJI/AAAAAAAAAao/rfjjSc7AOKU/s400/kajiya2.jpg" alt="" id="BLOGGER_PHOTO_ID_5592580614266797202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;(gotta love that '80ies font :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I would love to see some animation in this scene, for example an animated light casting moving shadows or a collapse of the pile of green spheres, which would greatly accentuate the "real-timeness" of the path tracing. &lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;UPDATE:&lt;/span&gt; Executable and source code for this demo are now available at the links&lt;a href="http://ompf.org/forum/viewtopic.php?f=6&amp;amp;t=3174&amp;amp;p=24166#p24152"&gt; in this thread on the ompf forum&lt;/a&gt;. It's awesome, I'm getting a frametime of 1900ms in the 64 spp version on my poor 8600M GT, which is 49x slower than a GTX580 in this demo (kajiya-perf, default view at 64 spp/frame needs 1759 ms/frame on my 8600M GT and only 36 ms/frame on a GTX580)! Time to upgrade :)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;UPDATE 2:&lt;/span&gt; Like Jacco Bikker has promised in the comments, the mushroom-like structure is now done!   Visit &lt;a href="http://ompf.org/forum/viewtopic.php?f=6&amp;amp;t=3174"&gt;http://ompf.org/forum/viewtopic.php?f=6&amp;amp;t=3174&lt;/a&gt; for a screenshot of the updated scene and for more info on this project.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&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/7277449027963623452-2161664115729800979?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/2161664115729800979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=2161664115729800979' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/2161664115729800979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/2161664115729800979'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/04/kajiyas-scene-from-rendering-equation.html' title='Scene from Kajiya&apos;s paper &apos;The rendering equation&apos; can now be path traced in real-time on the GPU! UPDATE: exe available'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-K9Cs8Nw5RuQ/TZzWcE0M4WI/AAAAAAAAAaw/SnAJs3NZp8E/s72-c/kajiya3.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-2402437674741442584</id><published>2011-04-04T12:38:00.000-07:00</published><updated>2011-04-06T00:33:42.496-07:00</updated><title type='text'>GPU Metropolis light transport with OpenCL in LuxRender!</title><content type='html'>&lt;div style="text-align: justify;"&gt;This is very neat: after Dietger van Antwerpen successfully implemented Metropolis light transport (MLT) on the GPU using CUDA and the Brigade path tracer framework, one of the LuxRender developers now has succeeded at making MLT work on the GPU with OpenCL.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.luxrender.net/forum/viewtopic.php?f=34&amp;amp;t=5795"&gt;http://www.luxrender.net/forum/viewtopic.php?f=34&amp;amp;t=5795&lt;/a&gt; (registration required)&lt;br /&gt;&lt;br /&gt;Unlike Luxrender's SmallLuxGPU, which is a hybrid CPU+GPU renderer that only uses the GPU for ray intersections, this MLT algorithm is running entirely on the GPU using OpenCL, offering a vast speed boost over the hybrid approach. Fireflies (bright pixels produced by caustics) are sampled away much more efficiently than when using the standard path tracing integrator. Very complex lighting situations (e.g. light passing through a keyhole) should benefit as well.&lt;br /&gt;&lt;br /&gt;It's great to see a smart and efficient rendering algorithm like MLT (which many believed to be impossible on current GPUs) is now popping up in several GPU renderers. Hopefully  bidirectional path tracing running entirely on the GPU (with MLT on top, something that has already been done by Dietger van Antwerpen) will become widespread soon as well.&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/7277449027963623452-2402437674741442584?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/2402437674741442584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=2402437674741442584' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/2402437674741442584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/2402437674741442584'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/04/gpu-metropolis-light-transport-on-gpu.html' title='GPU Metropolis light transport with OpenCL in LuxRender!'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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-7277449027963623452.post-8646447221658725234</id><published>2011-03-29T03:59:00.000-07:00</published><updated>2011-03-29T06:34:13.825-07:00</updated><title type='text'>720p video of  Unbiased Truck Soccer Sunny Sky with caustics!</title><content type='html'>HD video: &lt;a href="http://www.youtube.com/watch?v=ymo57ElhHvY"&gt;http://www.youtube.com/watch?v=ymo57ElhHvY&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Rendered with my 8600M GT, it's still doing a pretty good job despite its age :) The caustics from the glass sphere are not reflected in the mirror ball because max path length is set to 3 for performance reasons. Setting max path length to 4 will show the reflection of the caustic light pattern.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Download executable&lt;/span&gt;: &lt;a style="font-weight: bold;" href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-guN2Fy_3F3Q/TZHfvk2wAnI/AAAAAAAAAZ4/6GODT2MsKSg/s1600/tokap_sunny_caustic.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 248px;" src="http://2.bp.blogspot.com/-guN2Fy_3F3Q/TZHfvk2wAnI/AAAAAAAAAZ4/6GODT2MsKSg/s400/tokap_sunny_caustic.jpg" alt="" id="BLOGGER_PHOTO_ID_5589494620983657074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Increasing the emission values (RGB) of the "sun" to 4, 4, 2 makes the caustics more obvious:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-r5n5WLk9xwc/TZHZB5gk_vI/AAAAAAAAAZw/OvVNDZRlf1o/s1600/tokap_sunny_caustic_overbright.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 280px;" src="http://3.bp.blogspot.com/-r5n5WLk9xwc/TZHZB5gk_vI/AAAAAAAAAZw/OvVNDZRlf1o/s400/tokap_sunny_caustic_overbright.jpg" alt="" id="BLOGGER_PHOTO_ID_5589487239184056050" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-8646447221658725234?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/8646447221658725234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=8646447221658725234' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/8646447221658725234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/8646447221658725234'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/03/720p-video-of-unbiased-truck-soccer.html' title='720p video of  Unbiased Truck Soccer Sunny Sky with caustics!'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-guN2Fy_3F3Q/TZHfvk2wAnI/AAAAAAAAAZ4/6GODT2MsKSg/s72-c/tokap_sunny_caustic.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-3495611039830641097</id><published>2011-03-28T02:00:00.000-07:00</published><updated>2011-05-04T13:03:05.715-07:00</updated><title type='text'>Unbiased Truck Soccer: Sunny sky with only a few traces of rayn!</title><content type='html'>&lt;div style="text-align: justify;"&gt;Another test in the quest for faster convergence speed, this time using a skydome and sun.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-nLk1h_ozU78/TZCYW9LVGDI/AAAAAAAAAZY/ThRzkTu66DU/s1600/tokap_sunsky_brightsun3.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 279px;" src="http://3.bp.blogspot.com/-nLk1h_ozU78/TZCYW9LVGDI/AAAAAAAAAZY/ThRzkTu66DU/s400/tokap_sunsky_brightsun3.jpg" alt="" id="BLOGGER_PHOTO_ID_5589134657713412146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-9iSqT6yAemg/TZC_cEI91iI/AAAAAAAAAZg/MuyUaxBSk-4/s1600/tokap_sunnysky_green.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 279px;" src="http://4.bp.blogspot.com/-9iSqT6yAemg/TZC_cEI91iI/AAAAAAAAAZg/MuyUaxBSk-4/s400/tokap_sunnysky_green.jpg" alt="" id="BLOGGER_PHOTO_ID_5589177626435376674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/tkNrfo2TyIY" allowfullscreen="" width="480" frameborder="0" height="390"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/qJ5w-f5x0kc" allowfullscreen="" width="480" frameborder="0" height="390"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;One of the advantages of using a skydome to light the scene is that the difference between 2 and 3 bounces of indirect light is not as large as when using an area light:&lt;br /&gt;&lt;br /&gt;max path length 1 (zero bounces)&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-ciMbADsauOs/TZBnaIl0grI/AAAAAAAAAYw/baE0ibLmoBg/s1600/tokap_sunsky_maxpathlength_1.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 280px;" src="http://3.bp.blogspot.com/-ciMbADsauOs/TZBnaIl0grI/AAAAAAAAAYw/baE0ibLmoBg/s400/tokap_sunsky_maxpathlength_1.jpg" alt="" id="BLOGGER_PHOTO_ID_5589080836247159474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;max path length 2 (1 bounce)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-e1718C7xPZQ/TZBnZ_HWFeI/AAAAAAAAAYo/5vT98575sZY/s1600/tokap_sunsky_maxpathlength_2.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 280px;" src="http://4.bp.blogspot.com/-e1718C7xPZQ/TZBnZ_HWFeI/AAAAAAAAAYo/5vT98575sZY/s400/tokap_sunsky_maxpathlength_2.jpg" alt="" id="BLOGGER_PHOTO_ID_5589080833703417314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2 bounces&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-44bCwc4DIek/TZBnZ36jk-I/AAAAAAAAAYg/FHlTY8bsgIU/s1600/tokap_sunsky_maxpathlength_3.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 280px;" src="http://1.bp.blogspot.com/-44bCwc4DIek/TZBnZ36jk-I/AAAAAAAAAYg/FHlTY8bsgIU/s400/tokap_sunsky_maxpathlength_3.jpg" alt="" id="BLOGGER_PHOTO_ID_5589080831770727394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3 bounces&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-1QoT_rX8slY/TZBnZl1RU3I/AAAAAAAAAYY/WMxSMdKk-TA/s1600/tokap_sunsky_maxpathlength_4.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 280px;" src="http://2.bp.blogspot.com/-1QoT_rX8slY/TZBnZl1RU3I/AAAAAAAAAYY/WMxSMdKk-TA/s400/tokap_sunsky_maxpathlength_4.jpg" alt="" id="BLOGGER_PHOTO_ID_5589080826916721522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Another advantage is the very fast convergence speed compared to using area lights due to the fact that almost every pixel can 'see' the skydome. Only the pixels that are occluded from the skydome (e.g. the ground patch under the car) clean up slower because they are indirectly lit. Using bidirectional path tracing would greatly increase the convergence speed of these pixels (edit: as pointed out by Iliyan in the comments, bidir path tracing would actually perform worse in this outdoor scene where standard path tracing shines).&lt;br /&gt;&lt;br /&gt;An overcast sky can be simulated by using only the skydome for lighting (without an emitting sun sphere):&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-awbZw_9QTlo/TZBniZMm7DI/AAAAAAAAAZA/x_cBN3q7Gk4/s1600/tokap_overcast_sky.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 280px;" src="http://2.bp.blogspot.com/-awbZw_9QTlo/TZBniZMm7DI/AAAAAAAAAZA/x_cBN3q7Gk4/s400/tokap_overcast_sky.jpg" alt="" id="BLOGGER_PHOTO_ID_5589080978143767602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-oKhMDlMMf_Q/TZBniZS0pCI/AAAAAAAAAY4/kP4hkajgRcE/s1600/tokap_overcast_sky_hires.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 247px;" src="http://4.bp.blogspot.com/-oKhMDlMMf_Q/TZBniZS0pCI/AAAAAAAAAY4/kP4hkajgRcE/s400/tokap_overcast_sky_hires.jpg" alt="" id="BLOGGER_PHOTO_ID_5589080978169832482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;In this case, the noise clears up very fast with just a few samples. This lighting setup will be used for the Unbiased Truck Soccer game.&lt;br /&gt;&lt;br /&gt;Download the executable for this sky test at &lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt; (package updated with glass sphere for some nice caustics)&lt;br /&gt;&lt;br /&gt;To brighten/darken the sun, select the sun sphere by right-clicking it, click the 'emi' button on the top right of the screen and change the values at the bottom of the screen to e.g. 10, 10, 5. Overbrightening the sun will cause the shadows to look sharper and more pronounced, but will also increase the noise to unacceptable levels:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-nBGSorIDYwA/TZB1przQirI/AAAAAAAAAZQ/dXDeucoByqk/s1600/tokap_sunsky_brightsun2.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 279px;" src="http://1.bp.blogspot.com/-nBGSorIDYwA/TZB1przQirI/AAAAAAAAAZQ/dXDeucoByqk/s400/tokap_sunsky_brightsun2.jpg" alt="" id="BLOGGER_PHOTO_ID_5589096496559590066" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-3495611039830641097?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/3495611039830641097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=3495611039830641097' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/3495611039830641097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/3495611039830641097'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/03/unbiased-truck-soccer-sunny-sky-with.html' title='Unbiased Truck Soccer: Sunny sky with only a few traces of rayn!'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-nLk1h_ozU78/TZCYW9LVGDI/AAAAAAAAAZY/ThRzkTu66DU/s72-c/tokap_sunsky_brightsun3.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-135079889388798588</id><published>2011-03-27T07:39:00.000-07:00</published><updated>2011-03-27T15:23:14.968-07:00</updated><title type='text'>Unbiased Truck Soccer: motion blur tests</title><content type='html'>&lt;div style="text-align: justify;"&gt;I made some tests to determine which amount of motion blur (accomplished by accumulating samples from previous frames) is acceptable for relatively fast moving objects.&lt;br /&gt;&lt;br /&gt;The picture below shows a comparison of the scene from 'Unbiased Truck Soccer' with different amounts of motion blur: no motion blur (left), averaging the last 3 frames (middle) and averaging the last 6 frames (right). These images were all rendered on a 8600M GT with a frame rate of barely 5 fps, so the comparison is not representative for more powerful GPUs, but it provides a general idea of the "noise freeness" of parts of the image that are static like the walls, floor and ceiling. The three little rectangles at the bottom of the picture show a close-up comparison of a noisy area of the ceiling which is lit only with indirect lighting.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-BgNrdk9iuRg/TY-0spUj4GI/AAAAAAAAAYQ/Ud-5WtqYPxM/s1600/tokap_uts_comparis1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 210px;" src="http://3.bp.blogspot.com/-BgNrdk9iuRg/TY-0spUj4GI/AAAAAAAAAYQ/Ud-5WtqYPxM/s400/tokap_uts_comparis1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5588884341689409634" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A low-res video:&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/jm97xyicqvg" allowfullscreen="" width="480" frameborder="0" height="390"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;The truck is performing a looped animation. The camera can be moved by holding the middle mouse button (dragging in image plane) and Shift + middle mouse button (zooming).&lt;br /&gt;&lt;br /&gt;The new test can be downloaded from &lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt; The package contains three executables, with different amounts of motion blur (none, average of last 3 frames and average of last 6 frames).&lt;br /&gt;&lt;br /&gt;On a GTX 580 this demo should run at 60 fps at default settings (768x512 resolution, max path length 4, 4 samples per pixel per pass blurred to 12 (motion blur = 1) or 24 (motion blur = 2) samples per pixel).&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/7277449027963623452-135079889388798588?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/135079889388798588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=135079889388798588' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/135079889388798588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/135079889388798588'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/03/unbiased-truck-soccer-motion-blur-tests.html' title='Unbiased Truck Soccer: motion blur tests'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-BgNrdk9iuRg/TY-0spUj4GI/AAAAAAAAAYQ/Ud-5WtqYPxM/s72-c/tokap_uts_comparis1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-1967084897532608720</id><published>2011-03-21T15:39:00.000-07:00</published><updated>2011-03-24T05:09:16.967-07:00</updated><title type='text'>OTOY at the Abu Dhabi Media Summit 2011</title><content type='html'>&lt;div style="text-align: justify;"&gt;Last week, AMD held a session about "Content and the Cloud" at the Abu Dhabi Media Summit with OTOY's Jules Urbach as one of the main speakers. A video of the complete session can be found at&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=WGcyyTZfXTE"&gt;http://www.youtube.com/watch?v=WGcyyTZfXTE&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Some interesting snippets that were shown and talked about:&lt;br /&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:hyphenationzone&gt;21&lt;/w:HyphenationZone&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;NL-BE&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0cm 5.4pt 0cm 5.4pt;  mso-para-margin-top:0cm;  mso-para-margin-right:0cm;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0cm;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:hyphenationzone&gt;21&lt;/w:HyphenationZone&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;NL-BE&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0cm 5.4pt 0cm 5.4pt;  mso-para-margin-top:0cm;  mso-para-margin-right:0cm;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0cm;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;- Crysis 2 rendered in the cloud at the highest settings and streamed to an iPad using OTOY's tech&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;- &lt;span style="" lang="EN-US"&gt;games can be rendered for 16 concurrent users with a single GPU&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;      &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;- (around the 16:00 mark) path tracing!!! &lt;/span&gt;&lt;span style="" lang="EN-US"&gt;A very short clip was shown where Jules manipulates an extremely high detail model from the Transformers movie (created by ILM) on an iPhone in real-time, rendered in the cloud with path tracing and displayed at 60 fps. Path tracing will scale to as many servers as are available. This will really revolutionize the way games and films are made. A blurry picture below:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-BGbAdP1qo7I/TYfYah732sI/AAAAAAAAAX4/mCUK9c8dV54/s1600/otoy_pathtracing_demo_iphone.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 238px;" src="http://3.bp.blogspot.com/-BGbAdP1qo7I/TYfYah732sI/AAAAAAAAAX4/mCUK9c8dV54/s400/otoy_pathtracing_demo_iphone.jpg" alt="" id="BLOGGER_PHOTO_ID_5586671813074082498" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt; &lt;/span&gt;&lt;/p&gt;      &lt;div style="text-align: justify;"&gt;    &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;- Software tools such as Blender will be delivered through the cloud with OTOY&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;- &lt;a href="http://www.conceivablytech.com/5978/products/webcl-to-enablegpu-accelerated-web-apps"&gt;WebCL!&lt;/a&gt; The next logical step after WebGL, which will make the GPU computing power from the cloud accessible through a webbrowser. Very interesting.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;- Operating systems, next-gen consoles, Blu-Ray discs will become irrelevant &lt;/span&gt;&lt;span style="" lang="EN-US"&gt;when all apps run in the cloud&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;  &lt;/div&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;- The same assets from the Gaiking movie (to be released next year), will be used in a &lt;a href="http://raytracey.blogspot.com/2010/04/gaiking-first-realtime-raytraced-game.html"&gt;Gaiking game&lt;/a&gt; that can only be played on the cloud due to the massive computing resources it will  require for rendering the graphics in real-time. &lt;/span&gt;Tantalizing... :-D&lt;p style="text-align: justify;" class="MsoNormal"&gt;Screen from the Gaiking teaser trailer:&lt;/p&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-mFW3bWs6kQQ/TYsywTnhVGI/AAAAAAAAAYA/wnPwp25nvjQ/s1600/gaiking_teaser_shot.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 225px;" src="http://4.bp.blogspot.com/-mFW3bWs6kQQ/TYsywTnhVGI/AAAAAAAAAYA/wnPwp25nvjQ/s400/gaiking_teaser_shot.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5587615568164377698" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7277449027963623452-1967084897532608720?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/1967084897532608720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=1967084897532608720' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1967084897532608720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/1967084897532608720'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/03/otoy-at-abu-dhabi-media-summit-2011.html' title='OTOY at the Abu Dhabi Media Summit 2011'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-BGbAdP1qo7I/TYfYah732sI/AAAAAAAAAX4/mCUK9c8dV54/s72-c/otoy_pathtracing_demo_iphone.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-7688724738825461030</id><published>2011-03-17T14:58:00.000-07:00</published><updated>2011-03-21T12:15:07.448-07:00</updated><title type='text'>Unbiased Truck Soccer: First physics test with Bullet Physics</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;&lt;span style="color:yellow;"&gt;UPDATE: I've uploaded the executables for the Bullet physics test and the new scene with the soccer playing field at &lt;a href="http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list"&gt;http://code.google.com/p/tokap-the-once-known-as-pong/downloads/list&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I've recreated the truck from 'Unbiased Truck Soccer' in the Bullet Physics engine and applied some physical properties to make it behave like a real vehicle like suspension stiffness, damping, rolling and friction.&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-oYorbnpnsYs/TYKEVodoB5I/AAAAAAAAAXI/fLxHZkd7uH4/s1600/truck_bullet_tokap.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 187px;" src="http://3.bp.blogspot.com/-oYorbnpnsYs/TYKEVodoB5I/AAAAAAAAAXI/fLxHZkd7uH4/s400/truck_bullet_tokap.jpg" alt="" id="BLOGGER_PHOTO_ID_5585171995066632082" border="0" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This is a video of what the gameplay should be like when using the Bullet Physics engine, made with the built-in debug OpenGL renderer of Bullet:&lt;/div&gt;&lt;div&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/NEWKPKPvBjc" allowfullscreen="" width="480" frameborder="0" height="390"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And a Soccer game is not complete without a huge open playing field. The goals will be represented by a blue and a red sphere. Players can score by bumping the soccer ball against the opponent's sphere.&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-8_YcGciKucA/TYKRzgdxrkI/AAAAAAAAAXQ/WRwrMLJru0M/s1600/tokap%2Buts1.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 169px;" src="http://4.bp.blogspot.com/-8_YcGciKucA/TYKRzgdxrkI/AAAAAAAAAXQ/WRwrMLJru0M/s400/tokap%2Buts1.jpg" alt="" id="BLOGGER_PHOTO_ID_5585186801967017538" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-8_YcGciKucA/TYKRzgdxrkI/AAAAAAAAAXQ/WRwrMLJru0M/s1600/tokap%2Buts1.jpg"&gt;&lt;/a&gt;The hardest part is using the output of the Bullet Physics engine to update the position of the trucks and the soccer ball in the real-time path tracer. It should be fairly straightforward though, so I hope to have a working version soon!&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-oYorbnpnsYs/TYKEVodoB5I/AAAAAAAAAXI/fLxHZkd7uH4/s1600/truck_bullet_tokap.jpg"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/J3MzBO9yZJg" allowfullscreen="" width="480" frameborder="0" height="390"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-rCaf5eInKXU/TYOHWHLv2NI/AAAAAAAAAXw/k0NXbdh5vII/s1600/tokap%2Buts%2Borange4.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 247px;" src="http://1.bp.blogspot.com/-rCaf5eInKXU/TYOHWHLv2NI/AAAAAAAAAXw/k0NXbdh5vII/s400/tokap%2Buts%2Borange4.jpg" alt="" id="BLOGGER_PHOTO_ID_5585456776824740050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-OJvjIG9Hox8/TYN7RgqnovI/AAAAAAAAAXg/B5ySwk4jHk0/s1600/tokap%2BUTS%2Borange.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 279px;" src="http://3.bp.blogspot.com/-OJvjIG9Hox8/TYN7RgqnovI/AAAAAAAAAXg/B5ySwk4jHk0/s400/tokap%2BUTS%2Borange.jpg" alt="" id="BLOGGER_PHOTO_ID_5585443503626232562" border="0" /&gt;&lt;/a&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-EUc06nH-mrM/TYN-RPJeEQI/AAAAAAAAAXo/CrzoP2r0gLk/s1600/tokap%2Buts%2Borange3.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 169px;" src="http://4.bp.blogspot.com/-EUc06nH-mrM/TYN-RPJeEQI/AAAAAAAAAXo/CrzoP2r0gLk/s400/tokap%2Buts%2Borange3.jpg" alt="" id="BLOGGER_PHOTO_ID_5585446797458673922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/_jOIa2UOwAA" allowfullscreen="" width="480" frameborder="0" height="390"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/Xoe8kZAOrkU" allowfullscreen="" width="480" frameborder="0" height="390"&gt;&lt;/iframe&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/7277449027963623452-7688724738825461030?l=raytracey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://raytracey.blogspot.com/feeds/7688724738825461030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7277449027963623452&amp;postID=7688724738825461030' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/7688724738825461030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7277449027963623452/posts/default/7688724738825461030'/><link rel='alternate' type='text/html' href='http://raytracey.blogspot.com/2011/03/unbiased-truck-soccer-first-physics.html' title='Unbiased Truck Soccer: First physics test with Bullet Physics'/><author><name>Ray Tracey</name><uri>http://www.blogger.com/profile/05688552048697970050</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/-oYorbnpnsYs/TYKEVodoB5I/AAAAAAAAAXI/fLxHZkd7uH4/s72-c/truck_bullet_tokap.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7277449027963623452.post-3984001514454694015</id><published>2011-03-15T06:06:00.000-07:00</published><updated>2011-03-16T09:57:13.317-07:00</updated><title type='text'>Unbiased Truck Soccer: coming soon!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-o4UGWqoLkUQ/TX9nlBNVJOI/AAAAAAAAAVo/LIZelcdDip4/s1600/Tokap%2Btruck%2Bsoccer.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 247px;" src="http://3.bp.blogspot.com/-o4UGWqoLkUQ/TX9nlBNVJOI/AAAAAAAAAVo/LIZelcdDip4/s400/Tokap%2Btruck%2Bsoccer.jpg" alt="" id="BLOGGER_PHOTO_ID_5584295948639872226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" src="http://www.youtube.com/embed/SLq4_zOUjO4" allowfullscreen="" width="480" frameborder="0" height="390"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;I had the idea for this game just yesterday. The goal is to push the ball against the moving goal (glowing paddle) of the opponent and score. Once it's finished and physics are actually working, you will be able to move the truck in every way, not just forward, backward and strafing left and right. Initially it will be a two player game, but hopefully I can make a single player game with an AI controlled truck.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;In this particular case, path tracing provides very real and natural looking lighting and shadows. And it's still somewhat real-time on my poor laptop with 8600M GT (2.3 fps, with 4 samples per pixel , max path length 4, at default resolution), so I'm confident that it will look and play much better on a high end GPU.  A GTX580, which is 20 times faster than my card (measured
