{"id":20823,"date":"2019-02-21T22:59:07","date_gmt":"2019-02-22T03:59:07","guid":{"rendered":"http:\/\/blog.kenperlin.com\/?p=20823"},"modified":"2019-02-22T04:55:17","modified_gmt":"2019-02-22T09:55:17","slug":"building-the-orange","status":"publish","type":"post","link":"http:\/\/blog.kenperlin.com\/?p=20823","title":{"rendered":"Building the orange"},"content":{"rendered":"<p>Today in my computer graphics class I decided to just open up a text editor and implement a simple ray tracer in GLSL. The idea was to take the students through the process of writing a ray tracer from the ground up in GPU shader code.<\/p>\n<p>To my surprise, by the time we were done I had implemented an animated orange:<\/p>\n<p><a href=\"http:\/\/blog.kenperlin.com\/wp-content\/uploads\/2019\/02\/orange.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/blog.kenperlin.com\/wp-content\/uploads\/2019\/02\/orange.png\" alt=\"orange\" width=\"225\" height=\"200\" class=\"aligncenter size-full wp-image-20824\" srcset=\"http:\/\/blog.kenperlin.com\/wp-content\/uploads\/2019\/02\/orange.png 654w, http:\/\/blog.kenperlin.com\/wp-content\/uploads\/2019\/02\/orange-300x267.png 300w\" sizes=\"(max-width: 225px) 85vw, 225px\" \/><\/a><\/p>\n<p>I had not planned on building an orange. Yet somehow, as I followed my creative muse over the course of the lecture, that is what I ended up doing.<\/p>\n<p>After the class was over, I went back and broke up the code I had writtem into successive steps. This way the students could review the journey from a blank screen to a virtual orange.<\/p>\n<p>In case you are also interested in following along on that journey, here is my <a href=http:\/\/mrl.nyu.edu\/~perlin\/building_the_orange>&#8220;building the orange&#8221; breakdown<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today in my computer graphics class I decided to just open up a text editor and implement a simple ray tracer in GLSL. The idea was to take the students through the process of writing a ray tracer from the ground up in GPU shader code. To my surprise, by the time we were done &hellip; <a href=\"http:\/\/blog.kenperlin.com\/?p=20823\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Building the orange&#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\/20823"}],"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=20823"}],"version-history":[{"count":4,"href":"http:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/posts\/20823\/revisions"}],"predecessor-version":[{"id":20828,"href":"http:\/\/blog.kenperlin.com\/index.php?rest_route=\/wp\/v2\/posts\/20823\/revisions\/20828"}],"wp:attachment":[{"href":"http:\/\/blog.kenperlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=20823"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.kenperlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=20823"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.kenperlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=20823"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}