{"id":18345,"date":"2017-02-02T19:31:21","date_gmt":"2017-02-03T00:31:21","guid":{"rendered":"http:\/\/blog.kenperlin.com\/?p=18345"},"modified":"2017-02-03T21:19:54","modified_gmt":"2017-02-04T02:19:54","slug":"raytracer-breakdown","status":"publish","type":"post","link":"http:\/\/blog.kenperlin.com\/?p=18345","title":{"rendered":"Ray tracing breakdown"},"content":{"rendered":"<p>I am currently introducing the ray tracing rendering technique to my computer graphics class.  I figured the &#8220;breakdown&#8221; approach that I&#8217;ve been describing here might be helpful.<\/p>\n<p>So today in class I implemented for them the beginnings of a ray tracer.  I just stood up in front of the class and implemented a ray tracer by doing live coding in a fragment shader.<\/p>\n<p>My coding during the class was more or less improvised.  I started with something very simple, and then built up the code bit by bit until I had the basic workings of a simple ray tracer.<\/p>\n<p>After the class I thought over the sequence of events &#8212; what I had done first, then next, etc.  And I converted that train of thought into a breakdown sequence, using the same framework that I had already built for the <a href=http:\/\/mrl.nyu.edu\/~perlin\/bubble_breakdown>bubble breakdown<\/a> I posted here recently.<\/p>\n<p>Along the way I added a few improvements.  For one thing, now when you are doing live coding, you get much better feedback along the way.<\/p>\n<p>In particular, if you type something that stops the code from running, the system now gives you an error message, and highlights the line where the error happened.  I&#8217;ve also gone back and added these same improvements to the bubble breakdown.<\/p>\n<p>This approach is turning out to be a really useful way to teach people, while also giving them a chance to learn and explore for themselves, always at their own pace.<\/p>\n<p>You can try the intro to raytracing breakdown <a href=http:\/\/mrl.nyu.edu\/~perlin\/raytrace1_breakdown>here<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I am currently introducing the ray tracing rendering technique to my computer graphics class. I figured the &#8220;breakdown&#8221; approach that I&#8217;ve been describing here might be helpful. So today in class I implemented for them the beginnings of a ray tracer. I just stood up in front of the class and implemented a ray tracer &hellip; <a href=\"http:\/\/blog.kenperlin.com\/?p=18345\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Ray tracing breakdown&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"http:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/posts\/18345"}],"collection":[{"href":"http:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.kenperlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=18345"}],"version-history":[{"count":5,"href":"http:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/posts\/18345\/revisions"}],"predecessor-version":[{"id":18352,"href":"http:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/posts\/18345\/revisions\/18352"}],"wp:attachment":[{"href":"http:\/\/blog.kenperlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=18345"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.kenperlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=18345"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.kenperlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=18345"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}