tag:blogger.com,1999:blog-3009632548487606862024-02-19T18:08:21.345-08:00RenderRan - My Little RendererRudy Corteshttp://www.blogger.com/profile/00830312094850977382noreply@blogger.comBlogger11125tag:blogger.com,1999:blog-300963254848760686.post-26497185715507576502010-09-13T20:48:00.001-07:002010-09-13T20:53:05.726-07:00ShadowsIn an effort to stay on top of things and to take advantage of my current "dedication wind" I decided to get into the code today and implement the shadows portion. The changes where not too hard to implement.<br /><br />Everything is brute force at the moment, but hey, it works! Im looking to implement a radius parameter into my point light to mimic faux area lights. In the meantime here is a little image<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFa0J18Gy4YcJBZ3n4VOXga-TFbn8z-XWK9p0FwCjN5h-7pEhMvR_DRlhww8NrKcEsagzjlZA1AbDmGFi1zdCWKDdStvdmNfx-nyQQrydAuZhI_fjlDFU1o7O4bbfh3r8PEwDzvPVazTab/s1600/file.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 200px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFa0J18Gy4YcJBZ3n4VOXga-TFbn8z-XWK9p0FwCjN5h-7pEhMvR_DRlhww8NrKcEsagzjlZA1AbDmGFi1zdCWKDdStvdmNfx-nyQQrydAuZhI_fjlDFU1o7O4bbfh3r8PEwDzvPVazTab/s320/file.png" alt="" id="BLOGGER_PHOTO_ID_5516611863253281266" border="0" /></a><br />Next up... i dont really know. I want to implement multi-threading as well as specular shading. I also need to add more primitives because im getting kind of sick of these spheres.Rudy Corteshttp://www.blogger.com/profile/00830312094850977382noreply@blogger.com0tag:blogger.com,1999:blog-300963254848760686.post-25626986476789020182010-09-12T21:48:00.000-07:002010-09-12T21:51:32.159-07:00Materials (Matte) and PointLightI had to take a break in development because we had a very demanding project at work. That and I have also been playing around with the beta version of a very strong and cool raytracer.<br />After the small hiatus I finally got around to add light and material support. Here is a small image.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinwKfLOdM_06Coq5xpG2-BA2qaBCnwCQ9tlvoF2-RgBWt-7JX1LkcXoeCt5xMc-QjFMLKWXKogTCtVDN50EkcS35_6XzZU5Y2XWTr0j_JGRq8lEiDDuEIrVBAXwj7jaWk_5OFBnOQAKgNu/s1600/file.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 180px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinwKfLOdM_06Coq5xpG2-BA2qaBCnwCQ9tlvoF2-RgBWt-7JX1LkcXoeCt5xMc-QjFMLKWXKogTCtVDN50EkcS35_6XzZU5Y2XWTr0j_JGRq8lEiDDuEIrVBAXwj7jaWk_5OFBnOQAKgNu/s320/file.png" alt="" id="BLOGGER_PHOTO_ID_5516255972403116130" border="0" /></a><br />Next up: shadows and specular reflectionsRudy Corteshttp://www.blogger.com/profile/00830312094850977382noreply@blogger.com0tag:blogger.com,1999:blog-300963254848760686.post-10181033867842280992010-08-09T21:24:00.000-07:002010-08-09T21:55:29.111-07:00Depth Of FieldFinally after a long pause in development I made the time to figure out why my depth of field implementation was crashing the whole renderer. After a little bit of work spent on getting the code to compile on my linux station, I was ready to track down and kill all the bugs that where killing my renderer. Eventually i found it somewhere in the initializations of my camera's sampler member. Once that was sorted out i managed to get the following little image. Next up? Materials and lights!<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgORdO0SZ2-TZqvMJC7hK1M76Vs-fsAicvmr-lztOngYxX5pC7q_me8_SRTG3pcQP2NRMuxO-syYK5nGRyusR5ilfMR-XOvlT8LQqvCCeQ8ERzqDzpLGykxu_rrvPBq8MuEKXEVfpMt4_Rz/s1600/file.png"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 200px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgORdO0SZ2-TZqvMJC7hK1M76Vs-fsAicvmr-lztOngYxX5pC7q_me8_SRTG3pcQP2NRMuxO-syYK5nGRyusR5ilfMR-XOvlT8LQqvCCeQ8ERzqDzpLGykxu_rrvPBq8MuEKXEVfpMt4_Rz/s320/file.png" alt="" id="BLOGGER_PHOTO_ID_5503639951519711954" border="0" /></a>Rudy Corteshttp://www.blogger.com/profile/00830312094850977382noreply@blogger.com0tag:blogger.com,1999:blog-300963254848760686.post-55293622825736313302009-08-14T18:16:00.000-07:002009-08-14T18:21:41.900-07:00Camera ProjectionAfter a long time of procastinating I finaly got around to implementing the Camera object. It was not as hard as I thought it would be. As I was moving my camera around I realized I had some horrible (and dumb) bugs on my Vector3d class. Eventually i got it figured out. Enjoy these 3 images.<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAuzwWy-ZyBGHRplBB8wlbC7vK22UhlSASVhrSd0rrmoO-9Z8ZPk0vCi9QWQpS5XYjccuh8_LKvRotdI8Od_ifduA-4sSTawFMa6dSjpMAZ_zJZjfm5eKzkG4CTN3RiwXVDGI5uzf5CZy7/s1600-h/file.png"><img id="BLOGGER_PHOTO_ID_5369994253238626882" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 200px; TEXT-ALIGN: center" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAuzwWy-ZyBGHRplBB8wlbC7vK22UhlSASVhrSd0rrmoO-9Z8ZPk0vCi9QWQpS5XYjccuh8_LKvRotdI8Od_ifduA-4sSTawFMa6dSjpMAZ_zJZjfm5eKzkG4CTN3RiwXVDGI5uzf5CZy7/s320/file.png" border="0" /></a><br /><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGmgw616rV4fzHiop9aajL5fK-mL9oYep2P4mcrHtoAzDcRMKgwGMP4oZwBl-F5vdDiVrT09C3opPi1WCVj1H6Os4rAP10rwMtPBfwW5bb6eeGSyN8EmJrbP7N960fWo9m4Vc3N8Ffse-S/s1600-h/file_cam2.png"><img id="BLOGGER_PHOTO_ID_5369994109841898482" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 200px; TEXT-ALIGN: center" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGmgw616rV4fzHiop9aajL5fK-mL9oYep2P4mcrHtoAzDcRMKgwGMP4oZwBl-F5vdDiVrT09C3opPi1WCVj1H6Os4rAP10rwMtPBfwW5bb6eeGSyN8EmJrbP7N960fWo9m4Vc3N8Ffse-S/s320/file_cam2.png" border="0" /></a><br /><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNMegsCS1R-hIzvtn9WlcGEMc_Q8Ob-YBnLjH4AyEFMYo24nCrzNV_Zx6xcidpgA5CRbkS9-z172mQwOnj_IXrq3vWUnmNsi_Hl-NzB-EM8OKrtIj6zkpDoMkVKZVhWXAdKo07idBUhChh/s1600-h/file_cam1.png"><img id="BLOGGER_PHOTO_ID_5369993975608993842" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 200px; TEXT-ALIGN: center" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNMegsCS1R-hIzvtn9WlcGEMc_Q8Ob-YBnLjH4AyEFMYo24nCrzNV_Zx6xcidpgA5CRbkS9-z172mQwOnj_IXrq3vWUnmNsi_Hl-NzB-EM8OKrtIj6zkpDoMkVKZVhWXAdKo07idBUhChh/s320/file_cam1.png" border="0" /></a><br /><div>Next, implementing depth of field!</div></div></div>Rudy Corteshttp://www.blogger.com/profile/00830312094850977382noreply@blogger.com0tag:blogger.com,1999:blog-300963254848760686.post-20853554956347300962009-05-18T19:43:00.000-07:002009-05-18T20:16:49.264-07:00Lets get progressiveOne of the features that good old BMRT(R.I.P.) used to have was a default progressive refinement interactive display. I always thought that this is a very useful display method (specially for lighting) as it allows the user judge the final image as it is refining. No need to render the whole image when you know the modification to the lights you just made is way off!<br /><br />I decided to try and replicate suck interactive display. It proved to be a neat little exercise. I'm sure there are ways to improve this algorithm but for now I must move over to implementing the camera class and hopefully soon enough the shading portion.<br /><br />In the mean time I leave you all with this little video. Cheers<br /><br /><br /><div style="text-align: center;"><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='600' height='400' src='https://www.blogger.com/video.g?token=AD6v5dxlZ4ldcwD3jrbIszY8DR1lX8uJi8jJ_hRdIKRmdPAsqq_b6amGP7oRyTIwsP7AehGtx4A--rNTQ1Ck8lv3ow' class='b-hbp-video b-uploaded' frameborder='0'></iframe><br /><br /><span style="font-size:85%;">Progressive Interactive Display<br />(the video looks like crap, ill try to improve the quality later)</span><br /></div>Rudy Corteshttp://www.blogger.com/profile/00830312094850977382noreply@blogger.com0tag:blogger.com,1999:blog-300963254848760686.post-66087590397436326292009-05-05T15:37:00.001-07:002009-05-18T20:15:32.601-07:00Go RenderRan! Go!<div style="text-align: justify;">When i first started this renderer I was writing the images directly to disk. Opening the image with a viewer program every time I rendered something got old (and boring really quick). Since I wanted to simplify things I used the QT toolkit to create a simple window that would display the image that had been saved on disc, once the render was done. This made things a lot better, but the big problem was that i could not see the image being generated, I had to wait until the image was done to view it. So if the render was completely wrong, I didn't know it until the whole image was finished. This was a little frustrating so I decided to make the raytracer work with buckets like most "real" renderers do. Figuring out the bucketing algorithm was easy, but getting the QT window to update dynamically as the buckets where being rendered took a bit of digging around. Eventually I got it to work, so, here you have it... buckets!!<br /></div><br /><br /><div style="text-align: center;"><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='600' height='400' src='https://www.blogger.com/video.g?token=AD6v5dzNUptLSzC_lxSP1WKIUSeREJB1Y_HLotzUTUE8Ld6zcAi3-RtND6yLmOTWzwgn0MVFTxJ9YQiyn7ChTbGS7A' class='b-hbp-video b-uploaded' frameborder='0'></iframe><br /><br /><span style="font-size:85%;">The renderer runs quite faster than it appears in this video,<br />but the recording software seems to slow it down</span><br /></div>Rudy Corteshttp://www.blogger.com/profile/00830312094850977382noreply@blogger.com0tag:blogger.com,1999:blog-300963254848760686.post-63522135941582198222009-05-02T17:36:00.000-07:002009-05-05T15:48:40.930-07:00Putting It All In To Perspective<div style="text-align: justify;">I finally arrive to the part of the book that deals with perspective projections. At this point the perspective is achieved in a hard-coded way and there is no real interface to control the field of view. The reason for this is that I have not yet created the camera classes to handle the transformation of the view or the field of view of the projection.<br /></div><br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-TdPhO0rCJUgQEY-Qqt635aGN8aJtfWtPzcU5_gGj5PyuiY2J6BoAy2UkEWH7n7BrnR-Q3TWJguKy4EyoTU9F7K0m73cWuppkhvDbgxGEhu-sC0dGVqIqgCClx924SDFJAITtsXqHow-R/s1600-h/perspective_02.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-TdPhO0rCJUgQEY-Qqt635aGN8aJtfWtPzcU5_gGj5PyuiY2J6BoAy2UkEWH7n7BrnR-Q3TWJguKy4EyoTU9F7K0m73cWuppkhvDbgxGEhu-sC0dGVqIqgCClx924SDFJAITtsXqHow-R/s320/perspective_02.jpg" alt="" id="BLOGGER_PHOTO_ID_5331390895376671794" border="0" /></a><span style="font-size:85%;">First perspective projection rendered by <span class="blsp-spelling-error" id="SPELLING_ERROR_0">RenderRan</span></span><br /></div><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0HpwDW1cPQ2XCcbe1bZb_FfTJAV5A5OYuRprR-dY-4xMH4Y6i-731WkAgKaQx_iYbtoTcNY8qYABrOrYZynpbMRdPC1CQ3-F4fEpI5rI8TgsEkwQg55Kz_VIHlzUYYX5CuswzER4y6KIt/s1600-h/perspective_01.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0HpwDW1cPQ2XCcbe1bZb_FfTJAV5A5OYuRprR-dY-4xMH4Y6i-731WkAgKaQx_iYbtoTcNY8qYABrOrYZynpbMRdPC1CQ3-F4fEpI5rI8TgsEkwQg55Kz_VIHlzUYYX5CuswzER4y6KIt/s320/perspective_01.jpg" alt="" id="BLOGGER_PHOTO_ID_5331390891377336130" border="0" /></a><span style="font-size:85%;">Same as previous image but with a tighter <span class="blsp-spelling-error" id="SPELLING_ERROR_1">FOV</span></span><br /></div>Rudy Corteshttp://www.blogger.com/profile/00830312094850977382noreply@blogger.com0tag:blogger.com,1999:blog-300963254848760686.post-92033792230028446322009-05-02T17:32:00.000-07:002009-05-05T15:49:35.524-07:00The More The Merrier<div style="text-align: justify;">After playing around with a single sphere, I moved on to the next section on the book, which discusses how to render more than one object in the scene. After a few code modifications I was able to get this image which contains 2 spheres and one plane. The plane is inclined and its "cutting" through the spheres.<br /></div><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh5E3yrC-6zWKyWdOUhEE0pnnbf6TfiXcD2GvlbaIVm8UHuOlEsRoiD0bIgfYlxJjgT4ba2LcF5vNOoTfbSOYeeeN5TzYJVFN76_U-7mw_gwoeiQkB8VpLUrekFoIpB2Kp8mzfzPh_ckgo/s1600-h/MulitpleObjects.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh5E3yrC-6zWKyWdOUhEE0pnnbf6TfiXcD2GvlbaIVm8UHuOlEsRoiD0bIgfYlxJjgT4ba2LcF5vNOoTfbSOYeeeN5TzYJVFN76_U-7mw_gwoeiQkB8VpLUrekFoIpB2Kp8mzfzPh_ckgo/s320/MulitpleObjects.jpg" alt="" id="BLOGGER_PHOTO_ID_5331389952046509762" border="0" /></a><span style="font-size:85%;"><span class="blsp-spelling-corrected" id="SPELLING_ERROR_0">Multiple</span> objects in the scene</span><br /></div>Rudy Corteshttp://www.blogger.com/profile/00830312094850977382noreply@blogger.com0tag:blogger.com,1999:blog-300963254848760686.post-54119363282410846902009-05-02T17:26:00.000-07:002009-05-05T15:50:10.553-07:00Playing with My Balls<div style="text-align: justify;">Here are a couple of other rendered images using the same ball from the previous renders. Here I started playing with the code to see what kind if output I could get with the current code.<br /></div><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYzBg-W9vxCNDr97waEoLTfXDbkWK5Q3bDeROTg6RDUsvIQTk6vsYGyzP5di6YILfswWFLf6uu_p5kWHSrSeLl2tHRpehtOI28b0zSwD0oBm8tRdNR2wXM8zLUAlv8XNCYhE7eIxwNr7n0/s1600-h/SingleSphereNdotI.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYzBg-W9vxCNDr97waEoLTfXDbkWK5Q3bDeROTg6RDUsvIQTk6vsYGyzP5di6YILfswWFLf6uu_p5kWHSrSeLl2tHRpehtOI28b0zSwD0oBm8tRdNR2wXM8zLUAlv8XNCYhE7eIxwNr7n0/s320/SingleSphereNdotI.jpg" alt="" id="BLOGGER_PHOTO_ID_5331387978235801970" border="0" /></a><span style="font-size:85%;">In this image I used the dot product of the viewing vector "I" and the current shading point normal "N". It allows the <span class="blsp-spelling-error" id="SPELLING_ERROR_0">renderer</span> to give the appearance of lighting (<span class="blsp-spelling-error" id="SPELLING_ERROR_1">NdotI</span> is <span class="blsp-spelling-corrected" id="SPELLING_ERROR_2">essential</span> for lighting calculations).</span><br /></div><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0S49P6b21unb7mOZoOxPmIxxi7YEra2Cc4yXoGcV7ggXgTic1xuFqYZ2yMLm9RiX8a_CZhKTHFNduXLUvhpfx1kxPKvXNoTLOY7vX6VX6JivRF0agzJNenVj1j5puodzm83BkoachDNtd/s1600-h/singleSphereBadN.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0S49P6b21unb7mOZoOxPmIxxi7YEra2Cc4yXoGcV7ggXgTic1xuFqYZ2yMLm9RiX8a_CZhKTHFNduXLUvhpfx1kxPKvXNoTLOY7vX6VX6JivRF0agzJNenVj1j5puodzm83BkoachDNtd/s320/singleSphereBadN.jpg" alt="" id="BLOGGER_PHOTO_ID_5331387975964931122" border="0" /></a><span style="font-size:85%;">Since it took me a bit of work to get the <span class="blsp-spelling-error" id="SPELLING_ERROR_3">NdotI</span> image to work I decided to inspect my normals and this is the image I got. I think there might be something wrong, as the normals flip before they reach the edges. </span><br /></div>Rudy Corteshttp://www.blogger.com/profile/00830312094850977382noreply@blogger.com0tag:blogger.com,1999:blog-300963254848760686.post-14970042009893371092009-05-02T16:18:00.001-07:002009-05-05T15:50:30.749-07:00First Steps<div style="text-align: justify;">After dealing with a bunch of building issues I was eventually able to render my first set of images. These are very simple and might not be impressive at all but they are the raytracing equivalent of a "hello world" program.<br /></div><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh30b4cKmZV3JUJEwXV1YBZ2Qz9E43iH0NctGpWQltruyo0nwy-7YU9QEBrHSIoeNweej2DDiqB41OLu6UVAffNrKjoHMTKSE42oKWNMW6dqyM0ig2n44j61WCAUEBFEMqWfTSi8PWkEi0p/s1600-h/singleSphereAliased.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh30b4cKmZV3JUJEwXV1YBZ2Qz9E43iH0NctGpWQltruyo0nwy-7YU9QEBrHSIoeNweej2DDiqB41OLu6UVAffNrKjoHMTKSE42oKWNMW6dqyM0ig2n44j61WCAUEBFEMqWfTSi8PWkEi0p/s320/singleSphereAliased.jpg" alt="" id="BLOGGER_PHOTO_ID_5331377334429092162" border="0" /></a><span style="font-size:85%;">This is the first image that RenderRan ever generated. A single, constant color, orthographic projected sphere.</span><br /></div><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrj1F27hpx1LYI8d5dA9_V6ghpqIIAARCVYOD-gbZL4eJHWpUPiYMmqCzjV33Kibo-0GjvPtONakIrUfJ0dj7ff1x3W-NVD6g8WOS9mB2J1cnHxipJHcNiwOU08MjCSHb8dZNyzEBkenvu/s1600-h/SingleSphereJitered.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrj1F27hpx1LYI8d5dA9_V6ghpqIIAARCVYOD-gbZL4eJHWpUPiYMmqCzjV33Kibo-0GjvPtONakIrUfJ0dj7ff1x3W-NVD6g8WOS9mB2J1cnHxipJHcNiwOU08MjCSHb8dZNyzEBkenvu/s320/SingleSphereJitered.jpg" alt="" id="BLOGGER_PHOTO_ID_5331377336988205410" border="0" /></a><span style="font-size:85%;">Same sphere but with jittered sampling (1 sample per pixel).</span><br /></div><span style="font-size:85%;"><br /></span><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhf1rnPVWBQiUtte7jh1FzPmvJanvDTJt2TVZPWLtQJC93d7SFfn6z0rLrUBdSC1wSBHInvunntg4RN_2Z5IEi9zk45DhiClOROwwYc6gaQO5DFXXxM5HHGgC08DnGnC5CKxNHdK7OLnLiI/s1600-h/SingleSphereAntiAliased.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhf1rnPVWBQiUtte7jh1FzPmvJanvDTJt2TVZPWLtQJC93d7SFfn6z0rLrUBdSC1wSBHInvunntg4RN_2Z5IEi9zk45DhiClOROwwYc6gaQO5DFXXxM5HHGgC08DnGnC5CKxNHdK7OLnLiI/s320/SingleSphereAntiAliased.jpg" alt="" id="BLOGGER_PHOTO_ID_5331377337602910770" border="0" /></a><span style="font-size:85%;">Same sphere but with 64 jittered samples per pixel.<br /></span></div>Rudy Corteshttp://www.blogger.com/profile/00830312094850977382noreply@blogger.com0tag:blogger.com,1999:blog-300963254848760686.post-26344308825975623192009-05-02T15:31:00.001-07:002009-05-05T15:51:30.974-07:00RenderRan - Who, Why and How<h2>Who?</h2><div style="text-align: justify;">My name is Rudy and I'm a professional Technical Director working on the film industry. Over the last five years I have been lucky to work at several awesome places and on different fields such as lighting, particle effects, simulations, pipeline and shader development. Of all these areas of work shading has always been my favorite. There is something innately beautiful about the process of taking a bunch of lines of code and have the renderer return something that looks like glass, skin, marble, fire.. etc.<br /></div><h2>Why?</h2><div style="text-align: justify;">After many years of working in the industry and always being fascinated with the rendering process of computer generated imagery (CGI), I finally decided to take on a project that has been lingering on the back of my mind, <span style="font-weight: bold;">Writing a Rendering Engine</span>.<br /><br />Why is it called "RenderRan". Well, every year (almost every year to be more precise) I attend the RenderMan users group meeting during Siggraph. At these meetings the folks from the Pixar RenderMan Team always hand out limited edition walking teapots. Eventually I had about 4 or 5 of them and my daughter decided that these collector items where awesome toys for a 3 year old. Since I knew my teapots where facing extermination I figured I should at least use the opportunity to teach my daughter a little bit of what his geek father does for a living. So I showed her the teapot and asked her "You know what this is? Its a RenderMan Walking Teapot". She stared at me for about 5 seconds and said "RenderRAN?". So, all the teapots as well as every hat or t-shirt with the RenderMan icon became "RenderRans".<br /></div><h2>How</h2><div style="text-align: justify;">I'm writing RenderRan in C++. Using the open source <a href="http://www.qtsoftware.com/">QT libraries</a> to handle framebuffer display and simple image handling.<br />I'm using the book <a href="http://www.raytracegroundup.com/">Raytracing from the Ground Up</a> as reference.<br />The source code of the renderer can be found at <a href="http://code.google.com/p/rcraytracer/">http://code.google.com/p/rcraytracer</a></div>Rudy Corteshttp://www.blogger.com/profile/00830312094850977382noreply@blogger.com